第一次在这里发帖。我希望有人可以帮助我制作自定义 SPARQL 函数以在 Jena (ARQ) API 中使用。我需要 SPARQL 做一些聚合,我知道它已经实现了 avg、count、min、max 和 sum,但我还需要能够做标准差和中位数(我也需要范围,但这可以是仅使用最小值和最大值即可完成)。
我希望查询可以类似于您用于已实现功能的查询:
PREFIX example: <http://www.examples.com/functions#>
PREFIX core: <http://www.core.com/values#>
SELECT (stddev(?price) as ?stddev)
WHERE {
?s core:hasPrice ?price
}
我不知道这是否可行,但如果我需要像其他自定义函数一样使用它,那也很好,只要它仍然得到结果的标准偏差。
我所知道的是这些函数将用 Java 编写,我已经非常了解了。所以,我想知道是否有人知道解决此问题的好方法或从哪里开始寻找一些指导。我曾尝试寻找有关它的文档,但似乎没有任何内容。任何帮助将不胜感激。
提前致谢。
最佳答案
我不确定您是否可以在不实际更改语法的情况下做您想做的事。
例如 SUM(...) 是 SPARQL 语法定义的关键字:
- > https://svn.apache.org/repos/asf/jena/trunk/jena-arq/Grammar/sparql_11.jj
- > https://svn.apache.org/repos/asf/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/aggregate/AggSum.java
过滤器函数或属性函数可能不是您要找的。p>
顺便说一句,您也不会在 SQL 中获得 STDDEV。是因为需要两次遍历数据吗?
关于java - 使用 Jena API 在 SPARQL 中自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11040274/