Ich weiß, dass fuzeki standardmäßig different urls für Abfrage und Update bietet, so dass einige elegante Verwaltung.Verwenden Sie die gleiche URL für Abfrage und Update
Jetzt möchte ich eine einzige URL für beide aktualisieren und abfragen. Das Grundprinzip hinter dieser Notwendigkeit ist die Vermeidung der Verbreitung von zwei URLs in der Codebasis. Ich kenne diese Update- und Abfragecodes should be separated, aber meine Anforderungen sind nicht gemischt. Es ist nur um die Ausbreitung von zwei Objekten anstelle von einem zu vermeiden.
Meine aktuelle Konfiguration wie folgt aussieht:
<#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> ;
.
Theoretisch eine Schnittstelle an /endpoint
existiert, aber nur Update akzeptieren. Bei Abfrage mit:
prefix sfm: <sfm/>
SELECT DISTINCT ?value
WHERE {
sfm:config sfm:component ?value.
}
meldet der Server viele Zeilen wie folgt aus:
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)
ich nichts im doc finden können, die die Abfrage und Update-Service angeben nicht sein selbe Stelle, also nehme ich an, dass es möglich ist und ich gerade etwas verpasst habe. Die letzte Zeile des Protokolls ist jedoch explizit: Fuseki wartet auf ein Update.
Eine andere Lösung könnte sein, die URL als localhost/dataset/
zu definieren, und je nachdem, ob ich den relevanten Teil geben abzufragen oder zu aktualisieren, fügen Sie am Ende jeweils localhost/dataset/query
und localhost/dataset/update
.
Aber (1) dies führt dazu, dass die Datenbank eine bestimmte URL-Benennung haben muss, und (2) es sieht wie eine starke Anforderung über den TripleStore aus: Wenn ich einen anderen verwenden werde, muss es dieselbe Schnittstelle bereitstellen , was nicht möglich sein könnte. (Weiß nicht, ob diese Funktion in anderen triplestores implementiert)
EDIT: die POST-fix/GET Fehler
Ein (2) - der richtige Weg, TripleStore-neutral zu sein, besteht darin, zwei Einstellungen zu haben - den Abfrage-Endpunkt und den Update-Endpunkt. Diese können dann je nach Bedarf gleich oder verschieden sein. Angesichts der Tatsache, dass die Dienste unterschiedliche Sicherheitseinstellungen haben können, müssen Sie sie trotzdem anders handhaben, um echte Portabilität zu gewährleisten. – AndyS
Die Konfigurationsdatei (fuseki: name) stimmt nicht mit der HTTP-Anfrage überein. – AndyS