8

sparql クエリから結果を取得したいのですが、結果に名前空間が含まれていません。例: 次のようなトリプル形式の結果があります。

"http://www.xyz.com#Raxit"  "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"  "http://www.xyz.com#Name"

だから私は次のものだけを取得したい:

Raxit type Name

この結果を sparql クエリから直接取得したいと考えています。私は名人を使用しています。

これをsparqlから取得することは可能ですか?

これについてあなたの考えを共有してください。

前もって感謝します。

4

2 に答える 2

6

データが規則的で、必要な部分文字列が常に文字の後にあることがわかっている場合は、SPARQL 1.1#の関数を使用できます。strafterこれが Virtuoso の実装で利用できるかどうかはわかりません。

ただし、これは一般的に非常に危険な戦略です。すべての URI が、#文字の後にローカル名の部分でフォーマットされているわけではありません。実際、一般に、URI には正当または有用なローカル名がまったくない場合があります。ですから、自問する必要があります: なぜこれが必要だと思いますか? 一般的に言えば、セマンティック Web アプリケーションは URI 全体を分割できない識別子として使用します。実際に UI に人間にわかりやすいものを表示する必要がある場合は、クエリでrdfs:labelorskos:labelプロパティも検索します。最悪の場合、prefix:nameモデルのプレフィックスまたはprefix.ccのようなサービスを使用して、URI を q-name 形式 (つまり ) に短縮しようとします。

于 2012-06-27T23:07:38.630 に答える
1

これを実現する最も簡単な方法は、クエリを調整するのではなく、自分で結果を後処理することです。URI.getLocalName()Virtuoso との通信に使用するクライアント ライブラリによって異なりますが、通常、結果を解析し、値を取得し、各値に対してローカル名のみを取得するための API サポートがあることがわかります (メソッドなどを探すことをお勧めします)。 .

于 2012-06-27T22:06:22.207 に答える