デフォルトでは、fuseki はクエリと更新の両方に異なる URLを提供し、洗練された管理が可能であることを知っています。
ここで、更新とクエリの両方で 1 つの URL を取得したいと考えています。この必要性の背後にある理論的根拠は、コードベースで 2 つの URL が伝搬されるのを避けるためです。更新コードとクエリ コードを分離する必要があることはわかっていますが、要求が混在していません。1 つではなく 2 つのオブジェクトの伝播を避けるためです。
私の現在の設定は次のようになります:
<#service1> rdf:type fuseki:Service ;
fuseki:name "dataset" ; # http://host:port/dataset
fuseki:serviceQuery "endpoint" ; # SPARQL query service
fuseki:serviceUpdate "endpoint" ; # SPARQL update service
fuseki:dataset <#dataset> ;
.
理論的には、インターフェースは に存在しますが、/endpoint
更新のみを受け入れます。次のクエリを実行する場合:
prefix sfm: <sfm/>
SELECT DISTINCT ?value
WHERE {
sfm:config sfm:component ?value.
}
サーバーは、次のような多くの行を報告します。
INFO [4] POST http://localhost:9876/sfm/endpoint
INFO [4] POST /sfm :: 'endpoint' :: [application/x-www-form-urlencoded] ?
INFO [4] 400 SPARQL Update: No 'update=' parameter (0 ms)
クエリと更新サービスを同じ場所に置くことはできないと指定しているドキュメントが見つかりません。ただし、ログの最後の行は明示的です。fuseki は更新を待機しています。
他の解決策の 1 つは、URL を として定義し、localhost/dataset/
照会または更新するかどうかに応じて、関連する部分を最後に追加し、それぞれlocalhost/dataset/query
およびを与えることですlocalhost/dataset/update
。
しかし、(1) これにより、データベースに特定の URL 命名が必要になり、(2) トリプルストアに関する強い要件のように見えます: 別のものを使用する場合、同じインターフェースを提供する必要があります。ありえない。(この機能が他のトリプルストアで実装されているかどうかはわかりません)
編集: POST/GET エラーを修正