3

ここ数年、多くのアプリケーションで RDF をデータ モデルとして使用し、Jena を使用してデータの管理とクエリを行ってきました。新しいアプリケーションの場合、私はアプリケーションを RESTful に設計しようと試みており、アプリケーションの URL は通常、RDF で表現されています。例えば:

http://example.com/foo/bar/1/

ただし、リクエスト パラメータでサーブレットから URI をドリルダウンまたは呼び出す必要がある場合があります。

http://example.com/foo/bar/1/?id=http://example.com/foo/bar/xyz/

特にエンコードされた場合、URL はかなり見苦しく、使いにくいものになります。

http://example.com/foo/bar/1/?id=http%3A%2F%2Fexample.com%2Ffoo%2Fbar%2Fxyz%2F

設計にベストプラクティスはありますか? 照会できる RDF の URI よりも短い別の値を作成する必要がありますか?

4

3 に答える 3

3

まず、answers.semanticweb.com で同様の投稿を参照してください。

リソースを SPARQL エンドポイントに格納し、次の書き換えルールで参照解除できるようにすることを検討してください。

RewriteCond %{HTTP_ACCEPT} (text/turtle|application/rdf+xml)
RewriteRule !^/sparql /sparql?query=CONSTRUCT\s{?s\s?p\s?o}\sWHERE\s{?s\s?p\s?o.\s<%{REQUEST_SCHEME}://%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING}>\s?p\s?o} [L,R=303]

一般に、URI を逆参照することは、URI をクエリ文字列として渡すよりもはるかに好ましいと思います。フレームワークによっては、ドメイン オブジェクトの主キーとして URI を使用できる場合もあります (GRAILS および RAILS で可能)。

于 2012-05-15T08:02:01.480 に答える
3

既知の、または認識可能な一連のプレフィックスがある場合、URI を q-names に短縮することは、私が過去に使用したパターンです。

http://example.com/foo/bar/1/?id=example:xyz

Linked Data APIでは、エンティティの短縮名を構成で宣言できます。通常は、リソースのどのプロパティを使用して短縮名を示すかを指定します (例:rdfs:labelまたはskos:notation)。そのため、少量の構成情報を使用して、RDF モデル自体を介して名前の省略形を提供するというパターンがあります。

于 2012-05-14T10:31:12.603 に答える
0

これについて一般的にできることがたくさんあるかどうかはわかりません。確立された標準が相対 URL である他の Web アプリケーションについて考える場合、それはリクエスト URL に対して id 引数を解決することです。

http://example.com/foo/bar/1/?id=/foo/bar/xyz/
http://example.com/foo/bar/1/?id=../xyz/

(必要に応じてエンコード)

2 つの URL が同じドミアンにあるため、提供されている例で役立ちます。それ以外の場合は、完全な URL を受け入れる必要があると思います。

もちろん、プレフィックスは RDF の世界で一般的に使用されていますが、マッピングを見つける手段を提供しない限り、あまり RESTful とは感じられません。

于 2012-05-14T10:31:41.917 に答える