如何在DL Manchester OWL语法中查询个体?

7
我知道这听起来像是一个非常愚蠢的问题,但我一直在尝试解决它,却找不到任何相关内容,虽然看起来应该可以做到。
我正在开发一个使用Manchester OWL Syntax和HermiT推理器通过其API查询OWL文件的东西。我也会在Protege 4的DL Query选项卡中运行查询,以检查该文件上的查询结果。该文件基本上是Friend Of A Friend(FOAF)本体论,并添加了数据实例。
问题是:我找不到一种按其唯一标识符查询实例的方法。
它应该是URI,例如对于具有URI http://xmlns.com/foaf/0.1/Andrew_Kuchling 的Person对象,我尝试运行以下查询:
Person and URI value "http://xmlns.com/foaf/0.1/Andrew_Kuchling"

Person value "http://xmlns.com/foaf/0.1/Andrew_Kuchling"

Person and URI value "Andrew_Kuchling"

Person that "Andrew_Kuchling"

这些都不起作用。(URI是由将http://xmlns.com/foaf/0.1/前缀添加到您输入的任何字符串来构造的,在本体中未实际标识为属性)。

在FOAF中,mbox_sha1sum是邮箱的sha1sum。邮箱与个人唯一相关联。因此,我尝试了以下查询:

Person and mbox_sha1sum value "mbox_sha1sum-property-value-here"

然而,它甚至不执行此查询,因为它认为查询不正确。 mbox_sha1sum 值与我为此人添加的值相同。 它存在于个人中。

它执行此查询:

Person and firstName value "Andrew"

所有数据属性都不是专门的数据类型。默认情况下视为文字量。
我真的不知道我做错了什么。有人可以帮帮我吗?
1个回答

7
我知道这个问题已经发布了一年多了,但是最近我也问了自己同样的问题,并找到了以下解决方案:
只需将您要查询的个人/成员的名称放在花括号中即可:
{MyIndividualEntityName}

这样,您甚至可以一次查询多个人:

{IndividualName1,IndividualName2}

请注意,这些查询构成所谓枚举类的类表达式。这意味着,此查询的结果不仅仅是您在查询中命名的所有个体的所有超类或子类的列表。相反,它指的是一个匿名类,该类恰好由您列出的个体组成。 匿名类是一种从本体论之外无法获得的类,因为对于此类没有可引用的owl实体(没有IRI可引用)。
您可以在官方W3C规范中找到有关OWL Manchester语法的更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接