【问题标题】:How to write a nested DL query如何编写嵌套 DL 查询
【发布时间】:2013-10-15 18:21:10
【问题描述】:
我想在 Protege 中编写一个嵌套的深度学习查询。我可以运行一个简单的查询,例如:
Person 和 hasFather 值 PersonA
它检索父亲为 PersonA 的所有人员的名称。但我希望 PersonA 值也应该从一些查询中检索,例如
Person 和 hasFather 值(Person 和 hasSon 值 PersonB)
Protege 中显示语法错误。请帮助我正确的格式。
【问题讨论】:
标签:
owl
protege
description-logic
dlquery
【解决方案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 .