我有一个OWL本体,有三个相互关联的个体: a , b 和 c ,还有两个孤立的个体 x , y 。
相互关联的个人:
孤立的个人:
是否可以使用DL查询对所有孤立的个体进行分类(通过逻辑推理,而不是通过枚举)(在Protégé4.3中,如果它有所不同),如果可能,我该怎么做? / p>
我的直觉猜测是这样的:(hasRelationWith min 0 Thing)排除(hasRelationWith min 1 Thing),但DL-Query似乎不支持Set Subtraction语法......
更新:以下SPARQL可以实现,但不能在类定义中使用。
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX my: <http://localhost:8080/ontology/untitled-ontology-26#>
SELECT DISTINCT ?src_obj
WHERE {
?src_obj a owl:NamedIndividual .
minus {?src_obj my:hasRelationWith ?target_obj}
minus {?target_obj my:hasRelationWith ?src_obj}
}
答案 0 :(得分:1)
您可以查询逻辑上可证明的内容。这意味着,如果您推断某些人与某个人的任何其他人无关,那么您可以询问它。例如,如果你有不相交的类Cat
和Dog
,那么没有任何内容可以是两者的实例,并且你有一个Person
jim
也有其他类型hasPet only Cat and Dog
,然后推理人可以推断出jim hasPet exactly 0
。
在DL查询语言中,您还可以使用 inverse 属性。前面的例子显示jim
没有宠物(即hasPet exactly 0
的实例)。你可以通过询问inverse hasPet exactly 0
的实例来要求不是任何人的宠物的动物。例如,如果您添加Person
,ThisKind
和ThatKind
的不相交的子类,并说missy
Cat
inverse hasPet only ThisKind and ThatKind
,那么一个推理者可以推断missy
属性没有人与 {/ em> hasPet
相关联。本答案的最后给出了这两个例子的本体论。
对于您的特定查询,您只需要组合我刚刚描述的表单的两个类表达式:
hasRelationWith正好为0,反hasRelationWith正好为0
或者,有一些括号:
(hasRelationWith正好为0)和((has hasRelationWith)正好为0)
然而,非常重要的是要注意,这只会使那些可以证明证明没有这种关系的人返回。仅仅数据还没有包含这样的关系是不够的。 OWL产生open world assumption,意味着没有明确陈述或可证明的东西不被认为是真或假。
@prefix : <http://www.example.org/cardinality-example#> .
@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#> .
:fido a owl:NamedIndividual , :Dog .
:Dog a owl:Class .
:fluffy a owl:NamedIndividual , :Cat ;
a [ a owl:Class ;
owl:intersectionOf ( :ThatKind [ a owl:Restriction ;
owl:allValuesFrom :ThisKind ;
owl:onProperty [ owl:inverseOf :hasPet ]
] )
] .
:ThatKind a owl:Class ;
rdfs:subClassOf :Person ;
owl:disjointWith :ThisKind .
:rover a owl:NamedIndividual , :Dog .
:hasPet a owl:ObjectProperty .
<http://www.example.org/cardinality-example>
a owl:Ontology .
:Person a owl:Class .
:jim a owl:NamedIndividual , :Person ;
a [ a owl:Restriction ;
owl:cardinality "0"^^xsd:nonNegativeInteger ;
owl:onProperty :hasPet
] .
:missy a owl:NamedIndividual , :Cat .
:Cat a owl:Class ;
owl:disjointWith :Dog .
:ThisKind a owl:Class ;
rdfs:subClassOf :Person .