我在Protege 4中构建了以下Ontology .
在本体中:主类 Frame
的数据类型为 hasDuration
,域名为'Frame',范围为 UnsignedShort
. 类 ShortFrame
和 LongFrame
是从类 SizedFrame
中推断出来的,具有以下限制
ShortFrame类的限制
SizedFrame that hasDuration some unsignedLong[<=20]
LongFrame类的限制
SizedFrame that hasDuration some unsignedLong[>=200]
我手动创建了一个名为 frame0
的类 frame
的实例,该实例的属性 hasDuration
设置为 12
.
什么是获取all shortFrame
所需的SPARQL查询 . 我希望 frame0
会被推断为 shortFrame
?
谢谢你的回复!
Edition: sample query
PREFIX frame: <http://www.semantic.org/sample.owl#>
SELECT ?y WHERE {?y rdf:type frame:Frame}
但它不起作用!也许这是不正确的!
2 回答
我相信,您将使用SPARQL语言编写一些OWL限制信息查询 . SPARQL是一种RDF查询语言,并不了解OWL的概念 . 您可以使用数据属性来定义持续时间值,而不是限制,您可以使用SPARQL获取所有shortFrame . 我建议的其他选项是使用SWRL规则而不是SPARQL . 希望这可以帮助 !!
您提供的查询会询问
frame:Frame
类型的所有实例 . 由于你只需要短帧,你应该这样调整它:...但上述内容仅在推理人理解您的限制并且能够正确地将
frame0
归类为ShortFrame
的实例时才有效 . 我并不过分熟悉Protege的owl限制语法,所以我并不是100%确定你的限制表达了你想要表达的内容 .作为替代方案,您实际上可以表达SPARQL中所需的限制 . 要查询持续时间小于20的所有帧: