[英]How to infer individual with more than 2 properties in OWL / GraphDB?
I got advice from the previous question and modified the source.我从上一个问题中得到了建议并修改了源代码。 However, the source still does not work properly.但是,源仍然无法正常工作。
I am using GraphDB(RuleSet: OWL2-RL) and SPARQL.我正在使用 GraphDB(RuleSet: OWL2-RL) 和 SPARQL。
I have an ontology with Person and Animal_Lover classes.我有一个包含 Person 和 Animal_Lover 类的本体。 People are Animal_Lover if they have more than 2 pet.如果人们拥有超过 2 个宠物,则他们是 Animal_Lover。
How can I do this in my ontology?我怎样才能在我的本体中做到这一点?
<?xml version="1.0"?>
<rdf:RDF xmlns="http://www.example.com/test"
xmlns:test="http://www.example.com/test#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<owl:Ontology rdf:about="http://www.example.com/test"/>
<owl:ObjectProperty rdf:about="http://www.example.com/test#hasOwner">
<owl:inverseOf rdf:resource="http://www.example.com/test#hasPet"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="http://www.example.com/test#hasPet">
<owl:inverseOf rdf:resource="http://www.example.com/test#hasOwner"/>
</owl:ObjectProperty>
<owl:Class rdf:about="http://www.example.com/test#Animal_Lover">
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.example.com/test#hasPet"/>
<owl:minQualifiedCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#nonNegativeInteger">2</owl:minQualifiedCardinality>
<owl:onClass rdf:resource="http://www.example.com/test#Mammal"/>
</owl:Restriction>
</owl:equivalentClass>
<rdfs:subClassOf rdf:resource="http://www.example.com/test#Person"/>
</owl:Class>
<owl:Class rdf:about="http://www.example.com/test#Mammal"/>
<owl:Class rdf:about="http://www.example.com/test#Dog">
<rdfs:subClassOf rdf:resource="http://www.example.com/test#Mammal"/>
<owl:disjointWith rdf:resource="http://www.example.com/test#Person"/>
</owl:Class>
<owl:Class rdf:about="http://www.example.com/test#Person">
<rdfs:subClassOf rdf:resource="http://www.example.com/test#Mammal"/>
<owl:disjointWith rdf:resource="http://www.example.com/test#Dog"/>
</owl:Class>
<owl:NamedIndividual rdf:about="http://www.example.com/test#Lulu">
<rdf:type rdf:resource="http://www.example.com/test#Dog"/>
<test:hasOwner rdf:resource="http://www.example.com/test#Smith"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="http://www.example.com/test#Tank">
<rdf:type rdf:resource="http://www.example.com/test#Dog"/>
<test:hasOwner rdf:resource="http://www.example.com/test#Smith"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="http://www.example.com/test#Nala">
<rdf:type rdf:resource="http://www.example.com/test#Dog"/>
<test:hasOwner rdf:resource="http://www.example.com/test#Smith"/>
</owl:NamedIndividual>
<owl:NamedIndividual rdf:about="http://www.example.com/test#Smith">
<rdf:type rdf:resource="http://www.example.com/test#Person"/>
<test:hasPet rdf:resource="http://www.example.com/test#Lulu"/>
<test:hasPet rdf:resource="http://www.example.com/test#Nala"/>
<test:hasPet rdf:resource="http://www.example.com/test#Tank"/>
</owl:NamedIndividual>
<rdf:Description>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#AllDifferent"/>
<owl:distinctMembers rdf:parseType="Collection">
<rdf:Description rdf:about="http://www.example.com/test#Lulu"/>
<rdf:Description rdf:about="http://www.example.com/test#Nala"/>
<rdf:Description rdf:about="http://www.example.com/test#Smith"/>
<rdf:Description rdf:about="http://www.example.com/test#Tank"/>
</owl:distinctMembers>
</rdf:Description>
</rdf:RDF>
I want Smith to be inferred and become Animal_Lover.我希望史密斯被推断并成为Animal_Lover。 But this code does not work in OWL (or GraphDB).但是这段代码在 OWL(或 GraphDB)中不起作用。 What is the problem?问题是什么?
我认为你所要求的属于 OWL DL,GraphDB 不支持它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.