此DL-Query未返回任何个人:
hasPet exactly 1 DomesticAnimal
这是本体论的一部分:
:hasPet a owl:ObjectProperty;
rdfs:domain :Human;
rdfs:range :DomesticAnimal;
owl:inverseOf : petOf;
:Joe a :Human;
hasPet :Lassy.
:Bob a :Human;
hasPet :Sparkey, Lucky.
查询:
petOf value Bob
返回Sparkey
和Lucky
petOf value Joe
返回Lassy
hasPet exactly 1
不返回任何内容。为什么最后一个查询不返回Joe
?
我在Pelé,HermiT和FaCT ++的Protégé中尝试过它,但它没有用。
答案 0 :(得分:7)
类表达式hasPet exactly 1 DomesticAnimal
的实例恰好是属性hasPet
与正好一个DomesticAnimal
相关的个体。 正好一个表示至少一个和不超过一个。基于三元组
:Joe :hasPet :Lassy .
:Bob :hasPet :Sparkey ;
:hasPet :Lucky .
我们知道Joe和Bob每个人都有至少一个宠物,但我们不知道他们可能有多少宠物。 Joe可能有Lassy以外的宠物,所以我们不知道Joe 完全一只宠物。 Sparkey和Lucky可能是同一个人,所以Bob至少有一只宠物,但我们没有Bob的宠物数量的上限。
OWL以及RDF生成open world assumption,这意味着OWL不会假设所提供的数据是对世界上所有事物的详尽枚举。如果确实如此,推论就没有意义了。没有s p o
的断言并不意味着NOT( s p o )
,而是s p o
尚未做出判断。
您可以为数据添加更多知识,以获得您想要的结论。您用以下内容描述了Joe:
Joe a Human ;
hasPet Lassy ;
hasPet only { Lassy } .
Lassy a DomesticAnimal .
从这里你可以推断出
Joe a (hasPet exactly 1 DomesticAnimal) .
对于Bob来说,看起来你希望Sparkey和Lucky是不同的动物,所以你需要owl:differentFrom
:
Bob a Human ;
hasPet Sparkey, Lucky .
Sparkey a DomesticAnimal .
Lucky a DomesticAnimal ;
owl:differentFrom Sparkey .
我没有在这些公理中加入Bob hasPet only { Sparkey, Lucky }
,因为他们没有必要推断鲍勃有多只宠物,但你可以加入它。我还只包含了一个本可以做出的owl:differentFrom
断言。现在Bob知道有两个不同的宠物,因此不知道是hasPet exactly 1 DomesticAnimal
。将此数据加载到Protégé后,DL查询hasPet exactly 1 DomesticAnimal
按预期工作:
如果您希望能够快速将此结构加载到Protégé中,这里是一个包含个人,属性和公理的本体,如上所述。我没有定义petOf
属性,但您仍然可以将前两个查询作为inverse hasPet value Joe
和inverse hasPet value Bob
运行,并获得预期结果。
@prefix : <http://www.example.com/owa#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owa: <http://www.example.com/owa#> .
owa:Bob
a owl:NamedIndividual , owa:Human ;
owa:hasPet owa:Sparkey , owa:Lucky .
owa:Sparkey
a owl:NamedIndividual , owa:DomesticAnimal .
owa:Lassy
a owl:NamedIndividual , owa:DomesticAnimal .
[] a owl:AllDifferent ;
owl:distinctMembers (owa:Lucky owa:Sparkey) .
owa:Joe
a owl:NamedIndividual , owa:Human ;
a [ a owl:Restriction ;
owl:allValuesFrom
[ a owl:Class ;
owl:oneOf (owa:Lassy)
] ;
owl:onProperty owa:hasPet
] ;
owa:hasPet owa:Lassy .
<http://www.example.com/owa>
a owl:Ontology .
owa:Lucky
a owl:NamedIndividual , owa:DomesticAnimal .
owa:Human
a owl:Class .
owa:hasPet
a owl:ObjectProperty .
owa:DomesticAnimal
a owl:Class .