如何比較兩個RDF圖與SPARQL?如果我有圖表:a和:b,我想查找所有時間:a出現在:b。我可以查詢所有:a的主題,謂詞和對象,然後以編程方式構建一個模式查詢,以匹配:a中的模式:b。有沒有一種方法可以構建:SPARQL中的所有模式查詢,而不需要編程構造?比較SPARQL圖
1
A
回答
6
我建立了一個Jena Fuseki端點,其中包含兩個命名圖形http://a
和http://b
,我們將其稱爲A和B.A包含一個三元組,B包含兩個。 A,(看)爲一組三元的,是B的一個子集,它下面的查詢確認:
select * where {
graph ?g { ?s ?p ?o }
}
-----------------------------------------------------------
| s | p | o | g |
===========================================================
| <urn:uuid:b> | <urn:uuid:p> | <urn:uuid:b> | <http://b> |
| <urn:uuid:a> | <urn:uuid:p> | <urn:uuid:b> | <http://b> |
| <urn:uuid:a> | <urn:uuid:p> | <urn:uuid:b> | <http://a> |
-----------------------------------------------------------
現在,我們可以要求出現在一個而不是在其他三元。要問三重B中不在A,我們可以利用這個查詢:
select * where {
graph <http://a> { ?s ?p ?o }
NOT EXISTS { graph <http://b> { ?s ?p ?o } }
}
-------------
| s | p | o |
=============
-------------
我們也可以要求出現B中三元,而不是在答:我們希望並獲得一個三。
select * where {
graph <http://b> { ?s ?p ?o }
NOT EXISTS { graph <http://a> { ?s ?p ?o } }
}
----------------------------------------------
| s | p | o |
==============================================
| <urn:uuid:b> | <urn:uuid:p> | <urn:uuid:b> |
----------------------------------------------
一般情況下,如果X不包含三元組是不是也於Y,則X是Y的使用查詢,如上述情況,我們可以發現這樣的三元組是一個,而不是在其他的子集。
如果我們不關心特定的三元組,我們可以使用ASK
查詢來檢查是否存在,而不必知道它們是什麼。例如,因爲不存在這樣的三元組,所以例如,但是,由於我們試圖詢問A 是否爲B的一個子圖,這是由它們沒有三元組表示的,所以我們需要在這裏反轉真值。所以我們使用:
ask {
NOT EXISTS {
graph <http://a> { ?s ?p ?o }
NOT EXISTS { graph <http://b> { ?s ?p ?o } }
}
}
yes
同樣,如果我們問B是否是A的子圖,我們得到no
:
ask {
NOT EXISTS {
graph <http://b> { ?s ?p ?o }
NOT EXISTS { graph <http://a> { ?s ?p ?o } }
}
}
no
相關問題
- 1. 比較平均值 - SPARQL
- 2. 與SPARQL成對比較
- 3. 使用SPARQL比較兩個字符串
- 4. 比較圖像
- 5. 比較圖
- 6. 圖像比較
- 7. 比較位圖 - 比較法不工作
- 8. c#中比較位圖(簽名)比較#
- 9. SPARQL - 禁用字母順序比較實體的ID
- 10. Virtuoso SPARQL查詢無法比較浮點常量
- 11. 如何比較日期值(xsd:date)與SPARQL中的年份?
- 12. 簡單的sparql查詢不起作用,日期比較
- 13. SIFT-圖像比較
- 14. 散列圖比較
- 15. 地圖比較值
- 16. 比較圖像matlab
- 17. C++地圖比較
- 18. AForge圖像比較
- 19. matlab圖像比較
- 20. 圖片比較android
- 21. 直方圖比較
- 22. iOS圖像比較
- 23. 位圖圖像比較
- 24. 比較比較Int
- 25. AS3位圖數據百分比比較
- 26. 比較比較器的utils
- 27. 比較無法比較
- 28. Java比較兩張圖
- 29. 逐像素比較圖像
- 30. 比較雙打地圖
這是你所提到的「SPARQL圖」的第二個問題。哪有這回事; SPARQL是RDF圖的查詢語言(即,三元組集合)。如果你有一個RDF圖_A_,那麼它既可以是_B_的子圖,也可以是_isn't_;沒有一種感覺可以多次出現。 [有一個RDF蘊含的概念,其中空白節點是可以實例化的變量,所以它可能是一個圖形需要多個替換,但這幾乎不是你要求的,我認爲。] –
謝謝,更正。我打算在以下位置查找多個a的結構實例:b。 – NargothBond
你如何擁有這些圖表?你提到你不想以編程方式做這件事,但這些圖表在哪裏?他們是否在SPARQL端點中命名圖表?文件在某個磁盤上?如果兩個圖形在端點上被命名爲圖形,則可能可以執行某些操作。 –