检查带有不确定性(基于UUID)URI的RDF模型之间的差异吗?

时间:2019-05-30 15:09:04

标签: sparql rdf graphdb topbraid-composer

我和一所大学分别将电子健康记录实例化为三重。 我们想比较我们的10k到100k三元组,看看它们是否具有相同的形状。

作为一项政策,我基于UUID创建URI ,因此没有语义被嵌入其中。我想坚持这项政策,因为我和我的大学都在尝试从整体上比较现有的工作流程。

我知道如何在TopBraid Composer中比较两个RDF文件,但是如果我们具有相同的数据模式但具有不同的URI,我认为它不会有用。我将三元组存储在Ontotext GraphDB中,但很高兴使用任何其他工具。

例如,关于人... fe54977c174a和人... 4bcdc1c8abf9的三元组应被视为等同,但... fe54977c174a和... {{1} } 不应该。 这可行吗?

我不希望使用手工制作的SPARQL ae00dc86b3bb语句进行抽查。

ASK

具有与此相同的形状(尽管URI不同):

@prefix ns0: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://example.com/4f79ea05-2358-4f43-a335-fe54977c174a>
  a <http://example.com/Person> ;
  ns0:gender ns0:Male ;
  ns0:participatesIn ns0:5d2dfc7b-994c-4933-b787-f7971dae397c .

ns0:5d2dfc7b-994c-4933-b787-f7971dae397c
  a ns0:HealthCareEncounter ;
  ns0:startDate "2019-05-01"^^xsd:date ;
  ns0:hasOutput ns0:a129ca96-c6d2-4a07-a4eb-4cf9ce23a314 .

ns0:a129ca96-c6d2-4a07-a4eb-4cf9ce23a314
  a ns0:Diagnosis ;
  ns0:mentions ns0:Headache .

但这在结构上有所不同(由于性别和诊断的提及不同):

@prefix ns0: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://example.com/a740d254-084c-4621-b06d-4bcdc1c8abf9>
  a <http://example.com/Person> ;
  ns0:gender ns0:Male ;
  ns0:participatesIn ns0:060d2091-b4f7-406d-ab0d-75b39b400823 .

ns0:060d2091-b4f7-406d-ab0d-75b39b400823
  a ns0:HealthCareEncounter ;
  ns0:startDate "2019-05-01"^^xsd:date ;
  ns0:hasOutput ns0:bc549711-ed9d-4db6-8cf9-d43022903ef7 .

ns0:bc549711-ed9d-4db6-8cf9-d43022903ef7
  a ns0:Diagnosis ;
  ns0:mentions ns0:Headache .

1 个答案:

答案 0 :(得分:0)

Eclipse Rdf4j(与GraphDB捆绑在一起)包含一个图形同构实用程序:Models.isomorphic。默认情况下,它仅执行空白节点到空白节点的映射。因此,您有两个选择:

  1. 用(字典映射的)空白节点替换图中的每个IRI。使用HashMap和一些循环或流魔术,这应该很容易做到。
  2. 看一下Models实用程序的代码,并在执行空白节点映射的地方改写IRI映射。