gpt4 book ai didi

rdf - 使用 SPARQL 查询 RDF 中的非 XSD、RDF 等数据类型

转载 作者:行者123 更新时间:2023-12-04 04:53:14 25 4
gpt4 key购买 nike

这是rdf代码:

 <rdf:Description rdf:about="http://id.southampton.ac.uk/building/42">
<ns0:notation xmlns:ns0="http://www.w3.org/2004/02/skos/core#" rdf:datatype="http://id.southampton.ac.uk/ns/building-code-scheme">42</ns0:notation>
</rdf:Description>

我需要得到号码 "42" .我试过这个:
PREFIX soton: < http://id.southampton.ac.uk/ns/ >
PREFIX skos: < http://www.w3.org/2004/02/skos/core# >

?location skos:notation rdf:datatype=<http://id.southampton.ac.uk/ns/building-code-scheme>(?note)

或类似的东西:
 ?location skos:notation soton:building-code-scheme(?note)

我知道如何处理实际的 RDF 数据类型,例如 xsd:integer ,但我不知道如何使用其他数据类型来做到这一点。

最佳答案

如果您能提供我们可以使用的完整工作数据,那么解决这些问题就会容易得多。在这种情况下,将 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" |
---------------

如果您想找到字面意思为 skos:notation 的建筑物,您需要使用 2.3.3 Matching Literals with Arbitrary Datatypes 中描述的语法将文字写入 SPARL 查询SPARQL 建议。那看起来像这样:
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:integerxsd:前缀已定义,您可以使用 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> |
---------------------------------------------

关于rdf - 使用 SPARQL 查询 RDF 中的非 XSD、RDF 等数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17114516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com