2017-03-22 10 views
0

私はトリプルの名前を取得し、PREFIXを値から分離し、これらの分割された文字列を2つの異なる列に表示しようとしています。 FOAFと例えばSPARQLで文字列を分割する方法

:人

?prefix | ?name 
foaf: | Person 

私はSUBSTRといくつかの解決策がありましたが、私は私の場合はそれを使用する方法がわかりません。

は、RDFには接頭辞のURIはありません

答えて

0

:-)事前によりありがとう、これは単にプレゼンテーションの概念が、データの一部ではありません。単純な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 | 
+--------------+--------+--------+ 
その後、あなたは次のことを行うことができます
関連する問題