1
我想弄清楚Jena TDB如何处理物理查询计划级别上的多个FROM
子句的SPARQL查询。 我想知道Jena TDB如何处理通过不同图表执行查询。Jena TDB物理查询计划与多个FROM子句
我做了一些小实验,看了看查询代数,但是,我不清楚FROM
子句是如何影响代数的。 看起来像FROM子句在代数中被丢弃。我期望代数是通过图的联合来评估的,但我想确定。
我有以下的四边形:
<http://example.com/book2/> <http://example.com/price> "5"^^<http://www.w3.org/2001/XMLSchema#integer> <http://example.com/A> .
<http://example.com/book2/> <http://example.com/title> "Lord of the Rings" <http://example.com/B> .
和下面的查询:
SELECT (AVG(?price) as ?total)
FROM <http://example.com/A>
FROM <http://example.com/B>
WHERE {
?book <http://example.com/price> ?price .
?book <http://example.com/title> ?title .
}
./tdbquery --loc test --query test.sparql --explain
查询代数如下所示:
INFO exec :: ALGEBRA
(project (?total)
(extend ((?total ?.0))
(group() ((?.0 (avg ?price)))
(bgp (triple ?book <http://example.com/price> ?price)))))
当我执行查询过数据我收到预期的结果。
在我上面介绍的情况下,数据集需要在某个时间点合并,以便查询得到回答。如果查询在图A和图B上执行,则查询不会生成答案。我想知道具体如何工作。 –
啊哈! TDB有一个特殊功能:[动态数据集](https://jena.apache.org/documentation/tdb/dynamic_datasets.html),这就是您的查询工作的原因。 – user205512
我明白了,你碰巧知道动态数据集何时构建?在查询被回答之前或查询计划中的每个“叶子”是否完成一次?我上面的例子是为了简单地展示这个问题,如果我的意思不清楚,那么我会发布一个新问题来解释一个例子的问题。 –