在嵌套元素中选择值?

时间:2014-02-18 13:10:56

标签: rdf sparql

我想从我的模型中获取每个ocd:startdate的所有ocd:deputato值。但是,如下面的代码段所示,该值位于ocd:aderisce内。如何检索值?

<ocd:deputato rdf:about="deputato.rdf/d21950_9">
    <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >RAFFAELE RUSSO, IX Legislatura della Repubblica</rdfs:label>
    <dc:description xml:lang="it">Laurea in giurisprudenza; avvocato</dc:description>
    <ocd:aderisce rdf:parseType="Resource">
      <ocd:startDate>19830712</ocd:startDate>
    </ocd:aderisce>
    …

1 个答案:

答案 0 :(得分:2)

AndyS's comment是对的;如果您提供我们可以使用的数据,那么在此处提供帮助要容易得多。我们可以模拟数据,但这并不能很好地利用我们的时间,这意味着您可以根据自己的问题调整我们提供的答案。无论如何,在这种特殊情况下,它并不太难。您的数据基本上是:

<rdf:RDF
    xmlns:ocd="urn:ocd:"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:dc="urn:dc:"
    xmlns:rdfs="urn:rdfs:">
  <ocd:deputato rdf:about="urn:deputato.rdf/d21950_9">
    <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >RAFFAELE RUSSO, IX Legislatura della Repubblica</rdfs:label>
    <dc:description xml:lang="it">Laurea in giurisprudenza; avvocato</dc:description>
    <ocd:aderisce rdf:parseType="Resource">
      <ocd:startDate>19830712</ocd:startDate>
    </ocd:aderisce>
  </ocd:deputato>
</rdf:RDF>

然而,Turtle序列化更容易阅读,而且它更接近SPARQL的语法:

@prefix ocd:   <urn:ocd:> .
@prefix dc:    <urn:dc:> .
@prefix rdfs:  <urn:rdfs:> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

<urn:deputato.rdf/d21950_9>
        a               ocd:deputato ;
        dc:description  "Laurea in giurisprudenza; avvocato"@it ;
        ocd:aderisce    [ ocd:startDate  "19830712" ] ;
        rdfs:label      "RAFFAELE RUSSO, IX Legislatura della Repubblica"^^<http://www.w3.org/2001/XMLSchema#string> .

正如我们所看到的,ocd:deputato实例是由属性ocd:aderisce与另一个具有ocd:startDate属性的资源相关联的(只是一个字符串,而不是{{1} }})。我们可以使用如下查询提取xsd:date s的日期:

ocd:deputato
prefix ocd:   <urn:ocd:>

select ?deputato ?startDate where {
  ?deputato a ocd:deputato ;
            ocd:aderisce/ocd:startDate ?startDate .
}