2016-04-29 91 views
0

我想用SPARQL获得科目rdf:value具有以下资源:http://purl.org/dc/terms/LCSH属性提取值随SPARQL

<dcterms:subject> 
    <rdf:Description rdf:nodeID="N4192a7fb1dd6438c94649f7afd192f09"> 
     <rdf:value>United States. Declaration of Independence</rdf:value> 
     <dcam:memberOf rdf:resource="http://purl.org/dc/terms/LCSH"/> 
    </rdf:Description> 
</dcterms:subject> 
<dcterms:subject> 
    <rdf:Description rdf:nodeID="N887b24b564624253b374ee7c95f0ed51"> 
     <rdf:value>United States -- History -- Revolution, 1775-1783 -- Sources</rdf:value> 
     <dcam:memberOf rdf:resource="http://purl.org/dc/terms/LCSH"/> 
    </rdf:Description> 
</dcterms:subject> 
<dcterms:subject> 
    <rdf:Description rdf:nodeID="N1b3ed5adb91b4b0c8aa1215180fdfa96"> 
     <rdf:value>JK</rdf:value> 
     <dcam:memberOf rdf:resource="http://purl.org/dc/terms/LCC"/> 
    </rdf:Description> 
</dcterms:subject> 
<dcterms:subject> 
    <rdf:Description rdf:nodeID="Nc5deb6e74cc6462fbeeb8c1871983f09"> 
     <dcam:memberOf rdf:resource="http://purl.org/dc/terms/LCC"/> 
     <rdf:value>KF</rdf:value> 
    </rdf:Description> 
</dcterms:subject> 

有没有一种方法来提取rdf:resource,并用它来筛选的主题?

+0

这不是一个完整的rdf/xml片段。有一些(未显示)*有*一组主题,每个主题由rdf:Description元素描述。 –

回答

1

的RDF/XML片断是不完整的,所以我们不能写一个完美的查询,但你会想是这样的:

select ?value { 
    ?x dcterms:subject ?subject . 
    ?subject rdf:value ?value . 
    ?subject dcam:memberOf <http://purl.org/dc/terms/LCSH> . 
} 

如果你想,一个有点短,你可以这样做:

select ?value { 
    ?x dcterms:subject [ 
     rdf:value ?value ; 
     dcam:memberOf <http://purl.org/dc/terms/LCSH> ] 
} 

如果你真的只在乎的东西,有RDF:价值特性,并LCSH的成员,你可以跳过第一个三干脆:

select ?value { 
    ?x rdf:value ?value ; 
     dcam:memberOf <http://purl.org/dc/terms/LCSH> 
} 
+0

谢谢你的工作!我还有一个问题,如果只想显示rdf:description包含的所有rdf:nodeID的内容,我该怎么办? – Theasc721

+0

也就是说可以使用sparql直接显示属性吗? – Theasc721

+0

@ theasc721我的代码片段中没有看到rdf:nodeId,但我记得,nodeId是rdf/xml序列化的一个工件,而不是实际的rdf数据的一部分。我建议使用像select * {?s?p?o}这样的Brisas查询来激发数据中的实际三元组,而不是rdf/xml序列化。或者将rdf/xml转换为turtle或n-triples。 –