我有一个数据集,其中包含从包含各种日期和值字段的表单中收集的数据。并非所有字段都是强制性的,因此空白是可能的
在许多情况下,预计会像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时的转换错误。
编码这些缺失值的最佳方法是什么?
答案 0 :(得分:4)
你应该通过省略三元组来表示这一点。那是“不存在”的三元组的含义:它是(当前)未知的信息。
或者,您可以选择在没有死亡日期时为其指定值"unknown"^^xsd:string
。在这种情况下,解决方案是不将其数据类型为xsd:dateTime
,而只是作为一个简单的字符串。当然,它不必是字符串,您可以使用任何类型的“特殊”值,例如布尔值false
- 只要它是一个有效的文字值,您就可以区分实际的死亡日期。这将解决解析问题,但恕我直言,如果你这样做,你正在设置自己进一步处理数据的麻烦(因为你需要询问这些数据,他们将不得不采取两种不同的类型考虑到值,加上字段丢失的可能性)。
我宁愿不省略三元组,因为我需要知道它是否为空白 在构建我的RDF期间,源代码与转换错误。
这听起来像XY problem。如果存在转换错误,您的应用程序应以其他方式发出信号,例如:通过记录错误。你不应试图通过“破坏”你的数据来解决这个问题。