如果您可以提供我们可以使用的完整工作数据,那么解决这些问题会容易得多。在这种情况下,将 RDF 片段制作成完整的 RDF 文档并不难。对于这个答案,我将使用以下数据:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ns0="http://www.w3.org/2004/02/skos/core#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Description rdf:about="http://id.southampton.ac.uk/building/42">
<ns0:notation rdf:datatype="http://id.southampton.ac.uk/ns/building-code-scheme"
>42</ns0:notation>
</rdf:Description>
</rdf:RDF>
如果您试图获取作为 符号的文字值http://id.southampton.ac.uk/building/42
,那么您可以直接使用像这样的 SPARQL 查询来请求它。
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?notation WHERE {
<http://id.southampton.ac.uk/building/42> skos:notation ?notation
}
使用 Jena 的 ARQ 命令行工具,我们得到如下输出:
$ arq --data data.rdf --query query.sparql
---------------------------------------------------------------
| notation |
===============================================================
| "42"^^<http://id.southampton.ac.uk/ns/building-code-scheme> |
---------------------------------------------------------------
如果你想获得文字的词法形式,你可以选择使用str
:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT (STR(?notation) as ?strNotation) WHERE {
<http://id.southampton.ac.uk/building/42> skos:notation ?notation
}
它产生包含字符串的输出"42"
:
$ arq --data data.rdf --query query.sparql
---------------
| strNotation |
===============
| "42" |
---------------
如果您想找到以文字为 的建筑物,则需要使用SPARQL 推荐的2.3.3 将文字与任意数据类型匹配skos:notation
中描述的语法将文字写入 SPARL 查询。看起来像这样:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?building WHERE {
?building skos:notation "42"^^<http://id.southampton.ac.uk/ns/building-code-scheme>
}
但是,您不必在 SPARQL 查询中编写完整的 IRI。就像定义前缀xsd:integer
时可以使用一样,如果您首先定义前缀,xsd:
则可以使用,如下所示。ns:building-code-scheme
ns:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX ns: <http://id.southampton.ac.uk/ns/>
SELECT ?building WHERE {
?building skos:notation "42"^^ns:building-code-scheme
}
两个查询产生相同的输出:
$ arq --data data.rdf --query query.sparql
---------------------------------------------
| building |
=============================================
| <http://id.southampton.ac.uk/building/42> |
---------------------------------------------