1. Alex is Beck's father.
2. Beck is Carl's father.
基于1和2,我们可以推断:
3. Alex is Carl's grandfather.
对于OWL实现,我设置了三个OWL类和一个名为' isFatherOf'的对象属性。关于Protege。如何推理推理器的结果?
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Object Properties
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#isFatherOf -->
<owl:ObjectProperty rdf:about="http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#isFatherOf"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Classes
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#Alex -->
<owl:Class rdf:about="http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#Alex">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#isFatherOf"/>
<owl:someValuesFrom rdf:resource="http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#Beck"/>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
<!-- http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#Beck -->
<owl:Class rdf:about="http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#Beck">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#isFatherOf"/>
<owl:someValuesFrom rdf:resource="http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#Carl"/>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>
<!-- http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#Carl -->
<owl:Class rdf:about="http://www.semanticweb.org/administrator/ontologies/2016/0/untitled-ontology-3#Carl"/>
答案 0 :(得分:3)
使用property chains可以轻松实现您提到的方案,实际上此链接已完全解释了相同的方案。但简而言之,您需要创建3个人(Carl,Alex和Beck),然后将isFatherOf属性分配给每个人。因此:
onto:Alex rdf:type onto:Person ,
owl:NamedIndividual ;
onto:isFatherOf onto:Beck .
onto:Beck rdf:type onto:Person ,
owl:NamedIndividual ;
onto:isFatherOf onto:Carl .
onto:Carl rdf:type onto:Person ,
owl:NamedIndividual .
下一个重要的事情是创建一个属性isGrandFatherOf
,提到这是一个由两个isFatherOf
组成的链:
onto:isGrandFatherOf rdf:type owl:ObjectProperty ;
owl:propertyChainAxiom ( onto:isFatherOf
onto:isFatherOf) .
为了清楚起见,我在这个例子中添加了isFatherOf
的倒数,这样每个阶段的推理者都会告诉你谁是谁的父亲:
onto:hasFather rdf:type owl:ObjectProperty ;
owl:inverseOf onto:isFatherOf .
但是请阅读有关的链接,这是非常好的解释。