我想在Protege中编写嵌套的DL查询。我可以运行一个简单的查询,如:
人和hasFather值PersonA
它检索父亲是PersonA的所有人的名字。但我希望也应从某些查询中检索PersonA值,例如
Person和hasFather值(Person和hasSon值PersonB)
它在Protege中显示语法错误。请帮我正确的格式。
答案 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人父亲的其他孩子。
例如,这是一个关于辛普森家族的询问,其中巴特和丽莎各自将荷马作为他们的父亲,而荷马则将他们每个人当作孩子:
数据是:
@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 .