我想在 Protege 中编写一个嵌套的 DL 查询。我可以运行一个简单的查询,例如:
Person 和 hasFather 值 PersonA
它检索其父亲为 PersonA 的所有人员的名称。但我希望 PersonA 值也应该从一些查询中检索,例如
Person 和 hasFather 值(Person 和 hasSon 值 PersonB)
它在 Protege 中显示语法错误。请帮助我正确的格式。
我想在 Protege 中编写一个嵌套的 DL 查询。我可以运行一个简单的查询,例如:
Person 和 hasFather 值 PersonA
它检索其父亲为 PersonA 的所有人员的名称。但我希望 PersonA 值也应该从一些查询中检索,例如
Person 和 hasFather 值(Person 和 hasSon 值 PersonB)
它在 Protege 中显示语法错误。请帮助我正确的格式。
原因是
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 .