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

Rid*_*han 7 uri foaf dlquery manchester-syntax

我知道这听起来像一个非常愚蠢的问题,但我一直试图解决这个问题,但我找不到任何相关内容,尽管这显然应该是可行的.

我正在开发一些使用曼彻斯特OWL语法和HermiT推理器通过其API查询OWL文件的东西.我也可以在Protege 4的DL Query选项卡上运行查询,以检查我在该文件上的查询结果.该文件基本上是添加数据实例的朋友之友(FOAF)本体.

问题:我找不到通过其唯一标识符查询实例的方法.

它应该是URI,所以例如对于具有URI的Person对象 http://xmlns.com/foaf/0.1/Andrew_Kuchling,我试图运行以下查询:

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"
Run Code Online (Sandbox Code Playgroud)

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

在FOAF中,mbox_sha1sum是邮箱的sha1sum.邮箱与个人有着独特的联系.所以我尝试了以下查询:

Person and mbox_sha1sum value "mbox_sha1sum-property-value-here"
Run Code Online (Sandbox Code Playgroud)

但是,它甚至不执行此查询,因为它感觉查询不正确.该mbox_sha1sum值与我为此Person添加的值相同.它存在于个人中.

它确实执行此查询:

Person and firstName value "Andrew"
Run Code Online (Sandbox Code Playgroud)

所有数据属性都不是专用数据类型.默认情况下作为文字处理.

我真的不知道我做错了什么.请有人请帮忙吗?

ben*_*man 7

我知道这个问题已经发布一年多了,但我最近问了同样的问题并找到了以下解决方案:

只需将要查询的个人/成员的名称放在大括号中:

{MyIndividualEntityName}
Run Code Online (Sandbox Code Playgroud)

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

{IndividualName1,IndividualName2}
Run Code Online (Sandbox Code Playgroud)

请注意,这些查询形成了所谓的enumerated类的类表达式.这意味着,此查询的结果不仅仅是您在查询中命名的所有个人的所有超类或子类的列表.相反,它指的是一个匿名类,它由您列出的个人组成.匿名类是一个在本体之外无法使用的类,因为此类没有可引用的owl实体(没有IRI可以引用).

您可以在官方W3C规范中找到有关OWL曼彻斯特语法的更多信息.