PREFIX : SELECT * WHERE (?x ?y ?z) (?a ?b ?c) # Optional, [] syntax [ (?x ?y ?z) ] [ (?x ?y ?z) AND ?z < 2 ] [ (?x ?y ?z) AND ( ?z < 2 ) ] [ (?x ?y ?z) (?x ?y ?z) ] [ (?x ?y ?z) (?x ?y ?z) AND ?z < 2 ] [ (?x ?y ?z) [ (?x ?y ?z) ] ] # OPTIONAL keyword OPTIONAL (?x ?y ?z) OPTIONAL { (?x ?y ?z) (?x ?y ?z) AND ?z < 2 } # GRAPH GRAPH ?src (?x ?y ?z) GRAPH ?src { (?x ?y ?z) (?a ?b ?c) } # Careful - AND does not bind to the GRAPH pattern GRAPH ?src (?x ?y ?z) AND ( ?z < 2 ) # It parses like (adding explicit grouping for clarity:) { { GRAPH ?src (?x ?y ?z) } AND ?z < 2 } # Not as: GRAPH ?src { (?x ?y ?z) AND ?z < 2 } # GRAPH/OPTIONAL mix GRAPH ?src [ (?x ?y ?z) ] [ GRAPH ?src (?x ?y ?z) ] OPTIONAL { (?x ?y ?z) GRAPH ?src ( :x :y :z ) } OPTIONAL { (?x ?y ?z) OPTIONAL { ( :x :y :z ) } } OPTIONAL GRAPH ?src ( ?x ?y ?z )