I'm not sure what you expect to get back from Fuseki with an "application/json" 
mimetype? There is no W3C-spec plain-JSON RDF serialization that I know of. I 
suppose there's the old Tallis idea:

https://jena.apache.org/documentation/io/rdf-json.html

but I can't imagine that's what you're looking for.

ajs6f

> On Jan 31, 2019, at 8:09 AM, vincent ventresque 
> <[email protected]> wrote:
> 
> It seems that the problem is completely independent from s-get (see these 
> results with curl below). So I think there's a default setting somewhere in 
> Fuseki itself.
> 
> 
> #~~~~~~~  --header 'Accept: application/json' ~~~~~~~~~~~~~~~~~~~~~
> 
> :~/Documents/fuseki/bin$ curl --header 'Accept: application/json' 
> 'http://localhost:3030/test_tdb2?graph=http://test'
> <rdf:RDF
>     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
>     xmlns:j.0="http://example.org/"; >
>   <rdf:Description rdf:about="http://example.org/titi";>
>     <j.0:tata>coucou</j.0:tata>
>   </rdf:Description>
> </rdf:RDF>
> 
> 
> #~~~~~~~  --header 'Accept: application/rdf+json' ~~~~~~~~~~~~~~~~~~~~~~
> 
> :~/Documents/fuseki/bin$ curl --header 'Accept: application/rdf+json' 
> 'http://localhost:3030/test_tdb2?graph=http://test'
> {
>   "http://example.org/titi"; : {
>     "http://example.org/tata"; : [ {
>       "type" : "literal" ,
>       "value" : "coucou"
>     }
>      ]
>   }
> }
> 
> 
> 
> Le 31/01/2019 à 12:58, vincent ventresque a écrit :
>> Thanks for your quick reply!
>> 
>> > $mtAppJSON isn't used.
>> 
>> I think my previous msg wasn't clear : I meant raw json and not json-ld (my 
>> code works now for both, and I use  $mtAppJSON ; but I had to replace 
>> 'application/json' with 'application/rdf+json' in order to get json instead 
>> of XML ; see the file here 
>> https://sourceforge.net/projects/ffl-misc/files/fuseki_scripts_custom-ruby/s-get/download)
>> 
>> > The settings are: ...
>> 
>> I made a little test : comment these lines and the "names" part, and you'll 
>> get XML!
>> 
>> 
>> Le 31/01/2019 à 12:48, Andy Seaborne a écrit :
>>> 
>>> 
>>> On 31/01/2019 11:26, vincent ventresque wrote:
>>>> Hello,
>>>> 
>>>> I found the origin of the problem for json : the $mtAppJSON had the value
>>>> 
>>>> 'application/json'
>>> 
>>> $mtAppJSON isn't used.
>>> 
>>> "application/rdf+json"
>>> isn't JSON-LD (it's the old Talis format).
>>> 
>>> There is:
>>> 
>>> $mtJSONLD           = 'application/ld+json'
>>> 
>>>> 
>>>> it has to be replaced with
>>>> 
>>>> 'application/rdf+json'
>>>> 
>>>> I've updated the file here :
>>>> 
>>>> https://sourceforge.net/projects/ffl-misc/files/fuseki_scripts_custom-ruby/s-get/download
>>>>  
>>>> 
>>>> Maybe I'm going to submit a pull request as Andy suggested, but I'd like 
>>>> to understand why 'application/json' returns xml. Besides, it's the same 
>>>> thing for nquads : I tried to replace
>>>> 
>>>> $mtNQuads = 'application/n-quads'
>>>> 
>>>> with
>>>> 
>>>> $mtNQuads = 'application/x-trig'
>>>> 
>>>> but still have xml...
>>> 
>>> The settings are:
>>> 
>>> # Default for GET
>>> # At least allow anything (and hope!)
>>> $accept_rdf="#{$mtTurtle} , #{$mtNTriples};q=0.9 , #{$mtRDF};q=0.8 , 
>>> #{$mtJSONLD};q=0.5"
>>> # Datasets
>>> $accept_ds="#{$mtTrig} , #{$mtNQuads};q=0.9 , #{$mtJSONLD};q=0.5"
>>> # For SPARQL query
>>> $accept_results="#{$mtSparqlResultsJ} , #{$mtSparqlResultsX};q=0.9 , 
>>> #{$accept_rdf}"
>>> 
>>> # Accept any in case of trouble.
>>> $accept_rdf="#{$accept_rdf} , */*;q=0.1"
>>> $accept_results="#{$accept_results} , */*;q=0.1"
>>> 
>>> 
>>>> 
>>>> Is there a kind of default setting somewhere (if content-type isn't 
>>>> recognized in Fuseki, the response is xml) ?
>>> 
>>> Yes.
>>> 
>>> RDF/XML for graphs, N-Quads for datasets.
>>> 
>>> Run Fuseki/full with "-v" and it should print the content negotiation 
>>> details.
>>> 
>>>     Andy
>>> 
>>>> 
>>>> Thanks in advance
>>>> 
>>>> VV
>>>> 
>>>> 
>>>> Ok, maybe I'm going to submit a pull request, but I'd
>>>> 
>>>> Le 29/01/2019 à 17:11, vincent ventresque a écrit :
>>>>> Hi Andy,
>>>>> 
>>>>> Thanks again for your idea to modify the s-get script, it helped me 
>>>>> understand ruby utilities and http requests (I often use the ruby scripts 
>>>>> but never really looked inside).
>>>>> 
>>>>> Don't know how to submit a pull request, and I'm not a ruby expert! 
>>>>> Therefore I've put a small test file here :
>>>>> 
>>>>> https://sourceforge.net/projects/ffl-misc/files/fuseki_scripts_custom-ruby/s-get/download
>>>>>  
>>>>> 
>>>>> -- added "--output" in options + created a new function 
>>>>> (set_output_format)
>>>>> 
>>>>> -- it works for ntriples, xml, Json-LD,
>>>>> 
>>>>> -- doesn't work for json (returns xml...)
>>>>> 
>>>>> N.B. : in this test file, I've removed large parts of the original code 
>>>>> in order to improve readability
>>>>> 
>>>>> 
>>>>> Le 28/01/2019 à 15:28, Vincent Ventresque a écrit :
>>>>>> Hi Andy,
>>>>>> 
>>>>>> Many thanks for these ideas, I'm going to try the curl & riot solutions.
>>>>>> 
>>>>>> > Modify the s-get script to handle --output and set the "Accept:" 
>>>>>> > header then please submit a pull request for the changes
>>>>>> 
>>>>>> I had made an attempt to modify the s-get script in the same way as for 
>>>>>> s-query but it didn't work : if I have a moment I'll try to understand 
>>>>>> how the options are handled.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Le 28/01/2019 à 14:19, Andy Seaborne a écrit :
>>>>>>> 
>>>>>>> 
>>>>>>> On 28/01/2019 11:04, Vincent Ventresque wrote:
>>>>>>>> Hello,
>>>>>>>> 
>>>>>>>> I want to export a named graph which is stored in a TDB dataset, and I 
>>>>>>>> want to store the output in several files (for the named graph 
>>>>>>>> contains +/- 9.5 M triples).
>>>>>>>> 
>>>>>>>> My idea is to use "split" command in order to cut the output of the 
>>>>>>>> export into pieces. However, this solution with "split" requires 
>>>>>>>> ntriples or nquads (one triple per line, so that the files are not cut 
>>>>>>>> in the middle of an assertion ; besides, it's also more practical to 
>>>>>>>> have a triple per line if I want to transform the data with perl or 
>>>>>>>> sed).
>>>>>>>> 
>>>>>>>> I found a solution with s-query but had to edit the ruby s-query 
>>>>>>>> script to get ntriples (see below).
>>>>>>>> 
>>>>>>>> There are other possible solutions for an export via command-line 
>>>>>>>> utilities : "s-get" and "tdbdump". If I understand well, "tdbdump" 
>>>>>>>> gives nquads as output, but one can't export only a part of the data, 
>>>>>>>> everything is exported at once. The "s-get" solution allows to select 
>>>>>>>> a named graph in the dataset, but I couldn't change the output format.
>>>>>>>> 
>>>>>>>> Are there better solutions to get an export in several files?
>>>>>>> 
>>>>>>> Ways I can think of:
>>>>>>> 
>>>>>>> 1/ Modify the s-get script to handle --output and set the "Accept:" 
>>>>>>> header then please submit a pull request for the changes.
>>>>>>> 
>>>>>>> 2/ Use curl
>>>>>>> 
>>>>>>> curl --header 'Accept: application/n-triples' \
>>>>>>>    'http://localhost:3030/ds?graph=http://bnf_titres'
>>>>>>> 
>>>>>>> 3/ Parse the s-get output:
>>>>>>> 
>>>>>>> s-get ... | riot --syntax TTL
>>>>>>> 
>>>>>>>     Andy
>>>>>>> 
>>>>>>> 
>>>>>>>> 
>>>>>>>> Thanks in advance,
>>>>>>>> 
>>>>>>>> VV.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> ~~~~~~~~~~~ 1) SOLUTION WITH s-query ~~~~~~~~~~~~~~~~~~~~~
>>>>>>>> 
>>>>>>>> 1.1) Edit s-query ruby script (add nt)
>>>>>>>> 
>>>>>>>> -- l. 572 : when  "json","xml","text","csv","tsv","nt"
>>>>>>>> -- l. 574 : when :json,:xml,:text,:csv,:tsv,:nt
>>>>>>>> -- l. 515 : opts.on('--output=TYPE', [:json,:xml,:text,:csv,:tsv,:nt],
>>>>>>>> -- l. 519 : opts.on('--accept=TYPE', [:json,:xml,:text,:csv,:tsv,:nt],
>>>>>>>> 
>>>>>>>> 1.2) Command
>>>>>>>> 
>>>>>>>> /my/path/to/fuseki/bin/s-query 
>>>>>>>> --service=http://localhost:3030/BnF_text_v2/ "construct { ?s ?p ?o } 
>>>>>>>> where { graph <http://bnf_titres> { ?s ?p ?o }}" --output=nt | split 
>>>>>>>> -l 500000 - --additional-suffix=.nt BnfTextTitres-
>>>>>>>> 
>>>>>>>> ~~~~~~~~~~~ 2) SOLUTION WITH tdbdump (nquads but no named graph) 
>>>>>>>> ~~~~~~~~~~~~~~~~~~~~~
>>>>>>>> 
>>>>>>>> /my/path/to/jena/bin/tdbdump 
>>>>>>>> --loc=/my/path/to/fuseki/run/databases/BnF_text_v2 
>>>>>>>> --graph=http://bnf_titres | split -l 500000 - --additional-suffix=.nt 
>>>>>>>> BnfTextTitres-
>>>>>>>> 
>>>>>>>> => Unknown argument: graph
>>>>>>>> 
>>>>>>>> ~~~~~~~~~~~ 3) SOLUTION WITH s-get (named graph ok, but turtle output) 
>>>>>>>> ~~~~~~~~~~~~~~~~~~~~~
>>>>>>>> 
>>>>>>>> /my/path/to/fuseki/bin/s-get http://localhost:3030/BnF_text_v2/data 
>>>>>>>> http://bnf_titres --output=text | split -l 500000 - 
>>>>>>>> --additional-suffix=.nt BnfTextTitres-
>>>>>>>> 
>>>>>>>> => /my/path/to/fuseki/bin/s-get:364:in `cmd_soh': invalid option: 
>>>>>>>> --output=text (OptionParser::InvalidOption)
>>>>>>>> from /my/path/to/fuseki/bin/fuseki/bin/s-get:715:in `<main>'
>>>>>>>> 

Reply via email to