【问题标题】:Is it possible to combine those 2 SPARQL INSERT into one?是否可以将这 2 个 SPARQL INSERT 合并为一个?
【发布时间】:2011-12-07 10:34:24
【问题描述】:

我想执行以下查询,在节点 a 和节点 b 之间添加关系 skos:related :

  PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
  INSERT { GRAPH ?graph { ?a skos:related ?b } }
  WHERE{
    GRAPH ?graph {
      { ?a skos:inScheme ?scheme } .
      { ?b skos:inScheme ?scheme }
    }
 };
 INSERT { GRAPH ?graph { ?b skos:related ?a } }
 WHERE{
   GRAPH ?graph {
     { ?a skos:inScheme ?scheme } .
     { ?b skos:inScheme ?scheme }
   }
 };

我希望将单个查询发送到 RDF 存储,但找不到这样做的方法。 显然,这里的查询是通用形式的,而 ?a、?b、?scheme 和 ?graph 变量在执行时与特定值绑定。

有办法吗?

【问题讨论】:

    标签: rdf sparql


    【解决方案1】:

    您不能在单个查询模式中断言 skos:related 关系的两个方向吗?即:

    PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
    INSERT { GRAPH ?graph { ?a skos:related ?b . ?b skos:related ?a } }
    WHERE{
      GRAPH ?graph {
        { ?a skos:inScheme ?scheme } .
        { ?b skos:inScheme ?scheme }
      }
    };
    

    【讨论】:

    • 确实有效。试过with INSERT { GRAPH ?graph { { ?a skos:related ?b } . { ?b skos:related ?a } } ... 哪个不起作用。不过不确定有什么区别......
    • 我认为它不能与嵌套的 {} 一起使用是实现中的一个错误。 SPARQL 更新是相当新的,所以并不是所有的实现都经过了很好的调整,请向供应商报告。
    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多