Do you have TDB defaultUnionGraph turned on?

On 22 May 2014 16:51, Hubert Le Van Gong <[email protected]> wrote:
> Cool, it worked fine.
>
> Just curious, I noticed that the named graphs end up embedded in the
> required default (nameless) graph (see below).
> Any particular reason to do this and not have the default graph empty,
> followed by the named graphs?
>
> Cheers,
> Hubert
>
> {
>   "@graph" :
>   [
> {
>   "@graph" :
>   [...],
> "@id" : "http://example.org/graph1";
> },
> {
> "@graph" :
> [...],
> "@id" : "http://example.org/graph2";
> },
>   ]
> }
>
>
> On Thu, May 22, 2014 at 4:16 AM, Andy Seaborne <[email protected]> wrote:
>
>> On 22/05/14 03:03, Hubert Le Van Gong wrote:
>>
>>> Greetings,
>>>
>>> I have a set of N-Quad statements that relate to different graphs. How do
>>> I
>>> go about exporting all those statements into a single JSON-LD object?
>>>
>>> For instance, I would expect that something like:
>>> <http://one.example/subject3> <http://one.example/predicate3> <
>>> http://one.example/object3> <http://example.org/graph3> .
>>> _:subject1 <http://an.example/predicate1> "object1" <
>>> http://example.org/graph1> .
>>> _:subject2 <http://an.example/predicate2> "object2" <
>>> http://example.org/graph2> .
>>>
>>> would end up as the following JSON-LD (disclaimer: I'm not 100% sure this
>>> is correct, JSON-LD wise):
>>>
>>> [
>>> {
>>> "@context": {
>>> "predicate3": "http://one.example/predicate3";
>>> },
>>> "@id": "http://example.org/graph3";,
>>> "@graph":
>>> [
>>> {
>>> "@id": "http://one.example/subject3";,
>>> "predicate3": "http://one.example/object3";
>>> }
>>> ]
>>> },
>>> {
>>> "@context": {
>>> "predicate1": "http://an.example/predicate1";
>>> },
>>> "@id": "http://example.org/graph1";,
>>> "@graph":
>>> [
>>> {
>>> "@id": "_:b0",
>>> "predicate1": "object1"
>>> }
>>> ]
>>> },
>>> {
>>> "@context": {
>>> "predicate2": "http://an.example/predicate2";
>>> },
>>> "@id": "http://example.org/graph2";,
>>> "@graph":
>>> [
>>> {
>>> "@id": "_:b0",
>>> "predicate2": "object2"
>>> }
>>> ]
>>> }
>>> ]
>>>
>>>
>>> So far, the approach I took was to load the n-quads using:
>>> RDFDataMgr.read(dataset, in, RDFLanguages.NQUADS);
>>>
>>
>>
>>
>>> and then iterate through the graph names, to get each model with:
>>> Model model = dataset.getNamedModel(name);
>>>
>>> Something like model.write(out, RDFLanguages.strLangJSONLD); works well to
>>> convert the data to JSON-LD, however it does not add any graph info
>>> (@graph).
>>> While I could probably stitch those parts together, I was hoping for a
>>> cleaner way to do this.
>>>
>>
>> If you write the whole dataset:
>>
>> RDFDataMgr.write(System.out, dataset, Lang.JSONLD) ;
>>
>> all the graphs will come out, named.
>>
>> If you want to print one graph, with it's name, create a separate dataset,
>> put just that graph in it, as a named graph, and print that.
>>
>> Models don't have names - it's the container (dataset) that gives it it's
>> name.  It can have several names (be included several times, or in several
>> places).
>>
>>         Andy
>>
>>
>>
>>> In particular, I tried to create a new model by uniting 2 models at a time
>>> but it did not quite work (although I do see @graph added)...
>>>
>>> Can anyone shed some light on the best approach for this?
>>>
>>> Cheers,
>>> Hubert
>>>
>>> PS: my apologies if it's already been discussed before but I did not find
>>> anything on this particular topic in the list archive.
>>>
>>>
>>

Reply via email to