1

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

Person 和 hasFather 值 PersonA

它检索其父亲为 PersonA 的所有人员的名称。但我希望 PersonA 值也应该从一些查询中检索,例如

Person 和 hasFather 值(Person 和 hasSon 值 PersonB)

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

4

1 回答 1

1

原因是

Person and hasFather value (Person and hasSon value PersonB)

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

Person and hasFather some (Person and hasSon value PersonB)

相反,您应该准备就绪。此查询要求具有父亲是人并且以人 B 作为儿子的人。也就是说,它要求B 的兄弟姐妹,即B 的父亲的其他孩子。

例如,这里有一个关于辛普森家族的查询,巴特和丽莎的父亲分别是荷马,而荷马则是他们的孩子:

辛普森一家查询

数据是:

@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 .
于 2013-10-15T18:59:51.787 回答