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
我明白了,你碰巧知道動態數據集何時構建?在查詢被回答之前或查詢計劃中的每個「葉子」是否完成一次?我上面的例子是爲了簡單地展示這個問題,如果我的意思不清楚,那麼我會發佈一個新問題來解釋一個例子的問題。 –