【问题标题】:SPARQL property path - Retrieve the closest node onlySPARQL 属性路径 - 仅检索最近的节点
【发布时间】:2021-10-16 12:25:09
【问题描述】:

假设我们有一个记录日志事件的本体,有 2 种不同类型的事件:infowarning。每个条目都通过非传递属性hasPreviousEvent 链接到前一个条目,如下所示:

对于所有info 节点,我想检索最近的error 节点,无论它返回多少跳。理想情况下,对于上述示例数据集,我希望得到以下结果集:

entry prev
:info_2 :error_1
:info_3 :error_2
:info_4 :error_2

使用 SPARQL 属性路径,以下查询

SELECT * WHERE { 
?entry rdf:type :Info ;
    :hasPreviousEntry* ?prev .
?prev rdf:type :Error .
} ORDER BY ?entry

合理地检索到以下结果集:

entry prev
:info_2 :error_1
:info_3 :error_1
:info_3 :error_2
:info_4 :error_1
:info_4 :error_2

我找不到想要的结果。任何帮助将不胜感激。

【问题讨论】:

    标签: sparql ontology turtle-rdf


    【解决方案1】:

    检查不存在由?entry 链接的另一个错误,该错误至少在一个步骤中链接到?prev

    SELECT * WHERE { 
      ?entry rdf:type :Info ;
             :hasPreviousEntry* ?prev .
      ?prev rdf:type :Error .
      FILTER NOT EXISTS {
        ?entry :hasPreviousEntry* [ rdf:type :Error ;
                                    :hasPreviousEntry+ ?prev ] .
      }
    } ORDER BY ?entry
    

    【讨论】:

      猜你喜欢
      • 2017-05-29
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多