Andy -
That helped a lot. (and so did adding the “s” to sparql-result :) Order of
specification *might* also have made a difference - I’ll test that later.
What does the right thing for me:
-H "Accept: application/sparql-results+json, application/rdf+json"
Both cases present json output: For SELECT: resultset serialization in json,
and for CONSTRUCT: simple json serialization of the triples.
And I now know that I can opt for ld+json instead.
Thanks for your help on this.
Mark
> On Sep 11, 2015, at 7:17 AM, Andy Seaborne <[email protected]> wrote:
>
> On 10/09/15 21:48, Mark Feblowitz wrote:
>> More on the subject -
>>
>> After trying several options using Fuseki 1.3.0, I haven’t been able
>> to arrive at one Accept header setting that results in the
>> generation of JSON for both SELECT and CONSTRUCT queries.
>
> In an accept header, you can ask for several formats.
>
> "Accept: application/ld+json , application/sparql-result+json"
>
> This is matched to the servers list of choices so the irrelevant one is
> skipped.
>
> Multiple "Accept" should also work but tools curl, wget seem to replace
> multiple headers, not send both.
>
>> It is conceivable that I could send different commands for CONSTRUCT
>> (application/jd+json) versus SELECT (no header) but, as my system
>> supports both SELECT and CONSTRUCT, that’s a bit inconvenient.
>
> An issue that may arise is what to do with the (JSON) results. A graph is not
> a result set.
>
>> FYI, using the Fuseki web ui, the CONSTRUCT with Output: JSON
>> produces JSON-LD. Casting the same query as a SELECT, using Output:
>> JSON, produces the expected resultset in JSON.
>>
>> Would you expect better outcomes using 2.3? If so, I’ll adapt my
>> configs to work with 2.3 and try it.
>
> The default RDF format is Turtle not RDF/XML :-)
>
>> If what I’m seeing is the best outcome, I guess I’ll have to build
>> out as you suggest.
>>
>
> Andy
>
>>
>>> On Sep 10, 2015, at 3:42 PM, Mark Feblowitz
>>> <[email protected]> wrote:
>>>
>>>
>>>> On Sep 10, 2015, at 2:20 PM, Andy Seaborne <[email protected]>
>>>> wrote:
>>>>
>>>> On 10/09/15 19:06, Mark Feblowitz wrote:
>>>>> I didn’t quite care that it was JSON-LD - only that I could get
>>>>> json to be emitted. the application/rdf+json worked for this.
>>>>>
>>>>> I’m using fuseki 1.0.1 at the moment.
>>>>
>>>> There wasn't JSON-LD in Fuseki 1.0.0
>>>>
>>>
>>> Upgraded to Fuseki 1.3.0. Seems to require Java 8.
>>>
>>> application/sparql-results+json returned RDF XML for me.
>>>
>>> The Accept header application/ld+json worked, and provides an
>>> option for post-query transformation.
>>>
>>>>>
>>>>> When you say it worked for you, was that with CONSTRUCT or
>>>>> SELECT?
>>>>
>>>> CONSTRUCT and DESCRIBE
>>>>
>>>> SELECT does not return graphs.
>>>>
>>>> application/sparql-results+json returns JSON rsult sets.
>>>>
>>>>>
>>>>>
>>>>> Now I have a wish: As I’m viewing the results as output using
>>>>> application/rdf+json, I am noticing that it’s very basic
>>>>> triples. What the consumer of this result really wants is a
>>>>> hybrid of triples and resultsets. So, it produces triples as
>>>>> specified in the CONSTRUCT and it also incorporates variable
>>>>> names into the JSON, as present in resultsets.
>>>>
>>>> Talis's RDF/json format is intentionally simple.
>>>>
>>>>>
>>>>> That is, the emitted json is presented as URIs for the Subject,
>>>>> Predicate, and Object (with additional syntax to handle
>>>>> sub-parts and arrays of Objects). Tthe hybrid would somehow
>>>>> also incorporate variable names, so instead of URI-S URI-P
>>>>> URI-O it would be something like
>>>>>
>>>>> { S : {id : URI-S, [ { P: {id: URI-P, [ O: {id: URI-O} ] ] }}
>>>>> ] } }
>>>>>
>>>>> where S, P, and O would be ?S, ?P, and ?O.
>>>>>
>>>>> Doable? Something JSON-LD might be able to handle?
>>>>
>>>> application/sparql-results+json ?
>>>>
>>>> Otherwise you'll need to add an output format. Though easier
>>>> maybe 3-tier: use Fuseki as the database layer and have custom
>>>> formatter as a webservice running as a logic layer.
>>>>
>>>> Or maybe Elda
>>>>
>>>> http://www.epimorphics.com/web/tools/elda.html
>>>>
>>>>>
>>>>> Thanks
>>>>>
>>>>>
>>>>>
>>>>>> On Sep 10, 2015, at 1:39 PM, Andy Seaborne <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>> On 10/09/15 18:20, Mark Feblowitz wrote:
>>>>>>> Ok -
>>>>>>>
>>>>>>> I tested all forms that you recommended, and the one that
>>>>>>> does work is application/rdf+json.
>>>>>>
>>>>>> Caveat - that's not JSON-LD.
>>>>>> https://jena.apache.org/documentation/io/rdf-json.html
>>>>>>
>>>>>>> Thanks very much for the suggestion!
>>>>>>>
>>>>>>> Mark
>>>>>>>
>>>>>>>> On Sep 10, 2015, at 12:16 PM, Mark Feblowitz
>>>>>>>> <[email protected]> wrote:
>>>>>>>>
>>>>>>>> That makes sense. But it doesn’t seem to work. I still
>>>>>>>> get it in RDF XML format.
>>>>>>>>
>>>>>>>> I’m wondering whether the problem is with how I’m
>>>>>>>> submitting the query.
>>>>>>>>
>>>>>>>> I’m using curl as follows:
>>>>>>>>
>>>>>>>> curl -v -H "Content-Type:application/sparql-query" -H
>>>>>>>> “Accept: application/ld+json" -X POST
>>>>>>>> http://host:port/ds/sparql <http://host:port/ds/sparql>
>>>>>>>> -d …
>>>>>>
>>>>>> Works for me (Fuseki1 and Fuseki2, latest).
>>>>>>
>>>>>> Which version of Fuseki? (did it have JSON-LD?)
>>>>>>
>>>>>> Andy
>>>>>>
>>>>>>>>
>>>>>>>> Should I instead be using a URL parameter?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>>
>>>>>>>> Mark
>>>>>>>>
>>>>>>>>
>>>>>>>>> On Sep 9, 2015, at 1:33 PM, Colin Maudry
>>>>>>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>>>>>>>
>>>>>>>>> Hi Mark,
>>>>>>>>>
>>>>>>>>> This is because CONSTRUCT doesn't return query results
>>>>>>>>> (a table structure), but a graph.
>>>>>>>>>
>>>>>>>>> Two possibilities :
>>>>>>>>>
>>>>>>>>> * If you want to stick to your CONSTRUCT query and want
>>>>>>>>> JSON out, you should request JSON-LD[1] with
>>>>>>>>> "application/ld+json". You can also try
>>>>>>>>> "application/json" or "application/rdf+json" to get
>>>>>>>>> RDF/JSON (I never tried). According to the spec[2],
>>>>>>>>> you're encouraged to use JSON-LD instead. * If you
>>>>>>>>> really want JSON SPARQL results, that's a SELECT query
>>>>>>>>> that you need to post.
>>>>>>>>>
>>>>>>>>> I hope it helps.
>>>>>>>>>
>>>>>>>>> Colin Maudry
>>>>>>>>>
>>>>>>>>> [1] http://www.w3.org/TR/json-ld/
>>>>>>>>> <http://www.w3.org/TR/json-ld/> [2]
>>>>>>>>> http://www.w3.org/TR/rdf-json/
>>>>>>>>> <http://www.w3.org/TR/rdf-json/>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 09/09/2015 18:58, Mark Feblowitz wrote:
>>>>>>>>>> At my wits’ end here - when I invoke a SPARQL using
>>>>>>>>>> curl to a local Fuseki server, and the query is a
>>>>>>>>>> construct query, and I specify
>>>>>>>>>>
>>>>>>>>>> -H “Accept: application/sparql-results+json”
>>>>>>>>>>
>>>>>>>>>> or -H “Accept: application/sparql-results%2Bjson”
>>>>>>>>>>
>>>>>>>>>> I consistently get results back in RDF/XML
>>>>>>>>>>
>>>>>>>>>> <rdfs99:RDF xmlns:dp="http://dbpedia.org/property/
>>>>>>>>>> <http://dbpedia.org/property/>"
>>>>>>>>>> xmlns:yago="http://dbpedia.org/class/yago/
>>>>>>>>>> <http://dbpedia.org/class/yago/>"
>>>>>>>>>> xmlns:nsl="http://purl.org/ontology/storyline/“
>>>>>>>>>> <http://purl.org/ontology/storyline/%E2%80%9C> ...
>>>>>>>>>>
>>>>>>>>>> With no "-H Accept…”, I’m seeing triples format.
>>>>>>>>>>
>>>>>>>>>> In fact, no matter what I set the Accept header to, I
>>>>>>>>>> see rdf/xml. Without an Accept: header, I see
>>>>>>>>>> ntriples.
>>>>>>>>>>
>>>>>>>>>> Any ideas?
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>