首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在IRIs之间或在某些rdf的两个节点之间获得路径:使用SPARQL查询输入?

如何在IRIs之间或在某些rdf的两个节点之间获得路径:使用SPARQL查询输入?
EN

Stack Overflow用户
提问于 2019-10-14 21:30:02
回答 1查看 449关注 0票数 1

尝试使用rdf4j控制台对sparql端点执行查询,使用属性通配符查找两个节点之间的路径,但没有运气。第一个查询提供了一个错误,如

格式错误查询:非有效(绝对) IRI:

第二个查询使控制台崩溃。我是否应该尝试使用不同的方式来查询端点,因为这可能是rdf4j问题,还是查询本身是错误的?

代码语言:javascript
复制
PREFIX xy: <http://mainuri/>

select
*

where

{

  <http://uriOfInstanceOfData> ((<>|!<>)|^(<>|!<>))* ?x .
  ?x ?p ?o .
  ?o ((<>|!<>)|^(<>|!<>))* <http://uriOfInstanceOfData>.
  }

代码语言:javascript
复制
PREFIX xy: <http://mainuri/>

select
*

where

{

  <http://uriOfInstanceOfData> (xy:|!xy:)* ?x .
  ?x ?p ?o .
  ?o (xy:|!xy:)* <http://uriOfInstanceOfData>.
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-14 23:28:52

第一个查询在语法上是不正确的:<>不是有效的IRI引用。SPARQL语法允许空字符串,但规范还指出,任何IRI引用都必须是有效的RFC3987 IRI中(经过转义处理后的结果)的字符串。由于IRI在mimimum需要一个方案标识符,因此根据定义,空字符串可能不是有效的IRI。

当我在一个小的测试数据集上尝试它时,第二个查询可以工作。然而,这可能是非常昂贵的处理。

编辑--我实际尝试的查询:

代码语言:javascript
复制
PREFIX xy: <http://mainuri/>
select
*
where
{
  rdfs:domain (xy:|!xy:)* ?x .
  ?x ?p ?o .
  ?o (xy:|!xy:)* rdf:Property.
}

在启用基本RDFS推理的本地内存数据库上,这将提供以下结果:

代码语言:javascript
复制
Evaluating SPARQL query...
+------------------------+------------------------+------------------------+
| x                      | p                      | o                      |
+------------------------+------------------------+------------------------+
| rdfs:domain            | rdf:type               | rdf:Property           |
| rdfs:domain            | rdfs:domain            | rdf:Property           |
+------------------------+------------------------+------------------------+
2 result(s) (28 ms)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58384296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档