Github user kinow commented on a diff in the pull request:
https://github.com/apache/jena/pull/114#discussion_r182390129
--- Diff: jena-arq/Grammar/master.jj ---
@@ -326,6 +361,46 @@ void AskQuery() : {}
SolutionModifier()
}
+#ifdef ARQ
+void JsonQuery() : {}
+{
+ JsonClause()
+ ( DatasetClause() )*
+ WhereClause()
+ SolutionModifier()
+}
+
+void JsonClause() : { Object o ; String s ; Token t; }
+{
+ <JSON> { getQuery().setQueryJsonType() ; }
+ <LBRACE>
+ s = String()
+ // PNAME_NS would eval true before COLON (default namescape) so we make
sure we got what we were expecting
+ t = < PNAME_NS > {
+ if ( ! t.image.equals(":") )
+ throwParseException("Prefix name expression not legal at this point
: "+t.image, t.beginLine, t.beginColumn) ;
+ }
+ (
+ o = Var() { getQuery().addResultVar((Var) o) ;
getQuery().addJsonMapping(s, o) ; }
+ | o = String() { getQuery().addJsonMapping(s, o) ; }
+ | o = Number() { getQuery().addJsonMapping(s, o) ; }
+ )
+ (
+ <COMMA> s = String()
+ t = < PNAME_NS > {
+ if ( ! t.image.equals(":") )
+ throwParseException("Prefix name expression not legal at this
point : "+t.image, t.beginLine, t.beginColumn) ;
+ }
+ (
+ o = Var() { getQuery().addResultVar((Var) o) ;
getQuery().addJsonMapping(s, o) ; }
+ | o = String() { getQuery().addJsonMapping(s, o) ; }
+ | o = Number() { getQuery().addJsonMapping(s, o) ; }
+ )
--- End diff --
Good idea! Using your TestJsonEval.java as base, and doing a quick change
in the master.jj and grammars, to support it.
---