【问题标题】:Merging SPARQL query graphs in to one将 SPARQL 查询图合并为一个
【发布时间】:2014-01-28 17:29:14
【问题描述】:

假设您有多个查询图,它们可能共享或不共享某些节点(即具有一些公共子图),我们如何将它们组合成一个查询图。请注意,我并不想在这里汇总这些查询图的结果,我只是想进行一些查询,并尽可能将它们组合成一个查询图。

编辑:我实际上进一步考虑了这一点,我正在谈论具有常见三元组模式的多个查询。我想将它们组合成一个查询。

编辑:正如所指出的,使用示例查询来说明这一点会更容易,所以让我们考虑以下查询:

查询1:

SELECT ?X   
WHERE
{
    ?X rdf:type ub:GraduateStudent .
    ?X ub:takesCourse http://www.Department0.University0.edu/GraduateCourse0
}

查询2:

SELECT ?X, ?Y, ?Z
WHERE
{
    ?X rdf:type ub:GraduateStudent .
    ?Y rdf:type ub:University .
    ?Z rdf:type ub:Department .
    ?X ub:memberOf ?Z .
    ?Z ub:subOrganizationOf ?Y .
    ?X ub:undergraduateDegreeFrom ?Y
}

合并后的查询会写成这样:

SELECT ?X, ?Y, ?Z
WHERE
{
    ?X rdf:type ub:GraduateStudent .
    optional {?Y rdf:type ub:University .}
    optional {?Z rdf:type ub:Department .}
    optional {?X ub:memberOf ?Z .}
    optional {?Z ub:subOrganizationOf ?Y .}
    optional {?X ub:undergraduateDegreeFrom ?Y} 
    optional { ?X ub:takesCourse http://www.Department0.University0.edu/GraduateCourse0}

}

或者可能被重写为联合查询?使用某种API可以实现吗?

【问题讨论】:

  • 什么是“查询图”?你在谈论命名图吗?您是在询问 SPARQL 查询中的多个图形模式吗?
  • 根据您对迈克尔回答的评论,听起来像后者,但这只是将它们连接起来的问题。如果您有模式一:<x> :likes ?person 和模式二:<x> :eats ?food,您只需将它们合并为:<x> :likes ?person . <x> :eats ?food .。你能举个例子说明你正在尝试做什么吗?
  • 我认为我最初解释它的方式令人困惑,我说的是具有常见三元组模式的多个查询以及其中可能不常见的一些三元组模式。我想创建一个代表所有这些的查询。
  • 结果集怎么可能一样?如果一个查询绑定了另一个没有绑定的变量,那么其中一个查询中的变量将不在另一个查询中。此外,您在问题中没有提到耶拿,因此没有理由让任何人认为您想要那种答案。如果您可以展示您感兴趣的两种查询的示例,以及它们的合并/组合是什么,这将更加清晰。如果您能证明这一点,那么我们可能会向您展示如何使用 Jena 以编程方式进行操作。
  • 在 answers.semanticweb.com 上交叉发布:answers.semanticweb.com/questions/26232/…

标签: rdf sparql jena semantic-web


【解决方案1】:

我认为您正在寻找的是 specify the active graph 评估查询的能力。基本上,您使用FROM 和/或FROM NAMED 告诉查询引擎您在评估查询时想要考虑的图表。

【讨论】:

  • 我知道你在说什么,但这不是我要找的!从理论的角度来看,SPARQL 查询是一种与 RDF 图相匹配的小图模式。我有几个这样的查询图,如何将它们合并到一个查询图中。我没有尝试指定要查询的图表。
猜你喜欢
  • 2012-01-09
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多