给出对象和有向关系的通用图:
@prefix obj: <http://example.org/obj/> .
@prefix rel: <http://example.org/rel/> .
obj:obj1 rel:rel1 obj:obj2 .
obj:obj3 rel:rel2 obj:obj2 .
obj:obj9 rel:rel5 obj:obj8 .
obj:obj1 rel:rel1 obj:obj3 .
Run Code Online (Sandbox Code Playgroud)
和一个对象的子集,比如obj1, obj2, obj3,如何使用简单的SPARQL查询提取仅包含此对象子集的子图,而不管完整图中的特定关系?由此产生的子图应为:
obj:obj1 rel:rel1 obj:obj2 .
obj:obj3 rel:rel2 obj:obj2 .
obj:obj1 rel:rel1 obj:obj3 .
Run Code Online (Sandbox Code Playgroud)
我目前的尝试是尝试使用一堆OPTIONAL子句来尝试所有可能的关系,这可能不是最好的方法:
SELECT ?r1 ?r2 ?r3 ?r4 ?r5 ?r6 WHERE {
OPTIONAL {obj:obj1 ?r1 obj:obj2} .
OPTIONAL {obj:obj1 ?r2 obj:obj3} .
OPTIONAL {obj:obj2 ?r3 obj:obj3} .
OPTIONAL {obj:obj2 ?r4 obj:obj1} .
OPTIONAL {obj:obj3 ?r5 obj:obj1} .
OPTIONAL …Run Code Online (Sandbox Code Playgroud)