Validating against the SPARQL grammar. See
Validation results:
<Query
xmlns="http://www.w3.org/2005/01/yacker/uploads/SPARQL/"
xmlns:yacker="http://www.w3.org/2005/01/yacker/">
<Prologue>
</Prologue>
<AskQuery>
<yacker:implicit-terminal>ASK</yacker:implicit-terminal>
<WhereClause>
<GroupGraphPattern>
<yacker:implicit-terminal>LCURLEY</yacker:implicit-terminal>
<GraphPatternNotTriples>
<OptionalGraphPattern>
<yacker:implicit-terminal>OPTIONAL</yacker:implicit-terminal>
<GroupGraphPattern>
<yacker:implicit-terminal>LCURLEY</yacker:implicit-terminal>
<TriplesBlock>
<TriplesSameSubject>
<VarOrTerm>
<Var>
<VAR1>?s2</VAR1>
</Var>
</VarOrTerm>
<PropertyListNotEmpty>
<Verb>
<VarOrIRIref>
<Var>
<VAR1>?p2</VAR1>
</Var>
</VarOrIRIref>
</Verb>
<ObjectList>
<Object>
<GraphNode>
<VarOrTerm>
<Var>
<VAR1>?o2</VAR1>
</Var>
</VarOrTerm>
</GraphNode>
</Object>
</ObjectList>
</PropertyListNotEmpty>
</TriplesSameSubject>
</TriplesBlock>
<yacker:implicit-terminal>RCURLEY</yacker:implicit-terminal>
</GroupGraphPattern>
</OptionalGraphPattern>
</GraphPatternNotTriples>
<GraphPatternNotTriples>
<OptionalGraphPattern>
<yacker:implicit-terminal>OPTIONAL</yacker:implicit-terminal>
<GroupGraphPattern>
<yacker:implicit-terminal>LCURLEY</yacker:implicit-terminal>
<TriplesBlock>
<TriplesSameSubject>
<VarOrTerm>
<Var>
<VAR1>?s3</VAR1>
</Var>
</VarOrTerm>
<PropertyListNotEmpty>
<Verb>
<VarOrIRIref>
<Var>
<VAR1>?p3</VAR1>
</Var>
</VarOrIRIref>
</Verb>
<ObjectList>
<Object>
<GraphNode>
<VarOrTerm>
<Var>
<VAR1>?p3</VAR1>
</Var>
</VarOrTerm>
</GraphNode>
</Object>
</ObjectList>
</PropertyListNotEmpty>
</TriplesSameSubject>
</TriplesBlock>
<yacker:implicit-terminal>RCURLEY</yacker:implicit-terminal>
</GroupGraphPattern>
</OptionalGraphPattern>
</GraphPatternNotTriples>
<yacker:implicit-terminal>RCURLEY</yacker:implicit-terminal>
</GroupGraphPattern>
</WhereClause>
</AskQuery>
</Query>
Trace:
ASK| (BaseDecl)?: |
|---|
| (PrefixDecl)*: |
|---|
| Prologue: | (BaseDecl)? | (PrefixDecl)* |
|---|---|---|
| (DatasetClause)*: |
|---|
{| ("WHERE")?: |
|---|
OPTIONAL| (TriplesBlock)?: |
|---|
| ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )*: |
|---|
{?s2| Var: | VAR1 |
|---|---|
| ?s2 |
| VarOrTerm: | Var |
|---|---|
| ?s2 |
?p2| Var: | VAR1 |
|---|---|
| ?p2 |
| VarOrIRIref: | Var |
|---|---|
| ?p2 |
| Verb: | VarOrIRIref |
|---|---|
| ?p2 |
?o2| Var: | VAR1 |
|---|---|
| ?o2 |
| VarOrTerm: | Var |
|---|---|
| ?o2 |
| GraphNode: | VarOrTerm |
|---|---|
| ?o2 |
| Object: | GraphNode |
|---|---|
| ?o2 |
| ("," Object)*: |
|---|
}| ObjectList: | Object | ("," Object)* |
|---|---|---|
| ?o2 |
| ( <;> Verb ObjectList? )*: |
|---|
| PropertyListNotEmpty: | Verb | ObjectList | ( <;> Verb ObjectList? )* |
|---|---|---|---|
| ?p2 | ?o2 |
| TriplesSameSubject: | VarOrTerm | PropertyListNotEmpty |
|---|---|---|
| ?s2 | ?p2 ?o2 |
| ( <.> TriplesBlock? )?: |
|---|
| TriplesBlock: | TriplesSameSubject | ( <.> TriplesBlock? )? |
|---|---|---|
| ?s2 ?p2 ?o2 |
| (TriplesBlock)?: | TriplesBlock |
|---|---|
| ?s2 ?p2 ?o2 |
| ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )*: |
|---|
| GroupGraphPattern: | "{" | (TriplesBlock)? | ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )* | "}" |
|---|---|---|---|---|
| { | ?s2 ?p2 ?o2 | } |
| OptionalGraphPattern: | "OPTIONAL" | GroupGraphPattern |
|---|---|---|
| OPTIONAL | { ?s2 ?p2 ?o2 } |
| GraphPatternNotTriples: | OptionalGraphPattern |
|---|---|
| OPTIONAL { ?s2 ?p2 ?o2 } |
| GraphPatternNotTriples | Filter: | GraphPatternNotTriples |
|---|---|
| OPTIONAL { ?s2 ?p2 ?o2 } |
OPTIONAL| (".")?: |
|---|
| (TriplesBlock)?: |
|---|
| ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? ): | GraphPatternNotTriples | Filter | (".")? | (TriplesBlock)? |
|---|---|---|---|
| OPTIONAL { ?s2 ?p2 ?o2 } |
| ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )*: | ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )* | ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )(3) | ||
|---|---|---|---|---|
| OPTIONAL { ?s2 ?p2 ?o2 } | ||||
{?s3| Var: | VAR1 |
|---|---|
| ?s3 |
| VarOrTerm: | Var |
|---|---|
| ?s3 |
?p3| Var: | VAR1 |
|---|---|
| ?p3 |
| VarOrIRIref: | Var |
|---|---|
| ?p3 |
| Verb: | VarOrIRIref |
|---|---|
| ?p3 |
?p3| Var: | VAR1 |
|---|---|
| ?p3 |
| VarOrTerm: | Var |
|---|---|
| ?p3 |
| GraphNode: | VarOrTerm |
|---|---|
| ?p3 |
| Object: | GraphNode |
|---|---|
| ?p3 |
| ("," Object)*: |
|---|
}| ObjectList: | Object | ("," Object)* |
|---|---|---|
| ?p3 |
| ( <;> Verb ObjectList? )*: |
|---|
| PropertyListNotEmpty: | Verb | ObjectList | ( <;> Verb ObjectList? )* |
|---|---|---|---|
| ?p3 | ?p3 |
| TriplesSameSubject: | VarOrTerm | PropertyListNotEmpty |
|---|---|---|
| ?s3 | ?p3 ?p3 |
| ( <.> TriplesBlock? )?: |
|---|
| TriplesBlock: | TriplesSameSubject | ( <.> TriplesBlock? )? |
|---|---|---|
| ?s3 ?p3 ?p3 |
| (TriplesBlock)?: | TriplesBlock |
|---|---|
| ?s3 ?p3 ?p3 |
| ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )*: |
|---|
| GroupGraphPattern: | "{" | (TriplesBlock)? | ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )* | "}" |
|---|---|---|---|---|
| { | ?s3 ?p3 ?p3 | } |
| OptionalGraphPattern: | "OPTIONAL" | GroupGraphPattern |
|---|---|---|
| OPTIONAL | { ?s3 ?p3 ?p3 } |
| GraphPatternNotTriples: | OptionalGraphPattern |
|---|---|
| OPTIONAL { ?s3 ?p3 ?p3 } |
| GraphPatternNotTriples | Filter: | GraphPatternNotTriples |
|---|---|
| OPTIONAL { ?s3 ?p3 ?p3 } |
}| (".")?: |
|---|
| (TriplesBlock)?: |
|---|
| ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? ): | GraphPatternNotTriples | Filter | (".")? | (TriplesBlock)? |
|---|---|---|---|
| OPTIONAL { ?s3 ?p3 ?p3 } |
| ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )*: | ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )* | ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )(3) | ||
|---|---|---|---|---|
| OPTIONAL { ?s2 ?p2 ?o2 } | OPTIONAL { ?s3 ?p3 ?p3 } | |||
| GroupGraphPattern: | "{" | (TriplesBlock)? | ( GraphPatternNotTriples | QFilter <.>? TriplesBlock? )*(2) | "}" | |
|---|---|---|---|---|---|
| { | OPTIONAL { ?s2 ?p2 ?o2 } | OPTIONAL { ?s3 ?p3 ?p3 } | } | ||
| WhereClause: | ("WHERE")? | GroupGraphPattern |
|---|---|---|
| { OPTIONAL { ?s2 ?p2 ?o2 } OPTIONAL { ?s3 ?p3 ?p3 } } |
| AskQuery: | "ASK" | (DatasetClause)* | WhereClause |
|---|---|---|---|
| ASK | { OPTIONAL { ?s2 ?p2 ?o2 } OPTIONAL { ?s3 ?p3 ?p3 } } |
| SelectQuery | ConstructQuery | DescribeQuery | AskQuery: | AskQuery |
|---|---|
| ASK { OPTIONAL { ?s2 ?p2 ?o2 } OPTIONAL { ?s3 ?p3 ?p3 } } |
| Query: | Prologue | SelectQuery | ConstructQuery | DescribeQuery | AskQuery |
|---|---|---|
| ASK { OPTIONAL { ?s2 ?p2 ?o2 } OPTIONAL { ?s3 ?p3 ?p3 } } |
Input some text to test:
make: Entering directory `/usr/local/yacker/W3C/Grammar/bin/uploads/SPARQL' yapp -v -s -o SPARQL.pm SPARQL.yp make: Leaving directory `/usr/local/yacker/W3C/Grammar/bin/uploads/SPARQL'