Hi Danny

It seems to be an issue with jetty who doesn't like that URI. If you want
to access sparql via HTTP I suggest you use POST.

If your code is running in OSGi than simply get a refrence to TcManager
(for an example, see the stanbol staefuull webapp maven archetype) and
access one of its executeSparqlQuery methods:
http://clerezza.apache.org/apidocs/org/apache/clerezza/rdf/core/access/TcManager.html#executeSparqlQuery%28java.lang.String,%20org.apache.clerezza.rdf.core.UriRef%29

Cheers,
Reto


On Mon, Aug 25, 2014 at 8:58 AM, Danny Ayers <[email protected]> wrote:

> On 23 August 2014 19:24, Reto Gmür <[email protected]> wrote:
>
> > Hi Danny
> >
> > Could you tell more about what error you get when you run the query
> against
> > http://localhost:8080/sparql. What does the log say?
> >
>
> Taking the query :
>
> SELECT * WHERE {?s ?p ?o}
>
> converted to URL becomes :
>
> http://localhost:8080/sparql?query=SELECT+*+WHERE+{%3Fs+%3Fp+%3Fo}
>
> with a GET gives the error :
>
> 25.08.2014 08:39:16.792 *WARN* [qtp22576245-34]
> org.eclipse.jetty.servlet.ServletHandler /sparql
> java.lang.IllegalArgumentException: Illegal character "%" at position 22 is
> not allowed as a start of a name in a path template
> "query=SELECT+*+WHERE+{%3Fs+%3Fp+%3Fo}&output=text&stylesheet=".
>     at
>
> org.glassfish.jersey.uri.internal.UriTemplateParser.parseName(UriTemplateParser.java:305)
>     at
>
> org.glassfish.jersey.uri.internal.UriTemplateParser.parse(UriTemplateParser.java:235)
>     at
>
> org.glassfish.jersey.uri.internal.UriTemplateParser.<init>(UriTemplateParser.java:107)
>     at
>
> org.glassfish.jersey.uri.UriTemplate.createURIComponent(UriTemplate.java:891)
>     at
>
> org.glassfish.jersey.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:858)
>     at
>
> org.glassfish.jersey.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:797)
>     at org.glassfish.jersey.uri.UriTemplate.createURI(UriTemplate.java:762)
>     at
>
> org.glassfish.jersey.uri.internal.JerseyUriBuilder._build(JerseyUriBuilder.java:893)
> ...
>
> looks like it's not decoding the query in GETs per
> http://www.w3.org/TR/sparql11-protocol/#query-via-get
>
> >
> > Also, the sparql HTTP endpoint is so that external can query the data.
> You
> > write that you're integrating it into OSGi, so why should you by acessing
> > the HTTP endpoint?
> >
>
> So it's possible to flip to using an external store by just changing the 2
> SPARQL URLs, i.e. more loosely coupled. The messages being passed around
> are relatively small so shouldn't be a major hit on performance, though I
> guess accessing the store more directly would be an idea if this becomes an
> issue for later UI elements.
>
> Having said that, because I need to get this thing integrated asap, if
> there's a quick way of modifying code to do the comms through OSGi I'd love
> to hear it :)
>
> Cheers,
> Danny.
>
>
> > Cheers,
> > Reto
> >
> >
> > On Sat, Aug 23, 2014 at 6:31 PM, Danny Ayers <[email protected]>
> > wrote:
> >
> > > Hi Hasan, everyone,
> > >
> > > I'm working on a module [1] intended to plug in to the Fusepool
> extension
> > > of Stanbol. It's a feed reader back by an RDF store, the store being
> > > addressed entirely through SPARQL (over HTTP).
> > >
> > > I developed the app outside of OSGi and am now in the process of
> > > integrating. I have been using a Fuseki store/endpoint but need to move
> > > this over to using Stanbol/Clerezza's SPARQL facilities.
> > >
> > > So what I'd like to know is how to set up SPARQL endpoints. The config
> > I've
> > > got for Fuseki is below, essentially I need a dataset in a TDB-like
> store
> > > that supports named graphs, accessed via SPARQL query (GET) & update
> > > (POST).
> > > There's an example of the kind of update I'm doing at [2] - it's
> > actually a
> > > freemarker template with simple placeholder substitution, but the
> SPARQL
> > is
> > > pretty clear.
> > >
> > > Right now with a running Fusepool/Stanbol, pointing a browser at
> > > http://localhost:8080/query?sparql=
> > > gives the kind of SPARQL parsing error you'd expect, but giving it a
> > > genuine query leads to a HTTP 500.
> > >
> > > Any help greatly appreciated.
> > >
> > > Cheers,
> > > Danny.
> > >
> > > ## ---------------------------------------------------------------  ##
> > > Updatable in-memory dataset.
> > >  <#feedreader> rdf:type fuseki:Service ;  # URI of the dataset --
> > > http://host:port/feedreader  fuseki:name "feedreader" ;
> > >   # SPARQL query services e.g.
> > > http://host:port/feedreader/sparql?query=...  fuseki:serviceQuery
> > > "sparql" ;  fuseki:serviceQuery "query" ;  # SPARQL Update service --
> > > http://host:port/feedreader/update?request=...  fuseki:serviceUpdate
> > > "update" ; # SPARQL query service -- /feedreader/update
> > >   # Upload service -- http://host:port/feedreader/upload?graph=default
> > or
> > > ?graph=URI or ?default  # followed by a multipart body, each part being
> > RDF
> > > syntax.  # Syntax determined by the file name extension.
> > > fuseki:serviceUpload
> > > "upload" ; # Non-SPARQL upload service
> > >   # SPARQL Graph store protocol (read and write)  # GET, PUT, POST
> DELETE
> > > to http://host:port/feedreader/data?graph= or ?default=
> > > fuseki:serviceReadWriteGraphStore
> > > "data" ;
> > >   # A separate read-only graph store endpoint:
> > > fuseki:serviceReadGraphStore
> > > "get" ; # Graph store protocol (read only) -- /feedreader/get
> > >   fuseki:dataset <#emptyDataset> ;  .
> > >  ## In-memory, initially empty.  <#emptyDataset> rdf:type
> ja:RDFDataset .
> > > ##
> > > ------------------------------------------------------------------
> > > [1] https://github.com/danja/NewsMonitor
> > >
> > > [2]
> > >
> > >
> >
> https://github.com/danja/NewsMonitor/blob/master/src/main/resources/templates/html/it/danja/newsmonitor/resource/update-links.ftl
> > >
> >
>
>
>
> --
> http://dannyayers.com
>
> http://webbeep.it  - text to tones and back again
>

Reply via email to