2013-04-30 83 views
2

假設我想檢索週期表中所有元素的名稱,其標準狀態爲'gas'。這裏是什麼,我相信是.owl文件的相關部分...rdf上的SPARQL查詢:資源

<owl:Class rdf:ID='StandardState'> 
    <owl:oneOf rdf:parseType='Collection'> 
     <StandardState rdf:ID='state_unknown'/> 
     <StandardState rdf:ID='gas'/> 
     <StandardState rdf:ID='solid'/> 
     <StandardState rdf:ID='liquid'/> 
    </owl:oneOf> 
</owl:Class> 

...例如Element上市與StandardState'gas',當然還有更多,但同樣的格式...

<Element rdf:ID="He"> 
    <name rdf:datatype="&xsd;string">helium</name> 
    <symbol rdf:datatype="&xsd;string">He</symbol> 
    <atomicNumber rdf:datatype="&xsd;integer">2</atomicNumber> 
    <atomicWeight rdf:datatype="&xsd;float">4.002602</atomicWeight> 
    <group rdf:resource="#group_18"/> 
    <period rdf:resource="#period_1"/> 
    <block rdf:resource="#p-block"/> 
    <standardState rdf:resource="#gas"/> 
    <color rdf:datatype="&xsd;string">colourless</color> 
    <classification rdf:resource="#Non-metallic"/> 
    <casRegistryID rdf:datatype="&xsd;string">7440-59-7</casRegistryID> 
</Element> 

我知道如何查詢什麼時候我最終想要的是鏈接到一個XSD原語,如^^xsd:string,但是當我查詢的是rdf:resource我對如何進行操作感到困惑。

+1

您應該記住,RDF模型中實際不存在'rdf:resource'。它只是一個XML屬性名稱,可以作爲屬性元素或資源描述元素的一部分出現。它的值是一個URI引用,_that_是你應該查詢的內容。 – 2013-04-30 21:57:45

回答

4

您可以像查詢文字一樣查詢非文字:通過編寫圖形模式來匹配它們。在這種情況下,您可以執行如下操作:

PREFIX ex: <http://www.example.org/periodic-table#> 
SELECT ?element 
WHERE { 
    ?element ex:standardState ex:gas . 
} 
+0

太棒了,明白了,像魅力一樣工作。感謝Joshua。 – MassStrike 2013-05-01 00:58:31