在 RDF 中对数据库 NULL 的等价物进行建模

2023-12-25

我想知道是否有一种标准或普遍接受的方法来表示 RDF 数据数据库中使用的 NULL 的等效项。

更具体地说,我对区分以下情况的值感兴趣o财产的p (p是谓词,oRDF 三元组的对象):

  1. 其值为不适用,即财产p不存在或在上下文中没有意义。
  2. 其值为unknown,即它应该在那里,但我们不知道。
  3. 价值不存在,即该财产没有价值(例如,一个活着的人的死亡年份)。
  4. 其值为witheld,例如当数据使用者不允许访问它时。

我不知道执行此操作的标准方法,但使用 RDF 的优点之一是您在决定如何执行此操作时具有很大的灵活性。 RDF,per se,不能表达否定(即,没有非常方便的方法来表示三元组s p o不成立),但 OWL 可以。对于您描述的四种情况,您可以采取以下一些方法:

1. 该值不适用,即属性 p 不存在或在上下文中没有意义。

如果它对财产没有多大意义p对某个主题有价值s,那么不写任何形式的三元组可能是可以接受的s p o。由于RDF做出了开放世界的假设,因此在数据检索中,通常情况下,人们只查询自己感兴趣的数据,而不会花太多精力去检查哪里有意外的事情。如果您确实想要进行一些健全性检查,那么您可以声明 RDFS 域和属性范围。例如,您可能有:

hasBirthDate rdfs:domain AnimateObject .
hasConstructionDate rdfs:domain InanimateObject .

根据语义,如果你有

object82 hasBirthDate "2013-04-01" ;
         hasConstructionDate "2013-04-02" .

那么你也会推断出

object82 a AnimateObject, a InanimateObject .

你可能会进行健全性检查来查找两者兼而有之的东西AnimateObjects and InanimateObjects。如果两者兼而有之,那么您可能遇到了需要调查的问题。如果您使用 OWL,那么您实际上可以声明AnimateObject and InanimateObject是不相交的并检查逻辑一致性。或者,在 OWL 中,您可以添加断言,例如

object82 hasConstructionDate max 0 

上面说object82不应该有该属性的值hasConstructionDate.

无论如何,添加rdfs:comment向您的属性解释该属性应该用于什么以及不应该用于什么。适当的时候,添加rdfs:comment向个人解释为什么他们不应该具有给定财产的价值,如果他们不应该具有这样的价值。

2. 该值是未知的,即它应该存在但我们不知道。

在这种情况下,重要的是要明确“应该”的确切含义。例如,在 OWL 中,你可以这样说

Person SubClassof (hasName min 1 String)

断言每个person至少与一个相关String按物业hasName;也就是说,每个人至少有一个名字。这是一种说法is一些值,但我们可能不知道在特定情况下它是什么。如果您无法使用 OWL,而只能使用 RDF,那么您可能应该添加一个rdfs:comment到酒店hasName沿着“每个NamedEntity该属性应该至少有一个值。”

3. 值不存在,即该财产没有值(例如,活着的人的死亡年份)。

这是一个有趣的例子,因为 RDF 没有内置的时间概念(在某种意义上,某些三元组在给定时间之前一直有效,而在该时间之后其他一些三元组仍然有效)。如果您只是使用 RDF 图作为可以更新的类似数据库的存储(通过删除和插入新的三元组),您可能可以使用一些特殊的保留值“我还没死!” http://www.youtube.com/watch?v=grbSQ6O6kbs。拥有一个开放式数据模型(就像我们在 RDF 中所做的那样)使得执行此类操作变得特别容易,因为您实际上可以为其使用一些新值:

mp:JohnCleese hasDeathDate mp:notDeadYet .
mp:GrahamChapman hasDeathDate "1989-10-04" .

当然,您也可以更精致一点,使用布尔值属性来指示第一个属性的值是否有意义:

mp:JohnCleese isDeceased "false" .
mp:GrahamChapman isDeceased "true" ;
                 hasDeathDate "1989-10-04" .

4. 该值被保留,例如,当不允许数据使用者访问它时。

在我看来,这是最有趣的案例,因为它可能涉及最有趣的数据转换。如果您有一个很好的数据集可供人们查询,并且您想要指示他们在未经许可的情况下将获得的结果,那么您有很多选择来表示这一点。例如,您可以使用 HTTP 状态代码之类的内容将图中的节点替换为空白节点,其作用类似于密文。例如,您可能有以下数据:

ex:JohnDoe hasSSN "000-00-0000" .
ex:JaneDoe hasSSN "000-00-0001" .

当有人询问数据时,您可能会回应(假设第一个值有效,第二个值无效):

ex:JohnDoe hasSSN [ a ex:ValidSSN ] .
ex:JaneDoe hasSSN [ a ex:InvalidSSN ] .

一般来说,您可以向消费者呈现与您实际拥有的不同的数据视图。我不知道做这类事情有什么标准。您可能对最近的 W3C 建议有些相关,PROV-O:PROV 本体论 http://www.w3.org/TR/prov-o/,用于描述信息来源的词汇表(例如,信息是由什么生成的,归因于什么);它对于描述请求者可能无法获得完整形式的资源类型可能很有用。

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

在 RDF 中对数据库 NULL 的等价物进行建模 的相关文章

  • MySQL 如何在使用 Group By 时为不匹配的列分配空值

    我有以下 MovieTheaterTbl 表 Name Location Date TicketRevenue SnackRevenue BeverageRevenue AMC Alpine St 8 14 100 80 60 Atlas
  • 如何使用 SPARQL 区分事物和无生命物体

    使用 SPARQL 我可以很轻松地获取有关某些资源的所有相关信息 但我很难弄清楚如何真正区分事物和资源things 其中Thing是所有类的超类 是无生命的物体 例如杯子 勺子 铅笔等 例如 下面是 DBPedia 中的一些无生命物体 Fo
  • 从 pandas 数据框中删除具有空值的行

    我正在尝试从数据框中删除一行 其中其中一列的值为空 我能找到的大部分帮助都与删除 NaN 值有关 到目前为止 这对我不起作用 我在这里创建了数据框 successfully crated data frame df1 ut get data
  • Haskell 中的 undefined 和 Java 中的 null 有什么区别?

    两者的类型都是所有类型的交集 无人居住 两者都可以在代码中传递而不会失败 直到尝试评估它们为止 我能看到的唯一区别是 在 Java 中 有一个漏洞允许null仅针对一个操作进行评估 即引用相等比较 而在 Haskell 中undefined
  • 带有 NULL 的唯一键

    这个问题需要一些假设的背景 让我们考虑一个employee有列的表name date of birth title salary 使用 MySQL 作为 RDBMS 因为如果任何给定的人与另一个人具有相同的名字和出生日期 那么根据定义 他们
  • 如何避免在 Java 中检查空值?

    I use x null避免NullPointerException https docs oracle com javase 9 docs api java lang NullPointerException html 还有其他选择吗 i
  • OWL ObjectProperty 在 Protégé 中作为注释加载

    我正在尝试加载ontology http www bbc co uk ontologies wildlife 2010 11 04 shtml在 Prot g 中 但未按预期进行处理 最有问题的是所有对象和数据属性都显示为注释而不是数据属性
  • 如何建立rdfa lite节点之间的关系

    尝试在语义上标记有关特定地址的报告页面 该页面提供有关地址能源消耗的报告 并提供与能源消耗相关的服务优惠 我想在语义上表示该地点的地址 与该地址相关的能源报告以及该地址可用的优惠 现在 我的标记有一个用于地点的 RDFa lite 节点和另
  • 从 CREATE TABLE SQL 生成图形模式表示

    我有一个包含许多 CREATE TABLE 语句的 sql 文件 没有参考规范 MyISAM 的东西 但我喜欢创建不同的表框 然后手动组成表关系 我正在使用Mac 有免费的程序可以做到这一点吗 是的MySQL工作台 http dev mys
  • 在 Hive 中获取空值 使用 REGEX 创建和加载查询

    我有一个日志文件 我需要在其中使用 REGEX 存储数据 我尝试了下面的查询 但加载了所有 NULL 值 我已经检查了 REGEXhttp www regexr com http www regexr com 它对我的 数据工作正常 CRE
  • 如何使用 RDFLib 解析大数据集?

    我正在尝试使用 RDFLib 3 0 解析几个大图 显然它处理第一个图并在第二个图上死掉 MemoryError 看起来 MySQL 不再支持作为存储 您能建议一种以某种方式解析这些图的方法吗 Traceback most recent c
  • Objective-C 有没有办法捕获发送到 nil 的消息?

    我刚刚被一种烦人的东西咬了bug https stackoverflow com questions 913627 uiviewcontroller viewdidload not being calledObjective C 中的 向
  • PDO 和 IS NOT NULL 函数

    我是 PDO 新手 我想知道是否有相当于 mysql 语句的语句来检查参数是否不为空 例如 SELECT FROM table WHERE param IS NOT NULL 我试过这个 pdo gt prepare SELECT FROM
  • 使用 AVFoundation 快速获取视频帧

    这是我的代码 我想要获取我的视频并将帧数据获取到 SceneKit SCNSphere NSString videoPath NSBundle mainBundle l var videoURL NSBundle mainBundle UR
  • 确定非空列表条目是否“连续”的 Pythonic 方法

    我正在寻找一种方法来轻松确定列表中所有非 None 项目是否出现在单个连续切片中 我将使用整数作为非 None 项目的示例 例如 列表 None None 1 2 3 None None 满足我对连续整数条目的要求 相比之下 1 2 Non
  • 如何在无 null 设计中实现 List、Set 和 Map?

    当您在大多数情况下可以返回 null 空对象以避免 null 时 这很好 但是像 Collection 这样的对象呢 在爪哇 Map回报null if key in get key 地图上没有找到 我能想到的最好的避免方法null在这种情况
  • 概念数据建模:RDF 是正确的工具吗?其他解决方案?

    我正在规划一个系统 该系统结合了各种数据源 并允许用户对这些数据源进行简单的查询 系统的一部分需要充当抽象层 了解所有连接的数据源 用户不应该 需要 了解底层数据 提供者 数据提供者可以是任何东西 关系 DBMS 错误跟踪系统 气象站 它们
  • Rails 建模:将 HABTM 转换为 has_many :through

    我正在现有的 Rails 站点上进行维护工作 并且遇到了一些由多对多关联引起的问题 看起来该网站最初是使用has and belongs to many对于一些业务逻辑变得更加复杂的关系 所以我需要使用has many through而是支
  • 块执行后变量返回 null

    我正在调度一个队列来在单独的线程上下载一些 flickr 照片 在 viewWillAppear 中 当我记录块内数组的内容时 它完美地显示了所有内容 dispatch queue t photoDowonload dispatch que
  • 如果一列没有值,MySQL 返回最大值或 null

    我尝试获取 mysql select 的最大值 但如果有一行不包含时间戳 则希望将其设置为 null empty 0 表统计数据 简化 ID CLIENT ORDER DATE CANCEL DATE 1 5 1213567200 2 5

随机推荐

  • 如何让 python 程序运行而不是在记事本中打开?

    我在打开 py 文件时遇到一些问题 我有一个程序调用这个 py 文件 即路径名 example py file txt 但它不是运行 python 程序 而是在记事本中打开它 我如何让它运行 程序本身接收一个文件 并创建一个更可读的输出 编
  • 未找到框架 Protobuf

    I am facing an issue wherein I needed to use FirebaseRemoteConfig for my iOS app I included the following pod pod Fireba
  • 具有自己的文件偏移量的重复文件描述符

    如何从现有文件描述符创建新文件描述符 使得新描述符不共享文件表中相同的内部文件结构 条目 具体来说 诸如文件偏移量 最好是权限 共享和模式 之类的属性不应在新旧文件描述符之间共享 在 Windows 和 Linux 下 dup 将复制文件描
  • mingw 3.4.5 缺少 dlfcn.h?

    难道是我的mingw 3 4 5安装有问题 还是其他一些图书馆提供了这个 如果您想知道 dlfcn h 是定义 dlopen 和 dlclose 等内容的地方 所以它应该是相当标准的 dlfcn win32 http code google
  • Sonata Admin (2.3) 中的嵌套集合字段

    我在创建用于创建课程的表单时遇到问题 这是我的数据库方案的一部分 我正在尝试为其创建一个表单 所以我想做的是创建一个课程 我可以在其中创建会话和附加到该会话的日期 时刻 它应该看起来像这样 In my 课程管理我有的课 protected
  • 从子 textInputEditText 获取父 textInputlayout

    我正在实现一个功能来更改大小写textInputlayout提示文本为大写当提示浮起时 反之亦然 为此我正在使用OnFocusChangeListener在它的孩子身上textInputEditText 为了使其易于实施 我正在实施View
  • 删除java中的符号链接

    是否有任何 api 可用于使用 java util Date 删除符号链接 Files delete Path 不起作用 请发表您的建议 Files delete Path 在符号链接上完美运行 您的代码中应该还有其他问题 此代码示例有效
  • 如何在 C# 中保存文件和在数据库中插入记录之间创建 Transactionscope

    我有一个问题 保存文件并在 TransactionScope 的数据库中插入记录 表示保存文件和插入记录 必须一起依赖 或两者或两者都不依赖 有人可以帮我吗 事务性 NTFS 最酷的部分之一 事务性 NTFS 是它可以工作 与大量其他 交易
  • JavaScript继承框架

    是否有一个小型 轻量级的 JavaScript 类继承解决方案 可以在客户端和服务器端 node js 上正常工作 我不需要一个大的库 只是需要一个允许我声明构造函数和一些方法 然后让类能够继承它的库 John Resig 用大约 25 行
  • React Router 显示所有路由的一个组件(标头)

    有一个关于 React 路由器的问题 我有一个标题项目 我想为所有路线显示该标题项目 当然 我希望它成为 的一部分 以便用户可以单击导航中的项目 目前我有我的
  • Go 练习之旅 #18:切片、索引超出范围

    我正在完成围棋之旅中的练习 但遇到了一个我无法解决的障碍 我正在做Exercise Slices https tour golang org moretypes 18我收到此错误 256 x 256 panic runtime error
  • 具有多个文本字段输入视图的多个选择器视图 Swift

    我一直在论坛中进行搜索 但没有任何帮助 我在一个视图控制器中使用 4 个文本字段 对于每个文本字段 我使用一个单独的 pickerView 作为文本字段 4pickers 的 inputView 当我单击第一个文本字段时 pickerVie
  • 使用 GraalVM 构建本机应用程序时缺少 cl.exe

    我正在尝试使用 GraalVM 和本机映像构建本机应用程序 启动构建过程时发生错误 类路径中似乎缺少 cl exe 正如 GraalVM 网站上提到的 我已经安装了 GRMSDKX EN DVD iso 适用于 Windows 7 和 NE
  • Arrayformula 在谷歌表格中使用 countif 来计算当前行之前的重复项[重复]

    这个问题在这里已经有答案了 我只需要计算当前行之前的重复项 我需要它位于数组公式中 因为我需要它在添加新行时自动扩展 在 Excel 中 我会使用一个带有类似以下函数的表 COUNTIF A 2 A2 B2 gt 在单元格 C2 中 在单元
  • 使用 AWS CodeBuild 进行 docker 推送失败,退出状态为 1

    我创建了由 CodePipeline 触发的 CodeBuild 项目 并且 docker Push 步骤始终失败 并显示 原因 退出状态 1 错误消息 以下是我的构建日志 将我的组织 ID 替换为 Container 2021 06 12
  • 如何从 GMSMapView 中删除 GMSPolygon

    是否有任何方法可以从 GMSMapView 中删除 GMSPolygons 它似乎不存在包含它们的 GMSMapView 属性 如 GMSPlolyLines 我应该清除地图并再次渲染吗 thanks 当您创建GMSPolygon你设置它的
  • 如何知道窗口是否被“x”按钮关闭?

    有谁知道如何找出wpf窗口是否被 x 按钮关闭 最简单的方法 在我看来 是存储一个布尔值 指示用户是否通过其他方法关闭了表单 然后在 OnClosing 事件中 检查布尔值是否为 false 表示单击了 x 按钮 唯一的问题是您自己设置了布
  • Rails 和 Socket.io (node.js)

    我打算使用 Rails 应用程序来提供由 node js 服务器和 Socket io 处理的实时数据 在 Socket io 网站上 它说 如果您不会利用 Node JS 来提供服务 您的文件 请确保设置 全球的WEB SOCKET SW
  • 从 gradle 扩展访问配置闭包

    我正在编写一个插件 其中执行如下操作 project extensions create myExtension new MyExtension project where MyExtension是定义我的新功能的类 Now in grad
  • 在 RDF 中对数据库 NULL 的等价物进行建模

    我想知道是否有一种标准或普遍接受的方法来表示 RDF 数据数据库中使用的 NULL 的等效项 更具体地说 我对区分以下情况的值感兴趣o财产的p p是谓词 oRDF 三元组的对象 其值为不适用 即财产p不存在或在上下文中没有意义 其值为unk