如何编写此SPARQL请求?

时间:2012-06-24 06:45:45

标签: sparql jena ontology

我在Protege 4中构建了以下Ontology。

enter image description here

在本体论中:主要类Frame的数据类型属性hasDuration,域名为“Frame”,范围为UnsignedShort。类ShortFrameLongFrame是从类SizedFrame中推断出来的,具有以下限制

ShortFrame类的限制

SizedFrame that hasDuration some unsignedLong[<=20]

LongFrame类的限制

SizedFrame that hasDuration some unsignedLong[>=200]

我手动创建了一个名为frame的{​​{1}}类实例,其属性frame0设置为hasDuration

获取全部12所需的SPARQL查询是什么。我希望将shortFrame推断为frame0

感谢您的回复!

版本:示例查询

shortFrame

但它不起作用!也许这不对!

2 个答案:

答案 0 :(得分:1)

我相信,您将在SPARQL语言中编写一些OWL限制信息查询。 SPARQL是一种RDF查询语言,并不了解OWL的概念。您可以使用数据属性来定义持续时间值,而不是限制,您可以使用SPARQL获取所有shortFrame。我建议的其他选项是使用SWRL规则而不是SPARQL。希望这可以帮助 !!

答案 1 :(得分:0)

您提供的查询会询问frame:Frame类型的所有实例。由于你只需要短帧,你应该像这样调整它:

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

...但上述内容仅在推理人理解您的限制时才有效,并且可以正确地将frame0归类为ShortFrame的实例。我并不过分熟悉Protege的owl限制语法,所以我不能100%确定你的限制表达了你想要表达的内容。

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

SELECT ?y 
WHERE {
   ?y a frame:Frame; 
      frame:hasDuration ?d . 
   FILTER (?d <= 20) 
}