jquery - 如何将 SPARQL 查询的结果重用于另一个查询?

标签 jquery sparql reusability

例如我有这个查询

SELECT ?x
WHERE {?x :has_input "z"}

然后我想使用 ?x 的结果作为另一个查询的对象

SELECT ?y
WHERE {?y :uses "x"}

有什么想法可以实现这一目标吗?提前致谢

最佳答案

为了举例,让我们定义一些数据:

@prefix : <http://example.org/> .

:node0 :has_input "w", "z" .
:node1 :has_input "x", "y" .
:node2 :has_input "y", "z" .
:node3 :uses :node2 .
:node4 :uses :node1 .

根据这些数据,并指定任何特定的 API(因为您没有指定),您将获得一些 SPARQL 级别选项。第一个是简单地组合查询,在本例中这很容易:

prefix : <http://example.org/>

select ?y where { 
  ?x :has_input "z" .
  ?y :uses ?x .
}

$ arq --data data.n3 --query combined-query.sparql 
----------
| y      |
==========
| :node3 |
----------

另一种选择是使用子查询

prefix : <http://example.org/>

select ?y where { 
  {
    select ?x where { 
      ?x :has_input "z" .
    }
  }
  ?y :uses ?x .
}


$ arq --data data.n3 --query subquery.sparql
----------
| y      |
==========
| :node3 |
----------

如果您必须单独执行查询,第三种可能是您实际需要的,即执行一个为您查找 ?x 值的查询,然后执行一个查询查找 ?y,但 ?x 值嵌入 values 。第一个查询如下所示并返回:

prefix : <http://example.org/>

select ?x where { 
  ?x :has_input "z" .
}

$ arq --data data.n3 --query xquery.sparql
----------
| x      |
==========
| :node2 |
| :node0 |
----------

然后,根据这些值,创建 ?y 的查询:

prefix : <http://example.org/>

select ?y where { 
  values ?x { :node2 :node0 }
  ?y :uses ?x .
}

$ arq --data data.n3 --query yquery.sparql
----------
| y      |
==========
| :node3 |
----------

关于jquery - 如何将 SPARQL 查询的结果重用于另一个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17742950/

相关文章:

.net - 如何实现异步运行的可重用命名管道监听器?

javascript - 如果我还没有使用 bind 或 click 将事件处理程序绑定(bind)到它,我可以调用 jQuery 的 click() 来跟踪 <a> 链接吗?

javascript - 覆盖 jquery 闭包中定义的函数

rdf - Sparql - 返回递归深度

java - SPARQL 构造查询在 java 上不起作用

java - 重用初始化耗时的Swing组件

ios - 在静态表格 View 中重用表格单元格 - iOS - Swift

javascript - Jquery 条件不适用于附加的 div

javascript - 将参数传递给更高级别的事件处理程序

web-services - 如何使用 Tomcat 7.0.27 提供 SPARQL 端点