owl和rdf中的计量单位

Gem*_*Gem 6 rdf semantic-web owl units-of-measurement linked-data

我正在创建材料及其物理属性的链接数据,而我在为某些属性设置单位时遇到问题.我个人的材料:AlMg3有一些机械性能,如:

:AlMg3 prop:hasTensileStrength "300" .
:AlMg3 prop:hasYieldStrength   "2" .
:alMg3 prop:hasDensity         "2200" .
Run Code Online (Sandbox Code Playgroud)

如何为这些值设置单位?我的第一个想法是创建新的数据类型,例如:

unit:megaPascal rdf:type   rdfs:datatype ;
                rdfs:label "MPa" .

unit:Pascal rdf:type   rdfs:datatype ;
                rdfs:label "Pa" .
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它们:

:AlMg3 prop:hasTensileStrength "300"^^unit:megaPascal .
:AlMg3 prop:hasYieldStrength   "2"^^unit:Pascal .
Run Code Online (Sandbox Code Playgroud)

然后我想把这些单位联系起来:

unit:megaPascal prop:hasBaseUnit   unit:Pascal .
unit:pascal     prop:hasBaseSIUnit unit:kilogramPerMeterSecondSquared .
Run Code Online (Sandbox Code Playgroud)

这可能吗?单位是数据类型,我不能在它们之间放置数据类型属性,除了注释属性?是否有可能使这些单位个体(甚至是类)并使用它们之后的数据类型?

我看到了用于QUDT(数量,单位,尺寸和数据类型)的OWL本体,但我打算尝试创建一些更简单的东西.

Jos*_*lor 8

您可以使用您喜欢的任何数据类型,但如果您这样做(例如,使用"300"^^unit:megaPascal),问题是您不能再对它们进行算术运算,并且您无法从任何标准工具中获得任何词法形式的验证.更好的选择是向属性添加一些文档,并使用支持数据类型的文字,或者为这些测量使用一些结构化值.

文档和标准数据类型

可能更有意义的是,只需在相关属性中添加注释,即应将其值指定为某个特定单位中的数字.例如,

prop:hasYieldStrength rdfs:comment "YieldStrength of material in Pascals"@en .
Run Code Online (Sandbox Code Playgroud)

结构化价值(也许使用rdf:value)

另一个选项是使这些属性的范围成为指定度量和单位的某种实体,以便您的数据如下:

:AlMg3 prop:hasTensileStrength [ rdf:value "300"^^xsd:integer ;
                                 unit:units unit:megaPascal ] .
Run Code Online (Sandbox Code Playgroud)

如果您在OWL工作,我不确定是否可以使用rdf:value,但您当然可以使用自己的词汇来做同样的事情.如果可以使用rdf:value,这实际上就是RDF文档可以使用的方式:

5.4.3 rdf:值

rdf:value是rdf:Property的一个实例,可用于描述结构化值.

rdf:value本身没有任何意义.它作为一个词汇表提供,可用于成语,例如RDF引物[RDF-PRIMER]的例16中所示.尽管缺乏对该属性含义的正式说明,但定义它以鼓励在这种示例中使用共同的习语是有价值的.

RDF Primer也有相关材料; 测量是一个明确的例子:

4.4有关结构化值的更多信息:rdf:value

...例如,在3.2节的例9中,使用类型文字给出了特定帐篷的权重作为十进制值2.4,即

exproduct:item10245   exterms:weight   "2.4"^^xsd:decimal .
Run Code Online (Sandbox Code Playgroud)

事实上,更完整的重量描述将是2.4千克,而不仅仅是小数值2.4.为了说明这一点,exterms:weight属性的值需要有两个组件,十进制值的类型文字和度量单位的指示(千克).在这种情况下,十进制值可以被认为是exterms:weight属性的"主要"值,因为通常该值将被简单地记录为类型文字(如上面的三元组),依赖于对上下文的理解来填充在未说明的单位信息.

在RDF模型中,这种合格的属性值可以被视为另一种结构化值.为了表示这一点,可以使用单独的资源来表示整个结构化值(在这种情况下为权重),并用作原始语句的对象.然后可以为该资源提供表示结构化值的各个部分的属性.在这种情况下,应该有一个表示十进制值的类型文字的属性,以及该单元的属性.RDF提供预定义的rdf:value属性来描述结构化值的主值(如果有的话).因此,在这种情况下,类型文字可以作为rdf:value属性的值给出,资源exunits:千克作为exterms:units属性的值(假设资源exunits:千克被定义为示例的一部分.组织的词汇).由此产生的三元组将是:

exproduct:item10245   exterms:weight   _:weight10245 .
_:weight10245         rdf:value        "2.4"^^xsd:decimal .
_:weight10245         exterms:units    exunits:kilograms .
Run Code Online (Sandbox Code Playgroud)

请注意,最后一个示例可以写为:

exproduct:item10245 exterms:weight [ rdf:value "2.4"^^xsd:decimal ;
                                     exterms:units exunits:kilograms ] .
Run Code Online (Sandbox Code Playgroud)