【发布时间】:2021-05-18 14:17:55
【问题描述】:
我正在尝试使用 rdf4j 库构建一个长查询,并希望使用 SPARQL 提供的计数函数。
原始的 SPARQL 查询如下所示:
SELECT (COUNT(?letter) AS ?count) WHERE { \
?letter a :Letter . \
?letter :writtenBy :John . \
?letter :writtenOn ?date . \
FILTER(?date > NOW() && }
这是我目前使用 rdf4j 库所拥有的
GraphPattern longPattern = GraphPatterns.tp(letter, ex.iri("a"), ex.iri("Letter")).
and(GraphPatterns.tp(letter, ex.iri("writtenBy"), ex.iri("John"))).
and(GraphPatterns.tp(letter, ex.iri("writtenOn"), date));
如何实现 Count 并使用 sparql 的 NOW() 功能?我知道有一种过滤方法,但我不知道如何使用 NOW() 。所有变量(字母、日期)和选择查询都已在 java 中使用 SparqlBuilder 初始化。
【问题讨论】:
-
为什么你有
FILTER(?date > NOW() && }而不仅仅是FILTER(?date > NOW())}? -
另外,如果您详细说明当前方法遇到的错误,将会很有帮助。
-
过滤函数接受表达式,你应该看看rdf4j.org/documentation/tutorials/sparqlbuilder 中的第 5 部分 - 也许,
now()不在现有表达式中,如果不是,它应该在函数中,请参阅 @ 987654327@枚举