我的團隊正在實施Ceusters's Referent Tracking的變體。在我們的實現中,實體的原始URI可以更改(包含UUID),但始終保留原始URI的鏈接。比較模型的身份,但與變量?構造與減號?
例如:
:Joey rdf:type :person .
:New_York_City rdf:type :locality .
:Joey :hometown :New_York_City .
可能變成:
:Joey :replacedWith :ABC123 .
:ABC123 rdf:type :person .
:New_York_City :replacedWith :FFF555 .
:FFF555 rdf:type :locality .
:ABC123 :hometown :FFF555 .
我寫一些Scala的集成測試,看看我們的軟件確實指涉正確跟蹤。
具體來說,我知道我應該想到這CorrectPattern
:
:Joey :replacedWith ?person .
?person rdf:type :person .
:New_York_City :replacedWith ?locale .
?locale rdf:type :locality .
?person :hometown ?locale .
但我不知道?person
和?locale
的價值觀是什麼。
我可以SPARQL ASK
對於CorrectPattern
...這將告訴我,如果模式存在。但我也想確認沒有其他東西被添加。
我以爲我可以CONSTRUCT { ?s ?p ?o }
,MINUS
出CorrectPattern
,並檢查是否有一個空的結果,但Blazegraph是說:
java.util.concurrent.ExecutionException:org.openrdf.query.MalformedQueryException:構造物,其中只允許WHERE子句中的語句模式。
任何想法?我想檢查一下,整個三重商店只包含CorrectPattern
,但我認爲CorrectPattern
必須包含變量。
爲了使用高級功能,您必須將其包裝到一個'SELECT'子句中。 – AKSW
@AKSW ...你是否認爲如果我想插入包含now()這樣的SPARQL函數的數據,我應該可以做一個類似的包裝'select'?我無法獲得包含'bind(now()as?insertDate)'的'insert data'語句來工作。 –
像https://stackoverflow.com/questions/41575837/it-is-possible-to-use-aggregate-function-when-inserting-data-in-sparql –