如何解决是否有 SPARQL 查询将一个工作流的不同流程步骤跟踪到一行
我使用 GraphDB 来存储不同的生产步骤。生产步骤以它们的步骤为代表,例如 A、B、C、D。 属于一起的流程步骤由对象属性“:hasUpstreamProduktionsnummer”连接起来。
数据包含许多不同的工作流程。哪里还缺少一些生产步骤。因此,工作流可以以类 B 的实例结束,也可以以类 C 的实例开始。
为了可视化工作流程,我需要创建一个表格,其中包含一行中的所有生产步骤,并为缺失的部分保留一个可用空间。例如:
A1 B1 C1
B2 C2
A3 B3
A4
C4
我的方法是 :hasUpstreamProduktionsnummer 作为 transtiv 和以下内容:
select distinct ?A ?B ?C where {
{ ?A a :A.
?A :hasUpstreamProduktionsnummer ?AUP.}
Optional
{ ?B owl:sameAs ?AUP.
?B a :B.}
Optional
{ ?C owl:sameAs ?AUP.
?C a :C. }
}
对于工作流 1,查询将产生以下结果:
A1 C1
A1 B1
A1
是否有任何选项可以在一行中查询它们?
有没有更高效的写查询?就我而言,我需要为 B 和 C 写下相同的内容作为起点。
数据:
@base <http://BLB.de/Daten/Produktionsdaten/>
@prefix : <http://BLB.de/Daten/Produktionsdaten/> .
<A1> a :A;
:hasUpstreamProduktionsnummer <B1>.
<B1> a :B;
:hasUpstreamProduktionsnummer <C1>.
<C1> a :C.
<B2> a :B;
:hasUpstreamProduktionsnummer <C2>.
<C2> a :C.
<A3> a :A;
:hasUpstreamProduktionsnummer <B3>.
<B3> a :B.
<A4> a :A.
<C4> a :C
感谢您提前提供帮助!
解决方法
UninformedUser 使用 SPARQL Elements Optional、Union 和 filter 解决的问题在以下查询中不存在:
Sub Get_Data()
With Sheet4
lastrow = .Cells(.Rows.Count,"A").End(xlUp).Row + 1
End With
Sheet4.Range("G7").Copy
Sheet2.Range("A" & lastrow).PasteSpecial xlPasteValues
Sheet4.Range("H7").Copy
Sheet2.Range("C" & lastrow).PasteSpecial xlPasteValues
Sheet4.Range("I7").Copy
Sheet2.Range("E" & lastrow).PasteSpecial xlPasteValues
Sheet4.Range("J7").Copy
Sheet2.Range("F" & lastrow).PasteSpecial xlPasteValues
Sheet4.Range("K7").Copy
Sheet2.Range("H" & lastrow).PasteSpecial xlPasteValues
Sheet4.Range("L7").Copy
Sheet2.Range("J" & lastrow).PasteSpecial xlPasteValues
Sheet4.Range("M7").Copy
Sheet2.Range("L" & lastrow).PasteSpecial xlPasteValues
Sheet4.Range("N7").Copy
Sheet2.Range("M" & lastrow).PasteSpecial xlPasteValues
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。