I don\'t quite understand why in SPARQL they haven\'t implemented the basic logic operators. However in most of the cases is possible to obtain the same result in a number of wa
If you want to trace which predicate lead to which object then this is universal solution for "OR" :
SELECT DISTINCT ?s ?o1 ?o2 WHERE { { ?s p1 ?o1 . OPTIONAL { ?s p2 ?o2 . } } UNION { ?s p2 ?o2 . OPTIONAL { ?s p1 ?o1 . } } }