如何解决SPARQL 查询以使用 IF 或 NOT EXISTS 或任何其他方式获取链接到对象 2 而未链接到对象 1 的主题?
希望你一切顺利。 这是我的图形数据库的基本结构。组件有估计方法,估计方法有参数,参数有数据源。
c -> em -> p -> ds
哪里,
c stands for components
em stands for estimation methods
p stands for parameters
ds stands for data sources
SELECT ?c ?em ?p ?ds WHERE {
?c wb:hasEstimationMethod ?em.
OPTIONAL {
?em wb:hasParameter ?p.
OPTIONAL{
?p wb:hasDataSource ?ds.
}
}
}
我使用 OPTIONAL 子句是因为估计方法可能没有任何参数,类似的参数可能没有任何数据源。
但是,例如,估计方法未知但我们知道参数的情况很少。因此,例如在这种情况下,组件将直接具有参数,而我更愿意为估计方法留出空白。所以这是我想要的输出,
c | em | p | ds |
---|---|---|---|
component-1 | 估计方法-1 | 参数-1 | 数据源-1 |
component-2 | 参数-2 | 数据源-2 | |
component-3 | 参数-3 |
如果您注意到最后两行缺少信息,如果是这种情况,这就是我希望在输出中包含的信息。换句话说,我想跳过层次结构中的一个步骤。
所以我的问题是,我如何首先查询 ?c wb:hasEstimationMethod ?em
但如果它没有任何值,我想告诉 SPARQL 使用查询 ?c wb:hasParameter ?p
并且类似地,如果它也没有任何值,做?c wb:hasDataSource ?ds
吗?
任何帮助将不胜感激!如果我没有使用正确的术语,请告诉我。祝你有美好的一天:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。