【问题标题】:How to query individuals in DL Manchester OWL Syntax?如何在 DL Manchester OWL 语法中查询个人?
【发布时间】:2011-05-22 05:43:45
【问题描述】:

我知道这听起来像是一个非常愚蠢的问题,但我一直在努力解决这个问题,但我找不到任何关于此的内容,尽管这似乎很明显应该是可行的。

我正在开发一个通过 API 使用 Manchester OWL 语法和 HermiT 推理器来查询 OWL 文件的东西。我也可以在 Protege 4 的 DL Query 选项卡上运行查询,以检查我对该文件的查询结果。该文件基本上是添加了数据实例的朋友之友 (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/ 前缀到您输入的任何字符串来构造的,并且 URI 实际上并未在本体中标识为属性)。

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

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

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

它确实执行了这个查询:

Person and firstName value "Andrew"

所有数据属性都不是专门的数据类型。默认情况下被视为文字。

我真的不知道我做错了什么。有人可以帮忙吗?

【问题讨论】:

  • 接受答案!

标签: uri foaf dlquery manchester-syntax


【解决方案1】:

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

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

{MyIndividualEntityName}

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

{IndividualName1,IndividualName2}

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    相关资源
    最近更新 更多