【发布时间】:2019-05-28 09:41:28
【问题描述】:
继续上一个问题here。注意到在 SPARQL 查询中应避免避免使用 fn:doc()。但是,对于除了下面显示的代码之外的地理空间查询,我无法找到替代解决方案。我也使用过这个查询,它的运行时间真的很慢。对于更大的数据集,它将达到 1 小时超时。
因此,我想问一下是否有更好的方法来实现 SPARQL 的地理空间查询?是否可以将 GEOSPARQL 与 PREFIX spatial:<http://jena.apache.org/spatial#> 一起使用?
xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics" at "/MarkLogic/semantics.xqy";
import module namespace thsr="http://marklogic.com/xdmp/thesaurus"
at "/MarkLogic/thesaurus.xqy";
let $query := sem:sparql(
'
PREFIX xs: <http://www.w3.org/2001/XMLSchema#>
PREFIX cts: <http://marklogic.com/cts#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema/>
PREFIX fn: <http://www.w3.org/2005/xpath-functions#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX db: <http://dbpedia.org/resource/>
PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>
PREFIX xdmp: <http://marklogic.com/xdmp#>
SELECT *
WHERE{
?people </posted> ?question .
FILTER (cts:contains(fn:doc(?people),
cts:path-geospatial-query("/people_data/location", cts:circle(10, cts:point(59,28)))
)) .
}',
(),
(),
()
)
return (xdmp:elapsed-time())
=======更新========
问题转至thread
【问题讨论】:
-
我认为 MarkLogic 不支持 GeoSPARQL,至少他们的文档中没有提到。
-
@AKSW 我看看是不是这种情况在尝试同时使用地理空间 + Sparql 时有什么推荐的方法吗?