【问题标题】:RDF Data Cube uses property as object?RDF Data Cube 使用属性作为对象?
【发布时间】:2014-12-23 10:47:51
【问题描述】:

当我阅读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 中所做的那样?

【问题讨论】:

    标签: rdf ontology data-cube


    【解决方案1】:

    密钥在您链接到的文档中:

    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; ] .
    

    eg:dsd-le 是一个数据结构定义,它有五个组件。回想一下数据集的结构是:

    您可以看到索引单个单元格需要三个维度。您需要日期范围(例如,2005–2007)、地区(例如,卡迪夫)和性别(例如,男性) .这些单元格中的值是预期寿命值;即,每个值都是某事物的 eb:lifeExpectancy。这就是 qb:component [ qb:measure eg:lifeExpectancy ] 告诉我们的。


    属性在非属性位置的其他用途

    本节对将属性用作三元组中的主语和宾语进行了更多评论。 RDF 对资源在三元组中可以扮演的角色没有太大区别。三元组的主题可以是 IRI 和空白节点;三元组的属性只能是 IRI;三元组的对象可以是 IRI、空白节点或文字。在 RDF 三元组中,您通常需要使用 IRI,这些 IRI 通常用作对象或主题的属性来描述它们。例如:

    # :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 .
    

    你的具体例子

    属性的不同用途,一般是RDF

    值得看看你提到的例子中实际发生了什么。在第一个:

    eg:lifeExpectancy  a rdf:Property, qb:MeasureProperty;
      … .
    

    qb:MeasureProperty 实际上显示为三元组的 object

    eg:lifeExpectancy rdf:type qb:MeasureProperty
    

    这意味着 qb:MeasureProperty 是一个。顾名思义,它是一个属性类。即,当您看到 x rdf:type qb:MeasureProperty 时,您可以期望看到 x 在其他三元组中使用的属性。 eg:lifeExpectancy 是一个属性,尽管在这个三元组中它是一个主题。稍后,我们会看到三元组

    eg:o1 eg:lifeExpectancy 76.7 .
    

    其中 eg:lifeExpectancy 用作属性。

    RDF Data Cube 属性的不同用途

    【讨论】:

    • 我认为这实际上并没有解决 OP 的问题。他的困惑在于 qb:component [ qb:measure eg:lifeExpectancy]; 行,其中 eg:lifeExpectancy 被用作对象,尽管之前被定义为属性。
    • @JeenBroekstra 啊,我明白你的观点,这是一个很好的观点。在主题和对象位置出现属性的问题中有足够多的地方,我认为这就是 OP 所要问的。我认为这里的具体答案可能与eg:dsd-le a qb:DataStructureDefinition;的预期解释有关。
    • @JeenBroekstra 我已经更新了我的答案;希望它现在能解决更多问题。
    • 是的,现在说得通了。感谢您提供详细而具体的答案。我只是不知道这样一个事实,即允许将属性也用作主题或对象。但看起来(也从你的例子中),这样做是完全可以的。我的困惑源于你有类和属性的 OWL 数据建模。而且我现在了解到,如果我将某些东西定义为 owl:class,它以后也可以用作 RDF 中的三元组中的主语或宾语。如果我错了,请纠正我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2017-05-12
    相关资源
    最近更新 更多