sparql - 嵌套 SPARQL 查询
问题描述
我有以下结构一个对象,每个对象都有多个子对象作为父对象的更改日志,每个更改日志都有一个作者。
现在每个变更日志都有状态和时间戳我现在想编写一个 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 .}
我在这里做错的是它将它与所有对象更改日志进行比较,而不是对象比较我怎么能做到这一点?
解决方案
根据 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 .}
推荐阅读
- sql - PowerShell 要求输入值
- ios - 在 UIView 中将 Traget 添加到 UIButton。收到错误“以 NSException 类型的未捕获异常终止”
- google-cloud-platform - 在 GCP 的 VM 实例中安装 vmware。(虚拟机嵌套)
- r-markdown - Writing Greek text in Rmarkdown
- javascript - 为什么我的回调在我的 for 循环完成之前触发?
- angular-material - 防止直接访问父组件
- javascript - 代码的哪一部分执行内部函数?
- java - Spring Boot 将值从一个控制器更改为另一个
- amazon-web-services - aws sqs fifo队列与标准队列之间的转换
- azure - 如何从 Azure webjob 访问共享网络驱动器