我和一所大学分别将电子健康记录实例化为三重。我们想比较我们的 10k 和 100k 三元组,看看它们是否具有相同的形状。
作为策略,我基于 UUID 创建 URI,因此其中没有嵌入任何语义。 我想坚持这个政策,因为我和我的大学真的在尝试全面比较现有的工作流程。
我知道如何在 TopBraid Composer 中比较两个 RDF 文件,但我认为如果我们具有相同的数据模式但不同的 URI,这将没有用。 我将我的三元组存储在Ontotext GraphDB中,但很高兴使用任何其他工具。
例如,关于人的三元组...fe54977c174a
和人...4bcdc1c8abf9
应该被认为是等效的,但是...fe54977c174a
和...ae00dc86b3bb
不应该。这可行吗?
我宁愿不要抽查手工制作的SPARQLASK
语句。
@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 .
具有与此相同的形状(尽管 URI 不同):
@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 .
但这在结构上是不同的(由于提到的性别和诊断不同):
@prefix ns0: <http://example.com/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<http://example.com/aa3a977a-999a-4c5c-9524-ae00dc86b3bb>
a <http://example.com/Person> ;
ns0:gender ns0:Female ;
ns0:participatesIn ns0:b31a62a5-337a-454d-a637-85aefef26684 .
ns0:b31a62a5-337a-454d-a637-85aefef26684
a ns0:HealthCareEncounter ;
ns0:startDate "2019-05-01"^^xsd:date ;
ns0:hasOutput ns0:6566d543-773e-4649-b589-66eb3d0f3165 .
ns0:6566d543-773e-4649-b589-66eb3d0f3165
a ns0:Diagnosis ;
ns0:mentions ns0:Nausea .
Eclipse Rdf4j(与GraphDB捆绑在一起)包含一个图形同构实用程序:Models.isomorphic。默认情况下,它只执行空白节点到空白节点的映射。所以你有两个选择:
- 将图形中的每个 IRI 替换为(字典映射的)空白节点。使用HashMap和一些循环或流媒体魔术应该很容易做到这一点。
- 查看模型实用程序的代码,并调整它执行空白节点映射的位以执行 IRI 映射。