1

我在 Protege 4 中构建了以下本体。

在此处输入图像描述

在这个本体中:主类Frame有一个 datatypePropertyhasDuration域 'Frame' 和 range UnsignedShort。类ShortFrame,并从具有以下限制LongFrame的类中推断出来SizedFrame

ShortFrame 类的限制

SizedFrame that hasDuration some unsignedLong[<=20]

LongFrame 类的限制

SizedFrame that hasDuration some unsignedLong[>=200]

我手动创建了一个frame名为的类的实例frame0,它的属性hasDuration设置为12

我需要获取全部的 SPARQL 查询是什么shortFrame。我希望这frame0会被推断为shortFrame?

感谢您的回复!

版本:示例查询

PREFIX frame: <http://www.semantic.org/sample.owl#>
SELECT ?y WHERE {?y rdf:type frame:Frame}

但它不工作!也许这是不正确的!

4

2 回答 2

1

我相信,您将使用 SPARQL 语言编写一些关于 OWL 限制信息的查询。SPARQL 是一种 RDF 查询语言,不了解 OWL 的概念。您可以使用数据属性来定义持续时间值,而不是进行限制,然后您可以使用 SPARQL 获取所有短帧。我推荐的其他选项是使用 SWRL 规则而不是 SPARQL。希望这可以帮助 !!

于 2012-06-25T13:29:26.207 回答
0

您给出的查询要求提供 type 的所有实例frame:Frame。因为你只想要短帧,你应该像这样调整它:

SELECT ?y WHERE {?y a frame:ShortFrame}

...但是只有在推理者理解您的限制并且可以正确分类frame0ShortFrame. 我不太熟悉 Protege 的 owl 限制语法,所以我不能 100% 确定您的限制表达了您想要表达的内容。

作为替代方案,您实际上可以在 SPARQL 中表达您需要的限制。查询所有持续时间小于 20 的帧:

SELECT ?y 
WHERE {
   ?y a frame:Frame; 
      frame:hasDuration ?d . 
   FILTER (?d <= 20) 
}
于 2012-06-26T21:29:13.210 回答