当我阅读RDF Data Cube Vocabulary文档时,有一件事让我感到困惑:MeasureProperties
(在以下示例中,我使用eg:lifeExpectancy
首先定义为属性。 ,在定义数据结构时,它们被用作对象。这是允许的吗?请参阅以下直接从规范文档中获取的示例。
所以,首先MeasureProperty
本身被定义为rdf:property
。请参阅以下eg:lifeExpectancy
的示例:
eg:lifeExpectancy a rdf:Property, qb:MeasureProperty;
rdfs:label "life expectancy"@en;
rdfs:subPropertyOf sdmx-measure:obsValue;
rdfs:range xsd:decimal .
稍后,此MeasureProperty
用于定义数据结构:
eg:dsd-le a qb:DataStructureDefinition;
# The dimensions
[...]
# The measure(s)
qb:component [ qb:measure eg:lifeExpectancy];
# The attributes
[...]
正如您所看到的,eg:lifeExpectancy
此处用作对象,不应该被允许,因为它是属性?!还是我错了?
之后,在实际表达观察结果时,eg:lifeExpectancy
将我们视为属性:
eg:o1 a qb:Observation;
qb:dataSet eg:dataset-le1 ;
eg:refArea ex-geo:newport_00pr ;
sdmx-dimension:sex sdmx-code:sex-M ;
sdmx-attribute:unitMeasure <http://dbpedia.org/resource/Year> ;
eg:lifeExpectancy 76.7 ;
.
如何将eg:lifeExpectancy
作为对象使用,如上面的qb:DataStructureDefinition
所做的那样?
答案 0 :(得分:2)
密钥位于您链接到的文档中:
6. Creating data structure definitions
qb:DataStructureDefinition定义一个或多个的结构 数据集。特别是,它定义了维度,属性和 数据集中使用的度量以及诸如的限定信息 维度的排序以及是否需要属性或 可选的。
您向我们展示的一个例子是:
EXAMPLE 4
eg:dsd-le a qb:DataStructureDefinition; # The dimensions qb:component [ qb:dimension eg:refArea; qb:order 1 ]; qb:component [ qb:dimension eg:refPeriod; qb:order 2 ]; qb:component [ qb:dimension sdmx-dimension:sex; qb:order 3 ]; # The measure(s) qb:component [ qb:measure eg:lifeExpectancy]; # The attributes qb:component [ qb:attribute sdmx-attribute:unitMeasure; qb:componentRequired "true"^^xsd:boolean; qb:componentAttachment qb:DataSet; ] .
例如:dsd-le 是数据结构定义,它有五个组件。回想一下,数据集的结构是:
您可以看到索引单个单元格需要三个维度。您需要日期范围(例如, 2005-2007 ),区域(例如加的夫)和性别(例如男性) 。这些细胞中的值是预期寿命值;即,每个值都是某事物的 eb:lifeExpectancy 。这就是 qb:component [qb:measure eg:lifeExpectancy] 告诉我们的。
本节更多地评论了属性作为三元组中的主体和对象的使用。 RDF对资源在三元组中可以发挥的作用没有太大区别。三元组的主题可以是IRI和空白节点;三元组的属性只能是IRI;三元组的对象可以是IRI,空白节点或文字。在RDF三元组中,您通常需要使用通常将属性用作对象或主题的IRI来描述它们。 E.g,:
# :hasParent used as property
:isaac :hasParent :abraham .
# :hasParent used as subject
:hasParent rdfs:label "has father"@en ;
rdfs:comment "used to indicate that the object is a parent of the subject"@en ;
rdf:type :FamilialRelationship .
# :hasParent used as object
:hasChild owl:inverseOf :hasParent .
值得看一下你提到的例子中实际发生的事情。在第一个:
eg:lifeExpectancy a rdf:Property, qb:MeasureProperty;
… .
qb:MeasureProperty 实际上显示为三元组的对象:
eg:lifeExpectancy rdf:type qb:MeasureProperty
表示 qb:MeasureProperty 是类。顾名思义,它是一类属性。即,当您看到 x rdf:type qb:MeasureProperty 时,您可以期望在其他三元组中看到 x 属性。然后,例如:lifeExpectancy 是一个属性,尽管在这个三元组中它是一个主题。后来,我们看到了三重
eg:o1 eg:lifeExpectancy 76.7 .
其中例如:lifeExpectancy 用作属性。