您可以使用您喜欢的任何数据类型,但如果这样做(例如,使用"300"^^unit:megaPascal
),问题是您无法再对它们进行算术运算,并且您无法从任何标准工具中获得对词汇形式的任何验证。更好的选择是向您的属性添加一些文档并使用支持数据类型的文字,或使用一些结构化值进行这些测量。
文档和标准数据类型
可能更有意义的做法是向相关属性添加注释,即它们的值应指定为某个特定单位中的数字。例如,
prop:hasYieldStrength rdfs:comment "YieldStrength of material in Pascals"@en .
结构化值(可能使用rdf:value
)
另一种选择是使这些属性的范围成为某种实体,指定测量和单位,以便您的数据如下:
:AlMg3 prop:hasTensileStrength [ rdf:value "300"^^xsd:integer ;
unit:units unit:megaPascal ] .
如果你在 OWL 工作,我不确定它是否可以使用rdf:value
,但你当然可以使用自己的词汇来做同样的事情。如果您可以使用rdf:value
,这实际上是 RDF 文档所说的可以使用的方式之一:
rdf:value 是 rdf:Property 的一个实例,可用于描述结构化值。
rdf:value 本身没有任何意义。它作为一个词汇表提供,可用于诸如 RDF 入门 [RDF-PRIMER] 的示例 16 中所示的习语。尽管缺乏对该属性含义的正式说明,但对其进行定义以鼓励在此类示例中使用常见习语是有价值的。
RDF Primer也有相关资料;测量是明确的例子之一:
…例如,在第 3.2 节的示例 9 中,特定帐篷的重量使用类型文字以十进制值 2.4 的形式给出,即
exproduct:item10245 exterms:weight "2.4"^^xsd:decimal .
事实上,更完整的重量描述应该是 2.4 公斤,而不仅仅是十进制值 2.4。为了说明这一点,exterms:weight 属性的值需要有两个组成部分,十进制值的类型化文字和度量单位(千克)的指示。在这种情况下,十进制值可以被认为是 exterms:weight 属性的“主要”值,因为通常该值将被简单地记录为类型化文字(如上面的三元组),这取决于对填充上下文的理解在未说明的单位信息中。
在 RDF 模型中,这种合格的属性值可以简单地被认为是另一种结构化值。为了表示这一点,可以使用单独的资源将结构化值表示为一个整体(在这种情况下为权重),并用作原始语句的对象。然后可以为该资源赋予代表结构化值的各个部分的属性。在这种情况下,应该有一个表示十进制值的类型文字的属性和一个单位的属性。RDF 提供了一个预定义的 rdf:value 属性来描述结构化值的主要值(如果有的话)。所以在这种情况下,类型化的文字可以作为 rdf:value 属性的值,而资源 exunits:kilograms 作为 exterms 的值:units 属性(假设资源 exunits:kilograms 被定义为 example.org 词汇表的一部分)。结果三元组将是:
exproduct:item10245 exterms:weight _:weight10245 .
_:weight10245 rdf:value "2.4"^^xsd:decimal .
_:weight10245 exterms:units exunits:kilograms .
请注意,最后一个示例可以写成:
exproduct:item10245 exterms:weight [ rdf:value "2.4"^^xsd:decimal ;
exterms:units exunits:kilograms ] .