我的团队正在实施Ceusters 的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
outCorrectPattern
并检查空结果,但 Blazegraph 说:
java.util.concurrent.ExecutionException: org.openrdf.query.MalformedQueryException: CONSTRUCT WHERE 只允许 WHERE 子句中的语句模式。
有任何想法吗?我想检查整个三重商店是否包含更多和更少CorrectPattern
,但我认为CorrectPattern
必须包含变量。