Exclude triplets that start from a derived work/inst, but
keep those that lead to such
%u ?rel ?wobj1 .
OPTIONAL {
%u ?rel ?wobj1 .
OPTIONAL {
MINUS { ?wobj1 a bf:Work }
MINUS { ?wobj1 a bf:Instance }
OPTIONAL {
MINUS { ?wobj1 a bf:Work }
MINUS { ?wobj1 a bf:Instance }
OPTIONAL {
MINUS { ?wobj2 a bf:Work }
MINUS { ?wobj2 a bf:Instance }
MINUS { ?wobj2 a bf:Work }
MINUS { ?wobj2 a bf:Instance }
- OPTIONAL {
- ?wobj2 ?wrel3 ?wobj3
- MINUS { ?wobj3 a bf:Work }
- MINUS { ?wobj3 a bf:Instance }
- }
}
}
<!-- Link to the instance(s) -->
OPTIONAL {
}
}
<!-- Link to the instance(s) -->
OPTIONAL {
- ?inst bf:instanceOf %u
- OPTIONAL { <!-- and expand the instance -->
- ?inst ?irel1 ?iobj1
+ ?inst bf:instanceOf %u .
+ ?inst ?irel1 ?iobj1
+ OPTIONAL {
+ ?iobj1 ?irel2 ?iobj2
+ MINUS { ?iobj1 a bf:Work }
+ MINUS { ?iobj1 a bf:Instance }
- ?iobj1 ?irel2 ?iobj2
- OPTIONAL {
- ?iobj2 ?irel3 ?iobj3
- }
+ ?iobj2 ?irel3 ?iobj3
+ MINUS { ?iobj2 a bf:Work }
+ MINUS { ?iobj2 a bf:Instance }
OPTIONAL {
%u bf:instanceOf ?work
OPTIONAL {
%u bf:instanceOf ?work
MINUS { ?wobj1 a bf:Work }
MINUS { ?wobj1 a bf:Instance }
OPTIONAL {
MINUS { ?wobj1 a bf:Work }
MINUS { ?wobj1 a bf:Instance }
OPTIONAL {
MINUS { ?wobj2 a bf:Work }
MINUS { ?wobj2 a bf:Instance }
MINUS { ?wobj2 a bf:Work }
MINUS { ?wobj2 a bf:Instance }
- OPTIONAL {
- ?wobj2 ?wrel3 ?wobj3
- MINUS { ?wobj3 a bf:Work }
- MINUS { ?wobj3 a bf:Instance }
- }