我在Protege 4中构建了以下Ontology。
在本体论中:主要类Frame
的数据类型属性hasDuration
,域名为“Frame”,范围为UnsignedShort
。类ShortFrame
和LongFrame
是从类SizedFrame
中推断出来的,具有以下限制
ShortFrame类的限制
SizedFrame that hasDuration some unsignedLong[<=20]
LongFrame类的限制
SizedFrame that hasDuration some unsignedLong[>=200]
我手动创建了一个名为frame
的{{1}}类实例,其属性frame0
设置为hasDuration
。
获取全部12
所需的SPARQL查询是什么。我希望将shortFrame
推断为frame0
?
感谢您的回复!
版本:示例查询
shortFrame
但它不起作用!也许这不对!
答案 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)
}