如何解决SPARQL 查询基于属性值比较从不同的图创建合并图
我有三个图数据模型,其中的节点在三个图中以不同的方式表示相同的物理实体。
图形 G1,其中 Pump P1 的类型为 CentrifugalPumpType
图 G2,其中 Pump P2 的类型为 PADIMType
正如您在以上三张图中所看到的,同一个 Pump 正在以不同的方式建模。但是,有一种方法可以确定它们是否确实是同一个泵。在第一个图 (G1) 和第二个图 (G2) 之间,可以根据 TagNameAssignmentClass 属性(来自 G1 图)与 SignalTag 的值进行比较> 属性(来自 G2 图表),在本例中它们都具有值“P1612-A”。与 G2 和第三个图 (G3) 相似,可以在 G2 和 G3 的 Manufacturer 属性(在示例中它们具有相同的值“XYZ”)和各自的 SerialNumber 之间进行比较 来自 G2 和 G3 的属性((在示例中它们具有相同的值“1234”)。所有这些属性都是代表所有三个中相同泵(P1、P2 和 P3)的节点的直接或间接属性模型。合并的目的是实际合并三个模型中代表泵的节点。合并后的图将如下所示:
我是这种新思维方式的完全新手,我浏览了所有基本的 SPARQL 教程,但是我尝试编写的这个查询对于我目前对 SPARQL 的理解水平来说太复杂了。如果有人能帮忙就太好了!字符串文字只是为了解释我的意思,我不想在我的查询中提及字符串文字,而是我只想直接比较我提到的属性而不提及它是什么文字值。
编辑 1:我被要求创建一个最小的可重现示例,因此在删除不必要的属性并进一步简化目标后尝试:
所以Graph G1数据集如下:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-Syntax-ns> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix eg1: <http://www.myexample1.com> .
eg1:PumpP1
rdf:type eg1:CentrifugalPumpType ;
has_property eg1:DifferentialPressure ;
has_property eg1:TagNameAssignmentClass .
eg1:TagNameAssignmentClass
rdf:value "P1612-A" .
Graph G2 Dataset如下:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-Syntax-ns> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix eg2: <http://www.myexample2.com> .
eg2:PumpP2
rdf:type eg2:PADIMType ;
has_property eg2:SignalSet ;
has_property eg2:Manufacturer ;
has_property eg2:SerialNumber .
eg2:Manufacturer
rdf:value "XYZ" .
eg2:SerialNumber
rdf:value "1234" .
eg2:SignalSet
has_property eg2:SignalS1 .
eg2:SignalS1
has_property eg2:SignalTag .
eg2:SignalTag
rdf:value "P1612-A" .
Graph G3 数据集可能如下所示:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-Syntax-ns> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix eg3: <http://www.myexample3.com> .
eg3:PumpP3
rdf:type eg3:PumpType ;
has_property eg3:Identification ;
has_property eg3:Ports .
eg3:Identification
has_property eg3:Manufacturer ;
has_property eg3:SerialNumber .
eg3:Manufacturer
rdf:value "XYZ" .
eg3:SerialNumber
rdf:value "1234" .
合并后的预期图形可能如下所示:
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-Syntax-ns> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix eg1: <http://www.myexample1.com> .
@prefix eg2: <http://www.myexample2.com> .
@prefix eg3: <http://www.myexample3.com> .
@prefix mg: <http://www.mymergeexample.com> .
mg:PumpP
rdf:type eg1:CentrifugalPumpType ;
rdf:type eg2:PADIMType ;
rdf:type eg3:PumpType ;
has_property eg1:DifferentialPressure ;
has_property eg1:TagNameAssignmentClass ;
has_property eg2:Manufacturer ;
has_property eg2:SerialNumber ;
has_property eg2:SignalSet ;
has_property eg3:Identification ;
has_property eg3:Ports .
eg1:TagNameAssignmentClass
rdf:value "P1612-A" .
eg2:Manufacturer
rdf:value "XYZ" .
eg2:SerialNumber
rdf:value "1234" .
eg2:SignalSet
has_property eg2:SignalS1 .
eg2:SignalS1
has_property eg2:SignalTag .
eg2:SignalTag
rdf:value "P1612-A" .
eg3:Identification
has_property eg3:Manufacturer ;
has_property eg3:SerialNumber .
eg3:Manufacturer
rdf:value "XYZ" .
eg3:SerialNumber
rdf:value "1234" .
请原谅我可能犯过的语法错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。