如何在RDF中表示缺少的xsd:dateTime?

时间:2017-01-01 22:27:48

标签: xsd rdf

我有一个数据集,其中包含从包含各种日期和值字段的表单中收集的数据。并非所有字段都是强制性的,因此空白是可能的 在许多情况下,预计会像DeathDate字段一样为仍然活着的患者。

如何在数据中最好地表示这些空白?

我使用DeathDate代表xsd:dateTime。不允许空白或空白空间。使用Jena RIOT进行验证时,所有这些都被标记为无效:

foo:DeathDate_1
    a foo:Deathdate ;
    time:inXSDDatetime  " "^^xsd:dateTime .

foo:DeathDate_2
    a                   foo:Deathdate ;
    time:inXSDDatetime  ""^^xsd:dateTime .

foo:DeathDate_3
    a                   foo:Deathdate ;
    time:inXSDDatetime  "--"^^xsd:dateTime .

我更喜欢不省略三元组,因为我需要知道源代码是否为空白而不是构建RDF时的转换错误。

编码这些缺失值的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

你应该通过省略三元组来表示这一点。那是“不存在”的三元组的含义:它是(当前)未知的信息。

或者,您可以选择在没有死亡日期时为其指定值"unknown"^^xsd:string。在这种情况下,解决方案是不将其数据类型为xsd:dateTime,而只是作为一个简单的字符串。当然,它不必是字符串,您可以使用任何类型的“特殊”值,例如布尔值false - 只要它是一个有效的文字值,您就可以区分实际的死亡日期。这将解决解析问题,但恕我直言,如果你这样做,你正在设置自己进一步处理数据的麻烦(因为你需要询问这些数据,他们将不得不采取两种不同的类型考虑到值,加上字段丢失的可能性)。

  

我宁愿不省略三元组,因为我需要知道它是否为空白   在构建我的RDF期间,源代码与转换错误。

这听起来像XY problem。如果存在转换错误,您的应用程序应以其他方式发出信号,例如:通过记录错误。你不应试图通过“破坏”你的数据来解决这个问题。