具有大量 UNION 的 SPARQL 查询的替代方案

2024-01-12

我在 Virtuoso 中存储了一些命名图表,我想从提供的列表中找到与最多术语匹配的图表。

我的查询是以编程方式构建的,如下所示:

SELECT DISTINCT ?graph (count(DISTINCT ?match) as ?matches)
WHERE {
  GRAPH ?graph {
    {?match rdf:label "term 1"} 
     UNION {?match rdf:label "term 2"} 
     UNION {?match rdf:label "term 3"}
     ...
  }
}
ORDER BY DESC(?matches)

每个术语都成为另一个 UNION 子句。

有一个更好的方法吗?查询变得又长又难看,当术语太多时,Virtuoso 会抱怨。


在SPARQL 1.1中,有一个values http://www.w3.org/TR/sparql11-query/#inline-data可以帮助解决这个问题的条款。它可以让你写:

select ?match where {
  values ?label { "term 1" "term 2" "term 3" }
  ?match rdfs:label ?label
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有大量 UNION 的 SPARQL 查询的替代方案 的相关文章

随机推荐