问题标签 [arq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
136 浏览

sparql - com.hp.hpl.jena.rdf.model.Literal 和 com.hp.hpl.jena.rdf.model.ResourceFactory 不存在于 9.2.3 jar 或其他最近的 jar 中?

我将 jena arq 2.9.3 jar 文件添加到我的代码中,以便能够为 DBpedia 运行 sparql 查询,但它说文字和资源工厂类不存在。我需要添加另一个版本的 jar 文件还是需要更改包名或导入类名才能解决此问题?

0 投票
0 回答
69 浏览

sparql - 是否有从 JENA ARQ 查询中获取 URI 的方法?

假设查询如下所示:

我正在寻找一种获取所有 URI 的方法:http://www.example.com/A#example1http://www.example.com/A#example2,....

我尝试过的以下方法都不包含 URI:

  • getGraphURIs()
  • getNamedGraphURIs()
  • 获取结果URIs()
0 投票
0 回答
231 浏览

function - 自定义 ARQ 功能不适用于 fuseki 端点

我使用以下自定义 ARQ 函数成功实现了 sparql 查询(自定义函数代码):

当我查询从乌龟文件加载的模型时,它工作正常,如下所示:

像这样发送查询:

但是,如果我对同一个数据集(full.ttl)使用一个有效的 fuseki 端点,如下所示:

发送这样的查询(使用QueryExecutionFactory.sparqlService(fusekiUrl,query)而不是QueryExecutionFactory.create(query,model)):

然后我没有得到任何结果。在这两种情况下,我都打印出了 FunctionRegistry ,它们包含完全相同的条目,尤其是:

键= http://www.example1.org/LevenshteinFunction 值:org.apache.jena.sparql.function.FunctionFactoryAuto@5a45133e

有什么线索吗?

谢谢

回到我终于解决的那个问题。有几个问题,其中一个是(显然!!)远程端点和客户端在不同的 jvm 上运行。

要使事情正常工作,请执行以下操作(对于愚蠢的 MyFilter 自定义函数 - 即 strlen):

1)在fuseki服务器上部署自定义函数类jar

2) 修改 fuseki 配置:

MyFilter 实现在哪里:

3)在上下文中添加以下前缀:

请注意“my.functions.package”。是 MyFilter 类的包,而不是类本身 --> 这意味着您永远不会在 sparql 查询中调用类方法,而只会调用实现 org.apache.jena.sparql.function.FunctionBaseX 的类,其中 X 是参数的数量你的过滤功能

4)编写(例如)这样的查询:

编辑:步骤 2) 不是必需的

0 投票
0 回答
208 浏览

sparql - Apache jena ARQ FILTER 优化

Graph通过为和提供 impls,我在 MongoDB 上实现了 Jena 的合理实现DatasetGraph。SPARQL 查询在 MongoDB 中被转换为适当的查询表达式,并且材料,至少在三重匹配的基础上,以高性能的方式出售。这并不奇怪。索引做他们应该做的事情。 Graph用 RDFS 推理器包裹,Model一切都很好。

我现在有兴趣探索优化过滤下推到 MongoDB 的方法。例如,这个 SPARQL:

导致设置 MongoDBfind表达式:

一切都很好。但是这个 SPARQL:

导致 ARQ 仅将谓词传递给Graph::find()

并且从数据库中提取了很多东西,并且过滤是在 ARQ 本身中完成的。FILTER对于简单的等式,显然不需要上面的表达式,但它证明了这一点。

TDB 文档说“ ...... TDB 使用OpExecutorARQ 的扩展点”。但链接指向OpExecutor To-Do

任何人都可以指出任何可以在 ARQ 调用期间挂钩或以其他方式访问的任何示例Graph::ExtendedIterator<Triple> find(Triple m)吗?正是在这一点上,我的实现开始制作查询,如果我可以询问是否存在过滤器,那么我可以“改进”对查询的限制。此时,我处理阻止过滤在 ARQ 本身中再次发生并不那么重要。

0 投票
0 回答
299 浏览

java - 在 Apache Jena 上使用 ARQ 进行 SPARQL 查询

我的 java 应用程序遇到问题。

我正在尝试在 Fuseki 服务器上处理请求,以从加载的本体中获取响应。

在我的第五个请求中,服务器阻塞并且不返回任何响应,有时我会收到此错误

声明:Web 应用程序 [MiCorr-WebServices] 仍在处理尚未完成的请求。这很可能造成内存泄漏。您可以使用标准 Context 实现的 unloadDelay 属性来控制请求完成的时间。请求处理线程的堆栈跟踪:[

我试图反转查询以查看问题是否来自查询,但结果是相同的。

有人可以帮助我找到解决此问题的方法。你可以看到我用来查询 fuseki 服务器的 java 类。我不太确定,但我在前 4 个查询中得到了很好的结果。

和查询类

这是 SPARQL 查询

谢谢你的帮助。

0 投票
1 回答
213 浏览

sparql - 如何从 SPARQL 联合查询(服务关键字)返回特定变量?

我正在使用联合查询从远程服务器检索一些信息,但我不想检索我在联合查询中处理的所有变量(选择 *),我只想返回计数变量. 我怎样才能做到这一点?

代码:

如果不是联合查询,我会这样做:

但是在联合查询中我无法选择变量,那么有没有办法做我想做的事?

** 编辑 1 **

在@TallTed 回复之后,我注意到我可能跳过了一些细节以使问题变得简单,但事实证明细节很重要,所以我将描述整个情况。

我有一个本地数据集,其中包含有关生物过程和基因的三元组。我必须计算与每个生物过程相关的基因数量,并将该数字除以 Uniprot 中确定的关于相同生物过程(及其“子代”)的蛋白质总数。

为此,我首先查询我的本地数据集,计算每个生物过程的基因,然后运行联合查询来计算 Uniprot 中每个生物过程(及其“子代”)中所有已识别的蛋白质。

完整的 SPARQL 代码:

当我使用 Jena ARQ(一个查询引擎)运行这个查询时,变量?bp_iri在 HTTP 请求的时刻被一个特定的生物过程 IRI(每个生物过程一个 HTTP 请求)替换,如下图所示:

联合查询的 SPARQL 说明

请注意,在explain图像中,联合查询正在选择所有内容 (*),但问题是我不想检索我在联合查询中处理的所有这些关系,我只想检索计数但计数是一个聚合函数,只允许放在SELECT关键字前面。(我不想检索所有的关系,因为这些查询返回了很多三元组(数万,有时是数百万),并且没有必要将它们放在我的计算机中只是为了计数。)

为了解决这个问题,我尝试在联合查询中创建一个子查询,以仅选择计数 ( ?bp_total) 而不是所有三元组。使用的代码:

再次运行explain,我注意到当我在联邦查询中放置一个子查询时,变量?bp_iri并没有被生物过程 IRI 替换,如下图所示:

<code>解释</code>联合查询中的子查询

考虑到这一点,我怎样才能只从联合查询中检索计数?

对不起,很长的帖子。

0 投票
1 回答
42 浏览

api - SPARQL 元素路径块

我试图分别检索查询中涉及的 SPARQL 表达式的三元组OPTIONALNON OPTIONAL部分。

我使用了 API ARQ Jena 访问者,但既不够也ElementPathBlock不够。检索所有三元组,检索三元组组(由 括起来)和可选的.ElementGroupElementOptionalElementPathBlockElementGroup{}ElementOptionalElements

请问你能帮帮我吗?

0 投票
0 回答
301 浏览

sparql - 删除三重 Apache Jena

我想删除其对象是文字的三元组

我正在尝试以下操作,但我得到了对象必须是 RDFNode 的错误,在我的图中它不是

myDeed.get(i)是一种资源

有什么办法可以执行此删除吗?

0 投票
0 回答
482 浏览

java - 在 SPARQL 中为查询添加前缀

我正在使用 java 中的 apache jena sparql 库运行以下查询:

但是,这会导致Unresolved prefixed name异常。我知道可以通过在我的查询字符串中添加前缀的全名来解决这个问题(如Unresolved prefixed name: rdfs:subClassOf in SPARQL query 中所示),但我想知道是否有办法导入这些将 rdf 模型中的前缀声明添加到查询中。

0 投票
1 回答
494 浏览

sparql - SPARQL:组内外相同变量的绑定

使用BIND有效吗?

在海龟数据上运行时:

arq 3.11.0给出的结果是:

不会抛出错误(即使在使用时也不会--strict)。但是删除组或更改顺序确实会出错:

和:

问题:

  1. 查询 1 是否违反了10.1 BIND,其中规定:

    BIND 子句引入的变量在 BIND 中使用之前不得在组图模式中使用。

  2. 我对18.2.1 变量范围的解读 是,在查询 1 中,变量?p在内部组的范围 ,因此也在组的范围内。查询 2 的 arq 错误消息是否也适用于查询 1?

我将不胜感激。