Ant*_*ony 5 rdf owl dlquery protege description-logic
此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.
Run Code Online (Sandbox Code Playgroud)
查询:
petOf value Bob 回归Sparkey和LuckypetOf value Joe 回报 LassyhasPet exactly 1 没有回报.为什么不是最后一个查询返回Joe?我在使用Pellet,HermiT和FaCT ++的Protégé中尝试过它,但它没有用.
类表达式hasPet exactly 1 DomesticAnimal具有与属性hasPet正好相关的那些个体的实例DomesticAnimal. 恰好一个意味着至少一个,不超过一个.基于三元组
:Joe :hasPet :Lassy .
:Bob :hasPet :Sparkey ;
:hasPet :Lucky .
Run Code Online (Sandbox Code Playgroud)
我们知道乔和鲍勃每人至少有一只宠物,但我们不知道他们可能有多少宠物.Joe可能有Lassy以外的宠物,所以我们不知道Joe 只有一只宠物.Sparkey和Lucky可能是同一个人,所以Bob至少有一只宠物,但我们没有Bob的宠物数量的上限.
OWL以及RDF构成了开放世界的假设,这意味着OWL并不认为所提供的数据是对世界上所有事物的详尽列举.如果确实如此,那么推论就没有意义了.没有断言s p o并不意味着NOT( s p o ),而是仅仅是没有判断s p o.
但是,您可以为数据添加更多知识,以获得所需的结论.您用以下内容描述Joe:
Joe a Human ;
hasPet Lassy ;
hasPet only { Lassy } .
Lassy a DomesticAnimal .
Run Code Online (Sandbox Code Playgroud)
从这里你可以推断出来
Joe a (hasPet exactly 1 DomesticAnimal) .
Run Code Online (Sandbox Code Playgroud)
对于Bob来说,看起来你希望Sparkey和Lucky是不同的动物,所以你需要owl:differentFrom:
Bob a Human ;
hasPet Sparkey, Lucky .
Sparkey a DomesticAnimal .
Lucky a DomesticAnimal ;
owl:differentFrom Sparkey .
Run Code Online (Sandbox Code Playgroud)
我没有包含Bob hasPet only { Sparkey, Lucky }这些公理,因为他们没有必要推断鲍勃有多只宠物,但你可以包括它.我还包括了一个本owl:differentFrom可以做出的断言.现在鲍勃已知有两种不同的宠物,并且因此已知不是一个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 .
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |