类表达式hasPet exactly 1 DomesticAnimal
具有作为实例的那些个体,这些个体通过属性hasPet
恰好与 one相关联DomesticAnimal
。 恰好一个意味着至少一个且不超过一个。基于三元组
:Joe :hasPet :Lassy .
:Bob :hasPet :Sparkey ;
:hasPet :Lucky .
我们知道 Joe 和 Bob 每个人至少有一只宠物,但我们不知道他们可能有多少只宠物。除了 Lassy,Joe 可能还有其他宠物,因此我们不知道 Joe 拥有一只宠物。Sparkey 和 Lucky 有可能碰巧是同一个人,所以 Bob 至少有一只宠物,但我们没有 Bob 拥有的宠物数量的上限。
OWL 和 RDF 一样,都做出了开放世界假设,这意味着 OWL 不会假设所提供的数据是对世界上所有真实事物的详尽枚举。如果是这样,推理就没有意义了。没有断言 ofs p o
并不意味着NOT( s p o )
,而只是还没有判断s p o
。
不过,您可以在数据中添加更多知识以获得您想要的结论。您用以下内容描述乔:
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 }
在这些公理中,因为它们没有必要推断 Bob 拥有不止一只宠物,但您可以包含它。我还只包括了一个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 .