Syntax 1: Braces {} ; nesting ; inline constraints ; no distinction for constrainst Syntax 2: Use () for triples; use () for nesting ; constaints introduced by AND (inline? one only?) Syntax 3: No inline constriants Block: Triple Pattern list AND ?x < 34 Conjunction blocks optional blocks -------------------------------------------------- Example/s1 ::: Brace + Jos, Eric, Yoshio, Andy (4) - Dave, Steve, Kendall, Alberto , DirkX SELECT ?name1 ?name2 WHERE { ?x foaf:knows ?y . ?x foaf:age ?n . ?n < 42 . OPTIONAL { ?x foaf:name ?name1 . ?x foaf:age ?n . ?n < 42 . } OPTIONAL { ?y foaf:name ?name2 . } } . SELECT ?name1 ?name2 WHERE ( ?x foaf:knows ?y ) ( ?x foaf:age ?n ) AND ?n < 42 OPTIONAL ( ( ?x foaf:name ?name1 ) ( ?x foaf:age ?nn ) AND ?nn < 42 ) OPTIONAL ( ( ?y foaf:name ?name2 ) ) + 3-ish - AndyS SELECT ?name1 ?name2 WHERE ( ?x foaf:knows ?y ) ( ?x foaf:age ?n ) OPTIONAL ( ?x foaf:name ?name1 ) ( ?x foaf:age ?nn ) ?nn + ?n < 42 OPTIONAL ( ?y foaf:name ?name2 ) :::Implicit AND 4 ish +KC SELECT ?name1, ?name2 FROM WHERE (?x foaf:knows ?y) (?x foaf:age ?n) (?name1 foaf:knows ?name2) [?x foaf:name ?name1 ] [?x foaf:name ?name2 ] AND ?n < 42 Explict AND: + 1 - AndyS, Jos, Kendall, DaveB, ?? SELECT ?name1, ?name2 FROM , WHERE (?x foaf:knows ?y) AND (?x foaf:age ?n) AND (?name1 foaf:knows ?name2) AND [?x foaf:name ?name1 ] AND [?x foaf:name ?name2 ] AND ?n < 42 ::: nested optionals : explicit AND SELECT ?name1, ?name2 FROM , WHERE (?x foaf:knows ?y) AND (?x foaf:age ?n) AND (?name1 foaf:knows ?name2) AND ( [ ?x foaf:name ?name1 ] AND [ ?x foaf:name ?name2 ] ) AND ?n < 42 ::: Implicit AND , nested optional, OPTIONALS by [] + 5 - Jos + Alberto, Steve, DaveB [ ( ?x foaf:name ?name1 ) ( ?x foaf:name ?name2 ) ] ::: predicatey - can easier see NOT, OR + 2 - AndyS, Jos SELECT ?name1, ?name2 FROM , WHERE triple(?x foaf:knows ?y) AND triple(?x foaf:age ?n) AND triple(?name1 foaf:knows ?name2) AND optionaltriple(?x foaf:name ?name1) AND optionaltriple(?x foaf:name ?name2) AND