问题标签 [federated-queries]
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.
sparql - 命名图和联合 SPARQL 端点
我最近遇到了SPARQL 1.1 联合扩展的工作草案,并想知道这是否已经可以使用命名图(不要减损上述草案的有用性)。
我对命名图的理解有点模糊,除了我从阅读规范中得到的唯一一件事包括关于合并的规则,在查询时与其他图相关的非合并。由于这不能完全满足我的理解,我的问题如下:
给定以下查询:
假设查询处理器/端点可以或应该在命名图的上下文中执行以下操作是否合理:
检查命名图是否在本地存在
如果没有,则执行以下操作(在上述查询的情况下,我将使用第二个命名图)
GET /sparql/?query=EncodedQuery HTTP/1.1 主机:www.autotrader.co.uk 用户代理:my-sparql-client/0.1
其中 EncodedQuery 仅在子句中包含第二个命名图,并且FROM NAMED
子句针对子句进行了WHERE
相应的修改GRAPH
(例如,如果GRAPH <http://www.vw.co.uk/models/used> {...}
正在使用 a)。
只有当它不能执行上述操作时,才执行以下任一操作:
或者
- 返回适当的搜索结果。
OFFSET
显然,围绕's 和LIMIT
's可能还有一些额外的考虑
我还记得很久以前在遥远的星系的某个地方读到,任何 SPARQL 端点的默认图都应该是根据以下约定的命名图:
对于:http://www.vw.co.uk/sparql/应该有一个命名图:http://www.vw.co.uk代表默认图,因此按照上述逻辑,它应该已经可以使用命名图来联合 SPARQL 端点。
我问的原因是我想在上面的例子中开始促进跨域的联合,而不必等待标准,确保我不会做一些不合时宜或与其他东西不兼容的事情未来。
database - 使用 Fuseki 联合不同的 SPARQL 端点
我为一个大型组织工作,该组织拥有许多包含重叠信息的不同关系数据存储。我们正在寻找一种解决方案,可以一次对所有数据进行集成查询。为此,我们正在考虑使用语义网技术。具体来说,我们计划:
- 创建统一的本体
- 将每个数据库映射到这个本体
- 为每个数据库创建一个 SPARQL 端点
- 使用联合引擎将它们统一到一个端点。
我现在正在为这个计划的最后阶段寻找合适的工具。我听说 Fuseki 适合这种情况,但找不到任何相关文件。
您能否就 Fuseki 对这项任务的适当性发表您的意见,或者更好地指出一些适当的文档?
提前致谢!
奥伦
sparql - 偏移量 > 1000 的联合 dbpedia 查询超时
在这个端点http://spcdata.digitpa.gov.it:8899/sparql我有一个所有意大利城市的列表。我想从 dbpedia 获取每个市镇的人口数据,并且我使用该owl:sameAs
属性作为指向 dbpedia 的指针。
在这个问题中,您可以找到我想使用的查询。不幸的是,这个查询大约在一个LIMIT 1500
子句上超时,所以我猜想使用偏移量对结果进行分页是最好的解决方案。不幸的是,这个查询
导致端点超时。我尝试了不同的OFFSET
值,低于 1000 时效果很好,当偏移 1000 及以上时问题开始出现。
我能做些什么来检索所有结果?我已经尝试过使用 dbpedia 端点,但似乎禁止对http://spcdata.digitpa.gov.it:8899/sparql的联合请求。
非常感谢!
python - 使用 SPARQLWrapper 询问联合 SPARQL 查询
我们如何使用SPARQLWrapper询问联合查询?如果不可能,是否有任何替代库可用于对 Python 进行此类查询?
sparql - Sparql 如何选择一个结果以在联合搜索中询问另一项服务
如何选择 rdf 可能的标签之一将其发送到联合搜索?
我有一个 rdf 记录,它有几个指向另一个数据库的链接:
我只是得到了 dbpedia 链接来使用它在 dbpedia 中询问一些信息。
我创建了这个联合搜索,但它不起作用:
我做错了什么?
如果我使用单一搜索:
我得到了 autid 和 dbpedia 链接。
我怎么能告诉 SERVIE 只是使用它。
问候
更新(最初作为答案发布)
也许我问的问题很糟糕:
我尝试在一个中做两种不同的 sparql。使用问题第一部分的结果(已应用过滤器)我尝试询问 DBPEDIA 以获得我需要的结果。
从没有任何过滤器的第一部分
我得到这个结果:
我应用过滤器
只得到一个结果:
我想将它发送到 DBPEDIA 的服务,但只需发送此 URL: http ://dbpedia.org/resource/Emma_Roberts
不是我从第一部分获得的所有 URL:
因为其中一些与 Dbpedia 无关,然后 DBPEDIA 向我发送如下错误:
proxy - 让 jena 和 fuseki 代理了解联合查询
我们的应用程序建立在 Jena 和 Fuseki 之上。该应用程序使用联合 SPARQL 查询访问公共域中的 SPARQL 端点。
应用程序所针对的某些网络仅允许通过 HTTP 代理的 HTTP 请求作为其网络策略的一部分。
如何配置 fuseki 以便在 SPARQL 子查询中将 HTTP 请求作为 SERVICE 块的一部分发出时,它使用正确的 http_proxy?
在 Linux 上,我尝试使用本地环境变量
在运行 fuseki-server 进程的 shell 中,但 Fuseki 似乎不尊重这个环境变量。
我在 Fuseki 文档中找不到有关如何处理的信息。
我想要一种将 fuseki-server 直接作为 Linux 进程运行并配置代理的方法,无论是在配置文件中,还是作为运行时参数。
感谢所有的建议。
sparql - 具有安全 SPARQL 端点的联合查询
我正在尝试通过 Fuseki 端点将联合查询与 Jena 一起使用。在我的 SPARQL 查询中使用SERVICE关键字,我连接到一个 Stardog 端点。由于它是一个安全 URL,因此端点指定如下:http://admin:admin@url。由于这不安全,Jena 显示以下消息:
根据文档,您可以为凭据指定srv:queryAuthUser和srv:queryAuthPwd。有没有办法直接在 SPARQL 查询中执行此操作?或者,可以在 Fuseki(ttl 文件)中配置吗?
编辑
当我使用@RobV 的解决方案时,服务上下文似乎没有被拾取。这是上下文的样子:
当我保留 Fuseki 配置并在我的业务层中添加服务上下文时,似乎确实添加了服务上下文:
不管怎样,当我执行联合查询时,我仍然会收到未经授权的消息。
sparql - SPARQL 联合查询“SERVICE”返回 Virtuoso RDFZZ 错误:意外变量名 'stubvar14'
我想从两个不同的 SPARQL 端点获取人员列表,所以我在de.dbpedia上使用这个查询:
然后我得到以下错误:
Virtuoso RDFZZ 错误 DB.DBA.SPARQL_REXEC(' http://dbpedia.org/sparql ', ...) has received result with unexpected variable name 'stubvar14'
知道我做错了什么吗?非常感谢!
stardog - 带有变量服务的 Startdog 联合查询
我的 Stardog 数据库包含 SPARQL 端点的服务描述。我现在正在尝试选择特定服务并在查询中调用它,如https://www.w3.org/TR/2013/REC-sparql11-federated-query-20130321/#values中所述
不幸的是,Stardog 抛出异常,告诉我变量不是 URI:
使用 IRI 构造函数在 BIND 语句中转换“?service”变量并使用绑定变量也无济于事。如何确保变量是 IRI,以便让 Stardog 执行联合查询?
sparql - 为什么这个联合 SPARQL 查询在 TopBraid 中有效,但在 Apache Fuseki 中无效?
我有以下联合 SPARQL 查询,它在 TopBraid Composer 免费版(5.1.4 版)中按预期工作,但在 Apache Fuseki(2.3.1 版)中不起作用:
我监视在后台执行的子 SPARQL 查询,并注意到 TopBraid 正确地执行了对http://dbpedia.org/sparql端点的以下查询:
而 Apache Fuseki 执行以下子查询:
注意区别;TopBraid 将变量 ?actorName 替换为特定值“Paul Reubens”,而 Apache Fuseki 没有。这会导致来自http://dbpedia.org/sparql端点的错误,因为 ?actorName 在结果集中使用但未分配。
这是 Apache Fuseki 中的错误还是 TopBraid 中的功能?如何让 Apache Fuseki 正确执行这个联合查询。
更新 1:进一步阐明 TopBraid 和 Apache Fuseki 之间的行为差异。TopBraid 首先执行linkedmdb.org 子查询,然后为linkedmdb.org 查询的每个结果执行dbpedia.org 子查询)(并将?actorName 替换为linkedmdb.org 查询的结果)。我假设 Apache Fuseki 的行为类似,但是对 dbpedia.org 的第一个子查询失败(因为 ?actorName 在结果集中使用但未分配),因此它不会继续。但现在我不确定它是否真的要多次执行对 dbpedia.org 的子查询,因为它永远不会到达那里。
更新 2:我认为 TopBraid 和 Apache Fuseki 都使用 Jena/ARQ,但我注意到在 TopBraid 的堆栈跟踪中,包名称类似于 com.topbraid.jena.*,这可能表明他们使用的是 Jena/ARQ 的修改版本?
更新 3: Joshua Taylor 在下面说:“您肯定不会期望为每个服务块执行第二个服务块吗?”。TopBraid 和 Apache Fuseki 都使用此方法进行以下查询:
但我同意原则上他们应该执行这两个部分并加入它们,但也许出于性能原因,他们选择了不同的策略?
此外,请注意上述查询如何在 Apache Fuseki 上运行,而本文的第一个查询则不然。因此,在这种特殊情况下,Apache Fuseki 实际上与 TopBraid 的行为类似。与在 FILTER 正则表达式函数中使用三重模式中的字符串变量 (?actorName ) 相比,它似乎与在两个三重模式中使用URI变量 (?dbpediaLink)(在 Fuseki 中有效)有关(在 Fuseki 中无效) )。