为什么此 SPARQL 查询没有返回任何结果?

2024-01-07

通过运行此查询DBpedia SPARQL 端点 http://dbpedia.org/sparql给我带来了很多结果(与institution列填充):

select ?person ?field ?institution where 

{
  ?person a dbpedia-owl:Agent .
  OPTIONAL { ?person dbpprop:workInstitution ?institution . }
  OPTIONAL { ?person dbpprop:workInstitutions ?institution .}
  ?person dbpprop:field ?field .
} 

但是,添加行FILTER(BOUND(?institution))返回一个空结果集:

select ?person ?field ?institution where 

{
  ?person a dbpedia-owl:Agent .
  OPTIONAL { ?person dbpprop:workInstitution ?institution . }
  OPTIONAL { ?person dbpprop:workInstitutions ?institution .}
  ?person dbpprop:field ?field .
  FILTER(BOUND(?institution))
} 

为什么是这样?我期望第一个查询的所有结果都有institution结果显示出来,但没有任何效果。


快速回答:这是一个 DBpedia/Virtuoso 错误。

这种情况在演示文稿中有明确描述SPARQL 选项简介作者:朱利安·杜比和卡维莎·斯里尼瓦斯 http://www.slideshare.net/juliandolby/optionals-25419705在第七张幻灯片上,他们使用了一个示例

optional { ?x name ?label }
optional { ?x nick ?label }

对于拥有以下资格的个人name值,我们永远不会看到任何nick值,因为optional模式是左关联的,根据6 包括可选值 http://www.w3.org/TR/sparql11-query/#optionals来自 SPARQL 规范。作者在第八张幻灯片上得出结论:

绑定同一个变量的多个 OPTIONAL 子句很少是您想要的。

您应该首先得到结果optional匹配的部分。这为变量提供了绑定,所以bound(...)应该是真的。因此,我认为 DBpedia 的行为是一个错误。

尝试其他实现。

这是一个有趣的行为,我们可以用简单的数据重现它。假设我们有一些这样的数据:

@prefix : <http://stackoverflow.com/q/22478183/1281433/> .

:a :r :x ; :p 2 ; :q 3 .
:b :r :x ; :p 4 ; :q 5 .

然后我们可以使用以下查询并通过 Jena 得到以下结果。我们只得到该房产的结果:p因为optional是左关联的,所以上的模式:p首先涵盖,我们数据中的每个资源都有一个价值:p.

prefix : <http://stackoverflow.com/q/22478183/1281433/>

select ?x ?v where { 
  ?x :r :x .
  optional { ?x :p ?v }
  optional { ?x :q ?v }
}
----------
| x  | v |
==========
| :b | 4 |
| :a | 2 |
----------

对于耶拿,添加一个filter不会删除任何结果,我认为这是正确的行为,因为?v is bound.

prefix : <http://stackoverflow.com/q/22478183/1281433/>

select ?x ?v where { 
  ?x :r :x .
  optional { ?x :p ?v }
  optional { ?x :q ?v }
  filter(bound(?v))
}
----------
| x  | v |
==========
| :b | 4 |
| :a | 2 |
----------

工会或财产的救援途径!

上面引用的幻灯片提到您可以使用union里面的optional以获得您正在寻找的结果。根据我提供的数据,这意味着您可以执行以下操作:

prefix : <http://stackoverflow.com/q/22478183/1281433/>

select ?x ?v where { 
  ?x :r :x .
  optional { 
    { ?x :p ?v } union
    { ?x :q ?v }
  }
}
----------
| x  | v |
==========
| :b | 4 |
| :b | 5 |
| :a | 2 |
| :a | 3 |
----------

这毫无问题,但使用属性路径可以使其更加简洁。如果你真正想要的是绑定?v的值either the :p or :q属性,您可以使用替代属性路径:

prefix : <http://stackoverflow.com/q/22478183/1281433/>

select ?x ?v where { 
  ?x :r :x .
  optional { ?x :p|:q ?v }
  filter(bound(?v))
}
----------
| x  | v |
==========
| :b | 4 |
| :b | 5 |
| :a | 2 |
| :a | 3 |
----------

当然,如果你正在做filter(bound(?v)),然后是模式?x :p|:q ?v实际上不再是可选的,因此您可能应该将其移至查询的主要部分:

prefix : <http://stackoverflow.com/q/22478183/1281433/>

select ?x ?v where { 
  ?x :r :x ; :p|:q ?v 
}
----------
| x  | v |
==========
| :b | 4 |
| :b | 5 |
| :a | 2 |
| :a | 3 |
----------
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么此 SPARQL 查询没有返回任何结果? 的相关文章

  • dbpedia SPARQL 查询获取给定城市的某些值

    我确信我想做的事情非常简单 但我似乎无法正确查询 我在数据集中有记录 其中包含城市名称等值 例如 纽约 及其相应的国家 地区代码 例如 美国 我还可以访问完整的国家 地区名称和国家 地区 ISO 代码 我想通过使用 where 子句从 db
  • 在 OWL 中的同一属性中定义多个域/范围

    在 OWL 中设置数据 对象属性的域 范围的正确方法是什么 如果我有两节课A B和数据属性hasName
  • 在现实世界应用中使用语义网络技术的示例[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 您正在开发使用 RDF OWL SPARQL 技术的 可能是商业的 产品吗 如果是这样 您能描述一下您的产品吗 O Reilly 的
  • GraphDB Free 8.8 Sparql INSERT 返回 400。不支持 INSERT?

    我正在使用 GraphDB Free 并尝试使用 sparql 将一些三元组插入到存储中 该查询看起来像一个简单的 INSERT Some Prefixes INSERT DATA subject predicate object 我使用
  • 如何将嵌入的 Blazegraph 内容转储到 RDF 文件?

    I have 创建了 blazegraph RDF4J 存储库和连接 https wiki blazegraph com wiki index php Sesame API Tutorial在斯卡拉中 val props new Prope
  • 获取地点的纬度和经度 dbpedia

    我想获取一个我已经知道其名称的地点的纬度和经度 PREFIX geo
  • OWL 限制 - 定义仅包含具有特定属性值的属性的类

    我目前正在玩 OWL 尤其是有限制的情况 我正在尝试创建一个执行以下操作的查询 假设我有一个类 Cinema 它具有属性 movies 包含 Movie 类型的对象 Movie 类包含一个名为 genre 的属性 现在我想创建一个 Acti
  • 如何推断两个人之间的财产是兄弟

    我需要推断一个人是另一个人的兄弟 如果他们有同一个父亲 所以 如果我有这个 巴特有父亲荷马 丽莎有父亲荷马 Because Bart and Lisa有同一个父亲 我想推断 丽莎有弟弟巴特 有没有什么方法可以利用任何属性特征来做到这一点 使
  • 组图模式在 SPARQL 中如何工作

    首先 我不知道这是否真的称为组图模式 反正 请看看这个查询 select x y where x rdf type rs Recommendable union xd rs doesntexist y 有no rs doesntexist但
  • W3C 验证器无法处理 RDF/XML

    我正在尝试描述一个非常基本的地铁火车站地图 其中包含站点和时间 这个 RDF 到 Turtle 转换器 http rdf translator appspot com 可以解析我的 XML 但 W3C 验证器抛出 Error Your do
  • 来自 WEBVTT 的 RDF/JSON Javascript 解析器

    晚上好 开门见山 我需要一个脚本来从 WEBVTT 文件中的特定时间间隔获取 RDF JSON 结构 这样的事情存在吗 RDF JSON 是 Talis 指定的文件结构 如下所示 S P O WEBVTT 实现上述结构如下 0 00 00
  • 如何使用 RDFLib 解析大数据集?

    我正在尝试使用 RDFLib 3 0 解析几个大图 显然它处理第一个图并在第二个图上死掉 MemoryError 看起来 MySQL 不再支持作为存储 您能建议一种以某种方式解析这些图的方法吗 Traceback most recent c
  • 使用 rdflib-sqlalchemy 的 SPARQL 查询性能

    我有 7200 个左右的 SKOS Concept 对象 由 rdflib sqlalchemy 通过解析存储在 Postgres DB 中的海龟文件创建 以下 SPARQL 查询需要 30 多秒才能响应数据 SELECT subject
  • 用于查找艺术家属性的 dbpedia SPARQL 查询

    我试图通过 DBPedia 和 SPARQL 查询语言获取有关艺术家的详细信息 但是 根据我的理解 如何获取某些信息似乎几乎是不可能的 我正在尝试找到一位艺术家并获取诸如他们的家乡之类的信息 我猜查询应该类似于 SELECT c WHERE
  • 大师系统要求

    我们将使用 Virtuoso 来存储 RDF 三重计数一开始将为 1 亿 我需要知道典型的 RAM CPU 磁盘等应该是什么 查询将使用 SPARQL 并且查询会有点复杂 请提供您的意见 Virtuoso 版本 6 x 三元组 四元组 的平
  • 概念数据建模:RDF 是正确的工具吗?其他解决方案?

    我正在规划一个系统 该系统结合了各种数据源 并允许用户对这些数据源进行简单的查询 系统的一部分需要充当抽象层 了解所有连接的数据源 用户不应该 需要 了解底层数据 提供者 数据提供者可以是任何东西 关系 DBMS 错误跟踪系统 气象站 它们
  • 如何从维基数据属性中获取最新值?

    假设我想获取每个国家 Q6256 及其最近记录的人类发展指数 P1081 值的列表 该国家 地区的人类发展指数属性包含在不同时间点获取的数据点列表 但我只关心最新的数据 此查询不起作用 因为它会为每个国家 地区获取多个结果 每个人类发展指数
  • Freebase RDF 转储的 C# 解析仅产生 1150 万个 N-三元组,而不是 19 亿个

    我正在构建一个 C 程序来读取 RDF 数据Google Freebase 数据转储 https developers google com freebase data 首先 我编写了一个简单的循环来简单地读取文件并获取三元组的计数 然而
  • 使用 SPARQL 查询的 UNION 和交集

    我正在将用户定义的查询转换为 SPARQL 例如 当用户说 abc 时 这意味着给我给定类型的所有具有名为 abc 属性的节点 作为其扩展 如果用户说 abc 或 pqr 和 lmn 我需要查找给定类型的某些属性为 abc 或 pqr 和
  • 使用 Jena 查询维基数据

    目前 Wikidata 有一个 SPARQL 端点 https query wikidata org https query wikidata org 我想使用 Jena 3 0 1 查询此网站 我使用以下代码 但收到错误消息 端点返回的

随机推荐

  • 如何将 Gradle 中的原生 JUnit 5 支持与 Kotlin DSL 结合使用?

    我想将内置 JUnit 5 与 Gradle Kotlin DSL 一起使用 因为在构建过程中我收到此警告 WARNING The junit platform gradle plugin is deprecated and will be
  • 所有构建的 gcloud 步骤超时的全局限制在哪里设置?

    在哪里可以找到 gcloud 构建步骤超时的全局限制 这是我的 gcloud 构建配置 steps name gcr io cloud builders yarn name gcr io cloud builders yarn args b
  • 在 yaml.dump Python 中强制引用

    在我进入之前 是的 我已经研究过它并且知道 YAML 不区分引号和非引号 而只是按原样获取类型 坦率地说 我认为没有引号更好 但不幸的是这不是我需要的 所以请尝试理解我have研究了这个问题 但仍然需要我的字符串对象周围的引号 在我的代码中
  • readAsDataURL 不处理 captureAudio 中的文件

    我的 FileReader 对象可以完美上传图像 我正在追踪onload以及其他事件 这些都在我上传图像时发生 fileReader new FileReader fileReader onloadstart e gt window ale
  • 在根模块中使用 aws_vpc 数据源的 Terraform 鸡/蛋问题

    我有一个根 Terraform 模块 它声明了 VPC 模块和其他模块 例如要在 VPC 中启动的 EC2 实例 在 EC2 模块中 我使用以下命令读取 VPCaws vpc type data aws vpc vpc filter nam
  • 在 Java 中将 DatagramPacket 转换为字节数组后解析它

    我正在尝试解析我将在套接字上收到的 DatagramPacket 我知道我将收到的数据包的格式 即 DHCPREQUEST 数据包 但我认为这并不重要 为了简单起见 我们只考虑前六个字段 第一个字段是 操作码 为 1 个字节 第二个字段是
  • 将调整大小的位图文件设置为 MFC 优化校准

    有没有比这更简单的方法 如果这是唯一的方法 这里是否存在潜在的内存泄漏 CImage img1 int dimx 100 dimy 100 img1 Load filename filename path on local system t
  • 内容安全策略 Internet Explorer 错误

    我添加了 Content Security Policy 它在 Chrome Firefox 和 Opera 上工作正常 但在 Internet Explorer 11 上我遇到此错误 此页面无法显示 add header Content
  • 多个图像处理程序调用导致 IE 在弹出窗口中挂起

    我们有一个ashx图像处理程序在过去几年中表现相当不错 但我们最近注意到一些奇怪的间歇性行为IE8 and IE9 我们有一个图库页面 作为图像 src 属性的一部分多次调用图像处理程序 该页面在弹出窗口中打开 该页面工作正常 但当窗口快速
  • 使用生成的匿名登录 ID 登录用户

    我正在编写一个 Android 应用程序 我正在尝试让用户匿名登录 这样他们就不必经历任何类型的注册过程 我将他们的匿名用户 ID 存储在共享首选项中 当应用程序打开时 我尝试根据该用户 ID 登录他们 我试图找出执行此操作的正确方法 因为
  • Centos htaccess 不被读取

    我正在开发一台新服务器 并通过 yum 安装了 Web Server 组 Php 和 mysql 工作正常 但我无法让 htaccess 工作 这是我的测试 htaccess 文件 WASD TEST CALL ERROR 我将其作为 ht
  • 简单的 IPython 示例在 sys.exit() 上引发异常

    我正在 IPython 中做一些非常简单的 PySide 和 PyQt 教程 一个教程只是创建一个带有一些滑块的窗口来演示插槽和信号 当我关闭正在运行的演示应用程序的窗口时 我看到以下错误 An exception has occurred
  • 访问在缓存块 Rmarkdown 文档中创建的全局环境对象

    我想运行 R 脚本来运行模拟并缓存 Rmarkdown 文档的结果 我正在使用 Rstudio 并尝试使用 knit HTML 创建 HTML 报告 这是一个简单的示例 r test global env cache TRUE print
  • 局部静态和局部变量的内存分配

    1 void main void int ptr1 ptr1 int malloc 2 void main void static int ptr2 ptr2 int malloc 我想问ptr1和ptr2的内存分配是如何完成的 The p
  • 如何在VBA中将自动生成的单选按钮设置为true?

    我正在创建一个 Excel 工作表 其中根据特定参数的值自动生成单选按钮 请参阅此以获得清晰的理解 复制一组单选按钮n次数 在哪里n是引用参数的行数 应根据条件检查此自动生成矩阵中的每个单选按钮 并且在与条件匹配的一组中 十二个单选按钮之一
  • CSS 中的 HTML 注释?

    我正在查看一些Amazon http en wikipedia org wiki Amazon com的 CSS 并注意到他们用 HTML 注释掉了 CSS 的一大块 我知道 Internet Explorer 具有 HTML 注释的条件格
  • “项目覆盖率设置为 0%” – JaCoCo 和 Sonar 在 Jenkins 中与 Ant

    我将工作从单个 Hudson 机器转移到了多从机 Jenkins 环境 现在 JaCoCo 覆盖范围不再起作用 工作 旧 哈德森2 0 1 詹金斯声纳插件 1 7 1 声纳2 1 2 破损 新 詹金斯 1 446 詹金斯声纳插件 1 7 2
  • Woocommerce 管理员订单详细信息 - 在订单详细信息页面上显示自定义数据

    我已经搜索并尝试了两天 但没有成功 请帮忙 我想过滤 woocommerce 订单 以根据产品属性将附加详细信息从数据库添加到订单详细信息页面 但我找不到适合此任务的 woocommerce 操作 过滤器挂钩 这里假设我有变量 is cus
  • 单应性估计 -> 结果是仿射矩阵?

    我正在开发一个基于平面标记的姿态估计系统 使用 Matlab 为了做到这一点 我检测网络摄像头捕获的图像中的一个矩形 获取 4 个角点的坐标 并计算这些角点之间齐次坐标的单应性 例如 58 46 75 90 M 67 108 133 89
  • 为什么此 SPARQL 查询没有返回任何结果?

    通过运行此查询DBpedia SPARQL 端点 http dbpedia org sparql给我带来了很多结果 与institution列填充 select person field institution where person a