PREFIX : PREFIX rdf: SELECT ?p (count(?m) as ?num) { { ?x rdf:type :X . } UNION { ?x rdf:type :X . FILTER (?x != :x2 )} OPTIONAL { ?x :p ?p . } OPTIONAL { ?x :n ?n . } OPTIONAL { ?x :noSuch ?m . } } GROUP BY ?p