Rdf 重复三元组

2023-11-29

我有一个关于 RDF 和重复三元组​​的问题。通过仔细阅读互联网,似乎重复的三元组在某种程度上是“不好的”或违反了某些规则。

但从表面上看,重复的三元组在我看来是有意义的。

假设我想表达这样一个事实: Susy(主语)提到(谓语)Bob(宾语)。

假设我还想表示Susy mentions Bob上五次。不会有 5 个三元组Susy mentions Bob请允许我代表这个?

稍后的查询想要知道 Susy 提到 Bob 的次数,可以直接询问COUNT这个重复的三重。

所以我的问题是:这种对事实的表述有什么问题吗?Susy mentions Bob five time。如果是这样,最好的方式是什么来表示 Susy 提到 Bob 五次这一事实。


理论上RDF图是一个set三元组,这意味着每个三元组只能出现一次。当然,您可以有一个文档,例如在 Turtle 中,其中包含三元组或四元组的重复项,但在加载到内存/存储后,这些三元组应被视为一个。毕竟任何文档都只是文本。

也就是说,我看到了根据三重存储的不同行为。例如,AllegroGraph 默认加载并处理重复的三元组。有一个手动选项可以修剪重复项。

不,查询不会告诉您有重复的问题,因为 SPARQL 聚合适用于节点而不是整个三元组。


关于你的例子,有多种方法。

TL/DR您将需要一种方法来添加关于语句的语句。看这张幻灯片分享有多种方法,我在下面简要介绍了其中一些方法。

完整答案

最简单的是引入某种人工中介图节点,可以称为Mention管他呢。例如

:Susan :mentions [
  rdf:type :Mention ;
  :mentionsWhom :Bob ;
  :times 5 
]

问题是,如果您碰巧将这种结构引入到现有数据中,这会破坏现有的语义。


一种简单且广泛支持的方法是使用命名图这样你就有了quads而不是三元组。下面的示例增强了海龟语法,使其变为TriG。请注意,名称图只是另一个资源。使用任何 SPARQL 处理器也可以轻松查询命名图。

# :susanMentionsBob is the named graph
:susanMentionsBob {
   :Susan :mentions :Bob
}

# we can say more about that graph
:susanMentionsBob :times 5

另一种传统的解决方案是使用一种形式具体化。通过具体化,您可以创建一个rdf:声明对象,您可以在其中添加附加数据。缺点是需要重复原来的三元组s/p/o

:Susan :mentions :Bob . # actual triple intact
_:reifiedStatement
   rdf:type rdf:Statement ;
   rdf:subject :Susan ;
   rdf:predicate :mentions ;
   rdf:object :Bob ;
   :times 5 . # extra statement about the mention

最近引入了更简洁的具体化方法。您可以使用辛格尔顿房产反而。您引入了一个额外的谓词,它取代了:提到对于单一用途,您可以向该属性添加附加语句:

:Susan :mentions#1 :Bob .
:mentions#1 rdf:singletonPropertyOf :mentions .
:mentions#1 :times 5 .

请注意,您可以为 :mentions#1 属性使用任何名称以避免冲突。请查看上面链接的 sildeshare 以获取更多示例和 SPARQL 用法


最后但并非最不重要的一种非标准方式,仅由 BigData AFAIK 支持,是正确具体化, or RDR。使用 RDR 你可以写

<<:Susan :mentions :Bob>> :times 5

通过添加双尖括号,您可以添加关于语句的语句。这也适用于大数据 SPARQL 处理器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rdf 重复三元组 的相关文章

  • 按 SPARQL 中的日期范围过滤

    我正在使用 Jena 的 SPARQL 引擎 并尝试编写一个查询来过滤日期范围 因为我需要在固定日期之后查找属性的值 我的日期属性采用以下格式 Fri May 23 10 20 13 IST 2014 如何编写 SPARQL 查询来获取日期
  • 做出这个推论需要什么?

    如果我想从这些事实推断 奥巴马出生在美国 Obama bornIn Hawaii Hawaii partOf USA 这两个事实足以做出推论吗 如果是 应该用RDFS还是OWL来表示事实 是否有一些在线 SPARQL 工具可以让我快速测试这
  • 使用 Jena 编写 SPARQL 查询来查询 IRI,例如:http://pt.dbpedia.org/

    我正在使用 Jena 写一个SPARQL查询以获取rdfs label来自作为方法参数接收的 URI 的属性 该方法仅接收如下 URI http pt dbpedia org 它应该返回给我rdfs label 但它没有给我任何回报 我查了
  • 具有大量 UNION 的 SPARQL 查询的替代方案

    我在 Virtuoso 中存储了一些命名图表 我想从提供的列表中找到与最多术语匹配的图表 我的查询是以编程方式构建的 如下所示 SELECT DISTINCT graph count DISTINCT match as matches WH
  • 很棒的 RDF 可视化工具 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想找到一些很棒的工具或样式来可视化我的 RDF 数据 以便在观看者访问 RDF 数据时能给他们带来震撼 问题是我现在得到的可视化工具只能
  • 解析模型后,Redland RDF 中 RDF 节点的生命周期?

    我正在解析 RDF model 使用librdf parser parse string into model 然后我保留librdf model但释放librdf parser 在我看来 模型中的节点似乎也消失了 那么一生会做什么雷德兰R
  • 数据导入期间超出 Fuseki GC 开销限制

    我正在尝试在启动时将 LinkedMDB 610 万个三元组 导入到我的本地版本的 jena fuseki 中 path to fuseki server file path to linkedmdb nt ds 它运行了一分钟 然后因以下
  • 如何在任意长度的sparql路径中使用Union/or?

    我使用下面的查询从 DBPedia 本体中查找具有城市域 或城市超类 或国家范围 或国家超类 的所有属性 当我使用固定长度的路径时没有问题但是当我把 要定义任意长度的路径 我收到此错误 Virtuoso 37000 错误 SP031 SPA
  • 本体验证的耶拿规则

    我想验证本体并在有任何不正确的情况下抛出错误 我要做的最多的验证如下所示 我有一堂这样的课
  • 如何将嵌入的 Blazegraph 内容转储到 RDF 文件?

    I have 创建了 blazegraph RDF4J 存储库和连接 https wiki blazegraph com wiki index php Sesame API Tutorial在斯卡拉中 val props new Prope
  • Jena 桌面 SPARQL 客户端 (TDB)?

    我正在开发一个使用 Jena 进行存储 带有 TDB 后端 的应用程序 我正在寻找类似 Squirrel 的东西 它可以让我看到正在存储的内容 运行查询等 这似乎是一个明显需要的东西 但我的 可能措辞不好 谷歌查询没有出现任何有希望的东西
  • 将 HTML 转换为 RDF

    我正在寻找一个通用的 API Web 服务 工具 等等 它允许将给定的 HTML 页面转换为尽可能具体的 RDF 图 最有可能使用主干本体和 或映射器 你证明了吗GRDDL http www w3 org 2001 sw wiki GRDD
  • 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
  • 通过SPARQL UPDATE从本体中删除空白节点

    我在 SPARQL UPDATE 插入 操作的帮助下将一些数据存储在 protege 中制作的本体模型中 以下是更新查询 PREFIX test
  • 使用 owl:Class 前缀进行 rdflib 和 xml 序列化

    我想使用owl 我的 RDF 本体的 XML 序列化中的前缀 使用 rdflib 版本 4 1 1 不幸的是我仍然得到序列化rdf Description标签 我查看了有关将命名空间绑定到图表的答案RDFLib XML 序列化中的命名空间前
  • SPARQL 为缺失字段生成值

    我正在尝试编写一个 SELECT 它为我提供表中的所有值 我有可选值 我希望用标准值填充它们 如果它们不存在 这是我的代码 SELECT WHERE a nmo hasObject nm coin OPTIONAL a nmo hasAut
  • 如何验证 SPARQL 中的日期时间对象? (Virtuoso 22007 错误 DT006)

    我收到以下错误 Virtuoso 22007 Error DT006 Cannot convert 0359 to datetime Incorrect month field length SPARQL query define sql
  • 在 dotNETRDF 中使用 SPARQL 列表 - 列表的交集

    我正在使用 dotNetRDF 并且很难理解如何使用提供的列表助手 目前我没有使用列表 只使用一个项目 如下所示 paramString SetParameter nickname g CreateLiteralNode nicknameS
  • 解析 SPARQL 查询中 AltLabel 的返回值

    在如下所示的 Wikidata SPARQL 查询中 我希望能够使用自定义分隔符作为返回值 placeOfBirthAltLabel 问题是下面的一些值 placeOfBirthAltLabel包含逗号 例如 纽约 的同义词包括作为单个条目

随机推荐

  • xmlstarlet XPath 表达式选择单个结果而不是多个

    我有一个 XML 文件 其结构如下
  • 不在“程序和功能”控制面板中显示应用程序版本

    可以删除或隐藏AppVersion从安装 我不想看到程序版本 程序及特点 安装后 Set AppVersion空 或删除该行 因为该指令默认为空 但是 那么你必须设置AppVerName 根据您的需要 将其设置为My Program 1 0
  • 自定义旋转弹出窗口

    我想修改微调弹出对话框 我想实现我自己的自定义旋转弹出窗口 可能还是不可能 任何人都可以为我提供解决方案来实现自定义微调器弹出窗口吗 这是为了统一我的应用程序中的各种弹出窗口而做出的努力 看到这里是一个简单的例子 它让您了解如何构建自定义微
  • SwiftUI:.contextMenu 关闭时的通知(iOS)

    我在用着 contextMenu和 一起 onDrag在视图上 这似乎非常棘手 通过设置背景颜色变为灰色dragging为真 这是由 onDrag打开上下文菜单时已经发生了这种情况 有点早但还可以 当我使用按钮关闭菜单时 我可以设置drag
  • 在 IIS7 中将表单发送到 404 + HttpHandler:为什么所有 POST 数据都丢失了?

    好吧 这可能听起来有点令人困惑和复杂 所以请耐心听我说 我们编写了一个框架 允许我们定义友好的 URL 如果您浏览任意 URL IIS 会尝试显示 404 错误 或者在某些情况下显示 403 14 或 405 但是 IIS 已设置为将任何针
  • Gatttool非交互模式--char-write

    仍在询问 BLE 设备和gatttool 我可以在交互模式下发送 char write cmd 但无法在非交互模式下执行相同的操作 这是我以交互模式发送的内容 gatttool I gt connect BTADDR BTADDR gt c
  • 自动化 Team Foundation Build 配置

    我目前正在寻找一种无需使用配置向导即可配置 Team Foundation Build 服务 一个构建代理的方法 有没有办法做到这一点 无论是通过命令行 我还没有找到 TFS Build 的任何命令行安装选项 还是通过 API Thanks
  • 如何使用WebRTC将视频流传输到RTMP?

    我正在尝试构建一项服务 将您的屏幕从浏览器流式传输到客户端 例如抽搐 我所完成的是我用 rtmp 构建了一个工作的 nginx 服务器 我使用 OBS 对其进行了测试 这效果很好 我的问题是如何使用 WebRTC 将屏幕从浏览器 不是来自
  • 将向量的每个元素与第二个向量的每个元素相加

    我有两个向量 我想要一个矩阵 其元素是向量 1 的每个元素和向量 2 的每个元素的总和 例如 该矩阵第一行的第一个元素是向量1的第一个元素和向量2的第一个元素的和 第一行的第二个元素是向量 1 的第一个元素与向量 2 的第二个元素之和 依此
  • 查看同一个表中的另一条记录时将 SQL 子查询转换为联接 Access 2010

    我读过联接比子查询更有效 我有一个查询非常慢并且使用大量子查询 因此我想改进它但不知道如何改进 我有以下表格 People this table stores lists of individual people with the foll
  • adb devices 命令和 eclipse 无法识别我的索尼爱立信 xperia x10

    我使用的是Windows XP adb devices 命令不显示我的 xperia x10 和 eclipse 无法识别我的 xperia x10 我有 htc magic 效果很好 我从以下位置下载了驱动程序 http develope
  • Google Chart vAxis 值未显示

    我正在处理各种图表 并在单个页面中显示多个图表 不知何故 vAxis 值没有显示在某些图表上 但它显示在一些独立的图表中 我们可以说它在不同的部分并手动触发 我已经尝试了我能尝试的一切 var data google visualizati
  • 错误:ORA-01704:字符串文字太长

    当我尝试在具有数据类型的字段上设置超过 4000 个字符的值时CLOB 它给了我这个错误 ORA 01704 字符串文字太长 任何建议 如果我必须设置无限字符的值 哪种数据类型将适用于我 尽管对于我的情况来说 它恰好是关于15000 cha
  • IE8中的settimeout问题

    我在 IE8 中使用 javascript setTimeout 函数时遇到一个奇怪的问题 我想像这样使用 setTimeout 函数 setTimeout timeout 2000 name saarthak function timeo
  • Domino 中的身份验证和 Web 服务?

    有没有办法允许在 Domino Web 服务中进行身份验证 如果是这样 我该怎么做 IBM 有一个例子here 有other options
  • 自定义类中没有实体管理器和 ContextErrorException

    我正在尝试在 Sonata Admin 中创建自定义表单 我想将数据从数据库获取到选择框 当我尝试通过 getEntityManager 获取数据时出现错误 No entity manager defined for class Admin
  • “a”在 JVM 指令(如“a load”或“a return”)中意味着什么?

    a 在 JVM 指令 如 a load 或 a return 中意味着什么 我知道它们对引用进行操作 但为什么它们被命名为 aload astore 等而不是 reload restore 等 我相信历史上 a 代表 地址 因为对象引用只是
  • 设置作为参数传递的 TypeScript 对象的默认值

    function sayName params firstName string lastName string params lastName params lastName smith lt lt any better alternat
  • .Net Core 将连接字符串传递给 DBContext 类

    刚刚开始使用 Net Core 并面临将连接字符串信息传递到 Context 控制台项目 我有 4 个项目 都是使用 Net Core 创建的 MVC 服务层 领域层 数据层 在 MVC 项目中 我有 Startup cs 文件 我正在其中
  • Rdf 重复三元组

    我有一个关于 RDF 和重复三元组 的问题 通过仔细阅读互联网 似乎重复的三元组在某种程度上是 不好的 或违反了某些规则 但从表面上看 重复的三元组在我看来是有意义的 假设我想表达这样一个事实 Susy 主语 提到 谓语 Bob 宾语 假设