首页 文章

如何编写此SPARQL请求?

提问于
浏览
1

我在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]

我手动创建了一个名为 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 回答

  • 1

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

  • 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) 
    }
    

相关问题