I. LeftJoin(BGP(..),{..}) II. Join(BGP(..),Graph(varOrIRI,{..})) III. Join(BGP(..),Union(..,..)) IV. Graph(varOrIRI,{..}) V. LeftJoin({},{..}) VI. Union(..,..) VII. BGP(..) Join(I.,I.) => Join(LeftJoin(BGP(..),{..}),LeftJoin(BGP(..),{..})) Union(I.,I.) => Union(LeftJoin(BGP(..),{..}),LeftJoin(BGP(..),{..})) LeftJoin(I.,I.) => LeftJoin(LeftJoin(BGP(..),{..}),LeftJoin(BGP(..),{..})) Join(I.,II.) => Join(LeftJoin(BGP(..),{..}),Join(BGP(..),Graph(varOrIRI,{..}))) Union(I.,II.) => Union(LeftJoin(BGP(..),{..}),Join(BGP(..),Graph(varOrIRI,{..}))) LeftJoin(I.,II.) => LeftJoin(LeftJoin(BGP(..),{..}),Join(BGP(..),Graph(varOrIRI,{..}))) Join(I.,III.) => Join(LeftJoin(BGP(..),{..}),Join(BGP(..),Union(..,..))) Union(I.,III.) => Union(LeftJoin(BGP(..),{..}),Join(BGP(..),Union(..,..))) LeftJoin(I.,III.) => LeftJoin(LeftJoin(BGP(..),{..}),Join(BGP(..),Union(..,..))) Join(I.,IV.) => Join(LeftJoin(BGP(..),{..}),Graph(varOrIRI,{..})) Union(I.,IV.) => Union(LeftJoin(BGP(..),{..}),Graph(varOrIRI,{..})) LeftJoin(I.,IV.) => LeftJoin(LeftJoin(BGP(..),{..}),Graph(varOrIRI,{..})) Join(I.,V.) => Join(LeftJoin(BGP(..),{..}),LeftJoin({},{..})) Union(I.,V.) => Union(LeftJoin(BGP(..),{..}),LeftJoin({},{..})) LeftJoin(I.,V.) => LeftJoin(LeftJoin(BGP(..),{..}),LeftJoin({},{..})) Join(I.,VI.) => Join(LeftJoin(BGP(..),{..}),Union(..,..)) Union(I.,VI.) => Union(LeftJoin(BGP(..),{..}),Union(..,..)) LeftJoin(I.,VI.) => LeftJoin(LeftJoin(BGP(..),{..}),Union(..,..)) Join(I.,VII.) => Join(LeftJoin(BGP(..),{..}),BGP(..)) Union(I.,VII.) => Union(LeftJoin(BGP(..),{..}),BGP(..)) LeftJoin(I.,VII.) => LeftJoin(LeftJoin(BGP(..),{..}),BGP(..)) LeftJoin(II.,I.) => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),LeftJoin(BGP(..),{..})) Join(II.,II.) => Join(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Graph(varOrIRI,{..}))) Union(II.,II.) => Union(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Graph(varOrIRI,{..}))) LeftJoin(II.,II.) => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Graph(varOrIRI,{..}))) Join(II.,III.) => Join(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Union(..,..))) Union(II.,III.) => Union(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Union(..,..))) LeftJoin(II.,III.) => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),Join(BGP(..),Union(..,..))) Join(II.,IV.) => Join(Join(BGP(..),Graph(varOrIRI,{..})),Graph(varOrIRI,{..})) Union(II.,IV.) => Union(Join(BGP(..),Graph(varOrIRI,{..})),Graph(varOrIRI,{..})) LeftJoin(II.,IV.) => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),Graph(varOrIRI,{..})) Join(II.,V.) => Join(Join(BGP(..),Graph(varOrIRI,{..})),LeftJoin({},{..})) Union(II.,V.) => Union(Join(BGP(..),Graph(varOrIRI,{..})),LeftJoin({},{..})) LeftJoin(II.,V.) => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),LeftJoin({},{..})) Join(II.,VI.) => Join(Join(BGP(..),Graph(varOrIRI,{..})),Union(..,..)) Union(II.,VI.) => Union(Join(BGP(..),Graph(varOrIRI,{..})),Union(..,..)) LeftJoin(II.,VI.) => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),Union(..,..)) Join(II.,VII.) => Join(Join(BGP(..),Graph(varOrIRI,{..})),BGP(..)) Union(II.,VII.) => Union(Join(BGP(..),Graph(varOrIRI,{..})),BGP(..)) LeftJoin(II.,VII.) => LeftJoin(Join(BGP(..),Graph(varOrIRI,{..})),BGP(..)) LeftJoin(III.,I.) => LeftJoin(Join(BGP(..),Union(..,..)),LeftJoin(BGP(..),{..})) LeftJoin(III.,II.) => LeftJoin(Join(BGP(..),Union(..,..)),Join(BGP(..),Graph(varOrIRI,{..}))) Join(III.,III.) => Join(Join(BGP(..),Union(..,..)),Join(BGP(..),Union(..,..))) Union(III.,III.) => Union(Join(BGP(..),Union(..,..)),Join(BGP(..),Union(..,..))) LeftJoin(III.,III.) => LeftJoin(Join(BGP(..),Union(..,..)),Join(BGP(..),Union(..,..))) Join(III.,IV.) => Join(Join(BGP(..),Union(..,..)),Graph(varOrIRI,{..})) Union(III.,IV.) => Union(Join(BGP(..),Union(..,..)),Graph(varOrIRI,{..})) LeftJoin(III.,IV.) => LeftJoin(Join(BGP(..),Union(..,..)),Graph(varOrIRI,{..})) Join(III.,V.) => Join(Join(BGP(..),Union(..,..)),LeftJoin({},{..})) Union(III.,V.) => Union(Join(BGP(..),Union(..,..)),LeftJoin({},{..})) LeftJoin(III.,V.) => LeftJoin(Join(BGP(..),Union(..,..)),LeftJoin({},{..})) Join(III.,VI.) => Join(Join(BGP(..),Union(..,..)),Union(..,..)) Union(III.,VI.) => Union(Join(BGP(..),Union(..,..)),Union(..,..)) LeftJoin(III.,VI.) => LeftJoin(Join(BGP(..),Union(..,..)),Union(..,..)) Join(III.,VII.) => Join(Join(BGP(..),Union(..,..)),BGP(..)) Union(III.,VII.) => Union(Join(BGP(..),Union(..,..)),BGP(..)) LeftJoin(III.,VII.) => LeftJoin(Join(BGP(..),Union(..,..)),BGP(..)) LeftJoin(IV.,I.) => LeftJoin(Graph(varOrIRI,{..}),LeftJoin(BGP(..),{..})) LeftJoin(IV.,II.) => LeftJoin(Graph(varOrIRI,{..}),Join(BGP(..),Graph(varOrIRI,{..}))) LeftJoin(IV.,III.) => LeftJoin(Graph(varOrIRI,{..}),Join(BGP(..),Union(..,..))) Join(IV.,IV.) => Join(Graph(varOrIRI,{..}),Graph(varOrIRI,{..})) Union(IV.,IV.) => Union(Graph(varOrIRI,{..}),Graph(varOrIRI,{..})) LeftJoin(IV.,IV.) => LeftJoin(Graph(varOrIRI,{..}),Graph(varOrIRI,{..})) Join(IV.,V.) => Join(Graph(varOrIRI,{..}),LeftJoin({},{..})) Union(IV.,V.) => Union(Graph(varOrIRI,{..}),LeftJoin({},{..})) LeftJoin(IV.,V.) => LeftJoin(Graph(varOrIRI,{..}),LeftJoin({},{..})) Join(IV.,VI.) => Join(Graph(varOrIRI,{..}),Union(..,..)) Union(IV.,VI.) => Union(Graph(varOrIRI,{..}),Union(..,..)) LeftJoin(IV.,VI.) => LeftJoin(Graph(varOrIRI,{..}),Union(..,..)) Join(IV.,VII.) => Join(Graph(varOrIRI,{..}),BGP(..)) Union(IV.,VII.) => Union(Graph(varOrIRI,{..}),BGP(..)) LeftJoin(IV.,VII.) => LeftJoin(Graph(varOrIRI,{..}),BGP(..)) LeftJoin(V.,I.) => LeftJoin(LeftJoin({},{..}),LeftJoin(BGP(..),{..})) LeftJoin(V.,II.) => LeftJoin(LeftJoin({},{..}),Join(BGP(..),Graph(varOrIRI,{..}))) LeftJoin(V.,III.) => LeftJoin(LeftJoin({},{..}),Join(BGP(..),Union(..,..))) LeftJoin(V.,IV.) => LeftJoin(LeftJoin({},{..}),Graph(varOrIRI,{..})) Join(V.,V.) => Join(LeftJoin({},{..}),LeftJoin({},{..})) Union(V.,V.) => Union(LeftJoin({},{..}),LeftJoin({},{..})) LeftJoin(V.,V.) => LeftJoin(LeftJoin({},{..}),LeftJoin({},{..})) Join(V.,VI.) => Join(LeftJoin({},{..}),Union(..,..)) Union(V.,VI.) => Union(LeftJoin({},{..}),Union(..,..)) LeftJoin(V.,VI.) => LeftJoin(LeftJoin({},{..}),Union(..,..)) Join(V.,VII.) => Join(LeftJoin({},{..}),BGP(..)) Union(V.,VII.) => Union(LeftJoin({},{..}),BGP(..)) LeftJoin(V.,VII.) => LeftJoin(LeftJoin({},{..}),BGP(..)) LeftJoin(VI.,I.) => LeftJoin(Union(..,..),LeftJoin(BGP(..),{..})) LeftJoin(VI.,II.) => LeftJoin(Union(..,..),Join(BGP(..),Graph(varOrIRI,{..}))) LeftJoin(VI.,III.) => LeftJoin(Union(..,..),Join(BGP(..),Union(..,..))) LeftJoin(VI.,IV.) => LeftJoin(Union(..,..),Graph(varOrIRI,{..})) LeftJoin(VI.,V.) => LeftJoin(Union(..,..),LeftJoin({},{..})) Join(VI.,VI.) => Join(Union(..,..),Union(..,..)) Union(VI.,VI.) => Union(Union(..,..),Union(..,..)) LeftJoin(VI.,VI.) => LeftJoin(Union(..,..),Union(..,..)) Join(VI.,VII.) => Join(Union(..,..),BGP(..)) Union(VI.,VII.) => Union(Union(..,..),BGP(..)) LeftJoin(VI.,VII.) => LeftJoin(Union(..,..),BGP(..)) LeftJoin(VII.,I.) => LeftJoin(BGP(..),LeftJoin(BGP(..),{..})) LeftJoin(VII.,II.) => LeftJoin(BGP(..),Join(BGP(..),Graph(varOrIRI,{..}))) LeftJoin(VII.,III.) => LeftJoin(BGP(..),Join(BGP(..),Union(..,..))) LeftJoin(VII.,IV.) => LeftJoin(BGP(..),Graph(varOrIRI,{..})) LeftJoin(VII.,V.) => LeftJoin(BGP(..),LeftJoin({},{..})) LeftJoin(VII.,VI.) => LeftJoin(BGP(..),Union(..,..)) Join(VII.,VII.) => Join(BGP(..),BGP(..)) Union(VII.,VII.) => Union(BGP(..),BGP(..)) LeftJoin(VII.,VII.) => LeftJoin(BGP(..),BGP(..))