嵌套SPARQL查询

问题描述 投票:0回答:1

我有以下结构 一个对象,每个对象有多个子对象,作为父对象的变更日志,每个变更日志有一个作者。enter image description here

现在,每个变更日志都有状态和时间戳,我现在想写一个SPARQL查询,我需要得到以我为作者的对象列表,以及特定状态的对象,比如 "待批准",而且必须是最新的变更日志。

这个查询是我目前已经尝试过的:我首先尝试获取变更日志,然后获取与之相关的对象,然后获取其中的所有其他变更日志,并通过时间戳比较最新的变更日志,如果时间戳较大则进行过滤。

select ?Object WHERE{  ?author myPrefix:userId "myuserid".             
      ?changelog myPrefix:hasApprover ?author .
      ?changelog myPrefix:timestamp ?dv
      FILTER( ?dv >= ?latestdate )
       {
            SELECT (max(?dv1) AS ?latestdate) WHERE { 
               ?Object myPrefix:hasChangeLog ?changelog .
               ?Object  myPrefix:hasChangeLog ?changelog1 .
               ?changelog1 myPrefix:timestamp ?dv1 .                    
            }

        }
       ?changelog myPrefix:status "To be approved" .
       ?Object  myPrefix:hasChangeLog ?changelog .}

我在这里做的不对的地方是,它与所有对象的变更日志进行比较,而不是对象方面的比较,我如何才能做到这一点?

sparql rdf jena ontology
1个回答
0
投票

根据UninformedUser的建议。

select ?Object WHERE{  ?author myPrefix:userId "myuserid".             
  ?changelog myPrefix:hasApprover ?author .
  ?changelog myPrefix:timestamp ?dv
  FILTER( ?dv >= ?latestdate )
   {
        SELECT (max(?dv1) AS ?latestdate) WHERE { 
           ?Object  myPrefix:hasChangeLog ?changelog1 .
           ?changelog1 myPrefix:timestamp ?dv1 .                    
        }group by ?Object

    }
   ?changelog myPrefix:status "To be approved" .
   ?Object  myPrefix:hasChangeLog ?changelog .}
© www.soinside.com 2019 - 2024. All rights reserved.