【问题标题】:SPARQL Querying Transitive different versions of arqSPARQL查询传递不同版本的arq
【发布时间】:2012-01-21 17:09:28
【问题描述】:

基本上,我在下面得到了一个 SPARQL 查询,它适用于 arq 2.8.8,但不适用于 arq2.8.4,因为它无法识别 + 符号。我真的想要一个可以在与我发布的类似的 arq 2.8.4 版本上运行的查询。我发布的查询基本上找到了所有彼此相同的项目。例如,如果 a 与 b 相同且 b 与 c 相同,则查询返回 a 的 b 和 c。

PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?x owl:sameas+ ?y }

【问题讨论】:

    标签: sparql semantic-web jena arq


    【解决方案1】:

    您使用的功能是 SPARQL 1.1,因此早期版本的 ARQ 不支持。编写接近您所做的查询的唯一方法是执行以下操作之一。

    不同长度的联合路径

    PREFIX owl: <http://www.w3.org/2002/07/owl#>
    SELECT *
    WHERE
    {
      { ?x owl:sameAs ?y }
      UNION
      { ?s owl:sameAs [ owl:sameAs ?y ] . }
      UNION
      { ?s owl:sameAs [ owl:sameAs [ owl:sameAs ?y ] ] . }
      # Repeat the above pattern up to whatever limit you want
    }
    

    使用客户端代码

    按如下方式发出初始查询:

    PREFIX owl: <http://www.w3.org/2002/07/owl#> 
    SELECT * WHERE { ?x owl:sameAs ?y }
    

    制作?y 值的列表,然后为每个值发出如下形式的查询:

    PREFIX owl: <http://www.w3.org/2002/07/owl#> 
    SELECT * WHERE { <constant> owl:sameAs ?y }
    

    您每次都用&lt;constant&gt; 替换列表中的一个值,然后将?y 的新值添加到列表中。

    在使用这种方法时,您唯一需要注意的是,您需要跟踪已为其发出第二个查询的值,以节省您重复查询的时间。

    【讨论】:

      猜你喜欢
      • 2012-01-24
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 2016-06-09
      相关资源
      最近更新 更多