I've tried this option too using the following configuration
fuseki:dataset [
a ja:RDFDataset;
ja:defaultGraph [
a ja:UnionModel ;
ja:subModel [
a tdb2:GraphTDB2 ;
tdb2:dataset [
a tdb2:DatasetTDB2 ;
tdb2:location "location1"
]
] ;
ja:subModel [
a tdb2:GraphTDB2 ;
tdb2:dataset [
a tdb2:DatasetTDB2 ;
tdb2:location "location2"
]
] ;
]
]
but it always gives me "transaction error" with any query. I've tried TDB 1
instead, but it gives me a different error:
ERROR Server :: Exception in initialization: the (group) Assembler
org.apache.jena.assembler.assemblers.AssemblerGroup$PlainAssemblerGroup@b73433
cannot construct the object [...] [ja:subModel of [...] [ja:defaultGraph of
[...] ]] because it does not have an implementation for the objects's most
specific type ja:Model
I've found a couple of old threads online with people reporting "MultiUnion" as
working, but I don't know how to use this configuration. I couldn't find it on
the Fuseki documentation and simply replacing ja:UnionModel for
ja:MultiUnionModel doesn't make any difference for me.
Do you know anything about this MultiUnion and if it could work?
> Sent: Friday, November 17, 2023 at 8:47 PM
> From: "Andy Seaborne" <[email protected]>
> To: [email protected]
> Subject: Re: Implicit default-graph-uri
>
>
>
> On 16/11/2023 11:35, Laura Morales wrote:
> > I would like to configure Fuseki such that I can use 2 datasets from 2
> > different locations, as if they were a single dataset.
> > This is my config.ttl:
> >
> >
> > <#> a fuseki:Service ;
> >
> > fuseki:endpoint [
> > fuseki:operation fuseki:query
> > ] ;
> >
> > fuseki:dataset [
> > a ja:RDFDataset ;
> >
> > ja:namedGraph [
> > ja:graphName :graph1 ;
> > ja:graph [
> > a tdb2:GraphTDB ;
> > tdb2:location "location-1" ;
> > ]
> > ] ;
> >
> > ja:namedGraph [
> > ja:graphName :graph2 ;
> > ja:graph [
> > a tdb2:GraphTDB ;
> > tdb2:location "location-2" ;
> > ]
> > ] ;
> > ] .
> >
> >
> > There is no particular reason why I used this configuration; I mostly
> > copied it from the Fuseki documentation. If it can be simplified, please
> > suggest how.
> >
> > I query Fuseki with
> > "/service/query/?default-graph-uri=urn:x-arq:UnionGraph". I also know that
> > I can use "SELECT FROM <urn:x-arq:UnionGraph>". But I would like to know if
> > I can configure this behavior as the default in the main configuration
> > file, such that I can avoid using "x-arq:UnionGraph" entirely.
> > Both datasets are TDB2 and contain triples only in the default unnamed
> > graph (in other words do not contain any named graph inside).
>
> I can't find a way to do that.
>
> tdb2:unionDefaultGraph applies to a single datasets and you have two
> datasets.
>
> Using
> ja:defaultGraph [
> a ja:Model;
> ja:subModel ...
> ja:subModel ...
> ] ;
>
> falls foul of transaction coordination across two different models (even
> if they are views of the same database).
>
> I though that would work - there is some attempt to extend transactions
> into graph but this seems to be pushing things too far.
>
> Andy
>