我想在rdf數據庫(Blazegraph)中存儲大量整數。這些值需要用新數據更新(增加),或者如果缺失,則創建。什麼是在sparql 1.1中做到這一點的最佳方式?如果我是在SQL(MySQL/MariaDB)wrtiting它,它會是這樣,假設數據庫是空的,在第一,並表的唯一鍵設置爲「S,P」(主語和謂語):在sparql中更新或創建數值計數器(UPSERT)
-- Inserting or adding A=10, B=1
INSERT INTO tbl (s,p,o) VALUES ('A','cnt',10), ('B','cnt',1)
ON DUPLICATE KEY UPDATE o=o+VALUES(o);
生成的RDF數據:
:A :cnt 10 .
:B :cnt 1 .
下運行:
-- Inserting or adding A=3, C=5
INSERT INTO tbl (s,p,o) VALUES ('A','cnt',3), ('C','cnt',5)
ON DUPLICATE KEY UPDATE o=o+VALUES(o);
生成的RDF數據:
:A :cnt 13 .
:B :cnt 1 .
:C :cnt 5 .
所以問題是 - 如何構建一個SPARQL查詢以基於現有數據和增量執行bulk UPSERT,並使其效率更高。
您可以使用[SPARQL 1.1更新](https://www.w3.org/TR/sparql11-update/)查詢 - 事實上,我不能給你任何想法的查詢沒有看到數據 – AKSW
感謝您的回覆,我已經更新了這個問題,以澄清我需要什麼。謝謝!! – Yurik
最初的問題是https://phabricator.wikimedia.org/T174981。另請參閱https://stackoverflow.com/q/39438022/7879193 –