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本体,但我打算尝试创建一些更简单的东西.
您可以使用您喜欢的任何数据类型,但如果您这样做(例如,使用"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,即
Run Code Online (Sandbox Code Playgroud)exproduct:item10245 exterms:weight "2.4"^^xsd:decimal .事实上,更完整的重量描述将是2.4千克,而不仅仅是小数值2.4.为了说明这一点,exterms:weight属性的值需要有两个组件,十进制值的类型文字和度量单位的指示(千克).在这种情况下,十进制值可以被认为是exterms:weight属性的"主要"值,因为通常该值将被简单地记录为类型文字(如上面的三元组),依赖于对上下文的理解来填充在未说明的单位信息.
在RDF模型中,这种合格的属性值可以被视为另一种结构化值.为了表示这一点,可以使用单独的资源来表示整个结构化值(在这种情况下为权重),并用作原始语句的对象.然后可以为该资源提供表示结构化值的各个部分的属性.在这种情况下,应该有一个表示十进制值的类型文字的属性,以及该单元的属性.RDF提供预定义的rdf:value属性来描述结构化值的主值(如果有的话).因此,在这种情况下,类型文字可以作为rdf:value属性的值给出,资源exunits:千克作为exterms:units属性的值(假设资源exunits:千克被定义为示例的一部分.组织的词汇).由此产生的三元组将是:
Run Code Online (Sandbox Code Playgroud)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 ] .
Run Code Online (Sandbox Code Playgroud)