【问题标题】:Is there a SPARQL Query to Trace different Process steps of one Workflow into one row是否有一个 SPARQL 查询来将一个工作流的不同流程步骤跟踪到一行中
【发布时间】:2021-02-10 09:45:18
【问题描述】:

我使用 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

感谢您提前提供帮助!

【问题讨论】:

  • owl:sameAs 三重模式的目的是什么?此外,我还需要最小限度的 RDF 数据样本。我懒得根据一些模糊的描述创建数据
  • 我想将变量 ?AUP 重用于其他模式。直接指定“?AUP a :B”会阻止我将它用于 Processstep C。使用 owl:sameAs 是最常用的方法。让我知道什么样的描述有​​助于更好地理解。
  • 不需要传递性和owl:sameAs推理启用,我们开始:prefix : &lt;http://BLB.de/Daten/Produktionsdaten/&gt; 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} } }
  • 非常感谢。这对我的项目很有用。 Imagen不仅有3个A-C类,还有很多类,我只需要选择3个类。 一个:A; :hasUpstreamProduktionsnummer a :AB; :hasUpstreamProduktionsnummer 一个:B。 :hasUpstreamProduktionsnummer a :BA; :hasUpstreamProduktionsnummer a :C;您会使用相同的查询和传递性来选择 A、B 和 C 类的实例吗?

标签: sparql rdf semantic-web graphdb data-tracing


【解决方案1】:

UninformedUser 使用 SPARQL Elements Optional 解决的问题,Union 和 filter 在以下查询中不存在:

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} } }

【讨论】:

    猜你喜欢
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 2023-01-08
    • 2023-02-01
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多