Rdf 请求确定几个类中特定成员的数量,这些类通过乘数链接在一起

Rdf 请求确定几个类中特定成员的数量,这些类通过乘数链接在一起,rdf,sparql,owl,ontology,Rdf,Sparql,Owl,Ontology,我用RDF/XML格式制作了一个简化的本体示例。在问题的末尾。我使用Protégé5.0测试版 解释我请求的图片: 简而言之: 两级1类:过程,产品 过程的三个子类:过程1,过程2,过程3 每个流程都有许多自己的成员,这些成员与具有属性输入或输出 进程的每个成员都有名为数量的数据属性 如果你能在语法方面帮我的话,那会很好,但主要是在推理方面,我需要帮助 本体(RDF/XML) ]> 5. 3. 2. 2. 10 3. 1. 1. 1. 感谢您对本体进行了如此多的清理和修改。然而,我仍然不

我用RDF/XML格式制作了一个简化的本体示例。在问题的末尾。我使用Protégé5.0测试版

解释我请求的图片:

简而言之:

  • 两级1类:过程产品

  • 过程的三个子类过程1过程2过程3

  • 每个流程都有许多自己的成员,这些成员与具有属性输入输出

  • 进程的每个成员都有名为数量的数据属性

如果你能在语法方面帮我的话,那会很好,但主要是在推理方面,我需要帮助

本体(RDF/XML)

]>
5.
3.
2.
2.
10
3.
1.
1.
1.

感谢您对本体进行了如此多的清理和修改。然而,我仍然不认为这是一个捕捉你想要表达的东西的好方法。例如,您的本体包括(以N3表示法):

这是类进程\u 1的三个实例。我认为这些是名为process\u 1的类的实例是没有意义的

相反,我认为有一些不同的过程,它恰好有两个输入和一个输出。每个输入和输出都是一对数量和一个特定产品

我会用N3或RDF/XML来表示您的流程。(目前我将使用纯RDF;转换为OWL只是声明一些类和属性的问题;这毕竟是关于SPARQL的问题,SPARQL是一种RDF查询语言。)


这是一个相当大的本体论;我打赌有可能创建一个更简单的示例来演示这个问题。你是对的。我举了另一个更简单的例子。owl:图像解释了问题:本体:你认为我用新的OLW和图像编辑第一篇文章更好吗?是的,肯定编辑/更新问题我用简化的问题编辑第一篇文章。再次抱歉。很难用所有生成的虹膜来遵循本体论。事情是如何组织的也不是很清楚。例如,流程1在什么地方使用5元素产品2作为输入?谢谢,你说得对。事实上,输入和输出并不是过程的真正个体。你的建议比我的好。@Cyril我不确定我是否真的明白你想说的话。然而,我认为,如果每个输入最多是一个进程的输出,那么这在SPARQL中是可以解决的。其思想是使用属性路径来获得每个路径上“最右边”输入的路径,然后将路径上的数量相乘,以确定需要多少。然而,由于有多种方法产生一些输入(例如,产品2),我认为这种方法不起作用。
untitled-ontology-14:input_2_of_process_1
        a                              owl:NamedIndividual , untitled-ontology-14:process_1 ;
        untitled-ontology-14:input     untitled-ontology-14:product_3 ;
        untitled-ontology-14:quantity  2 .

untitled-ontology-14:input_1_of_process_1
        a                              owl:NamedIndividual , untitled-ontology-14:process_1 ;
        untitled-ontology-14:input     untitled-ontology-14:product_2 ;
        untitled-ontology-14:quantity  5 .

untitled-ontology-14:output_1_of_process_1
        a                              owl:NamedIndividual , untitled-ontology-14:process_1 ;
        untitled-ontology-14:output    untitled-ontology-14:product_1 ;
        untitled-ontology-14:quantity  1 .
@prefix : <urn:ex:> .

:process1 a :Process ;
          :hasInput  [ a :Measure ; :quantity 2 ; :product :product3 ] ,
                     [ a :Measure ; :quantity 5 ; :product :product2 ] ;
          :hasOutput [ a :Measure ; :quantity 1 ; :product :product1 ] .

:process2 a :Process ;
          :hasInput  [ a :Measure ; :quantity  3 ; :product :product4 ] ,
                     [ a :Measure ; :quantity 10 ; :product :product5 ] ;
          :hasOutput [ a :Measure ; :quantity  1 ; :product :product2 ] .

:process3 a :Process ;
          :hasInput  [ a :Measure ; :quantity 2 ; :product :product2 ] ,
                     [ a :Measure ; :quantity 3 ; :product :product4 ] ;
          :hasOutput [ a :Measure ; :quantity 1 ; :product :product3 ] .