0
私はトリプルの名前を取得し、PREFIXを値から分離し、これらの分割された文字列を2つの異なる列に表示しようとしています。 FOAFと例えばSPARQLで文字列を分割する方法
:人
?prefix | ?name
foaf: | Person
私はSUBSTRといくつかの解決策がありましたが、私は私の場合はそれを使用する方法がわかりません。
は、RDFには接頭辞のURIはありません
私はトリプルの名前を取得し、PREFIXを値から分離し、これらの分割された文字列を2つの異なる列に表示しようとしています。 FOAFと例えばSPARQLで文字列を分割する方法
:人
?prefix | ?name
foaf: | Person
私はSUBSTRといくつかの解決策がありましたが、私は私の場合はそれを使用する方法がわかりません。
は、RDFには接頭辞のURIはありません
:-)事前によりありがとう、これは単にプレゼンテーションの概念が、データの一部ではありません。単純なSPARQLクエリで取得するのは、完全なURIを持つリソース(例:http://xmlns.com/foaf/0.1/Person
)です。文字列関数でできることは、すでに知っているように、名前空間とローカル名で分割することです。
プレフィックス付きURIを実際に使用する場合は、最初に接頭辞マッピングが必要です。 foaf -> http://xmlns.com/foaf/0.1/
。
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?prefixedName
(strbefore(?prefixedName,":") as ?prefix)
(strafter(?prefixedName,":") as ?name) {
# dummy value
VALUES ?uri {<http://xmlns.com/foaf/0.1/Person> }
# get a prefixed name of the URI as string literal
BIND(replace(str(?uri), str(foaf:), "foaf:") as ?prefixedName)
}
出力:
+--------------+--------+--------+
| prefixedName | prefix | name |
+--------------+--------+--------+
| foaf:Person | foaf | Person |
+--------------+--------+--------+
その後、あなたは次のことを行うことができます