如何编写嵌套的DL查询

时间:2013-10-15 18:21:10

标签: owl protege description-logic dlquery

我想在Protege中编写嵌套的DL查询。我可以运行一个简单的查询,如:

  

人和hasFather值PersonA

它检索父亲是PersonA的所有人的名字。但我希望也应从某些查询中检索PersonA值,例如

  

Person和hasFather值(Person和hasSon值PersonB)

它在Protege中显示语法错误。请帮我正确的格式。

1 个答案:

答案 0 :(得分:1)

原因

Person and hasFather value (Person and hasSon value PersonB)

语法错误不是它“嵌套”,而value需要个人,但(Person and hasSon value PersonB)。如果你使用

Person and hasFather some (Person and hasSon value PersonB)

相反,你应该全部设定。该查询要求的人是父亲是一个人并且将人B作为儿子的人。也就是说,它要求B人的兄弟姐妹,即B人父亲的其他孩子。

例如,这是一个关于辛普森家族的询问,其中巴特和丽莎各自将荷马作为他们的父亲,而荷马则将他们每个人当作孩子:

simpsons query

数据是:

@prefix :      <http://www.example.org/families#> .
@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 families: <http://www.example.org/families#> .

<http://www.example.org/families>
        a       owl:Ontology .

families:Person  a  owl:Class .

families:hasFather  a  owl:ObjectProperty .

families:hasChild  a  owl:ObjectProperty .

families:Bart  a            owl:NamedIndividual , families:Person ;
        families:hasFather  families:Homer .

families:Lisa  a            owl:NamedIndividual , families:Person ;
        families:hasFather  families:Homer .

families:Homer  a          owl:NamedIndividual , families:Person ;
        families:hasChild  families:Bart , families:Lisa .

families:Milhouse  a  owl:NamedIndividual , families:Person .