2013-04-30 84 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