是否有 SPARQL 查询将一个工作流的不同流程步骤跟踪到一行中
Is there a SPARQL Query to Trace different Process steps of one Workflow into one row
我使用GraphDB来存储不同的生产步骤。生产步骤由它们的步骤代表,例如A、B、C、D。
属于一起的过程步骤由对象连接 属性 ":hasUpstreamProduktionsnummer".
数据包含许多不同的工作流程。还缺少一些生产步骤。因此,工作流可以以 class B 的实例结束或以 Class C 的实例开始。
为了可视化工作流程,我需要创建一个 table,其中包含一行中的所有生产步骤,并保留一个免费的 space 以备遗漏。例如:
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 元素可选,联合和过滤器在以下查询中不存在:
prefix : <http://BLB.de/Daten/Produktionsdaten/>
select distinct ?A ?B ?C where {
{ ?A a :A.
OPTIONAL {?A :hasUpstreamProduktionsnummer ?B .
?B a :B
Optional{?B :hasUpstreamProduktionsnummer ?C .
?C a :C. }} }
UNION { ?B a :B
Optional{?B :hasUpstreamProduktionsnummer ?C . ?C a :C. }
filter not exists {?A :hasUpstreamProduktionsnummer ?B} }
UNION { ?C a :C. filter not exists {?B :hasUpstreamProduktionsnummer ?C} } }
我使用GraphDB来存储不同的生产步骤。生产步骤由它们的步骤代表,例如A、B、C、D。 属于一起的过程步骤由对象连接 属性 ":hasUpstreamProduktionsnummer".
数据包含许多不同的工作流程。还缺少一些生产步骤。因此,工作流可以以 class B 的实例结束或以 Class C 的实例开始。
为了可视化工作流程,我需要创建一个 table,其中包含一行中的所有生产步骤,并保留一个免费的 space 以备遗漏。例如:
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 元素可选,联合和过滤器在以下查询中不存在:
prefix : <http://BLB.de/Daten/Produktionsdaten/>
select distinct ?A ?B ?C where {
{ ?A a :A.
OPTIONAL {?A :hasUpstreamProduktionsnummer ?B .
?B a :B
Optional{?B :hasUpstreamProduktionsnummer ?C .
?C a :C. }} }
UNION { ?B a :B
Optional{?B :hasUpstreamProduktionsnummer ?C . ?C a :C. }
filter not exists {?A :hasUpstreamProduktionsnummer ?B} }
UNION { ?C a :C. filter not exists {?B :hasUpstreamProduktionsnummer ?C} } }