+ <uri type="BF-FI"> <!-- full, with instances. Experimental! -->
+ CONSTRUCT { %u ?rel ?obj .
+ ?obj ?rel1 ?obj1 .
+ ?obj1 ?rel2 ?obj2 .
+ ?obj2 ?rel3 ?obj3 .
+ ?inst ?irel1 ?iobj1 .
+ ?iobj1 ?irel2 ?iobj2 .
+ ?iobj2 ?irel3 ?iobj3 }
+ WHERE {
+ %u a bf:Work .
+ %u ?rel ?obj .
+ OPTIONAL {
+ ?obj ?rel1 ?obj1
+ MINUS { ?obj a bf:Work }
+ MINUS { ?obj a bf:Instance }
+ }
+ OPTIONAL {
+ ?obj1 ?rel2 ?obj2
+ MINUS { ?obj1 a bf:Work }
+ MINUS { ?obj1 a bf:Instance }
+ }
+ OPTIONAL {
+ ?obj2 ?rel3 ?obj3
+ MINUS { ?obj2 a bf:Work }
+ MINUS { ?obj2 a bf:Instance }
+ }
+ OPTIONAL { <!-- note, this is not in the final construct
+ the linking triplet will get included like any others -->
+ ?inst bf:instanceOf %u
+ }
+ OPTIONAL {
+ ?inst ?irel1 ?iobj1
+ }
+ OPTIONAL {
+ ?iobj1 ?irel2 ?iobj2
+ }
+ OPTIONAL {
+ ?iobj2 ?irel3 ?iobj3
+ }
+ }
+ </uri>