1 |
- {"version":3,"sources":["node_modules/browser-pack/_prelude.js","lib/deparam.js","yasqe.min.js","lib/grammar/_tokenizer-table.js","lib/grammar/tokenizer.js","lib/trie.js","node_modules/codemirror/addon/display/fullscreen.js","node_modules/codemirror/addon/edit/matchbrackets.js","node_modules/codemirror/addon/fold/brace-fold.js","node_modules/codemirror/addon/fold/foldcode.js","node_modules/codemirror/addon/fold/foldgutter.js","node_modules/codemirror/addon/fold/xml-fold.js","node_modules/codemirror/addon/hint/show-hint.js","node_modules/codemirror/addon/runmode/runmode.js","node_modules/codemirror/addon/search/searchcursor.js","node_modules/store/store.js","node_modules/yasgui-utils/package.json","node_modules/yasgui-utils/src/main.js","node_modules/yasgui-utils/src/storage.js","node_modules/yasgui-utils/src/svg.js","package.json","src/autocompleters/autocompleterBase.js","src/autocompleters/classes.js","src/autocompleters/prefixes.js","src/autocompleters/properties.js","src/autocompleters/utils.js","src/autocompleters/variables.js","src/curl.js","src/defaults.js","src/entry.js","src/imgs.js","src/main.js","src/prefixFold.js","src/prefixUtils.js","src/sparql.js","src/tokenUtils.js","src/tooltip.js","src/utils.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","YASQE","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","$","jQuery","deparam","params","coerce","obj","coerce_types","true","false","null","each","replace","split","j","v","val","param","key","decodeURIComponent","cur","keys","keys_last","test","shift","concat","isNaN","undefined","isArray","push","jquery","2","table","*[&&,valueLogical]","&&","AS",")",",","||",";","*[,,expression]","*[,,objectPath]",".","]","{","OPTIONAL","MINUS","GRAPH","SERVICE","FILTER","BIND","VALUES","}","*[,,object]","*[/,pathEltOrInverse]","/","|","(","[","VAR1","VAR2","NIL","IRI_REF","TRUE","FALSE","BLANK_NODE_LABEL","ANON","PNAME_LN","PNAME_NS","STRING_LITERAL1","STRING_LITERAL2","STRING_LITERAL_LONG1","STRING_LITERAL_LONG2","INTEGER","DECIMAL","DOUBLE","INTEGER_POSITIVE","DECIMAL_POSITIVE","DOUBLE_POSITIVE","INTEGER_NEGATIVE","DECIMAL_NEGATIVE","DOUBLE_NEGATIVE","*[;,?[or([verbPath,verbSimple]),objectList]]","*[;,?[verb,objectList]]","*[UNION,groupGraphPattern]","UNION","*[graphPatternNotTriples,?.,?triplesBlock]","*[quadsNotTriples,?.,?triplesTemplate]","*[|,pathOneInPropertySet]","*[|,pathSequence]","*[||,conditionalAndExpression]","*dataBlockValue","UNDEF","*datasetClause","FROM","WHERE","*describeDatasetClause","ORDER","HAVING","GROUP","LIMIT","OFFSET","*graphNode","*graphNodePath","*groupCondition","STR","LANG","LANGMATCHES","DATATYPE","BOUND","IRI","URI","BNODE","RAND","ABS","CEIL","FLOOR","ROUND","CONCAT","STRLEN","UCASE","LCASE","ENCODE_FOR_URI","CONTAINS","STRSTARTS","STRENDS","STRBEFORE","STRAFTER","YEAR","MONTH","DAY","HOURS","MINUTES","SECONDS","TIMEZONE","TZ","NOW","UUID","STRUUID","MD5","SHA1","SHA256","SHA384","SHA512","COALESCE","IF","STRLANG","STRDT","SAMETERM","ISIRI","ISURI","ISBLANK","ISLITERAL","ISNUMERIC","SUBSTR","REPLACE","REGEX","EXISTS","NOT","*havingCondition","*or([[ (,*dataBlockValue,)],NIL])","*or([[*,unaryExpression],[/,unaryExpression]])","*","=","!=","<",">","<=",">=","IN","+","-","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([baseDecl,prefixDecl])","BASE","PREFIX","CONSTRUCT","DESCRIBE","ASK","INSERT","DELETE","SELECT","LOAD","CLEAR","DROP","ADD","MOVE","COPY","CREATE","WITH","*or([var,[ (,expression,AS,var,)]])","*orderCondition","ASC","DESC","*usingClause","USING","*var","*varOrIRIref","+graphNode","+graphNodePath","+groupCondition","+havingCondition","+or([var,[ (,expression,AS,var,)]])","+orderCondition","+varOrIRIref","?.","?DISTINCT","DISTINCT","!","COUNT","SUM","MIN","MAX","AVG","SAMPLE","GROUP_CONCAT","?GRAPH","?SILENT","SILENT","?SILENT_1","?SILENT_2","DEFAULT","NAMED","ALL","?SILENT_3","?SILENT_4","?WHERE","?[,,expression]","?[.,?constructTriples]","?[.,?triplesBlock]","?[.,?triplesTemplate]","?[;,SEPARATOR,=,string]","?[;,update]","?[AS,var]","?[INTO,graphRef]","INTO","?[or([verbPath,verbSimple]),objectList]","^","?[pathOneInPropertySet,*[|,pathOneInPropertySet]]","?[update1,?[;,update]]","?[verb,objectList]","?argList","?constructTriples","?groupClause","?havingClause","?insertClause","?limitClause","?limitOffsetClauses","?offsetClause","?or([DISTINCT,REDUCED])","REDUCED","?or([LANGTAG,[^^,iriRef]])","LANGTAG","^^","?or([[*,unaryExpression],[/,unaryExpression]])","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])","?orderClause","?pathMod","?","?triplesBlock","?triplesTemplate","?whereClause","[ (,*dataBlockValue,)]","[ (,*var,)]","[ (,expression,)]","[ (,expression,AS,var,)]","[!=,numericExpression]","[&&,valueLogical]","[*,unaryExpression]","[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]","[+,multiplicativeExpression]","[,,expression]","[,,integer,}]","[,,objectPath]","[,,object]","[,,or([},[integer,}]])]","[-,multiplicativeExpression]","[.,?constructTriples]","[.,?triplesBlock]","[.,?triplesTemplate]","[/,pathEltOrInverse]","[/,unaryExpression]","[;,?[or([verbPath,verbSimple]),objectList]]","[;,?[verb,objectList]]","[;,SEPARATOR,=,string]","[;,update]","[<,numericExpression]","[<=,numericExpression]","[=,numericExpression]","[>,numericExpression]","[>=,numericExpression]","[AS,var]","[IN,expressionList]","[INTO,graphRef]","[NAMED,iriRef]","[NOT,IN,expressionList]","[UNION,groupGraphPattern]","[^^,iriRef]","[constructTemplate,*datasetClause,whereClause,solutionModifier]","[deleteClause,?insertClause]","[graphPatternNotTriples,?.,?triplesBlock]","[integer,or([[,,or([},[integer,}]])],}])]","[integer,}]","[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]","[or([verbPath,verbSimple]),objectList]","[pathOneInPropertySet,*[|,pathOneInPropertySet]]","[quadsNotTriples,?.,?triplesTemplate]","[update1,?[;,update]]","[verb,objectList]","[|,pathOneInPropertySet]","[|,pathSequence]","[||,conditionalAndExpression]","add","additiveExpression","aggregate","allowBnodes","allowVars","argList","askQuery","baseDecl","bind","blankNode","blankNodePropertyList","blankNodePropertyListPath","booleanLiteral","brackettedExpression","builtInCall","clear","collection","collectionPath","conditionalAndExpression","conditionalOrExpression","constraint","constructQuery","constructTemplate","constructTriples","copy","create","dataBlock","dataBlockValue","datasetClause","defaultGraphClause","delete1","DATA","deleteClause","describeDatasetClause","describeQuery","disallowBnodes","disallowVars","drop","existsFunc","expression","expressionList","filter","functionCall","graphGraphPattern","graphNode","graphNodePath","graphOrDefault","graphPatternNotTriples","graphRef","graphRefAll","graphTerm","groupClause","groupCondition","groupGraphPattern","groupGraphPatternSub","groupOrUnionGraphPattern","havingClause","havingCondition","inlineData","inlineDataFull","inlineDataOneVar","insert1","insertClause","integer","iriRef","iriRefOrFunction","limitClause","limitOffsetClauses","load","minusGraphPattern","modify","move","multiplicativeExpression","namedGraphClause","notExistsFunc","numericExpression","numericLiteral","numericLiteralNegative","numericLiteralPositive","numericLiteralUnsigned","object","objectList","objectListPath","objectPath","offsetClause","optionalGraphPattern","or([*,expression])","or([+or([var,[ (,expression,AS,var,)]]),*])","or([+varOrIRIref,*])","or([ASC,DESC])","or([DISTINCT,REDUCED])","or([LANGTAG,[^^,iriRef]])","or([NIL,[ (,*var,)]])","or([[ (,*dataBlockValue,)],NIL])","or([[ (,expression,)],NIL])","or([[*,unaryExpression],[/,unaryExpression]])","or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","or([[,,or([},[integer,}]])],}])","or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])","or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])","or([[deleteClause,?insertClause],insertClause])","or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])","or([baseDecl,prefixDecl])","or([defaultGraphClause,namedGraphClause])","or([inlineDataOneVar,inlineDataFull])","or([iriRef,[NAMED,iriRef]])","or([iriRef,a])","or([numericLiteralPositive,numericLiteralNegative])","or([queryAll,updateAll])","or([selectQuery,constructQuery,describeQuery,askQuery])","or([subSelect,groupGraphPatternSub])","or([var,[ (,expression,AS,var,)]])","or([verbPath,verbSimple])","or([},[integer,}]])","orderClause","orderCondition","path","pathAlternative","pathElt","pathEltOrInverse","pathMod","pathNegatedPropertySet","pathOneInPropertySet","pathPrimary","pathSequence","prefixDecl","prefixedName","primaryExpression","prologue","propertyList","propertyListNotEmpty","propertyListPath","propertyListPathNotEmpty","quadData","quadDataNoBnodes","quadPattern","quadPatternNoBnodes","quads","quadsNotTriples","queryAll","rdfLiteral","regexExpression","relationalExpression","selectClause","selectQuery","serviceGraphPattern","solutionModifier","sourceSelector","sparql11","storeProperty","strReplaceExpression","string","subSelect","substringExpression","triplesBlock","triplesNode","triplesNodePath","triplesSameSubject","triplesSameSubjectPath","triplesTemplate","unaryExpression","update","update1","updateAll","usingClause","valueLogical","valuesClause","var","varOrIRIref","varOrTerm","verb","verbPath","verbSimple","whereClause","keywords","punct","startSymbol","acceptEmpty","3","CodeMirror","defineMode","config","parserConfig","getPossibles","symbol","possibles","possiblesOb","ll1_table","property","toString","tokenBase","stream","state","nextToken","consumed","inLiteral","closingQuotes","match","stringLiteralLongRegex","contents","regex","closing","returnObj","quotePos","cat","STRING_LITERAL_LONG","CAT","style","complete","text","start","quoteType","quotes","terminals","name","grammar","current","toUpperCase","recordFailurePos","col","column","errorStartPos","errorEndPos","tokenOb","setQueryType","queryType","setSideConditions","topSymbol","inPrefixDecl","checkSideConditions","pos","possibleCurrent","possibleNext","OK","finished","token","stack","pop","nextSymbols","currentPnameNs","slice","prefixes","allNillable","sp","item","lastProperty","colonIndex","indexOf","prefNs","errorMsg","lastPredicateOffset","indent","textAfter","closeBracket","substr","dn","indentTop","indentTable","indentUnit","PN_CHARS_BASE","PN_CHARS_U","PN_CHARS","VARNAME","PN_PREFIX","HEX","PERCENT","PN_LOCAL_ESC","PLX","PN_LOCAL","EXPONENT","ECHAR","hex4","unicode","SINGLE","QUOTES","CONTENTS","COMPLETE","RegExp","WS","COMMENT","WS_OR_COMMENT_STAR","*[,, object]","*[(,),object]","*[(,),objectPath]","startState","base","tokenize","electricChars","defineMIME","./_tokenizer-table.js","codemirror","4","Trie","words","children","prototype","insert","str","k","child","T","remove","strOld","strNew","countWord","ret","countPrefix","find","getAllWords","autoComplete","5","mod","setFullscreen","cm","wrap","getWrapperElement","fullScreenRestore","scrollTop","pageYOffset","scrollLeft","pageXOffset","width","height","className","document","documentElement","overflow","refresh","setNormal","info","scrollTo","defineOption","old","Init","6","findMatchingBracket","where","strict","line","getLineHandle","ch","matching","charAt","dir","getTokenTypeAt","Pos","found","scanForBracket","from","to","forward","maxScanLen","maxScanLineLength","maxScanLines","re","bracketRegex","lineEnd","Math","min","lastLine","max","firstLine","lineNo","getLine","end","matchBrackets","autoclear","maxHighlightLen","maxHighlightLineLength","marks","ranges","listSelections","empty","head","markText","ie_lt8","focused","focus","operation","setTimeout","doMatchBrackets","currentlyHighlighted","navigator","userAgent","documentMode","off","on","defineExtension","7","registerHelper","findOpening","openCh","at","pass","lineText","lastIndexOf","tokenType","startToken","endToken","startCh","endCh","count","outer","nextOpen","nextClose","hasImport","getTokenAt","type","semi","prev","startLine","has","next","clipPos","hasInclude","8","doFold","options","force","getRange","allowFolded","range","finder","minSize","findMarksAt","__isFold","cleared","getOption","myWidget","makeWidget","myRange","e_preventDefault","replacedWith","clearOnEnter","signal","widget","createTextNode","createElement","appendChild","editorOptions","foldOptions","defaultOptions","newFoldFunction","rangeFinder","commands","toggleFold","foldCode","getCursor","fold","unfold","foldAll","unfoldAll","funcs","Array","arguments","helpers","getHelpers","auto","minFoldSize","scanUp","9","State","parseOptions","opts","gutter","indicatorOpen","indicatorFolded","isFolded","findMarks","marker","spec","elt","cloneNode","updateFoldInfo","foldGutter","foldOption","func","eachLine","mark","setGutterMarker","updateInViewport","vp","getViewport","onGutterClick","folded","onChange","clearTimeout","changeUpdate","foldOnChangeTimeSpan","onViewportChange","updateViewportTimeSpan","onFold","clearGutter","./foldcode","10","cmp","b","Iter","tagAt","iter","nextLine","prevLine","toTagEnd","gt","lastSlash","selfClose","toTagStart","lt","xmlTagStart","lastIndex","exec","index","toNextTag","toPrevTag","findMatchingClose","tag","findMatchingOpen","endLine","nameStartChar","nameChar","openTag","startPos","endPos","findMatchingTag","here","open","close","findEnclosingTag","scanForClosingTag","11","Completion","debounce","tick","startLen","getSelection","activityFunc","cursorActivity","isNewCompletion","nw","moved","cmpPos","editor","hintOptions","out","prop","hint","resolve","getText","completion","buildKeyMap","handle","addBinding","bound","baseMap","hasOwnProperty","ourMap","Up","moveFocus","Down","PageUp","menuSize","PageDown","Home","setFocus","End","Enter","pick","Tab","Esc","custom","customKeys","extra","extraKeys","getHintElement","hintsElement","el","nodeName","parentNode","Widget","data","picked","hints","selectedHint","completions","list","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","render","displayText","hintId","cursorCoords","alignWithWord","left","top","bottom","below","winW","innerWidth","body","offsetWidth","winH","innerHeight","offsetHeight","container","box","getBoundingClientRect","overlapY","scrolls","scrollHeight","clientHeight","startScroll","getScrollInfo","curTop","cursor","overlapX","right","node","firstChild","nextSibling","paddingRight","display","nativeBarWidth","addKeyMap","keyMap","avoidWrap","changeActive","screenAmount","closeOnUnfocus","closingOnBlur","onBlur","onFocus","onScroll","curScroll","newTop","point","target","srcElement","completeOnSingleClick","applicableHelpers","somethingSelected","result","supportsSelection","fetchHints","callback","async","then","resolveAutoHints","resolved","run","app","getHelper","fromList","anyword","showHint","getHints","newOpts","selections","anchor","completionActive","requestAnimationFrame","fn","cancelAnimationFrame","active","replaceRange","closeCharacters","disable","first","myTick","finishUpdate","completeSingle","removeChild","removeKeyMap","childNodes","offsetTop","floor","term","word","autocomplete","12","runMode","modespec","mode","getMode","defaults","ie","ie_lt9","tabSize","innerHTML","content","idx","size","lines","splitLines","StringStream","blankLine","eol","13","SearchCursor","doc","query","caseFold","atOccurrence","source","ignoreCase","matches","reverse","cutOff","newMatch","matchLen","origQuery","toLowerCase","orig","adjustPos","origTarget","last","ln","cut","pos1","len1","findNext","findPrevious","savePosAndFail","maxLine","lineCount","newText","origin","defineDocExtension","getSearchCursor","setSelections","14","root","factory","store","isLocalStorageNameSupported","localStorageName","win","err","storage","scriptTag","disabled","version","set","value","get","defaultVal","transact","transactionFn","getAll","forEach","serialize","JSON","stringify","deserialize","parse","setItem","getItem","removeItem","addBehavior","storageOwner","storageContainer","ActiveXObject","write","w","frames","withIEStorage","storeFunction","args","unshift","apply","forbiddenCharsRegex","ieKeyFix","setAttribute","save","getAttribute","removeAttribute","attributes","XMLDocument","attr","testKey","enabled","15","_args","raw","scope","escapedName","rawSpec","_from","_id","_inCache","_installable","_location","_npmUser","email","_npmVersion","_phantomChildren","_requested","_requiredBy","_resolved","_shasum","_shrinkwrap","_spec","_where","author","bugs","url","dependencies","description","devDependencies","directories","dist","shasum","tarball","homepage","licenses","main","maintainers","optionalDependencies","readme","repository","16","console","log","svg","yasgui-utils","nestedExists","../package.json","./storage.js","./svg.js","17","times","day","month","year","exp","XMLSerializer","serializeToString","time","Date","getTime","removeAll","18","draw","parent","svgString","getElement","append","parser","DOMParser","dom","parseFromString","svgContainer","19","license","scripts","dev","build","patch","minor","major","gulp-bump","gulp-connect","gulp-embedlr","gulp-git","gulp-livereload","gulp-tag-version","watchify","web","bootstrap-sass","browserify","browserify-transform-tools","exorcist","gulp","gulp-autoprefixer","gulp-concat","gulp-cssimport","gulp-cssnano","gulp-filter","gulp-jsvalidate","gulp-notify","gulp-rename","gulp-sass","gulp-sourcemaps","gulp-streamify","gulp-uglify","node-sass","require-dir","run-sequence","vinyl-buffer","vinyl-source-stream","vinyl-transform","optionalShim","../../lib/codemirror","20","utils","yutils","yasqe","completionNotifications","completers","tries","eventInfo","needPossibleAdjustment","notificationName","is","scrollBar","offset","outerWidth","notification","css","storeBulkCompletions","completer","storageId","getPersistencyId","persistent","initCompleter","completionInit","bulk","storeArrayAsBulk","suggestions","completionsFromStorage","persistencyIdentifier","Function","fromAutoShow","tryHintType","autoShow","hintConfig","wrappedHintCallback","getCompletionHintsObject","completerName","inArray","autocompleters","isValidCompletionPosition","callbacks","validPosition","success","invalidPosition","getSuggestionsFromToken","partialToken","stringToAutocomplete","autocompletionString","partialTokenLength","getSuggestionsAsHintObject","getCompleteToken","preProcessToken","wrappedCallback","hintList","suggestedString","postProcessToken","selectHint","completionToken","callbackName","init","notifications","getEl","show","autoshow","appendTo","hide","getTrie","../../lib/trie.js","../main.js","../utils.js","21","fetchFromLov","previousToken","getPreviousNonWsToken","preprocessResourceTokenForCompletion","postprocessResourceTokenForCompletion","./utils","./utils.js","22","tokenTypes","string-2","atom","appendPrefixIfNeeded","fetchFrom","prefixArray","prefix","completeString","sort","preprocessPrefixTokenForCompletion","collapsePrefixes","lastNonWsTokenString","currentPrefix","substring","queryPrefixes","getPrefixesFromQuery","addPrefixes","location","protocol","23","24","tokenPrefix","tokenPrefixUri","trim","reqProtocol","maxResults","q","page","results","updateUrl","increasePage","doRequests","uri","total_results","fail","jqXHR","textStatus","errorThrown","loader","addClass","../imgs.js","25","distinctVars","variable","nextEl","nextElClass","variables","26","sparql","quote","createCurlString","ajaxConfig","getAjaxConfig","host","pathname","cmds","requestMethod","header","headers","join","./sparql.js","27","extend","highlightSelectionMatches","showToken","tabMode","lineNumbers","lineWrapping","backdrop","combine","brace","collapsePrefixesOnLoad","gutters","fixedGutter","syntaxErrorCheck","Ctrl-Space","Cmd-Space","Ctrl-D","deleteLine","Ctrl-K","Shift-Ctrl-K","Cmd-D","Cmd-K","Ctrl-/","commentLines","Cmd-/","Ctrl-Alt-Down","copyLineDown","Ctrl-Alt-Up","copyLineUp","Cmd-Alt-Down","Cmd-Alt-Up","Shift-Ctrl-F","doAutoFormat","Shift-Cmd-F","Ctrl-]","indentMore","Cmd-]","Ctrl-[","indentLess","Cmd-[","Ctrl-S","storeQuery","Cmd-S","Ctrl-Enter","executeQuery","Cmd-Enter","F11","setOption","cursorHeight","createShareLink","createShortLink","consumeShareLink","closest","queryName","getQueryMode","showQueryButton","endpoint","acceptHeaderGraph","acceptHeaderSelect","acceptHeaderUpdate","namedGraphs","defaultGraphs","getQueryForAjax","beforeSend","error","handlers","./main.js","28","29","queryInvalid","download","share","warning","fullscreen","smallscreen","30","imgs","rootEl","class","extendConfig","extendCmInstance","postProcessCmElement","extendedConfig","Autocompleters","lastQueryDuration","getNextNonWsToken","lineNumber","charNumber","collapse","findFirstPrefixLine","animateSpeed","setBackdrop","click","insertAfter","callbackOrConfig","getUrlArguments","removePrefixes","getValueWithoutComments","cleanedQuery","getValue","stringVal","getQueryType","setCheckSyntaxErrors","isEnabled","checkSyntax","enableCompleter","addCompleterToSettings","disableCompleter","removeCompleterFromSettings","settings","splice","valueFromStorage","setValue","drawButtons","updateQueryButton","positionButtons","updateButtonsTransparency","prevQueryValid","matchText","removeClass","getUrlParams","addEventListener","urlParams","hash","href","search","buttons","elementsOverlap","deepcheck","queryValid","precise","warningEl","html","expectedEncoded","expected","marginTop","marginLeft","len","registerAutocompleter","constructor","getAsCurl","curl","svgShare","event","stopPropagation","popup","$input","$this","select","mouseup","unbind","errString","shortLink","positions","position","outerHeight","parseInt","toggleFullscreen","hasClass","xhr","abort","queryButtonIds","busy","valid","status","queryButton","queryStatus","classNames","c","fromTextArea","textAreaEl","insertBefore","linesAreCommented","setCursor","autoFormatRange","totalLines","totalChars","getTextArea","absStart","indexFromPos","absEnd","res","autoFormatLineBreaks","posFromIndex","indentLine","breakAfterArray","breakAfterCharacters","breakBeforeCharacters","getBreakType","stackTrace","valueOf","currentLine","formattedQuery","breakType","../lib/deparam.js","../lib/grammar/tokenizer.js","./autocompleters/autocompleterBase.js","./autocompleters/classes.js","./autocompleters/prefixes.js","./autocompleters/properties.js","./autocompleters/variables.js","./curl.js","./defaults.js","./imgs.js","./prefixFold.js","./prefixUtils.js","./tokenUtils.js","./tooltip","codemirror/addon/display/fullscreen.js","codemirror/addon/edit/matchbrackets.js","codemirror/addon/fold/brace-fold.js","codemirror/addon/fold/foldcode.js","codemirror/addon/fold/foldgutter.js","codemirror/addon/fold/xml-fold.js","codemirror/addon/hint/show-hint.js","codemirror/addon/runmode/runmode.js","codemirror/addon/search/searchcursor.js","31","findFirstPrefix","lookFor","tokenUtils","hasPreviousPrefix","getLastPrefixPos","prefixKeywordToken","prefixShortname","prefixUri","prefixStart","stopAt","stopAtNextLine","prefixEndChar","prefixEndLine","nextPrefixDeclaration","32","existingPrefixes","addPrefixAsString","pref","prefixString","lastPrefix","lastPrefixLine","numLines","firstToken","previousIndent","getIndentFromLine","escapeRegex","33","Accept","getAcceptHeader","xhrFields","handlerDefined","handler","encodeURIComponent","isEmptyObject","queryStart","updateYasqe","completeCallbacks","ajax","queryMode","getString","argName","merge","acceptHeader","qType","34","prevToken","35","tooltip","hover","repositionTooltip","36","keyExists","objectToTest","exists","persistentIdCreator","persistencyId","getPositions","elem","comparePositions","p1","p2","r1","r2","pos2"],"mappings":"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8CAAA,gDACAG,OACAC,OACAC,OACAC,YACAC,SACAC,SACAC,WACAC,UACAC,QACAC,UACAC,QACA+B,2BACA5C,KAAA,yBAAA,2BACAG,OACAC,OACAS,OACAL,SACAH,OACAC,YACAC,SACAE,WACAC,UACAC,QACAC,WACAiC,8BACAC,OAAA,4BAAA,8BACA1B,QACAC,QACAC,OACAJ,OACAC,OACAI,WACAC,QACAC,SACAC,oBACAC,QACAC,YACAC,YACAC,mBACAC,mBACAC,wBACAC,wBACAC,WACAC,WACAC,UACAC,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACAvC,OACAE,OACAC,YACAC,SACAC,SACAC,WACAC,UACAC,QACAC,UACAC,QACAkC,8CACA1C,KAAA,4CAAA,8CACAC,UAAA,4CAAA,8CACAC,OAAA,4CAAA,8CACAC,OAAA,4CAAA,8CACAC,SAAA,4CAAA,8CACAC,QAAA,4CAAA,8CACAC,MAAA,4CAAA,8CACAC,QAAA,4CAAA,8CACAC,QACAmC,0CACAxC,OAAA,wCAAA,0CACAK,QACAoC,6BACAhC,KAAA,2BAAA,6BACApB,QACAqD,qBACAjC,KAAA,mBAAA,qBACApB,OACAqB,OACAC,OACAC,QACAC,QACAC,OACAC,WACAC,QACAC,SACAC,oBACAC,QACAC,YACAC,YACAC,mBACAC,mBACAC,wBACAC,wBACAC,WACAC,WACAC,UACAC,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,oBACAS,kCACApD,MAAA,gCAAA,kCACAH,MACAC,OACAC,OACAE,QACAoD,mBACAC,OAAA,iBAAA,mBACA9B,SAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAG,UAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,iBAAA,iBAAA,mBACAC,iBAAA,iBAAA,mBACAC,sBAAA,iBAAA,mBACAC,sBAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,kBAAA,iBAAA,mBACAC,kBAAA,iBAAA,mBACAC,iBAAA,iBAAA,mBACAC,kBA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BACAhG,SAAA,iBAAA,mBACAK,UAAA,iBAAA,mBACAC,UAAA,iBAAA,oBACAwI,gBACAjJ,MAAA,cAAA,gBACAC,MAAA,cAAA,gBACAE,SAAA,cAAA;AACAK,UAAA,cAAA,gBACAC,UAAA,cAAA,iBACAyI,MACAnK,KAAA,KACAiB,QACAC,QACAC,OACAJ,OACAC,OACAI,WACAC,QACAC,SACAC,oBACAC,QACAC,YACAC,YACAC,mBACAC,mBACAC,wBACAC,wBACAC,WACAC,WACAC,UACAC,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACAlC,SACAH,OACAC,YACAC,SACAE,WACAC,UACAC,QACAC,UACAC,QACA0J,aACAC,UAAA,YACAC,OACAtC,OACAC,OACAhH,QACAC,QACAH,OACAgD,OACAC,QACAC,eACAC,YACAC,SACAC,OACAC,OACAC,SACAC,QACAC,OACAC,QACAC,SACAC,SACAC,UACAC,UACAC,SACAC,SACAC,kBACAC,YACAC,aACAC,WACAC,aACAC,YACAC,QACAC,SACAC,OACAC,SACAC,WACAC,WACAC,YACAC,MACAC,OACAC,QACAC,WACAC,OACAC,QACAC,UACAC,UACAC,UACAC,YACAC,MACAC,WACAC,SACAC,YACAC,SACAC,SACAC,WACAC,aACAC,aACA1F,QACAC,SACAiJ,SACAC,OACAC,OACAC,OACAC,OACAC,UACAC,gBACA7D,UACAC,WACAC,SACAC,UACAC,OACAhG,WACAO,mBACAC,mBACAC,wBACAC,wBACAC,WACAC,WACAC,UACAC,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACAd,YACAC,YACA8F,QACAsD,UACAzK,OAAA,SACAe,WACAK,YACAC,aACAqJ,WACAC,QAAA,UACA/J,QACAC,QACAE,WACAK,YACAC,aACAuJ,aACAD,QAAA,UACA5J,WACAK,YACAC,aACAwJ,aACAF,QAAA,UACA3K,SACA8K,WACAC,SACAC,QACAC,aACAN,QAAA,UACA3K,UACAkL,aACAP,QAAA,UACAG,WACA9K,SACAe,WACAK,YACAC,aACA8J,UACAnI,OAAA,SACAnD,QACAuL,mBACA9L,KAAA,kBACAD,QACAgM,0BACA1L,KAAA,yBACAU,QACAiL,sBACA3L,KAAA,qBACAE,OACAC,YACAC,SACAC,SACAC,WACAC,UACAC,QACAC,UACAC,QACAkL,yBACA5L,KAAA,wBACAU,OACAL,UACAwL,2BACAhM,KAAA,0BACAH,QACAoM,eACAjM,KAAA,cACAtC,MACAwO,aACAtM,IAAA,YACAC,QACAsM,oBACAC,MAAA,mBACApM,OACAtC,MACA2O,2CACAjL,MAAA,0CACAC,MAAA,0CACAiL,KAAA,0CACArP,GAAA,0CACAwN,KAAA,0CACAvJ,KAAA,0CACAK,SAAA,0CACAK,UAAA,0CACAC,UAAA,0CACA7B,OACAG,OACAC,OACAC,OACAC,YACAC,SACAC,SACAC,WACAC,UACAC,QACAC,UACAC,QACA0L,qDACAtP,GAAA,oDACAqP,KAAA,oDACA/K,SAAA,oDACAK,UAAA,oDACAC,UAAA,oDACAhC,QACA2M,0BACA5D,QAAA,yBACAC,QAAA,yBACAE,MAAA,yBACAC,OAAA,yBACAC,MAAA,yBACAC,KAAA,yBACAC,MAAA,yBACAC,MAAA,yBACAC,QAAA,yBACAC,MAAA,yBACA5L,MACA+O,sBACAxP,GAAA,qBACAmE,MAAA,qBACAC,MAAA,qBACAE,SAAA,qBACAK,UAAA,qBACAC,UAAA,qBACA7B,OACAG,OACAC,OACAS,OACAL,SACAH,OACAC,YACAC,SACAE,WACAC,UACAC,QACAC,WACA8L,YACApL,KAAA,WACAJ,KAAA,WACAtB,MACAC,OACAC,OACAC,QACAJ,QACAiI,OACAC,QACAC,OACAC,OACAC,QACAC,QACAC,MACAX,OACAY,OACAC,OACA/F,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACAiF,OACA3G,OACAhB,QACA2M,qBACAvL,MAAA,oBACAC,MAAA,oBACAC,KAAA,oBACAJ,KAAA,oBACAC,KAAA,oBACAI,SAAA,oBACAC,MAAA,oBACAC,OAAA,oBACAC,kBAAA,oBACAC,MAAA,oBACAC,UAAA,oBACAC,UAAA,oBACAC,iBAAA,oBACAC,iBAAA,oBACAC,sBAAA,oBACAC,sBAAA,oBACAC,SAAA,oBACAC,SAAA,oBACAC,QAAA,oBACAC,kBAAA,oBACAC,kBAAA,oBACAC,iBAAA,oBACAC,kBAAA,oBACAC,kBAAA,oBACAC,iBAAA,oBACA7B,QACA+L,gBACAhJ,OAAA,eACAhD,UACAiD,SACAC,UACAJ,SACAC,UACAjG,KACAmD,QACAgM,iBACAlJ,QAAA,gBACA/C,UACAiD,SACAC,UACAJ,SACAhG,KACAmD,QACAiM,iBACAlE,QAAA,gBACApF,SACAoG,UACAmD,gBACAlJ,OAAA,eACAjD,UACAlD,KACAmD,QACAmM,uBACAnJ,OAAA,sBACAC,QAAA,sBACAlD,UACAlD,KACAmD,QACAoM,iBACAnJ,QAAA,gBACAlD,UACAlD,KACAmD,QACAqM,2BACA1C,UAAA,0BACA2C,SAAA,0BACAxF,OACAzG,OACAE,QACAC,SACA+L,8BACAC,SAAA,6BACAC,MAAA,6BACAjK,SACA9B,WACAC,QACAC,SACAG,YACAC,YACAC,mBACAC,mBACAC,wBACAC,wBACAC,WACAC,WACAC,UACAC,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACAzF,KACAmE,QACAC,QACAiL,OACA7B,OACAvJ,OACAf,OACAH,OACAF,OACAF,MACAC,OACAE,QACAJ,QACAiI,OACAC,QACAC,OACAC,OACAC,QACAC,QACAC,MACAX,OACAY,OACAC,OACAT,OACA3G,OACAH,OACAM,OACAG,OACAI,oBACAC,QACAvB,OACAI,SACAH,OACAC,YACAC,SACAE,WACAC,UACAC,QACAC,WACA2M,kDACA5F,KAAA,iDACA3G,KAAA,iDACAmH,OACAC,OACA/F,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACA9C,MACAC,OACAC,OACAC,QACAJ,QACAiI,OACAC,QACAC,OACAC,OACAC,QACAC,QACAC,MACAX,OACAvH,QACAwN,6LACA5F,KAAA,4LACAC,MAAA,4LACAC,KAAA,4LACAC,KAAA,4LACAC,MAAA,4LACAC,MAAA,4LACAC,IAAA,4LACAX,KAAA,4LACA3H,MACAC,OACAC,OACAC,QACAJ,QACAK,QACAyN,gBACA/J,OAAA,eACA9C,UACAiD,SACAC,UACApG,KACAmD,QACA6M,YACA/F,KAAA,WACAgG,KAAA,WACAxF,KAAA,WACA9H,KAAA,WACAY,OACAD,OACAnB,OACAqB,OACAC,OACAC,QACAC,QACAC,OACAC,WACAC,QACAC,SACAC,oBACAC,QACAC,YACAC,YACAC,mBACAC,mBACAC,wBACAC,wBACAC,WACAC,WACAC,UACAC,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,oBACAkL,iBACAxM,MAAA,gBACAC,MAAA,gBACAC,KAAA,gBACAJ,KAAA,gBACAC,KAAA,gBACAI,SAAA,gBACAC,MAAA,gBACAC,OAAA,gBACAC,kBAAA,gBACAC,MAAA,gBACAC,UAAA,gBACAC,UAAA,gBACAC,iBAAA,gBACAC,iBAAA,gBACAC,sBAAA,gBACAC,sBAAA,gBACAC,SAAA,gBACAC,SAAA,gBACAC,QAAA,gBACAC,kBAAA,gBACAC,kBAAA,gBACAC,iBAAA,gBACAC,kBAAA,gBACAC,kBAAA,gBACAC,iBAAA,gBACArC,OACAC,YACAC,SACAC,SACAC,WACAC,UACAC,QACAC,UACAC,QACAgN,oBACAzM,MAAA,mBACAC,MAAA,mBACAC,KAAA,mBACAJ,KAAA,mBACAC,KAAA,mBACAI,SAAA,mBACAC,MAAA,mBACAC,OAAA,mBACAC,kBAAA,mBACAC,MAAA,mBACAC,UAAA,mBACAC,UAAA,mBACAC,iBAAA,mBACAC,iBAAA,mBACAC,sBAAA,mBACAC,sBAAA,mBACAC,SAAA,mBACAC,SAAA,mBACAC,QAAA,mBACAC,kBAAA,mBACAC,kBAAA,mBACAC,iBAAA,mBACAC,kBAAA,mBACAC,kBAAA,mBACAC,iBAAA,mBACA7B,OACAL,UACAsN,gBACAtK,OAAA,eACAnD,KAAA,eACAqD,SACAC,UACAC,SACAC,SACAC,UACAlD,UACAlD,MACAqQ,0BACA7M,KAAA,IAAA,kBAAA,MACA8M,eACA9M,KAAA,IAAA,OAAA,MACA+M,qBACA/M,KAAA,IAAA,aAAA,MA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","file":"yasqe.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","'use strict';\n/*\n jQuery deparam is an extraction of the deparam method from Ben Alman's jQuery BBQ\n http://benalman.com/projects/jquery-bbq-plugin/\n*/\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n$.deparam = function (params, coerce) {\nvar obj = {},\n\tcoerce_types = { 'true': !0, 'false': !1, 'null': null };\n \n// Iterate over all name=value pairs.\n$.each(params.replace(/\\+/g, ' ').split('&'), function (j,v) {\n var param = v.split('='),\n\t key = decodeURIComponent(param[0]),\n\t val,\n\t cur = obj,\n\t i = 0,\n\t\t\n\t // If key is more complex than 'foo', like 'a[]' or 'a[b][c]', split it\n\t // into its component parts.\n\t keys = key.split(']['),\n\t keys_last = keys.length - 1;\n\t\n // If the first keys part contains [ and the last ends with ], then []\n // are correctly balanced.\n if (/\\[/.test(keys[0]) && /\\]$/.test(keys[keys_last])) {\n\t// Remove the trailing ] from the last keys part.\n\tkeys[keys_last] = keys[keys_last].replace(/\\]$/, '');\n\t \n\t// Split first keys part into two parts on the [ and add them back onto\n\t// the beginning of the keys array.\n\tkeys = keys.shift().split('[').concat(keys);\n\t \n\tkeys_last = keys.length - 1;\n } else {\n\t// Basic 'foo' style key.\n\tkeys_last = 0;\n }\n\t\n // Are we dealing with a name=value pair, or just a name?\n if (param.length === 2) {\n\tval = decodeURIComponent(param[1]);\n\t \n\t// Coerce values.\n\tif (coerce) {\n\t val = val && !isNaN(val) ? +val // number\n\t\t : val === 'undefined' ? undefined // undefined\n\t\t : coerce_types[val] !== undefined ? coerce_types[val] // true, false, null\n\t\t : val; // string\n\t}\n\t \n\tif ( keys_last ) {\n\t // Complex key, build deep object structure based on a few rules:\n\t // * The 'cur' pointer starts at the object top-level.\n\t // * [] = array push (n is set to array length), [n] = array if n is \n\t // numeric, otherwise object.\n\t // * If at the last keys part, set the value.\n\t // * For each keys part, if the current level is undefined create an\n\t // object or array based on the type of the next keys part.\n\t // * Move the 'cur' pointer to the next level.\n\t // * Rinse & repeat.\n\t for (; i <= keys_last; i++) {\n\t\tkey = keys[i] === '' ? cur.length : keys[i];\n\t\tcur = cur[key] = i < keys_last\n\t\t ? cur[key] || (keys[i+1] && isNaN(keys[i+1]) ? {} : [])\n\t\t : val;\n\t }\n\t\t\n\t} else {\n\t // Simple key, even simpler rules, since only scalars and shallow\n\t // arrays are allowed.\n\t\t\n\t if ($.isArray(obj[key])) {\n\t\t// val is already an array, so push on the next value.\n\t\tobj[key].push( val );\n\t\t \n\t } else if (obj[key] !== undefined) {\n\t\t// val isn't an array, but since a second value has been specified,\n\t\t// convert val into an array.\n\t\tobj[key] = [obj[key], val];\n\t\t \n\t } else {\n\t\t// val is a scalar.\n\t\tobj[key] = val;\n\t }\n\t}\n\t \n } else if (key) {\n\t// No value was defined, so set something meaningful.\n\tobj[key] = coerce\n\t ? undefined\n\t : '';\n }\n});\n \nreturn obj;\n};\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.YASQE = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n'use strict';\n/*\n jQuery deparam is an extraction of the deparam method from Ben Alman's jQuery BBQ\n http://benalman.com/projects/jquery-bbq-plugin/\n*/\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n$.deparam = function (params, coerce) {\nvar obj = {},\n\tcoerce_types = { 'true': !0, 'false': !1, 'null': null };\n \n// Iterate over all name=value pairs.\n$.each(params.replace(/\\+/g, ' ').split('&'), function (j,v) {\n var param = v.split('='),\n\t key = decodeURIComponent(param[0]),\n\t val,\n\t cur = obj,\n\t i = 0,\n\t\t\n\t // If key is more complex than 'foo', like 'a[]' or 'a[b][c]', split it\n\t // into its component parts.\n\t keys = key.split(']['),\n\t keys_last = keys.length - 1;\n\t\n // If the first keys part contains [ and the last ends with ], then []\n // are correctly balanced.\n if (/\\[/.test(keys[0]) && /\\]$/.test(keys[keys_last])) {\n\t// Remove the trailing ] from the last keys part.\n\tkeys[keys_last] = keys[keys_last].replace(/\\]$/, '');\n\t \n\t// Split first keys part into two parts on the [ and add them back onto\n\t// the beginning of the keys array.\n\tkeys = keys.shift().split('[').concat(keys);\n\t \n\tkeys_last = keys.length - 1;\n } else {\n\t// Basic 'foo' style key.\n\tkeys_last = 0;\n }\n\t\n // Are we dealing with a name=value pair, or just a name?\n if (param.length === 2) {\n\tval = decodeURIComponent(param[1]);\n\t \n\t// Coerce values.\n\tif (coerce) {\n\t val = val && !isNaN(val) ? +val // number\n\t\t : val === 'undefined' ? undefined // undefined\n\t\t : coerce_types[val] !== undefined ? coerce_types[val] // true, false, null\n\t\t : val; // string\n\t}\n\t \n\tif ( keys_last ) {\n\t // Complex key, build deep object structure based on a few rules:\n\t // * The 'cur' pointer starts at the object top-level.\n\t // * [] = array push (n is set to array length), [n] = array if n is \n\t // numeric, otherwise object.\n\t // * If at the last keys part, set the value.\n\t // * For each keys part, if the current level is undefined create an\n\t // object or array based on the type of the next keys part.\n\t // * Move the 'cur' pointer to the next level.\n\t // * Rinse & repeat.\n\t for (; i <= keys_last; i++) {\n\t\tkey = keys[i] === '' ? cur.length : keys[i];\n\t\tcur = cur[key] = i < keys_last\n\t\t ? cur[key] || (keys[i+1] && isNaN(keys[i+1]) ? {} : [])\n\t\t : val;\n\t }\n\t\t\n\t} else {\n\t // Simple key, even simpler rules, since only scalars and shallow\n\t // arrays are allowed.\n\t\t\n\t if ($.isArray(obj[key])) {\n\t\t// val is already an array, so push on the next value.\n\t\tobj[key].push( val );\n\t\t \n\t } else if (obj[key] !== undefined) {\n\t\t// val isn't an array, but since a second value has been specified,\n\t\t// convert val into an array.\n\t\tobj[key] = [obj[key], val];\n\t\t \n\t } else {\n\t\t// val is a scalar.\n\t\tobj[key] = val;\n\t }\n\t}\n\t \n } else if (key) {\n\t// No value was defined, so set something meaningful.\n\tobj[key] = coerce\n\t ? undefined\n\t : '';\n }\n});\n \nreturn obj;\n};\n\n},{\"jquery\":undefined}],2:[function(require,module,exports){\nmodule.exports = {table:\n{\n \"*[&&,valueLogical]\" : {\n \"&&\": [\"[&&,valueLogical]\",\"*[&&,valueLogical]\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \";\": []}, \n \"*[,,expression]\" : {\n \",\": [\"[,,expression]\",\"*[,,expression]\"], \n \")\": []}, \n \"*[,,objectPath]\" : {\n \",\": [\"[,,objectPath]\",\"*[,,objectPath]\"], \n \".\": [], \n \";\": [], \n \"]\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"*[,,object]\" : {\n \",\": [\"[,,object]\",\"*[,,object]\"], \n \".\": [], \n \";\": [], \n \"]\": [], \n \"}\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"*[/,pathEltOrInverse]\" : {\n \"/\": [\"[/,pathEltOrInverse]\",\"*[/,pathEltOrInverse]\"], \n \"|\": [], \n \")\": [], \n \"(\": [], \n \"[\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"*[;,?[or([verbPath,verbSimple]),objectList]]\" : {\n \";\": [\"[;,?[or([verbPath,verbSimple]),objectList]]\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \".\": [], \n \"]\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"*[;,?[verb,objectList]]\" : {\n \";\": [\"[;,?[verb,objectList]]\",\"*[;,?[verb,objectList]]\"], \n \".\": [], \n \"]\": [], \n \"}\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"*[UNION,groupGraphPattern]\" : {\n \"UNION\": [\"[UNION,groupGraphPattern]\",\"*[UNION,groupGraphPattern]\"], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \".\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"*[graphPatternNotTriples,?.,?triplesBlock]\" : {\n \"{\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"OPTIONAL\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"MINUS\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"GRAPH\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"SERVICE\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"FILTER\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"BIND\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VALUES\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"}\": []}, \n \"*[quadsNotTriples,?.,?triplesTemplate]\" : {\n \"GRAPH\": [\"[quadsNotTriples,?.,?triplesTemplate]\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"}\": []}, \n \"*[|,pathOneInPropertySet]\" : {\n \"|\": [\"[|,pathOneInPropertySet]\",\"*[|,pathOneInPropertySet]\"], \n \")\": []}, \n \"*[|,pathSequence]\" : {\n \"|\": [\"[|,pathSequence]\",\"*[|,pathSequence]\"], \n \")\": [], \n \"(\": [], \n \"[\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"*[||,conditionalAndExpression]\" : {\n \"||\": [\"[||,conditionalAndExpression]\",\"*[||,conditionalAndExpression]\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \";\": []}, \n \"*dataBlockValue\" : {\n \"UNDEF\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"IRI_REF\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"TRUE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"FALSE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"PNAME_LN\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"PNAME_NS\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"STRING_LITERAL1\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"STRING_LITERAL2\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"STRING_LITERAL_LONG1\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"STRING_LITERAL_LONG2\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"INTEGER\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DECIMAL\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DOUBLE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"INTEGER_POSITIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DECIMAL_POSITIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DOUBLE_POSITIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"INTEGER_NEGATIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DECIMAL_NEGATIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DOUBLE_NEGATIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"}\": [], \n \")\": []}, \n \"*datasetClause\" : {\n \"FROM\": [\"datasetClause\",\"*datasetClause\"], \n \"WHERE\": [], \n \"{\": []}, \n \"*describeDatasetClause\" : {\n \"FROM\": [\"describeDatasetClause\",\"*describeDatasetClause\"], \n \"ORDER\": [], \n \"HAVING\": [], \n \"GROUP\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"WHERE\": [], \n \"{\": [], \n \"VALUES\": [], \n \"$\": []}, \n \"*graphNode\" : {\n \"(\": [\"graphNode\",\"*graphNode\"], \n \"[\": [\"graphNode\",\"*graphNode\"], \n \"VAR1\": [\"graphNode\",\"*graphNode\"], \n \"VAR2\": [\"graphNode\",\"*graphNode\"], \n \"NIL\": [\"graphNode\",\"*graphNode\"], \n \"IRI_REF\": [\"graphNode\",\"*graphNode\"], \n \"TRUE\": [\"graphNode\",\"*graphNode\"], \n \"FALSE\": [\"graphNode\",\"*graphNode\"], \n \"BLANK_NODE_LABEL\": [\"graphNode\",\"*graphNode\"], \n \"ANON\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_LN\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_NS\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL2\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG2\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \")\": []}, \n \"*graphNodePath\" : {\n \"(\": [\"graphNodePath\",\"*graphNodePath\"], \n \"[\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"NIL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"IRI_REF\": [\"graphNodePath\",\"*graphNodePath\"], \n \"TRUE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"FALSE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"BLANK_NODE_LABEL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"ANON\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_LN\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_NS\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \")\": []}, \n \"*groupCondition\" : {\n \"(\": [\"groupCondition\",\"*groupCondition\"], \n \"STR\": [\"groupCondition\",\"*groupCondition\"], \n \"LANG\": [\"groupCondition\",\"*groupCondition\"], \n \"LANGMATCHES\": [\"groupCondition\",\"*groupCondition\"], \n \"DATATYPE\": [\"groupCondition\",\"*groupCondition\"], \n \"BOUND\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI\": [\"groupCondition\",\"*groupCondition\"], \n \"URI\": [\"groupCondition\",\"*groupCondition\"], \n \"BNODE\": [\"groupCondition\",\"*groupCondition\"], \n \"RAND\": [\"groupCondition\",\"*groupCondition\"], \n \"ABS\": [\"groupCondition\",\"*groupCondition\"], \n \"CEIL\": [\"groupCondition\",\"*groupCondition\"], \n \"FLOOR\": [\"groupCondition\",\"*groupCondition\"], \n \"ROUND\": [\"groupCondition\",\"*groupCondition\"], \n \"CONCAT\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLEN\": [\"groupCondition\",\"*groupCondition\"], \n \"UCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"LCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"ENCODE_FOR_URI\": [\"groupCondition\",\"*groupCondition\"], \n \"CONTAINS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRSTARTS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRENDS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRBEFORE\": [\"groupCondition\",\"*groupCondition\"], \n \"STRAFTER\": [\"groupCondition\",\"*groupCondition\"], \n \"YEAR\": [\"groupCondition\",\"*groupCondition\"], \n \"MONTH\": [\"groupCondition\",\"*groupCondition\"], \n \"DAY\": [\"groupCondition\",\"*groupCondition\"], \n \"HOURS\": [\"groupCondition\",\"*groupCondition\"], \n \"MINUTES\": [\"groupCondition\",\"*groupCondition\"], \n \"SECONDS\": [\"groupCondition\",\"*groupCondition\"], \n \"TIMEZONE\": [\"groupCondition\",\"*groupCondition\"], \n \"TZ\": [\"groupCondition\",\"*groupCondition\"], \n \"NOW\": [\"groupCondition\",\"*groupCondition\"], \n \"UUID\": [\"groupCondition\",\"*groupCondition\"], \n \"STRUUID\": [\"groupCondition\",\"*groupCondition\"], \n \"MD5\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA1\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA256\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA384\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA512\": [\"groupCondition\",\"*groupCondition\"], \n \"COALESCE\": [\"groupCondition\",\"*groupCondition\"], \n \"IF\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLANG\": [\"groupCondition\",\"*groupCondition\"], \n \"STRDT\": [\"groupCondition\",\"*groupCondition\"], \n \"SAMETERM\": [\"groupCondition\",\"*groupCondition\"], \n \"ISIRI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISURI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISBLANK\": [\"groupCondition\",\"*groupCondition\"], \n \"ISLITERAL\": [\"groupCondition\",\"*groupCondition\"], \n \"ISNUMERIC\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR1\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR2\": [\"groupCondition\",\"*groupCondition\"], \n \"SUBSTR\": [\"groupCondition\",\"*groupCondition\"], \n \"REPLACE\": [\"groupCondition\",\"*groupCondition\"], \n \"REGEX\": [\"groupCondition\",\"*groupCondition\"], \n \"EXISTS\": [\"groupCondition\",\"*groupCondition\"], \n \"NOT\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI_REF\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_LN\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_NS\": [\"groupCondition\",\"*groupCondition\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"HAVING\": [], \n \"$\": [], \n \"}\": []}, \n \"*havingCondition\" : {\n \"(\": [\"havingCondition\",\"*havingCondition\"], \n \"STR\": [\"havingCondition\",\"*havingCondition\"], \n \"LANG\": [\"havingCondition\",\"*havingCondition\"], \n \"LANGMATCHES\": [\"havingCondition\",\"*havingCondition\"], \n \"DATATYPE\": [\"havingCondition\",\"*havingCondition\"], \n \"BOUND\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI\": [\"havingCondition\",\"*havingCondition\"], \n \"URI\": [\"havingCondition\",\"*havingCondition\"], \n \"BNODE\": [\"havingCondition\",\"*havingCondition\"], \n \"RAND\": [\"havingCondition\",\"*havingCondition\"], \n \"ABS\": [\"havingCondition\",\"*havingCondition\"], \n \"CEIL\": [\"havingCondition\",\"*havingCondition\"], \n \"FLOOR\": [\"havingCondition\",\"*havingCondition\"], \n \"ROUND\": [\"havingCondition\",\"*havingCondition\"], \n \"CONCAT\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLEN\": [\"havingCondition\",\"*havingCondition\"], \n \"UCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"LCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"ENCODE_FOR_URI\": [\"havingCondition\",\"*havingCondition\"], \n \"CONTAINS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRSTARTS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRENDS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRBEFORE\": [\"havingCondition\",\"*havingCondition\"], \n \"STRAFTER\": [\"havingCondition\",\"*havingCondition\"], \n \"YEAR\": [\"havingCondition\",\"*havingCondition\"], \n \"MONTH\": [\"havingCondition\",\"*havingCondition\"], \n \"DAY\": [\"havingCondition\",\"*havingCondition\"], \n \"HOURS\": [\"havingCondition\",\"*havingCondition\"], \n \"MINUTES\": [\"havingCondition\",\"*havingCondition\"], \n \"SECONDS\": [\"havingCondition\",\"*havingCondition\"], \n \"TIMEZONE\": [\"havingCondition\",\"*havingCondition\"], \n \"TZ\": [\"havingCondition\",\"*havingCondition\"], \n \"NOW\": [\"havingCondition\",\"*havingCondition\"], \n \"UUID\": [\"havingCondition\",\"*havingCondition\"], \n \"STRUUID\": [\"havingCondition\",\"*havingCondition\"], \n \"MD5\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA1\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA256\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA384\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA512\": [\"havingCondition\",\"*havingCondition\"], \n \"COALESCE\": [\"havingCondition\",\"*havingCondition\"], \n \"IF\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLANG\": [\"havingCondition\",\"*havingCondition\"], \n \"STRDT\": [\"havingCondition\",\"*havingCondition\"], \n \"SAMETERM\": [\"havingCondition\",\"*havingCondition\"], \n \"ISIRI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISURI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISBLANK\": [\"havingCondition\",\"*havingCondition\"], \n \"ISLITERAL\": [\"havingCondition\",\"*havingCondition\"], \n \"ISNUMERIC\": [\"havingCondition\",\"*havingCondition\"], \n \"SUBSTR\": [\"havingCondition\",\"*havingCondition\"], \n \"REPLACE\": [\"havingCondition\",\"*havingCondition\"], \n \"REGEX\": [\"havingCondition\",\"*havingCondition\"], \n \"EXISTS\": [\"havingCondition\",\"*havingCondition\"], \n \"NOT\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI_REF\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_LN\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_NS\": [\"havingCondition\",\"*havingCondition\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"$\": [], \n \"}\": []}, \n \"*or([[ (,*dataBlockValue,)],NIL])\" : {\n \"(\": [\"or([[ (,*dataBlockValue,)],NIL])\",\"*or([[ (,*dataBlockValue,)],NIL])\"], \n \"NIL\": [\"or([[ (,*dataBlockValue,)],NIL])\",\"*or([[ (,*dataBlockValue,)],NIL])\"], \n \"}\": []}, \n \"*or([[*,unaryExpression],[/,unaryExpression]])\" : {\n \"*\": [\"or([[*,unaryExpression],[/,unaryExpression]])\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"/\": [\"or([[*,unaryExpression],[/,unaryExpression]])\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \"+\": [], \n \"-\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \";\": []}, \n \"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\" : {\n \"+\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"-\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_POSITIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_POSITIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_POSITIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_NEGATIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_NEGATIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_NEGATIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \";\": []}, \n \"*or([baseDecl,prefixDecl])\" : {\n \"BASE\": [\"or([baseDecl,prefixDecl])\",\"*or([baseDecl,prefixDecl])\"], \n \"PREFIX\": [\"or([baseDecl,prefixDecl])\",\"*or([baseDecl,prefixDecl])\"], \n \"$\": [], \n \"CONSTRUCT\": [], \n \"DESCRIBE\": [], \n \"ASK\": [], \n \"INSERT\": [], \n \"DELETE\": [], \n \"SELECT\": [], \n \"LOAD\": [], \n \"CLEAR\": [], \n \"DROP\": [], \n \"ADD\": [], \n \"MOVE\": [], \n \"COPY\": [], \n \"CREATE\": [], \n \"WITH\": []}, \n \"*or([var,[ (,expression,AS,var,)]])\" : {\n \"(\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR1\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR2\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"WHERE\": [], \n \"{\": [], \n \"FROM\": []}, \n \"*orderCondition\" : {\n \"ASC\": [\"orderCondition\",\"*orderCondition\"], \n \"DESC\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR1\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR2\": [\"orderCondition\",\"*orderCondition\"], \n \"(\": [\"orderCondition\",\"*orderCondition\"], \n \"STR\": [\"orderCondition\",\"*orderCondition\"], \n \"LANG\": [\"orderCondition\",\"*orderCondition\"], \n \"LANGMATCHES\": [\"orderCondition\",\"*orderCondition\"], \n \"DATATYPE\": [\"orderCondition\",\"*orderCondition\"], \n \"BOUND\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI\": [\"orderCondition\",\"*orderCondition\"], \n \"URI\": [\"orderCondition\",\"*orderCondition\"], \n \"BNODE\": [\"orderCondition\",\"*orderCondition\"], \n \"RAND\": [\"orderCondition\",\"*orderCondition\"], \n \"ABS\": [\"orderCondition\",\"*orderCondition\"], \n \"CEIL\": [\"orderCondition\",\"*orderCondition\"], \n \"FLOOR\": [\"orderCondition\",\"*orderCondition\"], \n \"ROUND\": [\"orderCondition\",\"*orderCondition\"], \n \"CONCAT\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLEN\": [\"orderCondition\",\"*orderCondition\"], \n \"UCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"LCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"ENCODE_FOR_URI\": [\"orderCondition\",\"*orderCondition\"], \n \"CONTAINS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRSTARTS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRENDS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRBEFORE\": [\"orderCondition\",\"*orderCondition\"], \n \"STRAFTER\": [\"orderCondition\",\"*orderCondition\"], \n \"YEAR\": [\"orderCondition\",\"*orderCondition\"], \n \"MONTH\": [\"orderCondition\",\"*orderCondition\"], \n \"DAY\": [\"orderCondition\",\"*orderCondition\"], \n \"HOURS\": [\"orderCondition\",\"*orderCondition\"], \n \"MINUTES\": [\"orderCondition\",\"*orderCondition\"], \n \"SECONDS\": [\"orderCondition\",\"*orderCondition\"], \n \"TIMEZONE\": [\"orderCondition\",\"*orderCondition\"], \n \"TZ\": [\"orderCondition\",\"*orderCondition\"], \n \"NOW\": [\"orderCondition\",\"*orderCondition\"], \n \"UUID\": [\"orderCondition\",\"*orderCondition\"], \n \"STRUUID\": [\"orderCondition\",\"*orderCondition\"], \n \"MD5\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA1\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA256\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA384\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA512\": [\"orderCondition\",\"*orderCondition\"], \n \"COALESCE\": [\"orderCondition\",\"*orderCondition\"], \n \"IF\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLANG\": [\"orderCondition\",\"*orderCondition\"], \n \"STRDT\": [\"orderCondition\",\"*orderCondition\"], \n \"SAMETERM\": [\"orderCondition\",\"*orderCondition\"], \n \"ISIRI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISURI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISBLANK\": [\"orderCondition\",\"*orderCondition\"], \n \"ISLITERAL\": [\"orderCondition\",\"*orderCondition\"], \n \"ISNUMERIC\": [\"orderCondition\",\"*orderCondition\"], \n \"SUBSTR\": [\"orderCondition\",\"*orderCondition\"], \n \"REPLACE\": [\"orderCondition\",\"*orderCondition\"], \n \"REGEX\": [\"orderCondition\",\"*orderCondition\"], \n \"EXISTS\": [\"orderCondition\",\"*orderCondition\"], \n \"NOT\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI_REF\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_LN\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_NS\": [\"orderCondition\",\"*orderCondition\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"$\": [], \n \"}\": []}, \n \"*usingClause\" : {\n \"USING\": [\"usingClause\",\"*usingClause\"], \n \"WHERE\": []}, \n \"*var\" : {\n \"VAR1\": [\"var\",\"*var\"], \n \"VAR2\": [\"var\",\"*var\"], \n \")\": []}, \n \"*varOrIRIref\" : {\n \"VAR1\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"VAR2\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"IRI_REF\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_LN\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_NS\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"ORDER\": [], \n \"HAVING\": [], \n \"GROUP\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"WHERE\": [], \n \"{\": [], \n \"FROM\": [], \n \"VALUES\": [], \n \"$\": []}, \n \"+graphNode\" : {\n \"(\": [\"graphNode\",\"*graphNode\"], \n \"[\": [\"graphNode\",\"*graphNode\"], \n \"VAR1\": [\"graphNode\",\"*graphNode\"], \n \"VAR2\": [\"graphNode\",\"*graphNode\"], \n \"NIL\": [\"graphNode\",\"*graphNode\"], \n \"IRI_REF\": [\"graphNode\",\"*graphNode\"], \n \"TRUE\": [\"graphNode\",\"*graphNode\"], \n \"FALSE\": [\"graphNode\",\"*graphNode\"], \n \"BLANK_NODE_LABEL\": [\"graphNode\",\"*graphNode\"], \n \"ANON\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_LN\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_NS\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL2\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG2\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_NEGATIVE\": [\"graphNode\",\"*graphNode\"]}, \n \"+graphNodePath\" : {\n \"(\": [\"graphNodePath\",\"*graphNodePath\"], \n \"[\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"NIL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"IRI_REF\": [\"graphNodePath\",\"*graphNodePath\"], \n \"TRUE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"FALSE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"BLANK_NODE_LABEL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"ANON\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_LN\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_NS\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"]}, \n \"+groupCondition\" : {\n \"(\": [\"groupCondition\",\"*groupCondition\"], \n \"STR\": [\"groupCondition\",\"*groupCondition\"], \n \"LANG\": [\"groupCondition\",\"*groupCondition\"], \n \"LANGMATCHES\": [\"groupCondition\",\"*groupCondition\"], \n \"DATATYPE\": [\"groupCondition\",\"*groupCondition\"], \n \"BOUND\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI\": [\"groupCondition\",\"*groupCondition\"], \n \"URI\": [\"groupCondition\",\"*groupCondition\"], \n \"BNODE\": [\"groupCondition\",\"*groupCondition\"], \n \"RAND\": [\"groupCondition\",\"*groupCondition\"], \n \"ABS\": [\"groupCondition\",\"*groupCondition\"], \n \"CEIL\": [\"groupCondition\",\"*groupCondition\"], \n \"FLOOR\": [\"groupCondition\",\"*groupCondition\"], \n \"ROUND\": [\"groupCondition\",\"*groupCondition\"], \n \"CONCAT\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLEN\": [\"groupCondition\",\"*groupCondition\"], \n \"UCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"LCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"ENCODE_FOR_URI\": [\"groupCondition\",\"*groupCondition\"], \n \"CONTAINS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRSTARTS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRENDS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRBEFORE\": [\"groupCondition\",\"*groupCondition\"], \n \"STRAFTER\": [\"groupCondition\",\"*groupCondition\"], \n \"YEAR\": [\"groupCondition\",\"*groupCondition\"], \n \"MONTH\": [\"groupCondition\",\"*groupCondition\"], \n \"DAY\": [\"groupCondition\",\"*groupCondition\"], \n \"HOURS\": [\"groupCondition\",\"*groupCondition\"], \n \"MINUTES\": [\"groupCondition\",\"*groupCondition\"], \n \"SECONDS\": [\"groupCondition\",\"*groupCondition\"], \n \"TIMEZONE\": [\"groupCondition\",\"*groupCondition\"], \n \"TZ\": [\"groupCondition\",\"*groupCondition\"], \n \"NOW\": [\"groupCondition\",\"*groupCondition\"], \n \"UUID\": [\"groupCondition\",\"*groupCondition\"], \n \"STRUUID\": [\"groupCondition\",\"*groupCondition\"], \n \"MD5\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA1\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA256\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA384\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA512\": [\"groupCondition\",\"*groupCondition\"], \n \"COALESCE\": [\"groupCondition\",\"*groupCondition\"], \n \"IF\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLANG\": [\"groupCondition\",\"*groupCondition\"], \n \"STRDT\": [\"groupCondition\",\"*groupCondition\"], \n \"SAMETERM\": [\"groupCondition\",\"*groupCondition\"], \n \"ISIRI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISURI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISBLANK\": [\"groupCondition\",\"*groupCondition\"], \n \"ISLITERAL\": [\"groupCondition\",\"*groupCondition\"], \n \"ISNUMERIC\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR1\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR2\": [\"groupCondition\",\"*groupCondition\"], \n \"SUBSTR\": [\"groupCondition\",\"*groupCondition\"], \n \"REPLACE\": [\"groupCondition\",\"*groupCondition\"], \n \"REGEX\": [\"groupCondition\",\"*groupCondition\"], \n \"EXISTS\": [\"groupCondition\",\"*groupCondition\"], \n \"NOT\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI_REF\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_LN\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_NS\": [\"groupCondition\",\"*groupCondition\"]}, \n \"+havingCondition\" : {\n \"(\": [\"havingCondition\",\"*havingCondition\"], \n \"STR\": [\"havingCondition\",\"*havingCondition\"], \n \"LANG\": [\"havingCondition\",\"*havingCondition\"], \n \"LANGMATCHES\": [\"havingCondition\",\"*havingCondition\"], \n \"DATATYPE\": [\"havingCondition\",\"*havingCondition\"], \n \"BOUND\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI\": [\"havingCondition\",\"*havingCondition\"], \n \"URI\": [\"havingCondition\",\"*havingCondition\"], \n \"BNODE\": [\"havingCondition\",\"*havingCondition\"], \n \"RAND\": [\"havingCondition\",\"*havingCondition\"], \n \"ABS\": [\"havingCondition\",\"*havingCondition\"], \n \"CEIL\": [\"havingCondition\",\"*havingCondition\"], \n \"FLOOR\": [\"havingCondition\",\"*havingCondition\"], \n \"ROUND\": [\"havingCondition\",\"*havingCondition\"], \n \"CONCAT\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLEN\": [\"havingCondition\",\"*havingCondition\"], \n \"UCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"LCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"ENCODE_FOR_URI\": [\"havingCondition\",\"*havingCondition\"], \n \"CONTAINS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRSTARTS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRENDS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRBEFORE\": [\"havingCondition\",\"*havingCondition\"], \n \"STRAFTER\": [\"havingCondition\",\"*havingCondition\"], \n \"YEAR\": [\"havingCondition\",\"*havingCondition\"], \n \"MONTH\": [\"havingCondition\",\"*havingCondition\"], \n \"DAY\": [\"havingCondition\",\"*havingCondition\"], \n \"HOURS\": [\"havingCondition\",\"*havingCondition\"], \n \"MINUTES\": [\"havingCondition\",\"*havingCondition\"], \n \"SECONDS\": [\"havingCondition\",\"*havingCondition\"], \n \"TIMEZONE\": [\"havingCondition\",\"*havingCondition\"], \n \"TZ\": [\"havingCondition\",\"*havingCondition\"], \n \"NOW\": [\"havingCondition\",\"*havingCondition\"], \n \"UUID\": [\"havingCondition\",\"*havingCondition\"], \n \"STRUUID\": [\"havingCondition\",\"*havingCondition\"], \n \"MD5\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA1\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA256\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA384\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA512\": [\"havingCondition\",\"*havingCondition\"], \n \"COALESCE\": [\"havingCondition\",\"*havingCondition\"], \n \"IF\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLANG\": [\"havingCondition\",\"*havingCondition\"], \n \"STRDT\": [\"havingCondition\",\"*havingCondition\"], \n \"SAMETERM\": [\"havingCondition\",\"*havingCondition\"], \n \"ISIRI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISURI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISBLANK\": [\"havingCondition\",\"*havingCondition\"], \n \"ISLITERAL\": [\"havingCondition\",\"*havingCondition\"], \n \"ISNUMERIC\": [\"havingCondition\",\"*havingCondition\"], \n \"SUBSTR\": [\"havingCondition\",\"*havingCondition\"], \n \"REPLACE\": [\"havingCondition\",\"*havingCondition\"], \n \"REGEX\": [\"havingCondition\",\"*havingCondition\"], \n \"EXISTS\": [\"havingCondition\",\"*havingCondition\"], \n \"NOT\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI_REF\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_LN\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_NS\": [\"havingCondition\",\"*havingCondition\"]}, \n \"+or([var,[ (,expression,AS,var,)]])\" : {\n \"(\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR1\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR2\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"]}, \n \"+orderCondition\" : {\n \"ASC\": [\"orderCondition\",\"*orderCondition\"], \n \"DESC\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR1\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR2\": [\"orderCondition\",\"*orderCondition\"], \n \"(\": [\"orderCondition\",\"*orderCondition\"], \n \"STR\": [\"orderCondition\",\"*orderCondition\"], \n \"LANG\": [\"orderCondition\",\"*orderCondition\"], \n \"LANGMATCHES\": [\"orderCondition\",\"*orderCondition\"], \n \"DATATYPE\": [\"orderCondition\",\"*orderCondition\"], \n \"BOUND\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI\": [\"orderCondition\",\"*orderCondition\"], \n \"URI\": [\"orderCondition\",\"*orderCondition\"], \n \"BNODE\": [\"orderCondition\",\"*orderCondition\"], \n \"RAND\": [\"orderCondition\",\"*orderCondition\"], \n \"ABS\": [\"orderCondition\",\"*orderCondition\"], \n \"CEIL\": [\"orderCondition\",\"*orderCondition\"], \n \"FLOOR\": [\"orderCondition\",\"*orderCondition\"], \n \"ROUND\": [\"orderCondition\",\"*orderCondition\"], \n \"CONCAT\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLEN\": [\"orderCondition\",\"*orderCondition\"], \n \"UCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"LCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"ENCODE_FOR_URI\": [\"orderCondition\",\"*orderCondition\"], \n \"CONTAINS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRSTARTS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRENDS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRBEFORE\": [\"orderCondition\",\"*orderCondition\"], \n \"STRAFTER\": [\"orderCondition\",\"*orderCondition\"], \n \"YEAR\": [\"orderCondition\",\"*orderCondition\"], \n \"MONTH\": [\"orderCondition\",\"*orderCondition\"], \n \"DAY\": [\"orderCondition\",\"*orderCondition\"], \n \"HOURS\": [\"orderCondition\",\"*orderCondition\"], \n \"MINUTES\": [\"orderCondition\",\"*orderCondition\"], \n \"SECONDS\": [\"orderCondition\",\"*orderCondition\"], \n \"TIMEZONE\": [\"orderCondition\",\"*orderCondition\"], \n \"TZ\": [\"orderCondition\",\"*orderCondition\"], \n \"NOW\": [\"orderCondition\",\"*orderCondition\"], \n \"UUID\": [\"orderCondition\",\"*orderCondition\"], \n \"STRUUID\": [\"orderCondition\",\"*orderCondition\"], \n \"MD5\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA1\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA256\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA384\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA512\": [\"orderCondition\",\"*orderCondition\"], \n \"COALESCE\": [\"orderCondition\",\"*orderCondition\"], \n \"IF\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLANG\": [\"orderCondition\",\"*orderCondition\"], \n \"STRDT\": [\"orderCondition\",\"*orderCondition\"], \n \"SAMETERM\": [\"orderCondition\",\"*orderCondition\"], \n \"ISIRI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISURI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISBLANK\": [\"orderCondition\",\"*orderCondition\"], \n \"ISLITERAL\": [\"orderCondition\",\"*orderCondition\"], \n \"ISNUMERIC\": [\"orderCondition\",\"*orderCondition\"], \n \"SUBSTR\": [\"orderCondition\",\"*orderCondition\"], \n \"REPLACE\": [\"orderCondition\",\"*orderCondition\"], \n \"REGEX\": [\"orderCondition\",\"*orderCondition\"], \n \"EXISTS\": [\"orderCondition\",\"*orderCondition\"], \n \"NOT\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI_REF\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_LN\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_NS\": [\"orderCondition\",\"*orderCondition\"]}, \n \"+varOrIRIref\" : {\n \"VAR1\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"VAR2\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"IRI_REF\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_LN\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_NS\": [\"varOrIRIref\",\"*varOrIRIref\"]}, \n \"?.\" : {\n \".\": [\".\"], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?DISTINCT\" : {\n \"DISTINCT\": [\"DISTINCT\"], \n \"!\": [], \n \"+\": [], \n \"-\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"(\": [], \n \"STR\": [], \n \"LANG\": [], \n \"LANGMATCHES\": [], \n \"DATATYPE\": [], \n \"BOUND\": [], \n \"IRI\": [], \n \"URI\": [], \n \"BNODE\": [], \n \"RAND\": [], \n \"ABS\": [], \n \"CEIL\": [], \n \"FLOOR\": [], \n \"ROUND\": [], \n \"CONCAT\": [], \n \"STRLEN\": [], \n \"UCASE\": [], \n \"LCASE\": [], \n \"ENCODE_FOR_URI\": [], \n \"CONTAINS\": [], \n \"STRSTARTS\": [], \n \"STRENDS\": [], \n \"STRBEFORE\": [], \n \"STRAFTER\": [], \n \"YEAR\": [], \n \"MONTH\": [], \n \"DAY\": [], \n \"HOURS\": [], \n \"MINUTES\": [], \n \"SECONDS\": [], \n \"TIMEZONE\": [], \n \"TZ\": [], \n \"NOW\": [], \n \"UUID\": [], \n \"STRUUID\": [], \n \"MD5\": [], \n \"SHA1\": [], \n \"SHA256\": [], \n \"SHA384\": [], \n \"SHA512\": [], \n \"COALESCE\": [], \n \"IF\": [], \n \"STRLANG\": [], \n \"STRDT\": [], \n \"SAMETERM\": [], \n \"ISIRI\": [], \n \"ISURI\": [], \n \"ISBLANK\": [], \n \"ISLITERAL\": [], \n \"ISNUMERIC\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"COUNT\": [], \n \"SUM\": [], \n \"MIN\": [], \n \"MAX\": [], \n \"AVG\": [], \n \"SAMPLE\": [], \n \"GROUP_CONCAT\": [], \n \"SUBSTR\": [], \n \"REPLACE\": [], \n \"REGEX\": [], \n \"EXISTS\": [], \n \"NOT\": [], \n \"IRI_REF\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"*\": []}, \n \"?GRAPH\" : {\n \"GRAPH\": [\"GRAPH\"], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?SILENT\" : {\n \"SILENT\": [\"SILENT\"], \n \"VAR1\": [], \n \"VAR2\": [], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?SILENT_1\" : {\n \"SILENT\": [\"SILENT\"], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?SILENT_2\" : {\n \"SILENT\": [\"SILENT\"], \n \"GRAPH\": [], \n \"DEFAULT\": [], \n \"NAMED\": [], \n \"ALL\": []}, \n \"?SILENT_3\" : {\n \"SILENT\": [\"SILENT\"], \n \"GRAPH\": []}, \n \"?SILENT_4\" : {\n \"SILENT\": [\"SILENT\"], \n \"DEFAULT\": [], \n \"GRAPH\": [], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?WHERE\" : {\n \"WHERE\": [\"WHERE\"], \n \"{\": []}, \n \"?[,,expression]\" : {\n \",\": [\"[,,expression]\"], \n \")\": []}, \n \"?[.,?constructTriples]\" : {\n \".\": [\"[.,?constructTriples]\"], \n \"}\": []}, \n \"?[.,?triplesBlock]\" : {\n \".\": [\"[.,?triplesBlock]\"], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?[.,?triplesTemplate]\" : {\n \".\": [\"[.,?triplesTemplate]\"], \n \"}\": [], \n \"GRAPH\": []}, \n \"?[;,SEPARATOR,=,string]\" : {\n \";\": [\"[;,SEPARATOR,=,string]\"], \n \")\": []}, \n \"?[;,update]\" : {\n \";\": [\"[;,update]\"], \n \"$\": []}, \n \"?[AS,var]\" : {\n \"AS\": [\"[AS,var]\"], \n \")\": []}, \n \"?[INTO,graphRef]\" : {\n \"INTO\": [\"[INTO,graphRef]\"], \n \";\": [], \n \"$\": []}, \n \"?[or([verbPath,verbSimple]),objectList]\" : {\n \"VAR1\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"VAR2\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"^\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"a\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"!\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"(\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"IRI_REF\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"PNAME_LN\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"PNAME_NS\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \";\": [], \n \".\": [], \n \"]\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?[pathOneInPropertySet,*[|,pathOneInPropertySet]]\" : {\n \"a\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"^\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"IRI_REF\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"PNAME_LN\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"PNAME_NS\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \")\": []}, \n \"?[update1,?[;,update]]\" : {\n \"INSERT\": [\"[update1,?[;,update]]\"], \n \"DELETE\": [\"[update1,?[;,update]]\"], \n \"LOAD\": [\"[update1,?[;,update]]\"], \n \"CLEAR\": [\"[update1,?[;,update]]\"], \n \"DROP\": [\"[update1,?[;,update]]\"], \n \"ADD\": [\"[update1,?[;,update]]\"], \n \"MOVE\": [\"[update1,?[;,update]]\"], \n \"COPY\": [\"[update1,?[;,update]]\"], \n \"CREATE\": [\"[update1,?[;,update]]\"], \n \"WITH\": [\"[update1,?[;,update]]\"], \n \"$\": []}, \n \"?[verb,objectList]\" : {\n \"a\": [\"[verb,objectList]\"], \n \"VAR1\": [\"[verb,objectList]\"], \n \"VAR2\": [\"[verb,objectList]\"], \n \"IRI_REF\": [\"[verb,objectList]\"], \n \"PNAME_LN\": [\"[verb,objectList]\"], \n \"PNAME_NS\": [\"[verb,objectList]\"], \n \";\": [], \n \".\": [], \n \"]\": [], \n \"}\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"?argList\" : {\n \"NIL\": [\"argList\"], \n \"(\": [\"argList\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \"+\": [], \n \"-\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"*\": [], \n \"/\": [], \n \";\": []}, \n \"?constructTriples\" : {\n \"VAR1\": [\"constructTriples\"], \n \"VAR2\": [\"constructTriples\"], \n \"NIL\": [\"constructTriples\"], \n \"(\": [\"constructTriples\"], \n \"[\": [\"constructTriples\"], \n \"IRI_REF\": [\"constructTriples\"], \n \"TRUE\": [\"constructTriples\"], \n \"FALSE\": [\"constructTriples\"], \n \"BLANK_NODE_LABEL\": [\"constructTriples\"], \n \"ANON\": [\"constructTriples\"], \n \"PNAME_LN\": [\"constructTriples\"], \n \"PNAME_NS\": [\"constructTriples\"], \n \"STRING_LITERAL1\": [\"constructTriples\"], \n \"STRING_LITERAL2\": [\"constructTriples\"], \n \"STRING_LITERAL_LONG1\": [\"constructTriples\"], \n \"STRING_LITERAL_LONG2\": [\"constructTriples\"], \n \"INTEGER\": [\"constructTriples\"], \n \"DECIMAL\": [\"constructTriples\"], \n \"DOUBLE\": [\"constructTriples\"], \n \"INTEGER_POSITIVE\": [\"constructTriples\"], \n \"DECIMAL_POSITIVE\": [\"constructTriples\"], \n \"DOUBLE_POSITIVE\": [\"constructTriples\"], \n \"INTEGER_NEGATIVE\": [\"constructTriples\"], \n \"DECIMAL_NEGATIVE\": [\"constructTriples\"], \n \"DOUBLE_NEGATIVE\": [\"constructTriples\"], \n \"}\": []}, \n \"?groupClause\" : {\n \"GROUP\": [\"groupClause\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"HAVING\": [], \n \"$\": [], \n \"}\": []}, \n \"?havingClause\" : {\n \"HAVING\": [\"havingClause\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"$\": [], \n \"}\": []}, \n \"?insertClause\" : {\n \"INSERT\": [\"insertClause\"], \n \"WHERE\": [], \n \"USING\": []}, \n \"?limitClause\" : {\n \"LIMIT\": [\"limitClause\"], \n \"VALUES\": [], \n \"$\": [], \n \"}\": []}, \n \"?limitOffsetClauses\" : {\n \"LIMIT\": [\"limitOffsetClauses\"], \n \"OFFSET\": [\"limitOffsetClauses\"], \n \"VALUES\": [], \n \"$\": [], \n \"}\": []}, \n \"?offsetClause\" : {\n \"OFFSET\": [\"offsetClause\"], \n \"VALUES\": [], \n \"$\": [], \n \"}\": []}, \n \"?or([DISTINCT,REDUCED])\" : {\n \"DISTINCT\": [\"or([DISTINCT,REDUCED])\"], \n \"REDUCED\": [\"or([DISTINCT,REDUCED])\"], \n \"*\": [], \n \"(\": [], \n \"VAR1\": [], \n \"VAR2\": []}, \n \"?or([LANGTAG,[^^,iriRef]])\" : {\n \"LANGTAG\": [\"or([LANGTAG,[^^,iriRef]])\"], \n \"^^\": [\"or([LANGTAG,[^^,iriRef]])\"], \n \"UNDEF\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"a\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"^\": [], \n \"!\": [], \n \"(\": [], \n \".\": [], \n \";\": [], \n \",\": [], \n \"AS\": [], \n \")\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \"+\": [], \n \"-\": [], \n \"*\": [], \n \"/\": [], \n \"}\": [], \n \"[\": [], \n \"NIL\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"]\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"?or([[*,unaryExpression],[/,unaryExpression]])\" : {\n \"*\": [\"or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"/\": [\"or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"+\": [], \n \"-\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \";\": []}, \n \"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\" : {\n \"=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"!=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"<\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \">\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"<=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \">=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IN\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"NOT\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \";\": []}, \n \"?orderClause\" : {\n \"ORDER\": [\"orderClause\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"$\": [], \n \"}\": []}, \n \"?pathMod\" : {\n \"*\": [\"pathMod\"], \n \"?\": [\"pathMod\"], \n \"+\": [\"pathMod\"], \n \"{\": [\"pathMod\"], \n \"|\": [], \n \"/\": [], \n \")\": [], \n \"(\": [], \n \"[\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"?triplesBlock\" : {\n \"VAR1\": [\"triplesBlock\"], \n \"VAR2\": [\"triplesBlock\"], \n \"NIL\": [\"triplesBlock\"], \n \"(\": [\"triplesBlock\"], \n \"[\": [\"triplesBlock\"], \n \"IRI_REF\": [\"triplesBlock\"], \n \"TRUE\": [\"triplesBlock\"], \n \"FALSE\": [\"triplesBlock\"], \n \"BLANK_NODE_LABEL\": [\"triplesBlock\"], \n \"ANON\": [\"triplesBlock\"], \n \"PNAME_LN\": [\"triplesBlock\"], \n \"PNAME_NS\": [\"triplesBlock\"], \n \"STRING_LITERAL1\": [\"triplesBlock\"], \n \"STRING_LITERAL2\": [\"triplesBlock\"], \n \"STRING_LITERAL_LONG1\": [\"triplesBlock\"], \n \"STRING_LITERAL_LONG2\": [\"triplesBlock\"], \n \"INTEGER\": [\"triplesBlock\"], \n \"DECIMAL\": [\"triplesBlock\"], \n \"DOUBLE\": [\"triplesBlock\"], \n \"INTEGER_POSITIVE\": [\"triplesBlock\"], \n \"DECIMAL_POSITIVE\": [\"triplesBlock\"], \n \"DOUBLE_POSITIVE\": [\"triplesBlock\"], \n \"INTEGER_NEGATIVE\": [\"triplesBlock\"], \n \"DECIMAL_NEGATIVE\": [\"triplesBlock\"], \n \"DOUBLE_NEGATIVE\": [\"triplesBlock\"], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?triplesTemplate\" : {\n \"VAR1\": [\"triplesTemplate\"], \n \"VAR2\": [\"triplesTemplate\"], \n \"NIL\": [\"triplesTemplate\"], \n \"(\": [\"triplesTemplate\"], \n \"[\": [\"triplesTemplate\"], \n \"IRI_REF\": [\"triplesTemplate\"], \n \"TRUE\": [\"triplesTemplate\"], \n \"FALSE\": [\"triplesTemplate\"], \n \"BLANK_NODE_LABEL\": [\"triplesTemplate\"], \n \"ANON\": [\"triplesTemplate\"], \n \"PNAME_LN\": [\"triplesTemplate\"], \n \"PNAME_NS\": [\"triplesTemplate\"], \n \"STRING_LITERAL1\": [\"triplesTemplate\"], \n \"STRING_LITERAL2\": [\"triplesTemplate\"], \n \"STRING_LITERAL_LONG1\": [\"triplesTemplate\"], \n \"STRING_LITERAL_LONG2\": [\"triplesTemplate\"], \n \"INTEGER\": [\"triplesTemplate\"], \n \"DECIMAL\": [\"triplesTemplate\"], \n \"DOUBLE\": [\"triplesTemplate\"], \n \"INTEGER_POSITIVE\": [\"triplesTemplate\"], \n \"DECIMAL_POSITIVE\": [\"triplesTemplate\"], \n \"DOUBLE_POSITIVE\": [\"triplesTemplate\"], \n \"INTEGER_NEGATIVE\": [\"triplesTemplate\"], \n \"DECIMAL_NEGATIVE\": [\"triplesTemplate\"], \n \"DOUBLE_NEGATIVE\": [\"triplesTemplate\"], \n \"}\": [], \n \"GRAPH\": []}, \n \"?whereClause\" : {\n \"WHERE\": [\"whereClause\"], \n \"{\": [\"whereClause\"], \n \"ORDER\": [], \n \"HAVING\": [], \n \"GROUP\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"VALUES\": [], \n \"$\": []}, \n \"[ (,*dataBlockValue,)]\" : {\n \"(\": [\"(\",\"*dataBlockValue\",\")\"]}, \n \"[ (,*var,)]\" : {\n \"(\": [\"(\",\"*var\",\")\"]}, \n \"[ (,expression,)]\" : {\n \"(\": [\"(\",\"expression\",\")\"]}, \n \"[ (,expression,AS,var,)]\" : {\n \"(\": [\"(\",\"expression\",\"AS\",\"var\",\")\"]}, \n \"[!=,numericExpression]\" : {\n \"!=\": [\"!=\",\"numericExpression\"]}, \n \"[&&,valueLogical]\" : {\n \"&&\": [\"&&\",\"valueLogical\"]}, \n \"[*,unaryExpression]\" : {\n \"*\": [\"*\",\"unaryExpression\"]}, \n \"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]\" : {\n \"WHERE\": [\"*datasetClause\",\"WHERE\",\"{\",\"?triplesTemplate\",\"}\",\"solutionModifier\"], \n \"FROM\": [\"*datasetClause\",\"WHERE\",\"{\",\"?triplesTemplate\",\"}\",\"solutionModifier\"]}, \n \"[+,multiplicativeExpression]\" : {\n \"+\": [\"+\",\"multiplicativeExpression\"]}, \n \"[,,expression]\" : {\n \",\": [\",\",\"expression\"]}, \n \"[,,integer,}]\" : {\n \",\": [\",\",\"integer\",\"}\"]}, \n \"[,,objectPath]\" : {\n \",\": [\",\",\"objectPath\"]}, \n \"[,,object]\" : {\n \",\": [\",\",\"object\"]}, \n \"[,,or([},[integer,}]])]\" : {\n \",\": [\",\",\"or([},[integer,}]])\"]}, \n \"[-,multiplicativeExpression]\" : {\n \"-\": [\"-\",\"multiplicativeExpression\"]}, \n \"[.,?constructTriples]\" : {\n \".\": [\".\",\"?constructTriples\"]}, \n \"[.,?triplesBlock]\" : {\n \".\": [\".\",\"?triplesBlock\"]}, \n \"[.,?triplesTemplate]\" : {\n \".\": [\".\",\"?triplesTemplate\"]}, \n \"[/,pathEltOrInverse]\" : {\n \"/\": [\"/\",\"pathEltOrInverse\"]}, \n \"[/,unaryExpression]\" : {\n \"/\": [\"/\",\"unaryExpression\"]}, \n \"[;,?[or([verbPath,verbSimple]),objectList]]\" : {\n \";\": [\";\",\"?[or([verbPath,verbSimple]),objectList]\"]}, \n \"[;,?[verb,objectList]]\" : {\n \";\": [\";\",\"?[verb,objectList]\"]}, \n \"[;,SEPARATOR,=,string]\" : {\n \";\": [\";\",\"SEPARATOR\",\"=\",\"string\"]}, \n \"[;,update]\" : {\n \";\": [\";\",\"update\"]}, \n \"[<,numericExpression]\" : {\n \"<\": [\"<\",\"numericExpression\"]}, \n \"[<=,numericExpression]\" : {\n \"<=\": [\"<=\",\"numericExpression\"]}, \n \"[=,numericExpression]\" : {\n \"=\": [\"=\",\"numericExpression\"]}, \n \"[>,numericExpression]\" : {\n \">\": [\">\",\"numericExpression\"]}, \n \"[>=,numericExpression]\" : {\n \">=\": [\">=\",\"numericExpression\"]}, \n \"[AS,var]\" : {\n \"AS\": [\"AS\",\"var\"]}, \n \"[IN,expressionList]\" : {\n \"IN\": [\"IN\",\"expressionList\"]}, \n \"[INTO,graphRef]\" : {\n \"INTO\": [\"INTO\",\"graphRef\"]}, \n \"[NAMED,iriRef]\" : {\n \"NAMED\": [\"NAMED\",\"iriRef\"]}, \n \"[NOT,IN,expressionList]\" : {\n \"NOT\": [\"NOT\",\"IN\",\"expressionList\"]}, \n \"[UNION,groupGraphPattern]\" : {\n \"UNION\": [\"UNION\",\"groupGraphPattern\"]}, \n \"[^^,iriRef]\" : {\n \"^^\": [\"^^\",\"iriRef\"]}, \n \"[constructTemplate,*datasetClause,whereClause,solutionModifier]\" : {\n \"{\": [\"constructTemplate\",\"*datasetClause\",\"whereClause\",\"solutionModifier\"]}, \n \"[deleteClause,?insertClause]\" : {\n \"DELETE\": [\"deleteClause\",\"?insertClause\"]}, \n \"[graphPatternNotTriples,?.,?triplesBlock]\" : {\n \"{\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"OPTIONAL\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"MINUS\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"GRAPH\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"SERVICE\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"FILTER\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"BIND\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"VALUES\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"]}, \n \"[integer,or([[,,or([},[integer,}]])],}])]\" : {\n \"INTEGER\": [\"integer\",\"or([[,,or([},[integer,}]])],}])\"]}, \n \"[integer,}]\" : {\n \"INTEGER\": [\"integer\",\"}\"]}, \n \"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\" : {\n \"INTEGER_POSITIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_POSITIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_POSITIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER_NEGATIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_NEGATIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_NEGATIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"]}, \n \"[or([verbPath,verbSimple]),objectList]\" : {\n \"VAR1\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"VAR2\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"^\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"a\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"!\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"(\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"IRI_REF\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"PNAME_LN\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"PNAME_NS\": [\"or([verbPath,verbSimple])\",\"objectList\"]}, \n \"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\" : {\n \"a\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"^\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"IRI_REF\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"PNAME_LN\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"PNAME_NS\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"]}, \n \"[quadsNotTriples,?.,?triplesTemplate]\" : {\n \"GRAPH\": [\"quadsNotTriples\",\"?.\",\"?triplesTemplate\"]}, \n \"[update1,?[;,update]]\" : {\n \"INSERT\": [\"update1\",\"?[;,update]\"], \n \"DELETE\": [\"update1\",\"?[;,update]\"], \n \"LOAD\": [\"update1\",\"?[;,update]\"], \n \"CLEAR\": [\"update1\",\"?[;,update]\"], \n \"DROP\": [\"update1\",\"?[;,update]\"], \n \"ADD\": [\"update1\",\"?[;,update]\"], \n \"MOVE\": [\"update1\",\"?[;,update]\"], \n \"COPY\": [\"update1\",\"?[;,update]\"], \n \"CREATE\": [\"update1\",\"?[;,update]\"], \n \"WITH\": [\"update1\",\"?[;,update]\"]}, \n \"[verb,objectList]\" : {\n \"a\": [\"verb\",\"objectList\"], \n \"VAR1\": [\"verb\",\"objectList\"], \n \"VAR2\": [\"verb\",\"objectList\"], \n \"IRI_REF\": [\"verb\",\"objectList\"], \n \"PNAME_LN\": [\"verb\",\"objectList\"], \n \"PNAME_NS\": [\"verb\",\"objectList\"]}, \n \"[|,pathOneInPropertySet]\" : {\n \"|\": [\"|\",\"pathOneInPropertySet\"]}, \n \"[|,pathSequence]\" : {\n \"|\": [\"|\",\"pathSequence\"]}, \n \"[||,conditionalAndExpression]\" : {\n \"||\": [\"||\",\"conditionalAndExpression\"]}, \n \"add\" : {\n \"ADD\": [\"ADD\",\"?SILENT_4\",\"graphOrDefault\",\"TO\",\"graphOrDefault\"]}, \n \"additiveExpression\" : {\n \"!\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"+\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"-\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"VAR1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"VAR2\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"(\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"LANG\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"LANGMATCHES\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DATATYPE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"BOUND\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"IRI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"URI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"BNODE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"RAND\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ABS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"CEIL\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"FLOOR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ROUND\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"CONCAT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRLEN\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"UCASE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"LCASE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ENCODE_FOR_URI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"CONTAINS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRSTARTS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRENDS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRBEFORE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRAFTER\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"YEAR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MONTH\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DAY\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"HOURS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MINUTES\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SECONDS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"TIMEZONE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"TZ\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"NOW\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"UUID\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRUUID\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MD5\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA256\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA384\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA512\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"COALESCE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"IF\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRLANG\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRDT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SAMETERM\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISIRI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISURI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISBLANK\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISLITERAL\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISNUMERIC\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"TRUE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"FALSE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"COUNT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SUM\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MIN\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MAX\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"AVG\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SAMPLE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"GROUP_CONCAT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SUBSTR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"REPLACE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"REGEX\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"EXISTS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"NOT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"IRI_REF\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL2\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL_LONG1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL_LONG2\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_POSITIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_POSITIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_POSITIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_NEGATIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_NEGATIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_NEGATIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"PNAME_LN\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"PNAME_NS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"]}, \n \"aggregate\" : {\n \"COUNT\": [\"COUNT\",\"(\",\"?DISTINCT\",\"or([*,expression])\",\")\"], \n \"SUM\": [\"SUM\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"MIN\": [\"MIN\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"MAX\": [\"MAX\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"AVG\": [\"AVG\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"SAMPLE\": [\"SAMPLE\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"GROUP_CONCAT\": [\"GROUP_CONCAT\",\"(\",\"?DISTINCT\",\"expression\",\"?[;,SEPARATOR,=,string]\",\")\"]}, \n \"allowBnodes\" : {\n \"}\": []}, \n \"allowVars\" : {\n \"}\": []}, \n \"argList\" : {\n \"NIL\": [\"NIL\"], \n \"(\": [\"(\",\"?DISTINCT\",\"expression\",\"*[,,expression]\",\")\"]}, \n \"askQuery\" : {\n \"ASK\": [\"ASK\",\"*datasetClause\",\"whereClause\",\"solutionModifier\"]}, \n \"baseDecl\" : {\n \"BASE\": [\"BASE\",\"IRI_REF\"]}, \n \"bind\" : {\n \"BIND\": [\"BIND\",\"(\",\"expression\",\"AS\",\"var\",\")\"]}, \n \"blankNode\" : {\n \"BLANK_NODE_LABEL\": [\"BLANK_NODE_LABEL\"], \n \"ANON\": [\"ANON\"]}, \n \"blankNodePropertyList\" : {\n \"[\": [\"[\",\"propertyListNotEmpty\",\"]\"]}, \n \"blankNodePropertyListPath\" : {\n \"[\": [\"[\",\"propertyListPathNotEmpty\",\"]\"]}, \n \"booleanLiteral\" : {\n \"TRUE\": [\"TRUE\"], \n \"FALSE\": [\"FALSE\"]}, \n \"brackettedExpression\" : {\n \"(\": [\"(\",\"expression\",\")\"]}, \n \"builtInCall\" : {\n \"STR\": [\"STR\",\"(\",\"expression\",\")\"], \n \"LANG\": [\"LANG\",\"(\",\"expression\",\")\"], \n \"LANGMATCHES\": [\"LANGMATCHES\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"DATATYPE\": [\"DATATYPE\",\"(\",\"expression\",\")\"], \n \"BOUND\": [\"BOUND\",\"(\",\"var\",\")\"], \n \"IRI\": [\"IRI\",\"(\",\"expression\",\")\"], \n \"URI\": [\"URI\",\"(\",\"expression\",\")\"], \n \"BNODE\": [\"BNODE\",\"or([[ (,expression,)],NIL])\"], \n \"RAND\": [\"RAND\",\"NIL\"], \n \"ABS\": [\"ABS\",\"(\",\"expression\",\")\"], \n \"CEIL\": [\"CEIL\",\"(\",\"expression\",\")\"], \n \"FLOOR\": [\"FLOOR\",\"(\",\"expression\",\")\"], \n \"ROUND\": [\"ROUND\",\"(\",\"expression\",\")\"], \n \"CONCAT\": [\"CONCAT\",\"expressionList\"], \n \"SUBSTR\": [\"substringExpression\"], \n \"STRLEN\": [\"STRLEN\",\"(\",\"expression\",\")\"], \n \"REPLACE\": [\"strReplaceExpression\"], \n \"UCASE\": [\"UCASE\",\"(\",\"expression\",\")\"], \n \"LCASE\": [\"LCASE\",\"(\",\"expression\",\")\"], \n \"ENCODE_FOR_URI\": [\"ENCODE_FOR_URI\",\"(\",\"expression\",\")\"], \n \"CONTAINS\": [\"CONTAINS\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRSTARTS\": [\"STRSTARTS\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRENDS\": [\"STRENDS\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRBEFORE\": [\"STRBEFORE\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRAFTER\": [\"STRAFTER\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"YEAR\": [\"YEAR\",\"(\",\"expression\",\")\"], \n \"MONTH\": [\"MONTH\",\"(\",\"expression\",\")\"], \n \"DAY\": [\"DAY\",\"(\",\"expression\",\")\"], \n \"HOURS\": [\"HOURS\",\"(\",\"expression\",\")\"], \n \"MINUTES\": [\"MINUTES\",\"(\",\"expression\",\")\"], \n \"SECONDS\": [\"SECONDS\",\"(\",\"expression\",\")\"], \n \"TIMEZONE\": [\"TIMEZONE\",\"(\",\"expression\",\")\"], \n \"TZ\": [\"TZ\",\"(\",\"expression\",\")\"], \n \"NOW\": [\"NOW\",\"NIL\"], \n \"UUID\": [\"UUID\",\"NIL\"], \n \"STRUUID\": [\"STRUUID\",\"NIL\"], \n \"MD5\": [\"MD5\",\"(\",\"expression\",\")\"], \n \"SHA1\": [\"SHA1\",\"(\",\"expression\",\")\"], \n \"SHA256\": [\"SHA256\",\"(\",\"expression\",\")\"], \n \"SHA384\": [\"SHA384\",\"(\",\"expression\",\")\"], \n \"SHA512\": [\"SHA512\",\"(\",\"expression\",\")\"], \n \"COALESCE\": [\"COALESCE\",\"expressionList\"], \n \"IF\": [\"IF\",\"(\",\"expression\",\",\",\"expression\",\",\",\"expression\",\")\"], \n \"STRLANG\": [\"STRLANG\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRDT\": [\"STRDT\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"SAMETERM\": [\"SAMETERM\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"ISIRI\": [\"ISIRI\",\"(\",\"expression\",\")\"], \n \"ISURI\": [\"ISURI\",\"(\",\"expression\",\")\"], \n \"ISBLANK\": [\"ISBLANK\",\"(\",\"expression\",\")\"], \n \"ISLITERAL\": [\"ISLITERAL\",\"(\",\"expression\",\")\"], \n \"ISNUMERIC\": [\"ISNUMERIC\",\"(\",\"expression\",\")\"], \n \"REGEX\": [\"regexExpression\"], \n \"EXISTS\": [\"existsFunc\"], \n \"NOT\": [\"notExistsFunc\"]}, \n \"clear\" : {\n \"CLEAR\": [\"CLEAR\",\"?SILENT_2\",\"graphRefAll\"]}, \n \"collection\" : {\n \"(\": [\"(\",\"+graphNode\",\")\"]}, \n \"collectionPath\" : {\n \"(\": [\"(\",\"+graphNodePath\",\")\"]}, \n \"conditionalAndExpression\" : {\n \"!\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"+\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"-\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"VAR1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"VAR2\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"(\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"LANG\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"LANGMATCHES\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DATATYPE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"BOUND\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"IRI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"URI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"BNODE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"RAND\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ABS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"CEIL\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"FLOOR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ROUND\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"CONCAT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRLEN\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"UCASE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"LCASE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ENCODE_FOR_URI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"CONTAINS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRSTARTS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRENDS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRBEFORE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRAFTER\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"YEAR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MONTH\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DAY\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"HOURS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MINUTES\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SECONDS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"TIMEZONE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"TZ\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"NOW\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"UUID\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRUUID\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MD5\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA256\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA384\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA512\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"COALESCE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"IF\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRLANG\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRDT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SAMETERM\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISIRI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISURI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISBLANK\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISLITERAL\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISNUMERIC\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"TRUE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"FALSE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"COUNT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SUM\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MIN\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MAX\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"AVG\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SAMPLE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"GROUP_CONCAT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SUBSTR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"REPLACE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"REGEX\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"EXISTS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"NOT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"IRI_REF\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL2\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL_LONG1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL_LONG2\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"INTEGER\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DECIMAL\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DOUBLE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"INTEGER_POSITIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DECIMAL_POSITIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DOUBLE_POSITIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"INTEGER_NEGATIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DECIMAL_NEGATIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DOUBLE_NEGATIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"PNAME_LN\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"PNAME_NS\": [\"valueLogical\",\"*[&&,valueLogical]\"]}, \n \"conditionalOrExpression\" : {\n \"!\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"+\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"-\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"VAR1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"VAR2\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"(\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"LANG\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"LANGMATCHES\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DATATYPE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"BOUND\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"IRI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"URI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"BNODE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"RAND\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ABS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"CEIL\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"FLOOR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ROUND\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"CONCAT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRLEN\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"UCASE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"LCASE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ENCODE_FOR_URI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"CONTAINS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRSTARTS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRENDS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRBEFORE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRAFTER\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"YEAR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MONTH\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DAY\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"HOURS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MINUTES\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SECONDS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"TIMEZONE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"TZ\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"NOW\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"UUID\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRUUID\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MD5\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA256\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA384\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA512\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"COALESCE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"IF\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRLANG\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRDT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SAMETERM\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISIRI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISURI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISBLANK\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISLITERAL\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISNUMERIC\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"TRUE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"FALSE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"COUNT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SUM\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MIN\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MAX\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"AVG\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SAMPLE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"GROUP_CONCAT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SUBSTR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"REPLACE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"REGEX\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"EXISTS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"NOT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"IRI_REF\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL2\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL_LONG1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL_LONG2\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"INTEGER\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DECIMAL\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DOUBLE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"INTEGER_POSITIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DECIMAL_POSITIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DOUBLE_POSITIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"INTEGER_NEGATIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DECIMAL_NEGATIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DOUBLE_NEGATIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"PNAME_LN\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"PNAME_NS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"]}, \n \"constraint\" : {\n \"(\": [\"brackettedExpression\"], \n \"STR\": [\"builtInCall\"], \n \"LANG\": [\"builtInCall\"], \n \"LANGMATCHES\": [\"builtInCall\"], \n \"DATATYPE\": [\"builtInCall\"], \n \"BOUND\": [\"builtInCall\"], \n \"IRI\": [\"builtInCall\"], \n \"URI\": [\"builtInCall\"], \n \"BNODE\": [\"builtInCall\"], \n \"RAND\": [\"builtInCall\"], \n \"ABS\": [\"builtInCall\"], \n \"CEIL\": [\"builtInCall\"], \n \"FLOOR\": [\"builtInCall\"], \n \"ROUND\": [\"builtInCall\"], \n \"CONCAT\": [\"builtInCall\"], \n \"STRLEN\": [\"builtInCall\"], \n \"UCASE\": [\"builtInCall\"], \n \"LCASE\": [\"builtInCall\"], \n \"ENCODE_FOR_URI\": [\"builtInCall\"], \n \"CONTAINS\": [\"builtInCall\"], \n \"STRSTARTS\": [\"builtInCall\"], \n \"STRENDS\": [\"builtInCall\"], \n \"STRBEFORE\": [\"builtInCall\"], \n \"STRAFTER\": [\"builtInCall\"], \n \"YEAR\": [\"builtInCall\"], \n \"MONTH\": [\"builtInCall\"], \n \"DAY\": [\"builtInCall\"], \n \"HOURS\": [\"builtInCall\"], \n \"MINUTES\": [\"builtInCall\"], \n \"SECONDS\": [\"builtInCall\"], \n \"TIMEZONE\": [\"builtInCall\"], \n \"TZ\": [\"builtInCall\"], \n \"NOW\": [\"builtInCall\"], \n \"UUID\": [\"builtInCall\"], \n \"STRUUID\": [\"builtInCall\"], \n \"MD5\": [\"builtInCall\"], \n \"SHA1\": [\"builtInCall\"], \n \"SHA256\": [\"builtInCall\"], \n \"SHA384\": [\"builtInCall\"], \n \"SHA512\": [\"builtInCall\"], \n \"COALESCE\": [\"builtInCall\"], \n \"IF\": [\"builtInCall\"], \n \"STRLANG\": [\"builtInCall\"], \n \"STRDT\": [\"builtInCall\"], \n \"SAMETERM\": [\"builtInCall\"], \n \"ISIRI\": [\"builtInCall\"], \n \"ISURI\": [\"builtInCall\"], \n \"ISBLANK\": [\"builtInCall\"], \n \"ISLITERAL\": [\"builtInCall\"], \n \"ISNUMERIC\": [\"builtInCall\"], \n \"SUBSTR\": [\"builtInCall\"], \n \"REPLACE\": [\"builtInCall\"], \n \"REGEX\": [\"builtInCall\"], \n \"EXISTS\": [\"builtInCall\"], \n \"NOT\": [\"builtInCall\"], \n \"IRI_REF\": [\"functionCall\"], \n \"PNAME_LN\": [\"functionCall\"], \n \"PNAME_NS\": [\"functionCall\"]}, \n \"constructQuery\" : {\n \"CONSTRUCT\": [\"CONSTRUCT\",\"or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])\"]}, \n \"constructTemplate\" : {\n \"{\": [\"{\",\"?constructTriples\",\"}\"]}, \n \"constructTriples\" : {\n \"VAR1\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"VAR2\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"NIL\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"(\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"[\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"IRI_REF\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"TRUE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"FALSE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"BLANK_NODE_LABEL\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"ANON\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"PNAME_LN\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"PNAME_NS\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL1\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL2\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL_LONG1\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL_LONG2\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"INTEGER\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DECIMAL\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DOUBLE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"INTEGER_POSITIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DECIMAL_POSITIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DOUBLE_POSITIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"INTEGER_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DECIMAL_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DOUBLE_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"]}, \n \"copy\" : {\n \"COPY\": [\"COPY\",\"?SILENT_4\",\"graphOrDefault\",\"TO\",\"graphOrDefault\"]}, \n \"create\" : {\n \"CREATE\": [\"CREATE\",\"?SILENT_3\",\"graphRef\"]}, \n \"dataBlock\" : {\n \"NIL\": [\"or([inlineDataOneVar,inlineDataFull])\"], \n \"(\": [\"or([inlineDataOneVar,inlineDataFull])\"], \n \"VAR1\": [\"or([inlineDataOneVar,inlineDataFull])\"], \n \"VAR2\": [\"or([inlineDataOneVar,inlineDataFull])\"]}, \n \"dataBlockValue\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"STRING_LITERAL1\": [\"rdfLiteral\"], \n \"STRING_LITERAL2\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG1\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG2\": [\"rdfLiteral\"], \n \"INTEGER\": [\"numericLiteral\"], \n \"DECIMAL\": [\"numericLiteral\"], \n \"DOUBLE\": [\"numericLiteral\"], \n \"INTEGER_POSITIVE\": [\"numericLiteral\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteral\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteral\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteral\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteral\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteral\"], \n \"TRUE\": [\"booleanLiteral\"], \n \"FALSE\": [\"booleanLiteral\"], \n \"UNDEF\": [\"UNDEF\"]}, \n \"datasetClause\" : {\n \"FROM\": [\"FROM\",\"or([defaultGraphClause,namedGraphClause])\"]}, \n \"defaultGraphClause\" : {\n \"IRI_REF\": [\"sourceSelector\"], \n \"PNAME_LN\": [\"sourceSelector\"], \n \"PNAME_NS\": [\"sourceSelector\"]}, \n \"delete1\" : {\n \"DATA\": [\"DATA\",\"quadDataNoBnodes\"], \n \"WHERE\": [\"WHERE\",\"quadPatternNoBnodes\"], \n \"{\": [\"quadPatternNoBnodes\",\"?insertClause\",\"*usingClause\",\"WHERE\",\"groupGraphPattern\"]}, \n \"deleteClause\" : {\n \"DELETE\": [\"DELETE\",\"quadPattern\"]}, \n \"describeDatasetClause\" : {\n \"FROM\": [\"FROM\",\"or([defaultGraphClause,namedGraphClause])\"]}, \n \"describeQuery\" : {\n \"DESCRIBE\": [\"DESCRIBE\",\"or([+varOrIRIref,*])\",\"*describeDatasetClause\",\"?whereClause\",\"solutionModifier\"]}, \n \"disallowBnodes\" : {\n \"}\": [], \n \"GRAPH\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"disallowVars\" : {\n \"}\": [], \n \"GRAPH\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"drop\" : {\n \"DROP\": [\"DROP\",\"?SILENT_2\",\"graphRefAll\"]}, \n \"existsFunc\" : {\n \"EXISTS\": [\"EXISTS\",\"groupGraphPattern\"]}, \n \"expression\" : {\n \"!\": [\"conditionalOrExpression\"], \n \"+\": [\"conditionalOrExpression\"], \n \"-\": [\"conditionalOrExpression\"], \n \"VAR1\": [\"conditionalOrExpression\"], \n \"VAR2\": [\"conditionalOrExpression\"], \n \"(\": [\"conditionalOrExpression\"], \n \"STR\": [\"conditionalOrExpression\"], \n \"LANG\": [\"conditionalOrExpression\"], \n \"LANGMATCHES\": [\"conditionalOrExpression\"], \n \"DATATYPE\": [\"conditionalOrExpression\"], \n \"BOUND\": [\"conditionalOrExpression\"], \n \"IRI\": [\"conditionalOrExpression\"], \n \"URI\": [\"conditionalOrExpression\"], \n \"BNODE\": [\"conditionalOrExpression\"], \n \"RAND\": [\"conditionalOrExpression\"], \n \"ABS\": [\"conditionalOrExpression\"], \n \"CEIL\": [\"conditionalOrExpression\"], \n \"FLOOR\": [\"conditionalOrExpression\"], \n \"ROUND\": [\"conditionalOrExpression\"], \n \"CONCAT\": [\"conditionalOrExpression\"], \n \"STRLEN\": [\"conditionalOrExpression\"], \n \"UCASE\": [\"conditionalOrExpression\"], \n \"LCASE\": [\"conditionalOrExpression\"], \n \"ENCODE_FOR_URI\": [\"conditionalOrExpression\"], \n \"CONTAINS\": [\"conditionalOrExpression\"], \n \"STRSTARTS\": [\"conditionalOrExpression\"], \n \"STRENDS\": [\"conditionalOrExpression\"], \n \"STRBEFORE\": [\"conditionalOrExpression\"], \n \"STRAFTER\": [\"conditionalOrExpression\"], \n \"YEAR\": [\"conditionalOrExpression\"], \n \"MONTH\": [\"conditionalOrExpression\"], \n \"DAY\": [\"conditionalOrExpression\"], \n \"HOURS\": [\"conditionalOrExpression\"], \n \"MINUTES\": [\"conditionalOrExpression\"], \n \"SECONDS\": [\"conditionalOrExpression\"], \n \"TIMEZONE\": [\"conditionalOrExpression\"], \n \"TZ\": [\"conditionalOrExpression\"], \n \"NOW\": [\"conditionalOrExpression\"], \n \"UUID\": [\"conditionalOrExpression\"], \n \"STRUUID\": [\"conditionalOrExpression\"], \n \"MD5\": [\"conditionalOrExpression\"], \n \"SHA1\": [\"conditionalOrExpression\"], \n \"SHA256\": [\"conditionalOrExpression\"], \n \"SHA384\": [\"conditionalOrExpression\"], \n \"SHA512\": [\"conditionalOrExpression\"], \n \"COALESCE\": [\"conditionalOrExpression\"], \n \"IF\": [\"conditionalOrExpression\"], \n \"STRLANG\": [\"conditionalOrExpression\"], \n \"STRDT\": [\"conditionalOrExpression\"], \n \"SAMETERM\": [\"conditionalOrExpression\"], \n \"ISIRI\": [\"conditionalOrExpression\"], \n \"ISURI\": [\"conditionalOrExpression\"], \n \"ISBLANK\": [\"conditionalOrExpression\"], \n \"ISLITERAL\": [\"conditionalOrExpression\"], \n \"ISNUMERIC\": [\"conditionalOrExpression\"], \n \"TRUE\": [\"conditionalOrExpression\"], \n \"FALSE\": [\"conditionalOrExpression\"], \n \"COUNT\": [\"conditionalOrExpression\"], \n \"SUM\": [\"conditionalOrExpression\"], \n \"MIN\": [\"conditionalOrExpression\"], \n \"MAX\": [\"conditionalOrExpression\"], \n \"AVG\": [\"conditionalOrExpression\"], \n \"SAMPLE\": [\"conditionalOrExpression\"], \n \"GROUP_CONCAT\": [\"conditionalOrExpression\"], \n \"SUBSTR\": [\"conditionalOrExpression\"], \n \"REPLACE\": [\"conditionalOrExpression\"], \n \"REGEX\": [\"conditionalOrExpression\"], \n \"EXISTS\": [\"conditionalOrExpression\"], \n \"NOT\": [\"conditionalOrExpression\"], \n \"IRI_REF\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL1\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL2\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL_LONG1\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL_LONG2\": [\"conditionalOrExpression\"], \n \"INTEGER\": [\"conditionalOrExpression\"], \n \"DECIMAL\": [\"conditionalOrExpression\"], \n \"DOUBLE\": [\"conditionalOrExpression\"], \n \"INTEGER_POSITIVE\": [\"conditionalOrExpression\"], \n \"DECIMAL_POSITIVE\": [\"conditionalOrExpression\"], \n \"DOUBLE_POSITIVE\": [\"conditionalOrExpression\"], \n \"INTEGER_NEGATIVE\": [\"conditionalOrExpression\"], \n \"DECIMAL_NEGATIVE\": [\"conditionalOrExpression\"], \n \"DOUBLE_NEGATIVE\": [\"conditionalOrExpression\"], \n \"PNAME_LN\": [\"conditionalOrExpression\"], \n \"PNAME_NS\": [\"conditionalOrExpression\"]}, \n \"expressionList\" : {\n \"NIL\": [\"NIL\"], \n \"(\": [\"(\",\"expression\",\"*[,,expression]\",\")\"]}, \n \"filter\" : {\n \"FILTER\": [\"FILTER\",\"constraint\"]}, \n \"functionCall\" : {\n \"IRI_REF\": [\"iriRef\",\"argList\"], \n \"PNAME_LN\": [\"iriRef\",\"argList\"], \n \"PNAME_NS\": [\"iriRef\",\"argList\"]}, \n \"graphGraphPattern\" : {\n \"GRAPH\": [\"GRAPH\",\"varOrIRIref\",\"groupGraphPattern\"]}, \n \"graphNode\" : {\n \"VAR1\": [\"varOrTerm\"], \n \"VAR2\": [\"varOrTerm\"], \n \"NIL\": [\"varOrTerm\"], \n \"IRI_REF\": [\"varOrTerm\"], \n \"TRUE\": [\"varOrTerm\"], \n \"FALSE\": [\"varOrTerm\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\"], \n \"ANON\": [\"varOrTerm\"], \n \"PNAME_LN\": [\"varOrTerm\"], \n \"PNAME_NS\": [\"varOrTerm\"], \n \"STRING_LITERAL1\": [\"varOrTerm\"], \n \"STRING_LITERAL2\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\"], \n \"INTEGER\": [\"varOrTerm\"], \n \"DECIMAL\": [\"varOrTerm\"], \n \"DOUBLE\": [\"varOrTerm\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\"], \n \"(\": [\"triplesNode\"], \n \"[\": [\"triplesNode\"]}, \n \"graphNodePath\" : {\n \"VAR1\": [\"varOrTerm\"], \n \"VAR2\": [\"varOrTerm\"], \n \"NIL\": [\"varOrTerm\"], \n \"IRI_REF\": [\"varOrTerm\"], \n \"TRUE\": [\"varOrTerm\"], \n \"FALSE\": [\"varOrTerm\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\"], \n \"ANON\": [\"varOrTerm\"], \n \"PNAME_LN\": [\"varOrTerm\"], \n \"PNAME_NS\": [\"varOrTerm\"], \n \"STRING_LITERAL1\": [\"varOrTerm\"], \n \"STRING_LITERAL2\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\"], \n \"INTEGER\": [\"varOrTerm\"], \n \"DECIMAL\": [\"varOrTerm\"], \n \"DOUBLE\": [\"varOrTerm\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\"], \n \"(\": [\"triplesNodePath\"], \n \"[\": [\"triplesNodePath\"]}, \n \"graphOrDefault\" : {\n \"DEFAULT\": [\"DEFAULT\"], \n \"IRI_REF\": [\"?GRAPH\",\"iriRef\"], \n \"PNAME_LN\": [\"?GRAPH\",\"iriRef\"], \n \"PNAME_NS\": [\"?GRAPH\",\"iriRef\"], \n \"GRAPH\": [\"?GRAPH\",\"iriRef\"]}, \n \"graphPatternNotTriples\" : {\n \"{\": [\"groupOrUnionGraphPattern\"], \n \"OPTIONAL\": [\"optionalGraphPattern\"], \n \"MINUS\": [\"minusGraphPattern\"], \n \"GRAPH\": [\"graphGraphPattern\"], \n \"SERVICE\": [\"serviceGraphPattern\"], \n \"FILTER\": [\"filter\"], \n \"BIND\": [\"bind\"], \n \"VALUES\": [\"inlineData\"]}, \n \"graphRef\" : {\n \"GRAPH\": [\"GRAPH\",\"iriRef\"]}, \n \"graphRefAll\" : {\n \"GRAPH\": [\"graphRef\"], \n \"DEFAULT\": [\"DEFAULT\"], \n \"NAMED\": [\"NAMED\"], \n \"ALL\": [\"ALL\"]}, \n \"graphTerm\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"STRING_LITERAL1\": [\"rdfLiteral\"], \n \"STRING_LITERAL2\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG1\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG2\": [\"rdfLiteral\"], \n \"INTEGER\": [\"numericLiteral\"], \n \"DECIMAL\": [\"numericLiteral\"], \n \"DOUBLE\": [\"numericLiteral\"], \n \"INTEGER_POSITIVE\": [\"numericLiteral\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteral\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteral\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteral\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteral\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteral\"], \n \"TRUE\": [\"booleanLiteral\"], \n \"FALSE\": [\"booleanLiteral\"], \n \"BLANK_NODE_LABEL\": [\"blankNode\"], \n \"ANON\": [\"blankNode\"], \n \"NIL\": [\"NIL\"]}, \n \"groupClause\" : {\n \"GROUP\": [\"GROUP\",\"BY\",\"+groupCondition\"]}, \n \"groupCondition\" : {\n \"STR\": [\"builtInCall\"], \n \"LANG\": [\"builtInCall\"], \n \"LANGMATCHES\": [\"builtInCall\"], \n \"DATATYPE\": [\"builtInCall\"], \n \"BOUND\": [\"builtInCall\"], \n \"IRI\": [\"builtInCall\"], \n \"URI\": [\"builtInCall\"], \n \"BNODE\": [\"builtInCall\"], \n \"RAND\": [\"builtInCall\"], \n \"ABS\": [\"builtInCall\"], \n \"CEIL\": [\"builtInCall\"], \n \"FLOOR\": [\"builtInCall\"], \n \"ROUND\": [\"builtInCall\"], \n \"CONCAT\": [\"builtInCall\"], \n \"STRLEN\": [\"builtInCall\"], \n \"UCASE\": [\"builtInCall\"], \n \"LCASE\": [\"builtInCall\"], \n \"ENCODE_FOR_URI\": [\"builtInCall\"], \n \"CONTAINS\": [\"builtInCall\"], \n \"STRSTARTS\": [\"builtInCall\"], \n \"STRENDS\": [\"builtInCall\"], \n \"STRBEFORE\": [\"builtInCall\"], \n \"STRAFTER\": [\"builtInCall\"], \n \"YEAR\": [\"builtInCall\"], \n \"MONTH\": [\"builtInCall\"], \n \"DAY\": [\"builtInCall\"], \n \"HOURS\": [\"builtInCall\"], \n \"MINUTES\": [\"builtInCall\"], \n \"SECONDS\": [\"builtInCall\"], \n \"TIMEZONE\": [\"builtInCall\"], \n \"TZ\": [\"builtInCall\"], \n \"NOW\": [\"builtInCall\"], \n \"UUID\": [\"builtInCall\"], \n \"STRUUID\": [\"builtInCall\"], \n \"MD5\": [\"builtInCall\"], \n \"SHA1\": [\"builtInCall\"], \n \"SHA256\": [\"builtInCall\"], \n \"SHA384\": [\"builtInCall\"], \n \"SHA512\": [\"builtInCall\"], \n \"COALESCE\": [\"builtInCall\"], \n \"IF\": [\"builtInCall\"], \n \"STRLANG\": [\"builtInCall\"], \n \"STRDT\": [\"builtInCall\"], \n \"SAMETERM\": [\"builtInCall\"], \n \"ISIRI\": [\"builtInCall\"], \n \"ISURI\": [\"builtInCall\"], \n \"ISBLANK\": [\"builtInCall\"], \n \"ISLITERAL\": [\"builtInCall\"], \n \"ISNUMERIC\": [\"builtInCall\"], \n \"SUBSTR\": [\"builtInCall\"], \n \"REPLACE\": [\"builtInCall\"], \n \"REGEX\": [\"builtInCall\"], \n \"EXISTS\": [\"builtInCall\"], \n \"NOT\": [\"builtInCall\"], \n \"IRI_REF\": [\"functionCall\"], \n \"PNAME_LN\": [\"functionCall\"], \n \"PNAME_NS\": [\"functionCall\"], \n \"(\": [\"(\",\"expression\",\"?[AS,var]\",\")\"], \n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"]}, \n \"groupGraphPattern\" : {\n \"{\": [\"{\",\"or([subSelect,groupGraphPatternSub])\",\"}\"]}, \n \"groupGraphPatternSub\" : {\n \"{\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"OPTIONAL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"MINUS\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"GRAPH\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"SERVICE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"FILTER\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"BIND\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VALUES\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VAR1\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VAR2\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"NIL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"(\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"[\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"IRI_REF\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"TRUE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"FALSE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"BLANK_NODE_LABEL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"ANON\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"PNAME_LN\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"PNAME_NS\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL1\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL2\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG1\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG2\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"INTEGER\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DECIMAL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DOUBLE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"INTEGER_POSITIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DECIMAL_POSITIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DOUBLE_POSITIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"INTEGER_NEGATIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DECIMAL_NEGATIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DOUBLE_NEGATIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"}\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"]}, \n \"groupOrUnionGraphPattern\" : {\n \"{\": [\"groupGraphPattern\",\"*[UNION,groupGraphPattern]\"]}, \n \"havingClause\" : {\n \"HAVING\": [\"HAVING\",\"+havingCondition\"]}, \n \"havingCondition\" : {\n \"(\": [\"constraint\"], \n \"STR\": [\"constraint\"], \n \"LANG\": [\"constraint\"], \n \"LANGMATCHES\": [\"constraint\"], \n \"DATATYPE\": [\"constraint\"], \n \"BOUND\": [\"constraint\"], \n \"IRI\": [\"constraint\"], \n \"URI\": [\"constraint\"], \n \"BNODE\": [\"constraint\"], \n \"RAND\": [\"constraint\"], \n \"ABS\": [\"constraint\"], \n \"CEIL\": [\"constraint\"], \n \"FLOOR\": [\"constraint\"], \n \"ROUND\": [\"constraint\"], \n \"CONCAT\": [\"constraint\"], \n \"STRLEN\": [\"constraint\"], \n \"UCASE\": [\"constraint\"], \n \"LCASE\": [\"constraint\"], \n \"ENCODE_FOR_URI\": [\"constraint\"], \n \"CONTAINS\": [\"constraint\"], \n \"STRSTARTS\": [\"constraint\"], \n \"STRENDS\": [\"constraint\"], \n \"STRBEFORE\": [\"constraint\"], \n \"STRAFTER\": [\"constraint\"], \n \"YEAR\": [\"constraint\"], \n \"MONTH\": [\"constraint\"], \n \"DAY\": [\"constraint\"], \n \"HOURS\": [\"constraint\"], \n \"MINUTES\": [\"constraint\"], \n \"SECONDS\": [\"constraint\"], \n \"TIMEZONE\": [\"constraint\"], \n \"TZ\": [\"constraint\"], \n \"NOW\": [\"constraint\"], \n \"UUID\": [\"constraint\"], \n \"STRUUID\": [\"constraint\"], \n \"MD5\": [\"constraint\"], \n \"SHA1\": [\"constraint\"], \n \"SHA256\": [\"constraint\"], \n \"SHA384\": [\"constraint\"], \n \"SHA512\": [\"constraint\"], \n \"COALESCE\": [\"constraint\"], \n \"IF\": [\"constraint\"], \n \"STRLANG\": [\"constraint\"], \n \"STRDT\": [\"constraint\"], \n \"SAMETERM\": [\"constraint\"], \n \"ISIRI\": [\"constraint\"], \n \"ISURI\": [\"constraint\"], \n \"ISBLANK\": [\"constraint\"], \n \"ISLITERAL\": [\"constraint\"], \n \"ISNUMERIC\": [\"constraint\"], \n \"SUBSTR\": [\"constraint\"], \n \"REPLACE\": [\"constraint\"], \n \"REGEX\": [\"constraint\"], \n \"EXISTS\": [\"constraint\"], \n \"NOT\": [\"constraint\"], \n \"IRI_REF\": [\"constraint\"], \n \"PNAME_LN\": [\"constraint\"], \n \"PNAME_NS\": [\"constraint\"]}, \n \"inlineData\" : {\n \"VALUES\": [\"VALUES\",\"dataBlock\"]}, \n \"inlineDataFull\" : {\n \"NIL\": [\"or([NIL,[ (,*var,)]])\",\"{\",\"*or([[ (,*dataBlockValue,)],NIL])\",\"}\"], \n \"(\": [\"or([NIL,[ (,*var,)]])\",\"{\",\"*or([[ (,*dataBlockValue,)],NIL])\",\"}\"]}, \n \"inlineDataOneVar\" : {\n \"VAR1\": [\"var\",\"{\",\"*dataBlockValue\",\"}\"], \n \"VAR2\": [\"var\",\"{\",\"*dataBlockValue\",\"}\"]}, \n \"insert1\" : {\n \"DATA\": [\"DATA\",\"quadData\"], \n \"{\": [\"quadPattern\",\"*usingClause\",\"WHERE\",\"groupGraphPattern\"]}, \n \"insertClause\" : {\n \"INSERT\": [\"INSERT\",\"quadPattern\"]}, \n \"integer\" : {\n \"INTEGER\": [\"INTEGER\"]}, \n \"iriRef\" : {\n \"IRI_REF\": [\"IRI_REF\"], \n \"PNAME_LN\": [\"prefixedName\"], \n \"PNAME_NS\": [\"prefixedName\"]}, \n \"iriRefOrFunction\" : {\n \"IRI_REF\": [\"iriRef\",\"?argList\"], \n \"PNAME_LN\": [\"iriRef\",\"?argList\"], \n \"PNAME_NS\": [\"iriRef\",\"?argList\"]}, \n \"limitClause\" : {\n \"LIMIT\": [\"LIMIT\",\"INTEGER\"]}, \n \"limitOffsetClauses\" : {\n \"LIMIT\": [\"limitClause\",\"?offsetClause\"], \n \"OFFSET\": [\"offsetClause\",\"?limitClause\"]}, \n \"load\" : {\n \"LOAD\": [\"LOAD\",\"?SILENT_1\",\"iriRef\",\"?[INTO,graphRef]\"]}, \n \"minusGraphPattern\" : {\n \"MINUS\": [\"MINUS\",\"groupGraphPattern\"]}, \n \"modify\" : {\n \"WITH\": [\"WITH\",\"iriRef\",\"or([[deleteClause,?insertClause],insertClause])\",\"*usingClause\",\"WHERE\",\"groupGraphPattern\"]}, \n \"move\" : {\n \"MOVE\": [\"MOVE\",\"?SILENT_4\",\"graphOrDefault\",\"TO\",\"graphOrDefault\"]}, \n \"multiplicativeExpression\" : {\n \"!\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"+\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"-\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"VAR1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"VAR2\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"(\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"LANG\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"LANGMATCHES\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DATATYPE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"BOUND\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"IRI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"URI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"BNODE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"RAND\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ABS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"CEIL\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"FLOOR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ROUND\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"CONCAT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRLEN\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"UCASE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"LCASE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ENCODE_FOR_URI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"CONTAINS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRSTARTS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRENDS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRBEFORE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRAFTER\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"YEAR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MONTH\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DAY\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"HOURS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MINUTES\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SECONDS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"TIMEZONE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"TZ\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"NOW\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"UUID\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRUUID\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MD5\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA256\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA384\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA512\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"COALESCE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"IF\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRLANG\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRDT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SAMETERM\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISIRI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISURI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISBLANK\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISLITERAL\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISNUMERIC\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"TRUE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"FALSE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"COUNT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SUM\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MIN\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MAX\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"AVG\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SAMPLE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"GROUP_CONCAT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SUBSTR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"REPLACE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"REGEX\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"EXISTS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"NOT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"IRI_REF\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL2\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL_LONG1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL_LONG2\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER_POSITIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_POSITIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_POSITIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER_NEGATIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_NEGATIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_NEGATIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"PNAME_LN\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"PNAME_NS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"]}, \n \"namedGraphClause\" : {\n \"NAMED\": [\"NAMED\",\"sourceSelector\"]}, \n \"notExistsFunc\" : {\n \"NOT\": [\"NOT\",\"EXISTS\",\"groupGraphPattern\"]}, \n \"numericExpression\" : {\n \"!\": [\"additiveExpression\"], \n \"+\": [\"additiveExpression\"], \n \"-\": [\"additiveExpression\"], \n \"VAR1\": [\"additiveExpression\"], \n \"VAR2\": [\"additiveExpression\"], \n \"(\": [\"additiveExpression\"], \n \"STR\": [\"additiveExpression\"], \n \"LANG\": [\"additiveExpression\"], \n \"LANGMATCHES\": [\"additiveExpression\"], \n \"DATATYPE\": [\"additiveExpression\"], \n \"BOUND\": [\"additiveExpression\"], \n \"IRI\": [\"additiveExpression\"], \n \"URI\": [\"additiveExpression\"], \n \"BNODE\": [\"additiveExpression\"], \n \"RAND\": [\"additiveExpression\"], \n \"ABS\": [\"additiveExpression\"], \n \"CEIL\": [\"additiveExpression\"], \n \"FLOOR\": [\"additiveExpression\"], \n \"ROUND\": [\"additiveExpression\"], \n \"CONCAT\": [\"additiveExpression\"], \n \"STRLEN\": [\"additiveExpression\"], \n \"UCASE\": [\"additiveExpression\"], \n \"LCASE\": [\"additiveExpression\"], \n \"ENCODE_FOR_URI\": [\"additiveExpression\"], \n \"CONTAINS\": [\"additiveExpression\"], \n \"STRSTARTS\": [\"additiveExpression\"], \n \"STRENDS\": [\"additiveExpression\"], \n \"STRBEFORE\": [\"additiveExpression\"], \n \"STRAFTER\": [\"additiveExpression\"], \n \"YEAR\": [\"additiveExpression\"], \n \"MONTH\": [\"additiveExpression\"], \n \"DAY\": [\"additiveExpression\"], \n \"HOURS\": [\"additiveExpression\"], \n \"MINUTES\": [\"additiveExpression\"], \n \"SECONDS\": [\"additiveExpression\"], \n \"TIMEZONE\": [\"additiveExpression\"], \n \"TZ\": [\"additiveExpression\"], \n \"NOW\": [\"additiveExpression\"], \n \"UUID\": [\"additiveExpression\"], \n \"STRUUID\": [\"additiveExpression\"], \n \"MD5\": [\"additiveExpression\"], \n \"SHA1\": [\"additiveExpression\"], \n \"SHA256\": [\"additiveExpression\"], \n \"SHA384\": [\"additiveExpression\"], \n \"SHA512\": [\"additiveExpression\"], \n \"COALESCE\": [\"additiveExpression\"], \n \"IF\": [\"additiveExpression\"], \n \"STRLANG\": [\"additiveExpression\"], \n \"STRDT\": [\"additiveExpression\"], \n \"SAMETERM\": [\"additiveExpression\"], \n \"ISIRI\": [\"additiveExpression\"], \n \"ISURI\": [\"additiveExpression\"], \n \"ISBLANK\": [\"additiveExpression\"], \n \"ISLITERAL\": [\"additiveExpression\"], \n \"ISNUMERIC\": [\"additiveExpression\"], \n \"TRUE\": [\"additiveExpression\"], \n \"FALSE\": [\"additiveExpression\"], \n \"COUNT\": [\"additiveExpression\"], \n \"SUM\": [\"additiveExpression\"], \n \"MIN\": [\"additiveExpression\"], \n \"MAX\": [\"additiveExpression\"], \n \"AVG\": [\"additiveExpression\"], \n \"SAMPLE\": [\"additiveExpression\"], \n \"GROUP_CONCAT\": [\"additiveExpression\"], \n \"SUBSTR\": [\"additiveExpression\"], \n \"REPLACE\": [\"additiveExpression\"], \n \"REGEX\": [\"additiveExpression\"], \n \"EXISTS\": [\"additiveExpression\"], \n \"NOT\": [\"additiveExpression\"], \n \"IRI_REF\": [\"additiveExpression\"], \n \"STRING_LITERAL1\": [\"additiveExpression\"], \n \"STRING_LITERAL2\": [\"additiveExpression\"], \n \"STRING_LITERAL_LONG1\": [\"additiveExpression\"], \n \"STRING_LITERAL_LONG2\": [\"additiveExpression\"], \n \"INTEGER\": [\"additiveExpression\"], \n \"DECIMAL\": [\"additiveExpression\"], \n \"DOUBLE\": [\"additiveExpression\"], \n \"INTEGER_POSITIVE\": [\"additiveExpression\"], \n \"DECIMAL_POSITIVE\": [\"additiveExpression\"], \n \"DOUBLE_POSITIVE\": [\"additiveExpression\"], \n \"INTEGER_NEGATIVE\": [\"additiveExpression\"], \n \"DECIMAL_NEGATIVE\": [\"additiveExpression\"], \n \"DOUBLE_NEGATIVE\": [\"additiveExpression\"], \n \"PNAME_LN\": [\"additiveExpression\"], \n \"PNAME_NS\": [\"additiveExpression\"]}, \n \"numericLiteral\" : {\n \"INTEGER\": [\"numericLiteralUnsigned\"], \n \"DECIMAL\": [\"numericLiteralUnsigned\"], \n \"DOUBLE\": [\"numericLiteralUnsigned\"], \n \"INTEGER_POSITIVE\": [\"numericLiteralPositive\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteralPositive\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteralPositive\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteralNegative\"]}, \n \"numericLiteralNegative\" : {\n \"INTEGER_NEGATIVE\": [\"INTEGER_NEGATIVE\"], \n \"DECIMAL_NEGATIVE\": [\"DECIMAL_NEGATIVE\"], \n \"DOUBLE_NEGATIVE\": [\"DOUBLE_NEGATIVE\"]}, \n \"numericLiteralPositive\" : {\n \"INTEGER_POSITIVE\": [\"INTEGER_POSITIVE\"], \n \"DECIMAL_POSITIVE\": [\"DECIMAL_POSITIVE\"], \n \"DOUBLE_POSITIVE\": [\"DOUBLE_POSITIVE\"]}, \n \"numericLiteralUnsigned\" : {\n \"INTEGER\": [\"INTEGER\"], \n \"DECIMAL\": [\"DECIMAL\"], \n \"DOUBLE\": [\"DOUBLE\"]}, \n \"object\" : {\n \"(\": [\"graphNode\"], \n \"[\": [\"graphNode\"], \n \"VAR1\": [\"graphNode\"], \n \"VAR2\": [\"graphNode\"], \n \"NIL\": [\"graphNode\"], \n \"IRI_REF\": [\"graphNode\"], \n \"TRUE\": [\"graphNode\"], \n \"FALSE\": [\"graphNode\"], \n \"BLANK_NODE_LABEL\": [\"graphNode\"], \n \"ANON\": [\"graphNode\"], \n \"PNAME_LN\": [\"graphNode\"], \n \"PNAME_NS\": [\"graphNode\"], \n \"STRING_LITERAL1\": [\"graphNode\"], \n \"STRING_LITERAL2\": [\"graphNode\"], \n \"STRING_LITERAL_LONG1\": [\"graphNode\"], \n \"STRING_LITERAL_LONG2\": [\"graphNode\"], \n \"INTEGER\": [\"graphNode\"], \n \"DECIMAL\": [\"graphNode\"], \n \"DOUBLE\": [\"graphNode\"], \n \"INTEGER_POSITIVE\": [\"graphNode\"], \n \"DECIMAL_POSITIVE\": [\"graphNode\"], \n \"DOUBLE_POSITIVE\": [\"graphNode\"], \n \"INTEGER_NEGATIVE\": [\"graphNode\"], \n \"DECIMAL_NEGATIVE\": [\"graphNode\"], \n \"DOUBLE_NEGATIVE\": [\"graphNode\"]}, \n \"objectList\" : {\n \"(\": [\"object\",\"*[,,object]\"], \n \"[\": [\"object\",\"*[,,object]\"], \n \"VAR1\": [\"object\",\"*[,,object]\"], \n \"VAR2\": [\"object\",\"*[,,object]\"], \n \"NIL\": [\"object\",\"*[,,object]\"], \n \"IRI_REF\": [\"object\",\"*[,,object]\"], \n \"TRUE\": [\"object\",\"*[,,object]\"], \n \"FALSE\": [\"object\",\"*[,,object]\"], \n \"BLANK_NODE_LABEL\": [\"object\",\"*[,,object]\"], \n \"ANON\": [\"object\",\"*[,,object]\"], \n \"PNAME_LN\": [\"object\",\"*[,,object]\"], \n \"PNAME_NS\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL1\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL2\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL_LONG1\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL_LONG2\": [\"object\",\"*[,,object]\"], \n \"INTEGER\": [\"object\",\"*[,,object]\"], \n \"DECIMAL\": [\"object\",\"*[,,object]\"], \n \"DOUBLE\": [\"object\",\"*[,,object]\"], \n \"INTEGER_POSITIVE\": [\"object\",\"*[,,object]\"], \n \"DECIMAL_POSITIVE\": [\"object\",\"*[,,object]\"], \n \"DOUBLE_POSITIVE\": [\"object\",\"*[,,object]\"], \n \"INTEGER_NEGATIVE\": [\"object\",\"*[,,object]\"], \n \"DECIMAL_NEGATIVE\": [\"object\",\"*[,,object]\"], \n \"DOUBLE_NEGATIVE\": [\"object\",\"*[,,object]\"]}, \n \"objectListPath\" : {\n \"(\": [\"objectPath\",\"*[,,objectPath]\"], \n \"[\": [\"objectPath\",\"*[,,objectPath]\"], \n \"VAR1\": [\"objectPath\",\"*[,,objectPath]\"], \n \"VAR2\": [\"objectPath\",\"*[,,objectPath]\"], \n \"NIL\": [\"objectPath\",\"*[,,objectPath]\"], \n \"IRI_REF\": [\"objectPath\",\"*[,,objectPath]\"], \n \"TRUE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"FALSE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"BLANK_NODE_LABEL\": [\"objectPath\",\"*[,,objectPath]\"], \n \"ANON\": [\"objectPath\",\"*[,,objectPath]\"], \n \"PNAME_LN\": [\"objectPath\",\"*[,,objectPath]\"], \n \"PNAME_NS\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL1\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL2\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL_LONG1\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL_LONG2\": [\"objectPath\",\"*[,,objectPath]\"], \n \"INTEGER\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DECIMAL\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DOUBLE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"INTEGER_POSITIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DECIMAL_POSITIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DOUBLE_POSITIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"INTEGER_NEGATIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DECIMAL_NEGATIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DOUBLE_NEGATIVE\": [\"objectPath\",\"*[,,objectPath]\"]}, \n \"objectPath\" : {\n \"(\": [\"graphNodePath\"], \n \"[\": [\"graphNodePath\"], \n \"VAR1\": [\"graphNodePath\"], \n \"VAR2\": [\"graphNodePath\"], \n \"NIL\": [\"graphNodePath\"], \n \"IRI_REF\": [\"graphNodePath\"], \n \"TRUE\": [\"graphNodePath\"], \n \"FALSE\": [\"graphNodePath\"], \n \"BLANK_NODE_LABEL\": [\"graphNodePath\"], \n \"ANON\": [\"graphNodePath\"], \n \"PNAME_LN\": [\"graphNodePath\"], \n \"PNAME_NS\": [\"graphNodePath\"], \n \"STRING_LITERAL1\": [\"graphNodePath\"], \n \"STRING_LITERAL2\": [\"graphNodePath\"], \n \"STRING_LITERAL_LONG1\": [\"graphNodePath\"], \n \"STRING_LITERAL_LONG2\": [\"graphNodePath\"], \n \"INTEGER\": [\"graphNodePath\"], \n \"DECIMAL\": [\"graphNodePath\"], \n \"DOUBLE\": [\"graphNodePath\"], \n \"INTEGER_POSITIVE\": [\"graphNodePath\"], \n \"DECIMAL_POSITIVE\": [\"graphNodePath\"], \n \"DOUBLE_POSITIVE\": [\"graphNodePath\"], \n \"INTEGER_NEGATIVE\": [\"graphNodePath\"], \n \"DECIMAL_NEGATIVE\": [\"graphNodePath\"], \n \"DOUBLE_NEGATIVE\": [\"graphNodePath\"]}, \n \"offsetClause\" : {\n \"OFFSET\": [\"OFFSET\",\"INTEGER\"]}, \n \"optionalGraphPattern\" : {\n \"OPTIONAL\": [\"OPTIONAL\",\"groupGraphPattern\"]}, \n \"or([*,expression])\" : {\n \"*\": [\"*\"], \n \"!\": [\"expression\"], \n \"+\": [\"expression\"], \n \"-\": [\"expression\"], \n \"VAR1\": [\"expression\"], \n \"VAR2\": [\"expression\"], \n \"(\": [\"expression\"], \n \"STR\": [\"expression\"], \n \"LANG\": [\"expression\"], \n \"LANGMATCHES\": [\"expression\"], \n \"DATATYPE\": [\"expression\"], \n \"BOUND\": [\"expression\"], \n \"IRI\": [\"expression\"], \n \"URI\": [\"expression\"], \n \"BNODE\": [\"expression\"], \n \"RAND\": [\"expression\"], \n \"ABS\": [\"expression\"], \n \"CEIL\": [\"expression\"], \n \"FLOOR\": [\"expression\"], \n \"ROUND\": [\"expression\"], \n \"CONCAT\": [\"expression\"], \n \"STRLEN\": [\"expression\"], \n \"UCASE\": [\"expression\"], \n \"LCASE\": [\"expression\"], \n \"ENCODE_FOR_URI\": [\"expression\"], \n \"CONTAINS\": [\"expression\"], \n \"STRSTARTS\": [\"expression\"], \n \"STRENDS\": [\"expression\"], \n \"STRBEFORE\": [\"expression\"], \n \"STRAFTER\": [\"expression\"], \n \"YEAR\": [\"expression\"], \n \"MONTH\": [\"expression\"], \n \"DAY\": [\"expression\"], \n \"HOURS\": [\"expression\"], \n \"MINUTES\": [\"expression\"], \n \"SECONDS\": [\"expression\"], \n \"TIMEZONE\": [\"expression\"], \n \"TZ\": [\"expression\"], \n \"NOW\": [\"expression\"], \n \"UUID\": [\"expression\"], \n \"STRUUID\": [\"expression\"], \n \"MD5\": [\"expression\"], \n \"SHA1\": [\"expression\"], \n \"SHA256\": [\"expression\"], \n \"SHA384\": [\"expression\"], \n \"SHA512\": [\"expression\"], \n \"COALESCE\": [\"expression\"], \n \"IF\": [\"expression\"], \n \"STRLANG\": [\"expression\"], \n \"STRDT\": [\"expression\"], \n \"SAMETERM\": [\"expression\"], \n \"ISIRI\": [\"expression\"], \n \"ISURI\": [\"expression\"], \n \"ISBLANK\": [\"expression\"], \n \"ISLITERAL\": [\"expression\"], \n \"ISNUMERIC\": [\"expression\"], \n \"TRUE\": [\"expression\"], \n \"FALSE\": [\"expression\"], \n \"COUNT\": [\"expression\"], \n \"SUM\": [\"expression\"], \n \"MIN\": [\"expression\"], \n \"MAX\": [\"expression\"], \n \"AVG\": [\"expression\"], \n \"SAMPLE\": [\"expression\"], \n \"GROUP_CONCAT\": [\"expression\"], \n \"SUBSTR\": [\"expression\"], \n \"REPLACE\": [\"expression\"], \n \"REGEX\": [\"expression\"], \n \"EXISTS\": [\"expression\"], \n \"NOT\": [\"expression\"], \n \"IRI_REF\": [\"expression\"], \n \"STRING_LITERAL1\": [\"expression\"], \n \"STRING_LITERAL2\": [\"expression\"], \n \"STRING_LITERAL_LONG1\": [\"expression\"], \n \"STRING_LITERAL_LONG2\": [\"expression\"], \n \"INTEGER\": [\"expression\"], \n \"DECIMAL\": [\"expression\"], \n \"DOUBLE\": [\"expression\"], \n \"INTEGER_POSITIVE\": [\"expression\"], \n \"DECIMAL_POSITIVE\": [\"expression\"], \n \"DOUBLE_POSITIVE\": [\"expression\"], \n \"INTEGER_NEGATIVE\": [\"expression\"], \n \"DECIMAL_NEGATIVE\": [\"expression\"], \n \"DOUBLE_NEGATIVE\": [\"expression\"], \n \"PNAME_LN\": [\"expression\"], \n \"PNAME_NS\": [\"expression\"]}, \n \"or([+or([var,[ (,expression,AS,var,)]]),*])\" : {\n \"(\": [\"+or([var,[ (,expression,AS,var,)]])\"], \n \"VAR1\": [\"+or([var,[ (,expression,AS,var,)]])\"], \n \"VAR2\": [\"+or([var,[ (,expression,AS,var,)]])\"], \n \"*\": [\"*\"]}, \n \"or([+varOrIRIref,*])\" : {\n \"VAR1\": [\"+varOrIRIref\"], \n \"VAR2\": [\"+varOrIRIref\"], \n \"IRI_REF\": [\"+varOrIRIref\"], \n \"PNAME_LN\": [\"+varOrIRIref\"], \n \"PNAME_NS\": [\"+varOrIRIref\"], \n \"*\": [\"*\"]}, \n \"or([ASC,DESC])\" : {\n \"ASC\": [\"ASC\"], \n \"DESC\": [\"DESC\"]}, \n \"or([DISTINCT,REDUCED])\" : {\n \"DISTINCT\": [\"DISTINCT\"], \n \"REDUCED\": [\"REDUCED\"]}, \n \"or([LANGTAG,[^^,iriRef]])\" : {\n \"LANGTAG\": [\"LANGTAG\"], \n \"^^\": [\"[^^,iriRef]\"]}, \n \"or([NIL,[ (,*var,)]])\" : {\n \"NIL\": [\"NIL\"], \n \"(\": [\"[ (,*var,)]\"]}, \n \"or([[ (,*dataBlockValue,)],NIL])\" : {\n \"(\": [\"[ (,*dataBlockValue,)]\"], \n \"NIL\": [\"NIL\"]}, \n \"or([[ (,expression,)],NIL])\" : {\n \"(\": [\"[ (,expression,)]\"], \n \"NIL\": [\"NIL\"]}, \n \"or([[*,unaryExpression],[/,unaryExpression]])\" : {\n \"*\": [\"[*,unaryExpression]\"], \n \"/\": [\"[/,unaryExpression]\"]}, \n \"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\" : {\n \"+\": [\"[+,multiplicativeExpression]\"], \n \"-\": [\"[-,multiplicativeExpression]\"], \n \"INTEGER_POSITIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DECIMAL_POSITIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DOUBLE_POSITIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"INTEGER_NEGATIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DECIMAL_NEGATIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DOUBLE_NEGATIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"]}, \n \"or([[,,or([},[integer,}]])],}])\" : {\n \",\": [\"[,,or([},[integer,}]])]\"], \n \"}\": [\"}\"]}, \n \"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\" : {\n \"=\": [\"[=,numericExpression]\"], \n \"!=\": [\"[!=,numericExpression]\"], \n \"<\": [\"[<,numericExpression]\"], \n \">\": [\"[>,numericExpression]\"], \n \"<=\": [\"[<=,numericExpression]\"], \n \">=\": [\"[>=,numericExpression]\"], \n \"IN\": [\"[IN,expressionList]\"], \n \"NOT\": [\"[NOT,IN,expressionList]\"]}, \n \"or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])\" : {\n \"{\": [\"[constructTemplate,*datasetClause,whereClause,solutionModifier]\"], \n \"WHERE\": [\"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]\"], \n \"FROM\": [\"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]\"]}, \n \"or([[deleteClause,?insertClause],insertClause])\" : {\n \"DELETE\": [\"[deleteClause,?insertClause]\"], \n \"INSERT\": [\"insertClause\"]}, \n \"or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])\" : {\n \"INTEGER\": [\"[integer,or([[,,or([},[integer,}]])],}])]\"], \n \",\": [\"[,,integer,}]\"]}, \n \"or([baseDecl,prefixDecl])\" : {\n \"BASE\": [\"baseDecl\"], \n \"PREFIX\": [\"prefixDecl\"]}, \n \"or([defaultGraphClause,namedGraphClause])\" : {\n \"IRI_REF\": [\"defaultGraphClause\"], \n \"PNAME_LN\": [\"defaultGraphClause\"], \n \"PNAME_NS\": [\"defaultGraphClause\"], \n \"NAMED\": [\"namedGraphClause\"]}, \n \"or([inlineDataOneVar,inlineDataFull])\" : {\n \"VAR1\": [\"inlineDataOneVar\"], \n \"VAR2\": [\"inlineDataOneVar\"], \n \"NIL\": [\"inlineDataFull\"], \n \"(\": [\"inlineDataFull\"]}, \n \"or([iriRef,[NAMED,iriRef]])\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"NAMED\": [\"[NAMED,iriRef]\"]}, \n \"or([iriRef,a])\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"a\": [\"a\"]}, \n \"or([numericLiteralPositive,numericLiteralNegative])\" : {\n \"INTEGER_POSITIVE\": [\"numericLiteralPositive\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteralPositive\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteralPositive\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteralNegative\"]}, \n \"or([queryAll,updateAll])\" : {\n \"CONSTRUCT\": [\"queryAll\"], \n \"DESCRIBE\": [\"queryAll\"], \n \"ASK\": [\"queryAll\"], \n \"SELECT\": [\"queryAll\"], \n \"INSERT\": [\"updateAll\"], \n \"DELETE\": [\"updateAll\"], \n \"LOAD\": [\"updateAll\"], \n \"CLEAR\": [\"updateAll\"], \n \"DROP\": [\"updateAll\"], \n \"ADD\": [\"updateAll\"], \n \"MOVE\": [\"updateAll\"], \n \"COPY\": [\"updateAll\"], \n \"CREATE\": [\"updateAll\"], \n \"WITH\": [\"updateAll\"], \n \"$\": [\"updateAll\"]}, \n \"or([selectQuery,constructQuery,describeQuery,askQuery])\" : {\n \"SELECT\": [\"selectQuery\"], \n \"CONSTRUCT\": [\"constructQuery\"], \n \"DESCRIBE\": [\"describeQuery\"], \n \"ASK\": [\"askQuery\"]}, \n \"or([subSelect,groupGraphPatternSub])\" : {\n \"SELECT\": [\"subSelect\"], \n \"{\": [\"groupGraphPatternSub\"], \n \"OPTIONAL\": [\"groupGraphPatternSub\"], \n \"MINUS\": [\"groupGraphPatternSub\"], \n \"GRAPH\": [\"groupGraphPatternSub\"], \n \"SERVICE\": [\"groupGraphPatternSub\"], \n \"FILTER\": [\"groupGraphPatternSub\"], \n \"BIND\": [\"groupGraphPatternSub\"], \n \"VALUES\": [\"groupGraphPatternSub\"], \n \"VAR1\": [\"groupGraphPatternSub\"], \n \"VAR2\": [\"groupGraphPatternSub\"], \n \"NIL\": [\"groupGraphPatternSub\"], \n \"(\": [\"groupGraphPatternSub\"], \n \"[\": [\"groupGraphPatternSub\"], \n \"IRI_REF\": [\"groupGraphPatternSub\"], \n \"TRUE\": [\"groupGraphPatternSub\"], \n \"FALSE\": [\"groupGraphPatternSub\"], \n \"BLANK_NODE_LABEL\": [\"groupGraphPatternSub\"], \n \"ANON\": [\"groupGraphPatternSub\"], \n \"PNAME_LN\": [\"groupGraphPatternSub\"], \n \"PNAME_NS\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL1\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL2\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL_LONG1\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL_LONG2\": [\"groupGraphPatternSub\"], \n \"INTEGER\": [\"groupGraphPatternSub\"], \n \"DECIMAL\": [\"groupGraphPatternSub\"], \n \"DOUBLE\": [\"groupGraphPatternSub\"], \n \"INTEGER_POSITIVE\": [\"groupGraphPatternSub\"], \n \"DECIMAL_POSITIVE\": [\"groupGraphPatternSub\"], \n \"DOUBLE_POSITIVE\": [\"groupGraphPatternSub\"], \n \"INTEGER_NEGATIVE\": [\"groupGraphPatternSub\"], \n \"DECIMAL_NEGATIVE\": [\"groupGraphPatternSub\"], \n \"DOUBLE_NEGATIVE\": [\"groupGraphPatternSub\"], \n \"}\": [\"groupGraphPatternSub\"]}, \n \"or([var,[ (,expression,AS,var,)]])\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"(\": [\"[ (,expression,AS,var,)]\"]}, \n \"or([verbPath,verbSimple])\" : {\n \"^\": [\"verbPath\"], \n \"a\": [\"verbPath\"], \n \"!\": [\"verbPath\"], \n \"(\": [\"verbPath\"], \n \"IRI_REF\": [\"verbPath\"], \n \"PNAME_LN\": [\"verbPath\"], \n \"PNAME_NS\": [\"verbPath\"], \n \"VAR1\": [\"verbSimple\"], \n \"VAR2\": [\"verbSimple\"]}, \n \"or([},[integer,}]])\" : {\n \"}\": [\"}\"], \n \"INTEGER\": [\"[integer,}]\"]}, \n \"orderClause\" : {\n \"ORDER\": [\"ORDER\",\"BY\",\"+orderCondition\"]}, \n \"orderCondition\" : {\n \"ASC\": [\"or([ASC,DESC])\",\"brackettedExpression\"], \n \"DESC\": [\"or([ASC,DESC])\",\"brackettedExpression\"], \n \"(\": [\"constraint\"], \n \"STR\": [\"constraint\"], \n \"LANG\": [\"constraint\"], \n \"LANGMATCHES\": [\"constraint\"], \n \"DATATYPE\": [\"constraint\"], \n \"BOUND\": [\"constraint\"], \n \"IRI\": [\"constraint\"], \n \"URI\": [\"constraint\"], \n \"BNODE\": [\"constraint\"], \n \"RAND\": [\"constraint\"], \n \"ABS\": [\"constraint\"], \n \"CEIL\": [\"constraint\"], \n \"FLOOR\": [\"constraint\"], \n \"ROUND\": [\"constraint\"], \n \"CONCAT\": [\"constraint\"], \n \"STRLEN\": [\"constraint\"], \n \"UCASE\": [\"constraint\"], \n \"LCASE\": [\"constraint\"], \n \"ENCODE_FOR_URI\": [\"constraint\"], \n \"CONTAINS\": [\"constraint\"], \n \"STRSTARTS\": [\"constraint\"], \n \"STRENDS\": [\"constraint\"], \n \"STRBEFORE\": [\"constraint\"], \n \"STRAFTER\": [\"constraint\"], \n \"YEAR\": [\"constraint\"], \n \"MONTH\": [\"constraint\"], \n \"DAY\": [\"constraint\"], \n \"HOURS\": [\"constraint\"], \n \"MINUTES\": [\"constraint\"], \n \"SECONDS\": [\"constraint\"], \n \"TIMEZONE\": [\"constraint\"], \n \"TZ\": [\"constraint\"], \n \"NOW\": [\"constraint\"], \n \"UUID\": [\"constraint\"], \n \"STRUUID\": [\"constraint\"], \n \"MD5\": [\"constraint\"], \n \"SHA1\": [\"constraint\"], \n \"SHA256\": [\"constraint\"], \n \"SHA384\": [\"constraint\"], \n \"SHA512\": [\"constraint\"], \n \"COALESCE\": [\"constraint\"], \n \"IF\": [\"constraint\"], \n \"STRLANG\": [\"constraint\"], \n \"STRDT\": [\"constraint\"], \n \"SAMETERM\": [\"constraint\"], \n \"ISIRI\": [\"constraint\"], \n \"ISURI\": [\"constraint\"], \n \"ISBLANK\": [\"constraint\"], \n \"ISLITERAL\": [\"constraint\"], \n \"ISNUMERIC\": [\"constraint\"], \n \"SUBSTR\": [\"constraint\"], \n \"REPLACE\": [\"constraint\"], \n \"REGEX\": [\"constraint\"], \n \"EXISTS\": [\"constraint\"], \n \"NOT\": [\"constraint\"], \n \"IRI_REF\": [\"constraint\"], \n \"PNAME_LN\": [\"constraint\"], \n \"PNAME_NS\": [\"constraint\"], \n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"]}, \n \"path\" : {\n \"^\": [\"pathAlternative\"], \n \"a\": [\"pathAlternative\"], \n \"!\": [\"pathAlternative\"], \n \"(\": [\"pathAlternative\"], \n \"IRI_REF\": [\"pathAlternative\"], \n \"PNAME_LN\": [\"pathAlternative\"], \n \"PNAME_NS\": [\"pathAlternative\"]}, \n \"pathAlternative\" : {\n \"^\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"a\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"!\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"(\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"IRI_REF\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"PNAME_LN\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"PNAME_NS\": [\"pathSequence\",\"*[|,pathSequence]\"]}, \n \"pathElt\" : {\n \"a\": [\"pathPrimary\",\"?pathMod\"], \n \"!\": [\"pathPrimary\",\"?pathMod\"], \n \"(\": [\"pathPrimary\",\"?pathMod\"], \n \"IRI_REF\": [\"pathPrimary\",\"?pathMod\"], \n \"PNAME_LN\": [\"pathPrimary\",\"?pathMod\"], \n \"PNAME_NS\": [\"pathPrimary\",\"?pathMod\"]}, \n \"pathEltOrInverse\" : {\n \"a\": [\"pathElt\"], \n \"!\": [\"pathElt\"], \n \"(\": [\"pathElt\"], \n \"IRI_REF\": [\"pathElt\"], \n \"PNAME_LN\": [\"pathElt\"], \n \"PNAME_NS\": [\"pathElt\"], \n \"^\": [\"^\",\"pathElt\"]}, \n \"pathMod\" : {\n \"*\": [\"*\"], \n \"?\": [\"?\"], \n \"+\": [\"+\"], \n \"{\": [\"{\",\"or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])\"]}, \n \"pathNegatedPropertySet\" : {\n \"a\": [\"pathOneInPropertySet\"], \n \"^\": [\"pathOneInPropertySet\"], \n \"IRI_REF\": [\"pathOneInPropertySet\"], \n \"PNAME_LN\": [\"pathOneInPropertySet\"], \n \"PNAME_NS\": [\"pathOneInPropertySet\"], \n \"(\": [\"(\",\"?[pathOneInPropertySet,*[|,pathOneInPropertySet]]\",\")\"]}, \n \"pathOneInPropertySet\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"a\": [\"a\"], \n \"^\": [\"^\",\"or([iriRef,a])\"]}, \n \"pathPrimary\" : {\n \"IRI_REF\": [\"storeProperty\",\"iriRef\"], \n \"PNAME_LN\": [\"storeProperty\",\"iriRef\"], \n \"PNAME_NS\": [\"storeProperty\",\"iriRef\"], \n \"a\": [\"storeProperty\",\"a\"], \n \"!\": [\"!\",\"pathNegatedPropertySet\"], \n \"(\": [\"(\",\"path\",\")\"]}, \n \"pathSequence\" : {\n \"^\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"a\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"!\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"(\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"IRI_REF\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"PNAME_LN\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"PNAME_NS\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"]}, \n \"prefixDecl\" : {\n \"PREFIX\": [\"PREFIX\",\"PNAME_NS\",\"IRI_REF\"]}, \n \"prefixedName\" : {\n \"PNAME_LN\": [\"PNAME_LN\"], \n \"PNAME_NS\": [\"PNAME_NS\"]}, \n \"primaryExpression\" : {\n \"(\": [\"brackettedExpression\"], \n \"STR\": [\"builtInCall\"], \n \"LANG\": [\"builtInCall\"], \n \"LANGMATCHES\": [\"builtInCall\"], \n \"DATATYPE\": [\"builtInCall\"], \n \"BOUND\": [\"builtInCall\"], \n \"IRI\": [\"builtInCall\"], \n \"URI\": [\"builtInCall\"], \n \"BNODE\": [\"builtInCall\"], \n \"RAND\": [\"builtInCall\"], \n \"ABS\": [\"builtInCall\"], \n \"CEIL\": [\"builtInCall\"], \n \"FLOOR\": [\"builtInCall\"], \n \"ROUND\": [\"builtInCall\"], \n \"CONCAT\": [\"builtInCall\"], \n \"STRLEN\": [\"builtInCall\"], \n \"UCASE\": [\"builtInCall\"], \n \"LCASE\": [\"builtInCall\"], \n \"ENCODE_FOR_URI\": [\"builtInCall\"], \n \"CONTAINS\": [\"builtInCall\"], \n \"STRSTARTS\": [\"builtInCall\"], \n \"STRENDS\": [\"builtInCall\"], \n \"STRBEFORE\": [\"builtInCall\"], \n \"STRAFTER\": [\"builtInCall\"], \n \"YEAR\": [\"builtInCall\"], \n \"MONTH\": [\"builtInCall\"], \n \"DAY\": [\"builtInCall\"], \n \"HOURS\": [\"builtInCall\"], \n \"MINUTES\": [\"builtInCall\"], \n \"SECONDS\": [\"builtInCall\"], \n \"TIMEZONE\": [\"builtInCall\"], \n \"TZ\": [\"builtInCall\"], \n \"NOW\": [\"builtInCall\"], \n \"UUID\": [\"builtInCall\"], \n \"STRUUID\": [\"builtInCall\"], \n \"MD5\": [\"builtInCall\"], \n \"SHA1\": [\"builtInCall\"], \n \"SHA256\": [\"builtInCall\"], \n \"SHA384\": [\"builtInCall\"], \n \"SHA512\": [\"builtInCall\"], \n \"COALESCE\": [\"builtInCall\"], \n \"IF\": [\"builtInCall\"], \n \"STRLANG\": [\"builtInCall\"], \n \"STRDT\": [\"builtInCall\"], \n \"SAMETERM\": [\"builtInCall\"], \n \"ISIRI\": [\"builtInCall\"], \n \"ISURI\": [\"builtInCall\"], \n \"ISBLANK\": [\"builtInCall\"], \n \"ISLITERAL\": [\"builtInCall\"], \n \"ISNUMERIC\": [\"builtInCall\"], \n \"SUBSTR\": [\"builtInCall\"], \n \"REPLACE\": [\"builtInCall\"], \n \"REGEX\": [\"builtInCall\"], \n \"EXISTS\": [\"builtInCall\"], \n \"NOT\": [\"builtInCall\"], \n \"IRI_REF\": [\"iriRefOrFunction\"], \n \"PNAME_LN\": [\"iriRefOrFunction\"], \n \"PNAME_NS\": [\"iriRefOrFunction\"], \n \"STRING_LITERAL1\": [\"rdfLiteral\"], \n \"STRING_LITERAL2\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG1\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG2\": [\"rdfLiteral\"], \n \"INTEGER\": [\"numericLiteral\"], \n \"DECIMAL\": [\"numericLiteral\"], \n \"DOUBLE\": [\"numericLiteral\"], \n \"INTEGER_POSITIVE\": [\"numericLiteral\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteral\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteral\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteral\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteral\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteral\"], \n \"TRUE\": [\"booleanLiteral\"], \n \"FALSE\": [\"booleanLiteral\"], \n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"COUNT\": [\"aggregate\"], \n \"SUM\": [\"aggregate\"], \n \"MIN\": [\"aggregate\"], \n \"MAX\": [\"aggregate\"], \n \"AVG\": [\"aggregate\"], \n \"SAMPLE\": [\"aggregate\"], \n \"GROUP_CONCAT\": [\"aggregate\"]}, \n \"prologue\" : {\n \"BASE\": [\"*or([baseDecl,prefixDecl])\"], \n \"PREFIX\": [\"*or([baseDecl,prefixDecl])\"], \n \"$\": [\"*or([baseDecl,prefixDecl])\"], \n \"CONSTRUCT\": [\"*or([baseDecl,prefixDecl])\"], \n \"DESCRIBE\": [\"*or([baseDecl,prefixDecl])\"], \n \"ASK\": [\"*or([baseDecl,prefixDecl])\"], \n \"INSERT\": [\"*or([baseDecl,prefixDecl])\"], \n \"DELETE\": [\"*or([baseDecl,prefixDecl])\"], \n \"SELECT\": [\"*or([baseDecl,prefixDecl])\"], \n \"LOAD\": [\"*or([baseDecl,prefixDecl])\"], \n \"CLEAR\": [\"*or([baseDecl,prefixDecl])\"], \n \"DROP\": [\"*or([baseDecl,prefixDecl])\"], \n \"ADD\": [\"*or([baseDecl,prefixDecl])\"], \n \"MOVE\": [\"*or([baseDecl,prefixDecl])\"], \n \"COPY\": [\"*or([baseDecl,prefixDecl])\"], \n \"CREATE\": [\"*or([baseDecl,prefixDecl])\"], \n \"WITH\": [\"*or([baseDecl,prefixDecl])\"]}, \n \"propertyList\" : {\n \"a\": [\"propertyListNotEmpty\"], \n \"VAR1\": [\"propertyListNotEmpty\"], \n \"VAR2\": [\"propertyListNotEmpty\"], \n \"IRI_REF\": [\"propertyListNotEmpty\"], \n \"PNAME_LN\": [\"propertyListNotEmpty\"], \n \"PNAME_NS\": [\"propertyListNotEmpty\"], \n \".\": [], \n \"}\": [], \n \"GRAPH\": []}, \n \"propertyListNotEmpty\" : {\n \"a\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"VAR1\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"VAR2\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"IRI_REF\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"PNAME_LN\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"PNAME_NS\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"]}, \n \"propertyListPath\" : {\n \"a\": [\"propertyListNotEmpty\"], \n \"VAR1\": [\"propertyListNotEmpty\"], \n \"VAR2\": [\"propertyListNotEmpty\"], \n \"IRI_REF\": [\"propertyListNotEmpty\"], \n \"PNAME_LN\": [\"propertyListNotEmpty\"], \n \"PNAME_NS\": [\"propertyListNotEmpty\"], \n \".\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"propertyListPathNotEmpty\" : {\n \"VAR1\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"VAR2\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"^\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"a\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"!\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"(\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"IRI_REF\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"PNAME_LN\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"PNAME_NS\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"]}, \n \"quadData\" : {\n \"{\": [\"{\",\"disallowVars\",\"quads\",\"allowVars\",\"}\"]}, \n \"quadDataNoBnodes\" : {\n \"{\": [\"{\",\"disallowBnodes\",\"disallowVars\",\"quads\",\"allowVars\",\"allowBnodes\",\"}\"]}, \n \"quadPattern\" : {\n \"{\": [\"{\",\"quads\",\"}\"]}, \n \"quadPatternNoBnodes\" : {\n \"{\": [\"{\",\"disallowBnodes\",\"quads\",\"allowBnodes\",\"}\"]}, \n \"quads\" : {\n \"GRAPH\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"VAR1\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"VAR2\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"NIL\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"(\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"[\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"IRI_REF\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"TRUE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"FALSE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"BLANK_NODE_LABEL\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"ANON\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"PNAME_LN\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"PNAME_NS\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL1\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL2\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG1\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG2\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"INTEGER\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DECIMAL\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DOUBLE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"INTEGER_POSITIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DECIMAL_POSITIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DOUBLE_POSITIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"INTEGER_NEGATIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DECIMAL_NEGATIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DOUBLE_NEGATIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"}\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"]}, \n \"quadsNotTriples\" : {\n \"GRAPH\": [\"GRAPH\",\"varOrIRIref\",\"{\",\"?triplesTemplate\",\"}\"]}, \n \"queryAll\" : {\n \"CONSTRUCT\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"], \n \"DESCRIBE\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"], \n \"ASK\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"], \n \"SELECT\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"]}, \n \"rdfLiteral\" : {\n \"STRING_LITERAL1\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"], \n \"STRING_LITERAL2\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"], \n \"STRING_LITERAL_LONG1\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"], \n \"STRING_LITERAL_LONG2\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"]}, \n \"regexExpression\" : {\n \"REGEX\": [\"REGEX\",\"(\",\"expression\",\",\",\"expression\",\"?[,,expression]\",\")\"]}, \n \"relationalExpression\" : {\n \"!\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"+\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"-\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"VAR1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"VAR2\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"(\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"LANG\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"LANGMATCHES\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DATATYPE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"BOUND\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IRI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"URI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"BNODE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"RAND\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ABS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"CEIL\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"FLOOR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ROUND\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"CONCAT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRLEN\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"UCASE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"LCASE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ENCODE_FOR_URI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"CONTAINS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRSTARTS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRENDS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRBEFORE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRAFTER\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"YEAR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MONTH\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DAY\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"HOURS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MINUTES\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SECONDS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"TIMEZONE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"TZ\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"NOW\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"UUID\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRUUID\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MD5\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA256\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA384\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA512\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"COALESCE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IF\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRLANG\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRDT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SAMETERM\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISIRI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISURI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISBLANK\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISLITERAL\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISNUMERIC\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"TRUE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"FALSE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"COUNT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SUM\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MIN\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MAX\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"AVG\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SAMPLE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"GROUP_CONCAT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SUBSTR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"REPLACE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"REGEX\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"EXISTS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"NOT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IRI_REF\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL2\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL_LONG1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL_LONG2\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"INTEGER\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DECIMAL\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DOUBLE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"INTEGER_POSITIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DECIMAL_POSITIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DOUBLE_POSITIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"INTEGER_NEGATIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DECIMAL_NEGATIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DOUBLE_NEGATIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"PNAME_LN\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"PNAME_NS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"]}, \n \"selectClause\" : {\n \"SELECT\": [\"SELECT\",\"?or([DISTINCT,REDUCED])\",\"or([+or([var,[ (,expression,AS,var,)]]),*])\"]}, \n \"selectQuery\" : {\n \"SELECT\": [\"selectClause\",\"*datasetClause\",\"whereClause\",\"solutionModifier\"]}, \n \"serviceGraphPattern\" : {\n \"SERVICE\": [\"SERVICE\",\"?SILENT\",\"varOrIRIref\",\"groupGraphPattern\"]}, \n \"solutionModifier\" : {\n \"LIMIT\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"OFFSET\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"ORDER\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"HAVING\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"GROUP\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"VALUES\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"$\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"}\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"]}, \n \"sourceSelector\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"]}, \n \"sparql11\" : {\n \"$\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"CONSTRUCT\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"DESCRIBE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"ASK\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"INSERT\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"DELETE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"SELECT\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"LOAD\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"CLEAR\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"DROP\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"ADD\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"MOVE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"COPY\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"CREATE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"WITH\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"BASE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"PREFIX\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"]}, \n \"storeProperty\" : {\n \"VAR1\": [], \n \"VAR2\": [], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"a\": []}, \n \"strReplaceExpression\" : {\n \"REPLACE\": [\"REPLACE\",\"(\",\"expression\",\",\",\"expression\",\",\",\"expression\",\"?[,,expression]\",\")\"]}, \n \"string\" : {\n \"STRING_LITERAL1\": [\"STRING_LITERAL1\"], \n \"STRING_LITERAL2\": [\"STRING_LITERAL2\"], \n \"STRING_LITERAL_LONG1\": [\"STRING_LITERAL_LONG1\"], \n \"STRING_LITERAL_LONG2\": [\"STRING_LITERAL_LONG2\"]}, \n \"subSelect\" : {\n \"SELECT\": [\"selectClause\",\"whereClause\",\"solutionModifier\",\"valuesClause\"]}, \n \"substringExpression\" : {\n \"SUBSTR\": [\"SUBSTR\",\"(\",\"expression\",\",\",\"expression\",\"?[,,expression]\",\")\"]}, \n \"triplesBlock\" : {\n \"VAR1\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"VAR2\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"NIL\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"(\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"[\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"IRI_REF\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"TRUE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"FALSE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"BLANK_NODE_LABEL\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"ANON\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"PNAME_LN\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"PNAME_NS\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL1\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL2\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG1\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG2\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"INTEGER\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DECIMAL\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DOUBLE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"INTEGER_POSITIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DECIMAL_POSITIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DOUBLE_POSITIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"INTEGER_NEGATIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DECIMAL_NEGATIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DOUBLE_NEGATIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"]}, \n \"triplesNode\" : {\n \"(\": [\"collection\"], \n \"[\": [\"blankNodePropertyList\"]}, \n \"triplesNodePath\" : {\n \"(\": [\"collectionPath\"], \n \"[\": [\"blankNodePropertyListPath\"]}, \n \"triplesSameSubject\" : {\n \"VAR1\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"VAR2\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"NIL\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"IRI_REF\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"TRUE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"FALSE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"ANON\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"PNAME_LN\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"PNAME_NS\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL1\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL2\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"INTEGER\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DECIMAL\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DOUBLE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"(\": [\"triplesNode\",\"propertyList\"], \n \"[\": [\"triplesNode\",\"propertyList\"]}, \n \"triplesSameSubjectPath\" : {\n \"VAR1\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"VAR2\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"NIL\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"IRI_REF\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"TRUE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"FALSE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"ANON\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"PNAME_LN\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"PNAME_NS\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL1\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL2\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"INTEGER\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DECIMAL\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DOUBLE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"(\": [\"triplesNodePath\",\"propertyListPath\"], \n \"[\": [\"triplesNodePath\",\"propertyListPath\"]}, \n \"triplesTemplate\" : {\n \"VAR1\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"VAR2\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"NIL\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"(\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"[\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"IRI_REF\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"TRUE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"FALSE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"BLANK_NODE_LABEL\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"ANON\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"PNAME_LN\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"PNAME_NS\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL1\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL2\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG1\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG2\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"INTEGER\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DECIMAL\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DOUBLE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"INTEGER_POSITIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DECIMAL_POSITIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DOUBLE_POSITIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"INTEGER_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DECIMAL_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DOUBLE_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"]}, \n \"unaryExpression\" : {\n \"!\": [\"!\",\"primaryExpression\"], \n \"+\": [\"+\",\"primaryExpression\"], \n \"-\": [\"-\",\"primaryExpression\"], \n \"VAR1\": [\"primaryExpression\"], \n \"VAR2\": [\"primaryExpression\"], \n \"(\": [\"primaryExpression\"], \n \"STR\": [\"primaryExpression\"], \n \"LANG\": [\"primaryExpression\"], \n \"LANGMATCHES\": [\"primaryExpression\"], \n \"DATATYPE\": [\"primaryExpression\"], \n \"BOUND\": [\"primaryExpression\"], \n \"IRI\": [\"primaryExpression\"], \n \"URI\": [\"primaryExpression\"], \n \"BNODE\": [\"primaryExpression\"], \n \"RAND\": [\"primaryExpression\"], \n \"ABS\": [\"primaryExpression\"], \n \"CEIL\": [\"primaryExpression\"], \n \"FLOOR\": [\"primaryExpression\"], \n \"ROUND\": [\"primaryExpression\"], \n \"CONCAT\": [\"primaryExpression\"], \n \"STRLEN\": [\"primaryExpression\"], \n \"UCASE\": [\"primaryExpression\"], \n \"LCASE\": [\"primaryExpression\"], \n \"ENCODE_FOR_URI\": [\"primaryExpression\"], \n \"CONTAINS\": [\"primaryExpression\"], \n \"STRSTARTS\": [\"primaryExpression\"], \n \"STRENDS\": [\"primaryExpression\"], \n \"STRBEFORE\": [\"primaryExpression\"], \n \"STRAFTER\": [\"primaryExpression\"], \n \"YEAR\": [\"primaryExpression\"], \n \"MONTH\": [\"primaryExpression\"], \n \"DAY\": [\"primaryExpression\"], \n \"HOURS\": [\"primaryExpression\"], \n \"MINUTES\": [\"primaryExpression\"], \n \"SECONDS\": [\"primaryExpression\"], \n \"TIMEZONE\": [\"primaryExpression\"], \n \"TZ\": [\"primaryExpression\"], \n \"NOW\": [\"primaryExpression\"], \n \"UUID\": [\"primaryExpression\"], \n \"STRUUID\": [\"primaryExpression\"], \n \"MD5\": [\"primaryExpression\"], \n \"SHA1\": [\"primaryExpression\"], \n \"SHA256\": [\"primaryExpression\"], \n \"SHA384\": [\"primaryExpression\"], \n \"SHA512\": [\"primaryExpression\"], \n \"COALESCE\": [\"primaryExpression\"], \n \"IF\": [\"primaryExpression\"], \n \"STRLANG\": [\"primaryExpression\"], \n \"STRDT\": [\"primaryExpression\"], \n \"SAMETERM\": [\"primaryExpression\"], \n \"ISIRI\": [\"primaryExpression\"], \n \"ISURI\": [\"primaryExpression\"], \n \"ISBLANK\": [\"primaryExpression\"], \n \"ISLITERAL\": [\"primaryExpression\"], \n \"ISNUMERIC\": [\"primaryExpression\"], \n \"TRUE\": [\"primaryExpression\"], \n \"FALSE\": [\"primaryExpression\"], \n \"COUNT\": [\"primaryExpression\"], \n \"SUM\": [\"primaryExpression\"], \n \"MIN\": [\"primaryExpression\"], \n \"MAX\": [\"primaryExpression\"], \n \"AVG\": [\"primaryExpression\"], \n \"SAMPLE\": [\"primaryExpression\"], \n \"GROUP_CONCAT\": [\"primaryExpression\"], \n \"SUBSTR\": [\"primaryExpression\"], \n \"REPLACE\": [\"primaryExpression\"], \n \"REGEX\": [\"primaryExpression\"], \n \"EXISTS\": [\"primaryExpression\"], \n \"NOT\": [\"primaryExpression\"], \n \"IRI_REF\": [\"primaryExpression\"], \n \"STRING_LITERAL1\": [\"primaryExpression\"], \n \"STRING_LITERAL2\": [\"primaryExpression\"], \n \"STRING_LITERAL_LONG1\": [\"primaryExpression\"], \n \"STRING_LITERAL_LONG2\": [\"primaryExpression\"], \n \"INTEGER\": [\"primaryExpression\"], \n \"DECIMAL\": [\"primaryExpression\"], \n \"DOUBLE\": [\"primaryExpression\"], \n \"INTEGER_POSITIVE\": [\"primaryExpression\"], \n \"DECIMAL_POSITIVE\": [\"primaryExpression\"], \n \"DOUBLE_POSITIVE\": [\"primaryExpression\"], \n \"INTEGER_NEGATIVE\": [\"primaryExpression\"], \n \"DECIMAL_NEGATIVE\": [\"primaryExpression\"], \n \"DOUBLE_NEGATIVE\": [\"primaryExpression\"], \n \"PNAME_LN\": [\"primaryExpression\"], \n \"PNAME_NS\": [\"primaryExpression\"]}, \n \"update\" : {\n \"INSERT\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"DELETE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"LOAD\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"CLEAR\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"DROP\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"ADD\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"MOVE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"COPY\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"CREATE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"WITH\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"BASE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"PREFIX\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"$\": [\"prologue\",\"?[update1,?[;,update]]\"]}, \n \"update1\" : {\n \"LOAD\": [\"load\"], \n \"CLEAR\": [\"clear\"], \n \"DROP\": [\"drop\"], \n \"ADD\": [\"add\"], \n \"MOVE\": [\"move\"], \n \"COPY\": [\"copy\"], \n \"CREATE\": [\"create\"], \n \"INSERT\": [\"INSERT\",\"insert1\"], \n \"DELETE\": [\"DELETE\",\"delete1\"], \n \"WITH\": [\"modify\"]}, \n \"updateAll\" : {\n \"INSERT\": [\"?[update1,?[;,update]]\"], \n \"DELETE\": [\"?[update1,?[;,update]]\"], \n \"LOAD\": [\"?[update1,?[;,update]]\"], \n \"CLEAR\": [\"?[update1,?[;,update]]\"], \n \"DROP\": [\"?[update1,?[;,update]]\"], \n \"ADD\": [\"?[update1,?[;,update]]\"], \n \"MOVE\": [\"?[update1,?[;,update]]\"], \n \"COPY\": [\"?[update1,?[;,update]]\"], \n \"CREATE\": [\"?[update1,?[;,update]]\"], \n \"WITH\": [\"?[update1,?[;,update]]\"], \n \"$\": [\"?[update1,?[;,update]]\"]}, \n \"usingClause\" : {\n \"USING\": [\"USING\",\"or([iriRef,[NAMED,iriRef]])\"]}, \n \"valueLogical\" : {\n \"!\": [\"relationalExpression\"], \n \"+\": [\"relationalExpression\"], \n \"-\": [\"relationalExpression\"], \n \"VAR1\": [\"relationalExpression\"], \n \"VAR2\": [\"relationalExpression\"], \n \"(\": [\"relationalExpression\"], \n \"STR\": [\"relationalExpression\"], \n \"LANG\": [\"relationalExpression\"], \n \"LANGMATCHES\": [\"relationalExpression\"], \n \"DATATYPE\": [\"relationalExpression\"], \n \"BOUND\": [\"relationalExpression\"], \n \"IRI\": [\"relationalExpression\"], \n \"URI\": [\"relationalExpression\"], \n \"BNODE\": [\"relationalExpression\"], \n \"RAND\": [\"relationalExpression\"], \n \"ABS\": [\"relationalExpression\"], \n \"CEIL\": [\"relationalExpression\"], \n \"FLOOR\": [\"relationalExpression\"], \n \"ROUND\": [\"relationalExpression\"], \n \"CONCAT\": [\"relationalExpression\"], \n \"STRLEN\": [\"relationalExpression\"], \n \"UCASE\": [\"relationalExpression\"], \n \"LCASE\": [\"relationalExpression\"], \n \"ENCODE_FOR_URI\": [\"relationalExpression\"], \n \"CONTAINS\": [\"relationalExpression\"], \n \"STRSTARTS\": [\"relationalExpression\"], \n \"STRENDS\": [\"relationalExpression\"], \n \"STRBEFORE\": [\"relationalExpression\"], \n \"STRAFTER\": [\"relationalExpression\"], \n \"YEAR\": [\"relationalExpression\"], \n \"MONTH\": [\"relationalExpression\"], \n \"DAY\": [\"relationalExpression\"], \n \"HOURS\": [\"relationalExpression\"], \n \"MINUTES\": [\"relationalExpression\"], \n \"SECONDS\": [\"relationalExpression\"], \n \"TIMEZONE\": [\"relationalExpression\"], \n \"TZ\": [\"relationalExpression\"], \n \"NOW\": [\"relationalExpression\"], \n \"UUID\": [\"relationalExpression\"], \n \"STRUUID\": [\"relationalExpression\"], \n \"MD5\": [\"relationalExpression\"], \n \"SHA1\": [\"relationalExpression\"], \n \"SHA256\": [\"relationalExpression\"], \n \"SHA384\": [\"relationalExpression\"], \n \"SHA512\": [\"relationalExpression\"], \n \"COALESCE\": [\"relationalExpression\"], \n \"IF\": [\"relationalExpression\"], \n \"STRLANG\": [\"relationalExpression\"], \n \"STRDT\": [\"relationalExpression\"], \n \"SAMETERM\": [\"relationalExpression\"], \n \"ISIRI\": [\"relationalExpression\"], \n \"ISURI\": [\"relationalExpression\"], \n \"ISBLANK\": [\"relationalExpression\"], \n \"ISLITERAL\": [\"relationalExpression\"], \n \"ISNUMERIC\": [\"relationalExpression\"], \n \"TRUE\": [\"relationalExpression\"], \n \"FALSE\": [\"relationalExpression\"], \n \"COUNT\": [\"relationalExpression\"], \n \"SUM\": [\"relationalExpression\"], \n \"MIN\": [\"relationalExpression\"], \n \"MAX\": [\"relationalExpression\"], \n \"AVG\": [\"relationalExpression\"], \n \"SAMPLE\": [\"relationalExpression\"], \n \"GROUP_CONCAT\": [\"relationalExpression\"], \n \"SUBSTR\": [\"relationalExpression\"], \n \"REPLACE\": [\"relationalExpression\"], \n \"REGEX\": [\"relationalExpression\"], \n \"EXISTS\": [\"relationalExpression\"], \n \"NOT\": [\"relationalExpression\"], \n \"IRI_REF\": [\"relationalExpression\"], \n \"STRING_LITERAL1\": [\"relationalExpression\"], \n \"STRING_LITERAL2\": [\"relationalExpression\"], \n \"STRING_LITERAL_LONG1\": [\"relationalExpression\"], \n \"STRING_LITERAL_LONG2\": [\"relationalExpression\"], \n \"INTEGER\": [\"relationalExpression\"], \n \"DECIMAL\": [\"relationalExpression\"], \n \"DOUBLE\": [\"relationalExpression\"], \n \"INTEGER_POSITIVE\": [\"relationalExpression\"], \n \"DECIMAL_POSITIVE\": [\"relationalExpression\"], \n \"DOUBLE_POSITIVE\": [\"relationalExpression\"], \n \"INTEGER_NEGATIVE\": [\"relationalExpression\"], \n \"DECIMAL_NEGATIVE\": [\"relationalExpression\"], \n \"DOUBLE_NEGATIVE\": [\"relationalExpression\"], \n \"PNAME_LN\": [\"relationalExpression\"], \n \"PNAME_NS\": [\"relationalExpression\"]}, \n \"valuesClause\" : {\n \"VALUES\": [\"VALUES\",\"dataBlock\"], \n \"$\": [], \n \"}\": []}, \n \"var\" : {\n \"VAR1\": [\"VAR1\"], \n \"VAR2\": [\"VAR2\"]}, \n \"varOrIRIref\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"]}, \n \"varOrTerm\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"NIL\": [\"graphTerm\"], \n \"IRI_REF\": [\"graphTerm\"], \n \"TRUE\": [\"graphTerm\"], \n \"FALSE\": [\"graphTerm\"], \n \"BLANK_NODE_LABEL\": [\"graphTerm\"], \n \"ANON\": [\"graphTerm\"], \n \"PNAME_LN\": [\"graphTerm\"], \n \"PNAME_NS\": [\"graphTerm\"], \n \"STRING_LITERAL1\": [\"graphTerm\"], \n \"STRING_LITERAL2\": [\"graphTerm\"], \n \"STRING_LITERAL_LONG1\": [\"graphTerm\"], \n \"STRING_LITERAL_LONG2\": [\"graphTerm\"], \n \"INTEGER\": [\"graphTerm\"], \n \"DECIMAL\": [\"graphTerm\"], \n \"DOUBLE\": [\"graphTerm\"], \n \"INTEGER_POSITIVE\": [\"graphTerm\"], \n \"DECIMAL_POSITIVE\": [\"graphTerm\"], \n \"DOUBLE_POSITIVE\": [\"graphTerm\"], \n \"INTEGER_NEGATIVE\": [\"graphTerm\"], \n \"DECIMAL_NEGATIVE\": [\"graphTerm\"], \n \"DOUBLE_NEGATIVE\": [\"graphTerm\"]}, \n \"verb\" : {\n \"VAR1\": [\"storeProperty\",\"varOrIRIref\"], \n \"VAR2\": [\"storeProperty\",\"varOrIRIref\"], \n \"IRI_REF\": [\"storeProperty\",\"varOrIRIref\"], \n \"PNAME_LN\": [\"storeProperty\",\"varOrIRIref\"], \n \"PNAME_NS\": [\"storeProperty\",\"varOrIRIref\"], \n \"a\": [\"storeProperty\",\"a\"]}, \n \"verbPath\" : {\n \"^\": [\"path\"], \n \"a\": [\"path\"], \n \"!\": [\"path\"], \n \"(\": [\"path\"], \n \"IRI_REF\": [\"path\"], \n \"PNAME_LN\": [\"path\"], \n \"PNAME_NS\": [\"path\"]}, \n \"verbSimple\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"]}, \n \"whereClause\" : {\n \"{\": [\"?WHERE\",\"groupGraphPattern\"], \n \"WHERE\": [\"?WHERE\",\"groupGraphPattern\"]}\n},\n\nkeywords:/^(GROUP_CONCAT|DATATYPE|BASE|PREFIX|SELECT|CONSTRUCT|DESCRIBE|ASK|FROM|NAMED|ORDER|BY|LIMIT|ASC|DESC|OFFSET|DISTINCT|REDUCED|WHERE|GRAPH|OPTIONAL|UNION|FILTER|GROUP|HAVING|AS|VALUES|LOAD|CLEAR|DROP|CREATE|MOVE|COPY|SILENT|INSERT|DELETE|DATA|WITH|TO|USING|NAMED|MINUS|BIND|LANGMATCHES|LANG|BOUND|SAMETERM|ISIRI|ISURI|ISBLANK|ISLITERAL|REGEX|TRUE|FALSE|UNDEF|ADD|DEFAULT|ALL|SERVICE|INTO|IN|NOT|IRI|URI|BNODE|RAND|ABS|CEIL|FLOOR|ROUND|CONCAT|STRLEN|UCASE|LCASE|ENCODE_FOR_URI|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|NOW|UUID|STRUUID|MD5|SHA1|SHA256|SHA384|SHA512|COALESCE|IF|STRLANG|STRDT|ISNUMERIC|SUBSTR|REPLACE|EXISTS|COUNT|SUM|MIN|MAX|AVG|SAMPLE|SEPARATOR|STR)/i ,\n\npunct:/^(\\*|a|\\.|\\{|\\}|,|\\(|\\)|;|\\[|\\]|\\|\\||&&|=|!=|!|<=|>=|<|>|\\+|-|\\/|\\^\\^|\\?|\\||\\^)/ ,\n\nstartSymbol:\"sparql11\",\nacceptEmpty:true,\n}\n},{}],3:[function(require,module,exports){\n\"use strict\";\nvar CodeMirror = (function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})();\nCodeMirror.defineMode(\"sparql11\", function(config, parserConfig) {\n\n\tvar indentUnit = config.indentUnit;\n\n\tvar grammar = require('./_tokenizer-table.js');\n\tvar ll1_table = grammar.table;\n\n\tvar IRI_REF = '<[^<>\\\"`\\|\\{\\}\\^\\\\\\x00-\\x20]*>';\n\t/*\n\t * PN_CHARS_BASE =\n\t * '[A-Z]|[a-z]|[\\\\u00C0-\\\\u00D6]|[\\\\u00D8-\\\\u00F6]|[\\\\u00F8-\\\\u02FF]|[\\\\u0370-\\\\u037D]|[\\\\u037F-\\\\u1FFF]|[\\\\u200C-\\\\u200D]|[\\\\u2070-\\\\u218F]|[\\\\u2C00-\\\\u2FEF]|[\\\\u3001-\\\\uD7FF]|[\\\\uF900-\\\\uFDCF]|[\\\\uFDF0-\\\\uFFFD]|[\\\\u10000-\\\\uEFFFF]';\n\t */\n\n\tvar PN_CHARS_BASE =\n\t\t'[A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD]';\n\tvar PN_CHARS_U = PN_CHARS_BASE+'|_';\n\n\tvar PN_CHARS= '('+PN_CHARS_U+'|-|[0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040])';\n\tvar VARNAME = '('+PN_CHARS_U+'|[0-9])'+\n\t\t'('+PN_CHARS_U+'|[0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040])*';\n\tvar VAR1 = '\\\\?'+VARNAME;\n\tvar VAR2 = '\\\\$'+VARNAME;\n\n\tvar PN_PREFIX= '('+PN_CHARS_BASE+')((('+PN_CHARS+')|\\\\.)*('+PN_CHARS+'))?';\n\n\tvar HEX= '[0-9A-Fa-f]';\n\tvar PERCENT='(%'+HEX+HEX+')';\n\tvar PN_LOCAL_ESC='(\\\\\\\\[_~\\\\.\\\\-!\\\\$&\\'\\\\(\\\\)\\\\*\\\\+,;=/\\\\?#@%])';\n\tvar PLX= '('+PERCENT+'|'+PN_LOCAL_ESC+')';\n\tvar PN_LOCAL= '('+PN_CHARS_U+'|:|[0-9]|'+PLX+')(('+PN_CHARS+'|\\\\.|:|'+PLX+')*('+PN_CHARS+'|:|'+PLX+'))?';\n\tvar BLANK_NODE_LABEL = '_:('+PN_CHARS_U+'|[0-9])(('+PN_CHARS+'|\\\\.)*'+PN_CHARS+')?';\n\tvar PNAME_NS = '('+PN_PREFIX+')?:';\n\tvar PNAME_LN = PNAME_NS+PN_LOCAL;\n\tvar LANGTAG = '@[a-zA-Z]+(-[a-zA-Z0-9]+)*';\n\n\tvar EXPONENT = '[eE][\\\\+-]?[0-9]+';\n\tvar INTEGER = '[0-9]+';\n\tvar DECIMAL = '(([0-9]+\\\\.[0-9]*)|(\\\\.[0-9]+))';\n\tvar DOUBLE =\n\t\t'(([0-9]+\\\\.[0-9]*'+EXPONENT+')|'+\n\t\t'(\\\\.[0-9]+'+EXPONENT+')|'+\n\t\t'([0-9]+'+EXPONENT+'))';\n\n\tvar INTEGER_POSITIVE = '\\\\+' + INTEGER;\n\tvar DECIMAL_POSITIVE = '\\\\+' + DECIMAL;\n\tvar DOUBLE_POSITIVE = '\\\\+' + DOUBLE;\n\tvar INTEGER_NEGATIVE = '-' + INTEGER;\n\tvar DECIMAL_NEGATIVE = '-' + DECIMAL;\n\tvar DOUBLE_NEGATIVE = '-' + DOUBLE;\n\n\tvar ECHAR = '\\\\\\\\[tbnrf\\\\\\\\\"\\']';\n\n\n\t //IMPORTANT: this unicode rule is not in the official grammar.\n //Reason: https://github.com/YASGUI/YASQE/issues/49\n //unicode escape sequences (which the sparql spec considers part of the pre-processing of sparql queries)\n //are marked as invalid. We have little choice (other than adding a layer of complixity) than to modify the grammar accordingly\n //however, for now only allow these escape sequences in literals (where actually, this should be allows in e.g. prefixes as well)\n\tvar hex4 = HEX + '{4}'\n\tvar unicode = '(\\\\\\\\u' + hex4 +'|\\\\\\\\U00(10|0' + HEX + ')'+ hex4 + ')';\n\tvar LINE_BREAK = \"\\n\";\n\tvar STRING_LITERAL1 = \"'(([^\\\\x27\\\\x5C\\\\x0A\\\\x0D])|\"+ECHAR+\"|\" + unicode + \")*'\";\n\tvar STRING_LITERAL2 = '\"(([^\\\\x22\\\\x5C\\\\x0A\\\\x0D])|'+ECHAR+'|' + unicode + ')*\"';\n\n\tvar STRING_LITERAL_LONG = {\n\t\tSINGLE: {\n\t\t\tCAT: \"STRING_LITERAL_LONG1\",\n\t\t\tQUOTES: \"'''\",\n\t\t\tCONTENTS: \"(('|'')?([^'\\\\\\\\]|\"+ECHAR+\"|\"+unicode+\"))*\",\n\n\t\t},\n\t\tDOUBLE: {\n\t\t\tCAT: \"STRING_LITERAL_LONG2\",\n\t\t\tQUOTES: '\"\"\"',\n\t\t\tCONTENTS: '((\"|\"\")?([^\"\\\\\\\\]|'+ECHAR+'|'+unicode+'))*',\n\t\t}\n\t};\n\tfor (var key in STRING_LITERAL_LONG) {\n\t\tSTRING_LITERAL_LONG[key].COMPLETE = STRING_LITERAL_LONG[key].QUOTES + STRING_LITERAL_LONG[key].CONTENTS + STRING_LITERAL_LONG[key].QUOTES;\n\t}\n//\tvar STRING_LITERAL_LONG_QUOTES = {\n//\t\t\"STRING_LITERAL_LONG_QUOTES1\": \"'''\",\n//\t\t\"STRING_LITERAL_LONG_QUOTES2\": '\"\"\"',\n//\t}\n//\tvar STRING_LITERAL_LONG_CONTENTS = {\n//\t\t\"STRING_LITERAL_LONG_QUOTES1\": \"(('|'')?([^'\\\\\\\\]|\"+ECHAR+\"|\"+unicode+\"))*\",\n//\t\t\"STRING_LITERAL_LONG_QUOTES2\": '((\"|\"\")?([^\"\\\\\\\\]|'+ECHAR+'|'+unicode+'))*'\n//\t};\n//\tvar STRING_LITERAL_LONG1 = STRING_LITERAL_LONG['SINGLE'].QUOTES + STRING_LITERAL_LONG['SINGLE'].CONTENTS + STRING_LITERAL_LONG['SINGLE'].QUOTES;\n//\tvar STRING_LITERAL_LONG2 = STRING_LITERAL_LONG['DOUBLE'].QUOTES + STRING_LITERAL_LONG['DOUBLE'].CONTENTS + STRING_LITERAL_LONG['DOUBLE'].QUOTES;\n\n//\tvar stringLiteralLongContentTerminals = {};\n//\tfor (var key in STRING_LITERAL_LONG) {\n//\t\tstringLiteralLongContentTerminals[key] = {\n//\t\t\tname: key,\n//\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG_CONTENTS[key]),\n//\t\t\tstyle:\"string\"\n//\t\t};\n//\t}\n\t//some regular expressions not used in regular terminals, because this is used accross lines\n\tvar stringLiteralLongRegex = {};\n\tfor (var key in STRING_LITERAL_LONG) {\n\t\tstringLiteralLongRegex[key] = {\n\t\t\tcomplete: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].COMPLETE),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\tcontents: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].CONTENTS),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\tclosing: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].CONTENTS + STRING_LITERAL_LONG[key].QUOTES),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\tquotes: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_QUOTES_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].QUOTES),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\n\t\t}\n\t}\n\n\tvar WS = '[\\\\x20\\\\x09\\\\x0D\\\\x0A]';\n\t// Careful! Code mirror feeds one line at a time with no \\n\n\t// ... but otherwise comment is terminated by \\n\n\tvar COMMENT = '#([^\\\\n\\\\r]*[\\\\n\\\\r]|[^\\\\n\\\\r]*$)';\n\tvar WS_OR_COMMENT_STAR = '('+WS+'|('+COMMENT+'))*';\n\tvar NIL = '\\\\('+WS_OR_COMMENT_STAR+'\\\\)';\n\tvar ANON = '\\\\['+WS_OR_COMMENT_STAR+'\\\\]';\n\tvar terminals= [\n\t\t{ name: \"WS\",\n\t\t\tregex:new RegExp(\"^\"+WS+\"+\"),\n\t\t\tstyle:\"ws\" },\n\n\t\t{ name: \"COMMENT\",\n\t\t\tregex:new RegExp(\"^\"+COMMENT),\n\t\t\tstyle:\"comment\" },\n\n\t\t{ name: \"IRI_REF\",\n\t\t\tregex:new RegExp(\"^\"+IRI_REF),\n\t\t\tstyle:\"variable-3\" },\n\n\t\t{ name: \"VAR1\",\n\t\t\tregex:new RegExp(\"^\"+VAR1),\n\t\t\tstyle:\"atom\"},\n\n\t\t{ name: \"VAR2\",\n\t\t\tregex:new RegExp(\"^\"+VAR2),\n\t\t\tstyle:\"atom\"},\n\n\t\t{ name: \"LANGTAG\",\n\t\t\tregex:new RegExp(\"^\"+LANGTAG),\n\t\t\tstyle:\"meta\"},\n\n\t\t{ name: \"DOUBLE\",\n\t\t\tregex:new RegExp(\"^\"+DOUBLE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DECIMAL\",\n\t\t\tregex:new RegExp(\"^\"+DECIMAL),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"INTEGER\",\n\t\t\tregex:new RegExp(\"^\"+INTEGER),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DOUBLE_POSITIVE\",\n\t\t\tregex:new RegExp(\"^\"+DOUBLE_POSITIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DECIMAL_POSITIVE\",\n\t\t\tregex:new RegExp(\"^\"+DECIMAL_POSITIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"INTEGER_POSITIVE\",\n\t\t\tregex:new RegExp(\"^\"+INTEGER_POSITIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DOUBLE_NEGATIVE\",\n\t\t\tregex:new RegExp(\"^\"+DOUBLE_NEGATIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DECIMAL_NEGATIVE\",\n\t\t\tregex:new RegExp(\"^\"+DECIMAL_NEGATIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"INTEGER_NEGATIVE\",\n\t\t\tregex:new RegExp(\"^\"+INTEGER_NEGATIVE),\n\t\t\tstyle:\"number\" },\n//\t\tstringLiteralLongRegex.SINGLE.complete,\n//\t\tstringLiteralLongRegex.DOUBLE.complete,\n//\t\tstringLiteralLongRegex.SINGLE.quotes,\n//\t\tstringLiteralLongRegex.DOUBLE.quotes,\n\n\t\t{ name: \"STRING_LITERAL1\",\n\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL1),\n\t\t\tstyle:\"string\" },\n\n\t\t{ name: \"STRING_LITERAL2\",\n\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL2),\n\t\t\tstyle:\"string\" },\n\n\t\t// Enclosed comments won't be highlighted\n\t\t{ name: \"NIL\",\n\t\t\tregex:new RegExp(\"^\"+NIL),\n\t\t\tstyle:\"punc\" },\n\n\t\t// Enclosed comments won't be highlighted\n\t\t{ name: \"ANON\",\n\t\t\tregex:new RegExp(\"^\"+ANON),\n\t\t\tstyle:\"punc\" },\n\n\t\t{ name: \"PNAME_LN\",\n\t\t\tregex:new RegExp(\"^\"+PNAME_LN),\n\t\t\tstyle:\"string-2\" },\n\n\t\t{ name: \"PNAME_NS\",\n\t\t\tregex:new RegExp(\"^\"+PNAME_NS),\n\t\t\tstyle:\"string-2\" },\n\n\t\t{ name: \"BLANK_NODE_LABEL\",\n\t\t\tregex:new RegExp(\"^\"+BLANK_NODE_LABEL),\n\t\t\tstyle:\"string-2\" }\n\t];\n\n\tfunction getPossibles(symbol) {\n\t\tvar possibles=[], possiblesOb=ll1_table[symbol];\n\t\tif (possiblesOb!=undefined) {\n\t\t\tfor (var property in possiblesOb) {\n\t\t\t\tpossibles.push(property.toString());\n\t\t\t}\n\t\t} else {\n\t\t\tpossibles.push(symbol);\n\t\t}\n\t\treturn possibles;\n\t}\n\n\n\tfunction tokenBase(stream, state) {\n\n\t\tfunction nextToken() {\n\t\t\tvar consumed=null;\n\t\t\tif (state.inLiteral) {\n\n\t\t\t\tvar closingQuotes = false;\n\t\t\t\t//multi-line literal. try to parse contents.\n\t\t\t\tconsumed = stream.match(stringLiteralLongRegex[state.inLiteral].contents.regex, true, false);\n\t\t\t\tif (consumed && consumed[0].length == 0) {\n\t\t\t\t\t//try seeing whether we can consume closing quotes, to avoid stopping\n\t\t\t\t\tconsumed = stream.match(stringLiteralLongRegex[state.inLiteral].closing.regex, true, false);\n\t\t\t\t\tclosingQuotes = true;\n\t\t\t\t}\n\n\t\t\t\tif (consumed && consumed[0].length > 0) {\n\t\t\t\t\t//some string content here.\n\t\t\t\t\t var returnObj = {\n\t\t\t\t\t\tquotePos: (closingQuotes? 'end': 'content'),\n\t\t\t\t\t\tcat: STRING_LITERAL_LONG[state.inLiteral].CAT,\n\t\t\t\t\t\tstyle: stringLiteralLongRegex[state.inLiteral].complete.style,\n\t\t\t\t\t\ttext: consumed[0],\n\t\t\t\t\t\tstart: stream.start\n\t\t\t\t\t};\n\t\t\t\t\t if (closingQuotes) state.inLiteral = false;\n\t\t\t\t\t return returnObj;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Multiline literals\n\t\t\tfor (var quoteType in stringLiteralLongRegex) {\n\t\t\t\tconsumed= stream.match(stringLiteralLongRegex[quoteType].quotes.regex,true,false);\n\t\t\t\tif (consumed) {\n\t\t\t\t\tvar quotePos;\n\t\t\t\t\tif (state.inLiteral) {\n\t\t\t\t\t\t//end of literal. everything is fine\n\t\t\t\t\t\tstate.inLiteral = false;\n\t\t\t\t\t\tquotePos = 'end';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.inLiteral = quoteType;\n\t\t\t\t\t\tquotePos = 'start';\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcat: STRING_LITERAL_LONG[quoteType].CAT,\n\t\t\t\t\t\tstyle: stringLiteralLongRegex[quoteType].quotes.style,\n\t\t\t\t\t\ttext: consumed[0],\n\t\t\t\t\t\tquotePos: quotePos,\n\t\t\t\t\t\tstart: stream.start\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\n\n\t\t\t// Tokens defined by individual regular expressions\n\t\t\tfor (var i=0; i<terminals.length; ++i) {\n\t\t\t\tconsumed= stream.match(terminals[i].regex,true,false);\n\t\t\t\tif (consumed) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcat: terminals[i].name,\n\t\t\t\t\t\tstyle: terminals[i].style,\n\t\t\t\t\t\ttext: consumed[0],\n\t\t\t\t\t\tstart: stream.start\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Keywords\n\t\t\tconsumed= stream.match(grammar.keywords,true,false);\n\t\t\tif (consumed)\n\t\t\t\treturn { cat: stream.current().toUpperCase(),\n\t\t\t\t\t\t\t\t style: \"keyword\",\n\t\t\t\t\t\t\t\t text: consumed[0],\n\t\t\t\t\t\t\t\t start: stream.start\n\t\t\t\t\t\t\t };\n\n\t\t\t// Punctuation\n\t\t\tconsumed= stream.match(grammar.punct,true,false);\n\t\t\tif (consumed)\n\t\t\t\treturn { cat: stream.current(),\n\t\t\t\t\t\t\t\t style: \"punc\",\n\t\t\t\t\t\t\t\t text: consumed[0],\n\t\t\t\t\t\t\t\t start: stream.start\n\t\t\t\t\t\t\t };\n\n\t\t\t// Token is invalid\n\t\t\t// better consume something anyway, or else we're stuck\n\t\t\tconsumed= stream.match(/^.[A-Za-z0-9]*/,true,false);\n\t\t\treturn { cat:\"<invalid_token>\",\n\t\t\t\t\t\t\t style: \"error\",\n\t\t\t\t\t\t\t text: consumed[0],\n\t\t\t\t\t\t\t start: stream.start\n\t\t\t\t\t\t };\n\t\t}\n\n\t\tfunction recordFailurePos() {\n\t\t\t// tokenOb.style= \"sp-invalid\";\n\t\t\tvar col= stream.column();\n\t\t\tstate.errorStartPos= col;\n\t\t\tstate.errorEndPos= col+tokenOb.text.length;\n\t\t};\n\t\tfunction setQueryType(s) {\n\t\t\tif (state.queryType==null) {\n\t\t\t\tif (s ==\"SELECT\" || s==\"CONSTRUCT\" || s==\"ASK\" || s==\"DESCRIBE\" || s==\"INSERT\" || s==\"DELETE\" || s==\"LOAD\" || s==\"CLEAR\" || s==\"CREATE\" || s==\"DROP\" || s==\"COPY\" || s==\"MOVE\" || s==\"ADD\")\n\t\t\t\t\tstate.queryType=s;\n\t\t\t}\n\t\t}\n\n\t\t// Some fake non-terminals are just there to have side-effect on state\n\t\t// - i.e. allow or disallow variables and bnodes in certain non-nesting\n\t\t// contexts\n\t\tfunction setSideConditions(topSymbol) {\n\t\t\tif (topSymbol === \"prefixDecl\") {\n\t\t\t\tstate.inPrefixDecl = true;\n\t\t\t} else {\n\t\t\t\tstate.inPrefixDecl = false;\n\t\t\t}\n\t\t\tswitch(topSymbol) {\n\t\t\t\tcase \"disallowVars\":\n\t\t\t\t\t\tstate.allowVars=false;break;\n\t\t\t\tcase \"allowVars\":\n\t\t\t\t\tstate.allowVars=true; break;\n\t\t\t\tcase \"disallowBnodes\":\n\t\t\t\t\tstate.allowBnodes=false;break;\n\t\t\t\tcase \"allowBnodes\":\n\t\t\t\t\tstate.allowBnodes=true; break;\n\t\t\t\tcase \"storeProperty\":\n\t\t\t\t\tstate.storeProperty=true; break;\n\t\t\t}\n\t\t}\n\n\t\tfunction checkSideConditions(topSymbol) {\n\t\t\treturn(\n\t\t\t\t(state.allowVars || topSymbol!=\"var\") &&\n\t\t\t\t\t(state.allowBnodes ||\n\t\t\t\t\t (topSymbol!=\"blankNode\" &&\n\t\t\t\t\t\ttopSymbol!=\"blankNodePropertyList\" &&\n\t\t\t\t\t\ttopSymbol!=\"blankNodePropertyListPath\")));\n\t\t}\n\n\t\t// CodeMirror works with one line at a time,\n\t\t// but newline should behave like whitespace\n\t\t// - i.e. a definite break between tokens (for autocompleter)\n\t\tif (stream.pos==0)\n\t\t\tstate.possibleCurrent= state.possibleNext;\n\n\t\tvar tokenOb= nextToken();\n\n\n\t\tif (tokenOb.cat==\"<invalid_token>\") {\n\t\t\t// set error state, and\n\t\t\tif (state.OK==true) {\n\t\t\t\tstate.OK=false;\n\t\t\t\trecordFailurePos();\n\t\t\t}\n\t\t\tstate.complete=false;\n\t\t\t// alert(\"Invalid:\"+tokenOb.text);\n\t\t\treturn tokenOb.style;\n\t\t}\n\n\t\tif (tokenOb.cat == \"WS\" || tokenOb.cat == \"COMMENT\" || (tokenOb.quotePos && tokenOb.quotePos != 'end')) {\n\t\t\tstate.possibleCurrent = state.possibleNext;\n\t\t\treturn(tokenOb.style);\n\t\t}\n\t\t// Otherwise, run the parser until the token is digested\n\t\t// or failure\n\t\tvar finished= false;\n\t\tvar topSymbol;\n\t\tvar token= tokenOb.cat;\n\n\t\tif (!tokenOb.quotePos || tokenOb.quotePos == 'end') {\n\t\t// Incremental LL1 parse\n\t\t\twhile(state.stack.length>0 && token && state.OK && !finished ) {\n\t\t\t\ttopSymbol= state.stack.pop();\n\n\t\t\t\tif (!ll1_table[topSymbol]) {\n\t\t\t\t\t// Top symbol is a terminal\n\t\t\t\t\tif (topSymbol == token) {\n\t\t\t\t\t\tif (state.inPrefixDecl) {\n\t\t\t\t\t\t\tif (topSymbol === \"PNAME_NS\" && tokenOb.text.length > 0) {\n\t\t\t\t\t\t\t\tstate.currentPnameNs = tokenOb.text.slice(0,-1);\n\t\t\t\t\t\t\t} else if (state.currentPnameNs !== undefined && tokenOb.text.length > 2) {\n\t\t\t\t\t\t\t\tstate.prefixes[state.currentPnameNs] = tokenOb.text.slice(1,-1);\n\t\t\t\t\t\t\t\t//reset current pname ns\n\t\t\t\t\t\t\t\tstate.currentPnameNs = undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Matching terminals\n\t\t\t\t\t\t// - consume token from input stream\n\t\t\t\t\t\tfinished=true;\n\t\t\t\t\t\tsetQueryType(topSymbol);\n\t\t\t\t\t\t// Check whether $ (end of input token) is poss next\n\t\t\t\t\t\t// for everything on stack\n\t\t\t\t\t\tvar allNillable=true;\n\t\t\t\t\t\tfor(var sp=state.stack.length;sp>0;--sp) {\n\t\t\t\t\t\t\tvar item=ll1_table[state.stack[sp-1]];\n\t\t\t\t\t\t\tif (!item || !item[\"$\"])\n\t\t\t\t\t\t\t\tallNillable=false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.complete= allNillable;\n\t\t\t\t\t\tif (state.storeProperty && token.cat != \"punc\") {\n\t\t\t\t\t\t\tstate.lastProperty = tokenOb.text;\n\t\t\t\t\t\t\tstate.storeProperty = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//check whether a used prefix is actually defined\n\t\t\t\t\t\tif (!state.inPrefixDecl && (token === \"PNAME_NS\" || token === \"PNAME_LN\")) {\n\t\t\t\t\t\t\tvar colonIndex = tokenOb.text.indexOf(':');\n\t\t\t\t\t\t\tif (colonIndex >= 0) {\n\t\t\t\t\t\t\t\tvar prefNs = tokenOb.text.slice(0,colonIndex)\n\t\t\t\t\t\t\t\t//avoid warnings for missing bif prefixes (yuck, virtuoso-specific)\n\t\t\t\t\t\t\t\tif (!state.prefixes[prefNs] && prefNs !== 'bif') {\n\t\t\t\t\t\t\t\t\tstate.OK = false;\n\t\t\t\t\t\t\t\t\trecordFailurePos();\n\t\t\t\t\t\t\t\t\tstate.errorMsg = \"Prefix '\" + prefNs + \"' is not defined\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.OK=false;\n\t\t\t\t\t\tstate.complete=false;\n\t\t\t\t\t\trecordFailurePos();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// topSymbol is nonterminal\n\t\t\t\t\t// - see if there is an entry for topSymbol\n\t\t\t\t\t// and nextToken in table\n\t\t\t\t\tvar nextSymbols= ll1_table[topSymbol][token];\n\t\t\t\t\tif (nextSymbols!=undefined && checkSideConditions(topSymbol)) {\n\t\t\t\t\t\t// Match - copy RHS of rule to stack\n\t\t\t\t\t\tfor (var i=nextSymbols.length-1; i>=0; --i) {\n\t\t\t\t\t\t\tstate.stack.push(nextSymbols[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Peform any non-grammatical side-effects\n\t\t\t\t\t\tsetSideConditions(topSymbol);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No match in table - fail\n\t\t\t\t\t\tstate.OK=false;\n\t\t\t\t\t\tstate.complete=false;\n\t\t\t\t\t\trecordFailurePos();\n\t\t\t\t\t\tstate.stack.push(topSymbol); // Shove topSymbol back on stack\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!finished && state.OK) {\n\t\t\tstate.OK=false; state.complete=false; recordFailurePos();\n\t\t}\n\n\t\tif (state.possibleCurrent.indexOf('a') >= 0){\n\t\t\tstate.lastPredicateOffset = tokenOb.start;\n\t\t}\n\t\tstate.possibleCurrent = state.possibleNext;\n\n\t\tstate.possibleNext = getPossibles(state.stack[state.stack.length-1]);\n\n\t\treturn tokenOb.style;\n\t}\n\n\tvar indentTop={\n\t\t\"*[,, object]\": 3,\n\t\t\"*[(,),object]\": 3,\n\t\t\"*[(,),objectPath]\": 3,\n\t\t\"*[/,pathEltOrInverse]\": 2,\n\t\t\"object\": 2,\n\t\t\"objectPath\": 2,\n\t\t\"objectList\": 2,\n\t\t\"objectListPath\": 2,\n\t\t\"storeProperty\": 2,\n\t\t\"pathMod\": 2,\n\t\t\"?pathMod\": 2,\n\t\t\"propertyListNotEmpty\": 1,\n\t\t\"propertyList\": 1,\n\t\t\"propertyListPath\": 1,\n\t\t\"propertyListPathNotEmpty\": 1,\n\t\t\"?[verb,objectList]\": 1,\n//\t\t\"?[or([verbPath, verbSimple]),objectList]\": 1,\n\t};\n\n\tvar indentTable={\n\t\t\"}\":1,\n\t\t\"]\":0,\n\t\t\")\":1,\n\t\t\"{\":-1,\n\t\t\"(\":-1,\n//\t\t\"*[;,?[or([verbPath,verbSimple]),objectList]]\": 1,\n\t};\n\n\n\tfunction indent(state, textAfter) {\n\t\t//just avoid we don't indent multi-line literals\n\t\tif (state.inLiteral) return 0;\n\t\tif (state.stack.length && state.stack[state.stack.length-1] == \"?[or([verbPath,verbSimple]),objectList]\") {\n\t\t\t//we are after a semi-colon. I.e., nicely align this line with predicate position of previous line\n\t\t\treturn state.lastPredicateOffset;\n\t\t} else {\n\t\t\tvar n = 0; // indent level\n\t\t\tvar i = state.stack.length-1;\n\t\t\tif (/^[\\}\\]\\)]/.test(textAfter)) {\n\t\t\t\t// Skip stack items until after matching bracket\n\t\t\t\tvar closeBracket=textAfter.substr(0,1);\n\t\t\t\tfor( ;i>=0;--i)\t{\n\t\t\t\t\tif (state.stack[i]==closeBracket) {\n\t\t\t\t\t\t--i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Consider nullable non-terminals if at top of stack\n\t\t\t\tvar dn = indentTop[state.stack[i]];\n\t\t\t\tif (dn) {\n\t\t\t\t\tn += dn;\n\t\t\t\t\t--i;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor( ;i>=0;--i)\t{\n\t\t\t\tvar dn = indentTable[state.stack[i]];\n\t\t\t\tif (dn) {\n\t\t\t\t\tn+=dn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn n * config.indentUnit;\n\t\t}\n\t};\n\n\treturn {\n\t\ttoken: tokenBase,\n\t\tstartState: function(base) {\n\t\t\treturn {\n\t\t\t\ttokenize: tokenBase,\n\t\t\t\tOK: true,\n\t\t\t\tcomplete: grammar.acceptEmpty,\n\t\t\t\terrorStartPos: null,\n\t\t\t\terrorEndPos: null,\n\t\t\t\tqueryType: null,\n\t\t\t\tpossibleCurrent: getPossibles(grammar.startSymbol),\n\t\t\t\tpossibleNext: getPossibles(grammar.startSymbol),\n\t\t\t\tallowVars : true,\n\t\t\t\tallowBnodes : true,\n\t\t\t\tstoreProperty : false,\n\t\t\t\tlastProperty : \"\",\n\t\t\t\tinLiteral: false,\n\t\t\t\tstack: [grammar.startSymbol],\n\t\t\t\tlastPredicateOffset: config.indentUnit,\n\t\t\t\tprefixes: {},\n\t\t\t};\n\t\t},\n\t\tindent: indent,\n\t\telectricChars: \"}])\"\n\t};\n}\n);\nCodeMirror.defineMIME(\"application/x-sparql-query\", \"sparql11\");\n\n},{\"./_tokenizer-table.js\":2,\"codemirror\":undefined}],4:[function(require,module,exports){\n/*\n* TRIE implementation in Javascript\n* Copyright (c) 2010 Saurabh Odhyan | http://odhyan.com\n* \n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n* \n* The above copyright notice and this permission notice shall be included in\n* all copies or substantial portions of the Software.\n* \n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n* THE SOFTWARE.\n*\n* Date: Nov 7, 2010\n*/\n\n/*\n* A trie, or prefix tree, is a multi-way tree structure useful for storing strings over an alphabet. \n* It has been used to store large dictionaries of English (say) words in spell-checking programs \n* and in natural-language \"understanding\" programs. \n* @see http://en.wikipedia.org/wiki/Trie\n* @see http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Tree/Trie/\n/*\n\n* @class Trie\n* @constructor\n*/ \nvar Trie = module.exports = function() {\n this.words = 0;\n this.prefixes = 0;\n this.children = [];\n};\n\nTrie.prototype = {\n \n /*\n * Insert a word into the dictionary. \n * Recursively traverse through the trie nodes, and create new node if does not already exist.\n *\n * @method insert\n * @param {String} str Word to insert in the dictionary\n * @param {Integer} pos Current index of the string to be inserted\n * @return {Void}\n */\n insert: function(str, pos) {\n if(str.length == 0) { //blank string cannot be inserted\n return;\n }\n \n var T = this,\n k,\n child;\n \n if(pos === undefined) {\n pos = 0;\n }\n if(pos === str.length) {\n T.words ++;\n return;\n }\n T.prefixes ++;\n k = str[pos];\n if(T.children[k] === undefined) { //if node for this char doesn't exist, create one\n T.children[k] = new Trie();\n }\n child = T.children[k];\n child.insert(str, pos + 1);\n },\n \n /*\n * Remove a word from the dictionary.\n *\n * @method remove\n * @param {String} str Word to be removed\n * @param {Integer} pos Current index of the string to be removed\n * @return {Void}\n */\n remove: function(str, pos) {\n if(str.length == 0) {\n return;\n }\n \n var T = this,\n k,\n child;\n \n if(pos === undefined) {\n pos = 0;\n } \n if(T === undefined) {\n return;\n }\n if(pos === str.length) {\n T.words --;\n return;\n }\n T.prefixes --;\n k = str[pos];\n child = T.children[k];\n child.remove(str, pos + 1);\n },\n \n /*\n * Update an existing word in the dictionary. \n * This method removes the old word from the dictionary and inserts the new word.\n *\n * @method update\n * @param {String} strOld The old word to be replaced\n * @param {String} strNew The new word to be inserted\n * @return {Void}\n */\n update: function(strOld, strNew) {\n if(strOld.length == 0 || strNew.length == 0) {\n return;\n }\n this.remove(strOld);\n this.insert(strNew);\n },\n \n /*\n * Count the number of times a given word has been inserted into the dictionary\n *\n * @method countWord\n * @param {String} str Word to get count of\n * @param {Integer} pos Current index of the given word\n * @return {Integer} The number of times a given word exists in the dictionary\n */\n countWord: function(str, pos) {\n if(str.length == 0) {\n return 0;\n }\n \n var T = this,\n k,\n child,\n ret = 0;\n \n if(pos === undefined) {\n pos = 0;\n } \n if(pos === str.length) {\n return T.words;\n }\n k = str[pos];\n child = T.children[k];\n if(child !== undefined) { //node exists\n ret = child.countWord(str, pos + 1);\n }\n return ret;\n },\n \n /*\n * Count the number of times a given prefix exists in the dictionary\n *\n * @method countPrefix\n * @param {String} str Prefix to get count of\n * @param {Integer} pos Current index of the given prefix\n * @return {Integer} The number of times a given prefix exists in the dictionary\n */\n countPrefix: function(str, pos) {\n if(str.length == 0) {\n return 0;\n }\n \n var T = this,\n k,\n child,\n ret = 0;\n\n if(pos === undefined) {\n pos = 0;\n }\n if(pos === str.length) {\n return T.prefixes;\n }\n var k = str[pos];\n child = T.children[k];\n if(child !== undefined) { //node exists\n ret = child.countPrefix(str, pos + 1); \n }\n return ret; \n },\n \n /*\n * Find a word in the dictionary\n *\n * @method find\n * @param {String} str The word to find in the dictionary\n * @return {Boolean} True if the word exists in the dictionary, else false\n */\n find: function(str) {\n if(str.length == 0) {\n return false;\n }\n \n if(this.countWord(str) > 0) {\n return true;\n } else {\n return false;\n }\n },\n \n /*\n * Get all words in the dictionary\n *\n * @method getAllWords\n * @param {String} str Prefix of current word\n * @return {Array} Array of words in the dictionary\n */\n getAllWords: function(str) {\n var T = this,\n k,\n child,\n ret = [];\n if(str === undefined) {\n str = \"\";\n }\n if(T === undefined) {\n return [];\n }\n if(T.words > 0) {\n ret.push(str);\n }\n for(k in T.children) {\n child = T.children[k];\n ret = ret.concat(child.getAllWords(str + k));\n }\n return ret;\n },\n \n /*\n * Autocomplete a given prefix\n *\n * @method autoComplete\n * @param {String} str Prefix to be completed based on dictionary entries\n * @param {Integer} pos Current index of the prefix\n * @return {Array} Array of possible suggestions\n */\n autoComplete: function(str, pos) {\n \n \n var T = this,\n k,\n child;\n if(str.length == 0) {\n\t\t\tif (pos === undefined) {\n\t\t\t\treturn T.getAllWords(str);\n\t\t\t} else {\n\t\t\t\treturn [];\n\t\t\t}\n }\n if(pos === undefined) {\n pos = 0;\n } \n k = str[pos];\n child = T.children[k];\n if(child === undefined) { //node doesn't exist\n return [];\n }\n if(pos === str.length - 1) {\n return child.getAllWords(str);\n }\n return child.autoComplete(str, pos + 1);\n }\n};\n\n},{}],5:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"fullScreen\", false, function(cm, val, old) {\n if (old == CodeMirror.Init) old = false;\n if (!old == !val) return;\n if (val) setFullscreen(cm);\n else setNormal(cm);\n });\n\n function setFullscreen(cm) {\n var wrap = cm.getWrapperElement();\n cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n width: wrap.style.width, height: wrap.style.height};\n wrap.style.width = \"\";\n wrap.style.height = \"auto\";\n wrap.className += \" CodeMirror-fullscreen\";\n document.documentElement.style.overflow = \"hidden\";\n cm.refresh();\n }\n\n function setNormal(cm) {\n var wrap = cm.getWrapperElement();\n wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, \"\");\n document.documentElement.style.overflow = \"\";\n var info = cm.state.fullScreenRestore;\n wrap.style.width = info.width; wrap.style.height = info.height;\n window.scrollTo(info.scrollLeft, info.scrollTop);\n cm.refresh();\n }\n});\n\n},{\"codemirror\":undefined}],6:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\"};\n\n function findMatchingBracket(cm, where, strict, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\\]]/;\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {\n var match = matching[ch];\n if ((match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);\n if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textare whever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n var currentlyHighlighted = null;\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, strict, config){\n return findMatchingBracket(this, pos, strict, config);\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n\n},{\"codemirror\":undefined}],7:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"fold\", \"brace\", function(cm, start) {\n var line = start.line, lineText = cm.getLine(line);\n var tokenType;\n\n function findOpening(openCh) {\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n if (pass == 1 && found < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n if (!/^(comment|string)/.test(tokenType)) return found + 1;\n at = found - 1;\n }\n }\n\n var startToken = \"{\", endToken = \"}\", startCh = findOpening(\"{\");\n if (startCh == null) {\n startToken = \"[\", endToken = \"]\";\n startCh = findOpening(\"[\");\n }\n\n if (startCh == null) return;\n var count = 1, lastLine = cm.lastLine(), end, endCh;\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i), pos = i == line ? startCh : 0;\n for (;;) {\n var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {\n if (pos == nextOpen) ++count;\n else if (!--count) { end = i; endCh = pos; break outer; }\n }\n ++pos;\n }\n }\n if (end == null || line == end && endCh == startCh) return;\n return {from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)};\n});\n\nCodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type != \"keyword\" || start.string != \"import\") return null;\n // Now find closing semicolon, return its position\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i), semi = text.indexOf(\";\");\n if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};\n }\n }\n\n var startLine = start.line, has = hasImport(startLine), prev;\n if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1))\n return null;\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to: end};\n});\n\nCodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n }\n\n var startLine = start.line, has = hasInclude(startLine);\n if (has == null || hasInclude(startLine - 1) != null) return null;\n for (var end = startLine;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n return {from: CodeMirror.Pos(startLine, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))};\n});\n\n});\n\n},{\"codemirror\":undefined}],8:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function doFold(cm, pos, options, force) {\n if (options && options.call) {\n var finder = options;\n options = null;\n } else {\n var finder = getOption(cm, options, \"rangeFinder\");\n }\n if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n var minSize = getOption(cm, options, \"minFoldSize\");\n\n function getRange(allowFolded) {\n var range = finder(cm, pos);\n if (!range || range.to.line - range.from.line < minSize) return null;\n var marks = cm.findMarksAt(range.from);\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold && force !== \"fold\") {\n if (!allowFolded) return null;\n range.cleared = true;\n marks[i].clear();\n }\n }\n return range;\n }\n\n var range = getRange(true);\n if (getOption(cm, options, \"scanUp\")) while (!range && pos.line > cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n\n var myWidget = makeWidget(cm, options);\n CodeMirror.on(myWidget, \"mousedown\", function(e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n __isFold: true\n });\n myRange.on(\"clear\", function(from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n function makeWidget(cm, options) {\n var widget = getOption(cm, options, \"widget\");\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n }\n return widget;\n }\n\n // Clumsy backwards-compatible interface\n CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };\n };\n\n // New-style interface\n CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n doFold(this, pos, options, force);\n });\n\n CodeMirror.defineExtension(\"isFolded\", function(pos) {\n var marks = this.findMarksAt(pos);\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function(cm) {\n cm.foldCode(cm.getCursor());\n };\n CodeMirror.commands.fold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n CodeMirror.commands.unfold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"unfold\");\n };\n CodeMirror.commands.foldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), null, \"fold\");\n });\n };\n CodeMirror.commands.unfoldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), null, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function(cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n\n CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false,\n clearOnEnter: true\n };\n\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined)\n return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined)\n return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n return getOption(this, options, name);\n });\n});\n\n},{\"codemirror\":undefined}],9:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(), require(\"./foldcode\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./foldcode\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"change\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", onChange);\n }\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"change\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", onChange);\n }\n });\n\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n function isFolded(cm, line) {\n var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold && marks[i].find().from.line == line) return marks[i];\n }\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options, cur = from;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\");\n cm.eachLine(from, to, function(line) {\n var mark = null;\n if (isFolded(cm, cur)) {\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n if (range && range.to.line - range.from.line >= minSize)\n mark = marker(opts.indicatorOpen);\n }\n cm.setGutterMarker(line, opts.gutter, mark);\n ++cur;\n });\n }\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(), state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function() {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from; state.to = vp.to;\n }\n\n function onGutterClick(cm, line, gutter) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n if (gutter != opts.gutter) return;\n var folded = isFolded(cm, line);\n if (folded) folded.clear();\n else cm.foldCode(Pos(line, 0), opts.rangeFinder);\n }\n\n function onChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);\n }\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() {\n var vp = cm.getViewport();\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function() {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var line = from.line;\n if (line >= state.from && line < state.to)\n updateFoldInfo(cm, line, line + 1);\n }\n});\n\n},{\"./foldcode\":8,\"codemirror\":undefined}],10:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }\n\n var nameStartChar = \"A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n var nameChar = nameStartChar + \"\\-\\:\\.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n var xmlTagStart = new RegExp(\"<(/?)([\" + nameStartChar + \"][\" + nameChar + \"]*)\", \"g\");\n\n function Iter(cm, line, ch, range) {\n this.line = line; this.ch = ch;\n this.cm = cm; this.text = cm.getLine(line);\n this.min = range ? Math.max(range.from, cm.firstLine()) : cm.firstLine();\n this.max = range ? Math.min(range.to - 1, cm.lastLine()) : cm.lastLine();\n }\n\n function tagAt(iter, ch) {\n var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));\n return type && /\\btag\\b/.test(type);\n }\n\n function nextLine(iter) {\n if (iter.line >= iter.max) return;\n iter.ch = 0;\n iter.text = iter.cm.getLine(++iter.line);\n return true;\n }\n function prevLine(iter) {\n if (iter.line <= iter.min) return;\n iter.text = iter.cm.getLine(--iter.line);\n iter.ch = iter.text.length;\n return true;\n }\n\n function toTagEnd(iter) {\n for (;;) {\n var gt = iter.text.indexOf(\">\", iter.ch);\n if (gt == -1) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n function toTagStart(iter) {\n for (;;) {\n var lt = iter.ch ? iter.text.lastIndexOf(\"<\", iter.ch - 1) : -1;\n if (lt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }\n xmlTagStart.lastIndex = lt;\n iter.ch = lt;\n var match = xmlTagStart.exec(iter.text);\n if (match && match.index == lt) return match;\n }\n }\n\n function toNextTag(iter) {\n for (;;) {\n xmlTagStart.lastIndex = iter.ch;\n var found = xmlTagStart.exec(iter.text);\n if (!found) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; }\n iter.ch = found.index + found[0].length;\n return found;\n }\n }\n function toPrevTag(iter) {\n for (;;) {\n var gt = iter.ch ? iter.text.lastIndexOf(\">\", iter.ch - 1) : -1;\n if (gt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n\n function findMatchingClose(iter, tag) {\n var stack = [];\n for (;;) {\n var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0);\n if (!next || !(end = toTagEnd(iter))) return;\n if (end == \"selfClose\") continue;\n if (next[1]) { // closing tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == next[2])) return {\n tag: next[2],\n from: Pos(startLine, startCh),\n to: Pos(iter.line, iter.ch)\n };\n } else { // opening tag\n stack.push(next[2]);\n }\n }\n }\n function findMatchingOpen(iter, tag) {\n var stack = [];\n for (;;) {\n var prev = toPrevTag(iter);\n if (!prev) return;\n if (prev == \"selfClose\") { toTagStart(iter); continue; }\n var endLine = iter.line, endCh = iter.ch;\n var start = toTagStart(iter);\n if (!start) return;\n if (start[1]) { // closing tag\n stack.push(start[2]);\n } else { // opening tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == start[2])) return {\n tag: start[2],\n from: Pos(iter.line, iter.ch),\n to: Pos(endLine, endCh)\n };\n }\n }\n }\n\n CodeMirror.registerHelper(\"fold\", \"xml\", function(cm, start) {\n var iter = new Iter(cm, start.line, 0);\n for (;;) {\n var openTag = toNextTag(iter), end;\n if (!openTag || iter.line != start.line || !(end = toTagEnd(iter))) return;\n if (!openTag[1] && end != \"selfClose\") {\n var startPos = Pos(iter.line, iter.ch);\n var endPos = findMatchingClose(iter, openTag[2]);\n return endPos && {from: startPos, to: endPos.from};\n }\n }\n });\n CodeMirror.findMatchingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n if (iter.text.indexOf(\">\") == -1 && iter.text.indexOf(\"<\") == -1) return;\n var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);\n var start = end && toTagStart(iter);\n if (!end || !start || cmp(iter, pos) > 0) return;\n var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};\n if (end == \"selfClose\") return {open: here, close: null, at: \"open\"};\n\n if (start[1]) { // closing tag\n return {open: findMatchingOpen(iter, start[2]), close: here, at: \"close\"};\n } else { // opening tag\n iter = new Iter(cm, to.line, to.ch, range);\n return {open: here, close: findMatchingClose(iter, start[2]), at: \"open\"};\n }\n };\n\n CodeMirror.findEnclosingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n for (;;) {\n var open = findMatchingOpen(iter);\n if (!open) break;\n var forward = new Iter(cm, pos.line, pos.ch, range);\n var close = findMatchingClose(forward, open.tag);\n if (close) return {open: open, close: close};\n }\n };\n\n // Used by addon/edit/closetag.js\n CodeMirror.scanForClosingTag = function(cm, pos, name, end) {\n var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null);\n return findMatchingClose(iter, name);\n };\n});\n\n},{\"codemirror\":undefined}],11:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n this.cm.off(\"cursorActivity\", this.activityFunc);\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i];\n if (completion.hint) completion.hint(this.cm, data, completion);\n else this.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n this.close();\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < this.startPos.ch || this.cm.somethingSelected() ||\n (pos.ch && this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n if (data && this.data && isNewCompletion(this.data, data)) return;\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function isNewCompletion(old, nw) {\n var moved = CodeMirror.cmpPos(nw.from, old.from)\n return moved > 0 && old.to.ch - old.from.ch != nw.to.ch - nw.from.ch\n }\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n\n var hints = this.hints = document.createElement(\"ul\");\n hints.className = \"CodeMirror-hints\";\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(document.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(document.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n hints.style.left = left + \"px\";\n hints.style.top = top + \"px\";\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);\n var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight);\n (completion.options.container || document.body).appendChild(hints);\n var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;\n var scrolls = hints.scrollHeight > hints.clientHeight + 1\n var startScroll = cm.getScrollInfo();\n\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = pos.left - overlapX) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (window.pageYOffset || (document.documentElement || document.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n CodeMirror.signal(data, \"select\", completions[0], hints.firstChild);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n if (node.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node.offsetTop - 3;\n else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n var to = CodeMirror.Pos(cur.line, token.end);\n if (token.string && /\\w/.test(token.string[token.string.length - 1])) {\n var term = token.string, from = CodeMirror.Pos(cur.line, token.start);\n } else {\n var term = \"\", from = to;\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnUnfocus: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n\n},{\"codemirror\":undefined}],12:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.runMode = function(string, modespec, callback, options) {\n var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);\n var ie = /MSIE \\d/.test(navigator.userAgent);\n var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9);\n\n if (callback.appendChild) {\n var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;\n var node = callback, col = 0;\n node.innerHTML = \"\";\n callback = function(text, style) {\n if (text == \"\\n\") {\n // Emitting LF or CRLF on IE8 or earlier results in an incorrect display.\n // Emitting a carriage return makes everything ok.\n node.appendChild(document.createTextNode(ie_lt9 ? '\\r' : text));\n col = 0;\n return;\n }\n var content = \"\";\n // replace tabs\n for (var pos = 0;;) {\n var idx = text.indexOf(\"\\t\", pos);\n if (idx == -1) {\n content += text.slice(pos);\n col += text.length - pos;\n break;\n } else {\n col += idx - pos;\n content += text.slice(pos, idx);\n var size = tabSize - col % tabSize;\n col += size;\n for (var i = 0; i < size; ++i) content += \" \";\n pos = idx + 1;\n }\n }\n\n if (style) {\n var sp = node.appendChild(document.createElement(\"span\"));\n sp.className = \"cm-\" + style.replace(/ +/g, \" cm-\");\n sp.appendChild(document.createTextNode(content));\n } else {\n node.appendChild(document.createTextNode(content));\n }\n };\n }\n\n var lines = CodeMirror.splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);\n for (var i = 0, e = lines.length; i < e; ++i) {\n if (i) callback(\"\\n\");\n var stream = new CodeMirror.StringStream(lines[i]);\n if (!stream.string && mode.blankLine) mode.blankLine(state);\n while (!stream.eol()) {\n var style = mode.token(stream, state);\n callback(stream.current(), style, i, stream.start, state);\n stream.start = stream.pos;\n }\n }\n};\n\n});\n\n},{\"codemirror\":undefined}],13:[function(require,module,exports){\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n var Pos = CodeMirror.Pos;\n\n function SearchCursor(doc, query, pos, caseFold) {\n this.atOccurrence = false; this.doc = doc;\n if (caseFold == null && typeof query == \"string\") caseFold = false;\n\n pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n this.pos = {from: pos, to: pos};\n\n // The matches method is filled in based on the type of query.\n // It takes a position and a direction, and returns an object\n // describing the next occurrence of the query, or null if no\n // more matches were found.\n if (typeof query != \"string\") { // Regexp match\n if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"ig\" : \"g\");\n this.matches = function(reverse, pos) {\n if (reverse) {\n query.lastIndex = 0;\n var line = doc.getLine(pos.line).slice(0, pos.ch), cutOff = 0, match, start;\n for (;;) {\n query.lastIndex = cutOff;\n var newMatch = query.exec(line);\n if (!newMatch) break;\n match = newMatch;\n start = match.index;\n cutOff = match.index + (match[0].length || 1);\n if (cutOff == line.length) break;\n }\n var matchLen = (match && match[0].length) || 0;\n if (!matchLen) {\n if (start == 0 && line.length == 0) {match = undefined;}\n else if (start != doc.getLine(pos.line).length) {\n matchLen++;\n }\n }\n } else {\n query.lastIndex = pos.ch;\n var line = doc.getLine(pos.line), match = query.exec(line);\n var matchLen = (match && match[0].length) || 0;\n var start = match && match.index;\n if (start + matchLen != line.length && !matchLen) matchLen = 1;\n }\n if (match && matchLen)\n return {from: Pos(pos.line, start),\n to: Pos(pos.line, start + matchLen),\n match: match};\n };\n } else { // String query\n var origQuery = query;\n if (caseFold) query = query.toLowerCase();\n var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;};\n var target = query.split(\"\\n\");\n // Different methods for single-line and multi-line queries\n if (target.length == 1) {\n if (!query.length) {\n // Empty string would match anything and never progress, so\n // we define it to match nothing instead.\n this.matches = function() {};\n } else {\n this.matches = function(reverse, pos) {\n if (reverse) {\n var orig = doc.getLine(pos.line).slice(0, pos.ch), line = fold(orig);\n var match = line.lastIndexOf(query);\n if (match > -1) {\n match = adjustPos(orig, line, match);\n return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n }\n } else {\n var orig = doc.getLine(pos.line).slice(pos.ch), line = fold(orig);\n var match = line.indexOf(query);\n if (match > -1) {\n match = adjustPos(orig, line, match) + pos.ch;\n return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n }\n }\n };\n }\n } else {\n var origTarget = origQuery.split(\"\\n\");\n this.matches = function(reverse, pos) {\n var last = target.length - 1;\n if (reverse) {\n if (pos.line - (target.length - 1) < doc.firstLine()) return;\n if (fold(doc.getLine(pos.line).slice(0, origTarget[last].length)) != target[target.length - 1]) return;\n var to = Pos(pos.line, origTarget[last].length);\n for (var ln = pos.line - 1, i = last - 1; i >= 1; --i, --ln)\n if (target[i] != fold(doc.getLine(ln))) return;\n var line = doc.getLine(ln), cut = line.length - origTarget[0].length;\n if (fold(line.slice(cut)) != target[0]) return;\n return {from: Pos(ln, cut), to: to};\n } else {\n if (pos.line + (target.length - 1) > doc.lastLine()) return;\n var line = doc.getLine(pos.line), cut = line.length - origTarget[0].length;\n if (fold(line.slice(cut)) != target[0]) return;\n var from = Pos(pos.line, cut);\n for (var ln = pos.line + 1, i = 1; i < last; ++i, ++ln)\n if (target[i] != fold(doc.getLine(ln))) return;\n if (fold(doc.getLine(ln).slice(0, origTarget[last].length)) != target[last]) return;\n return {from: from, to: Pos(ln, origTarget[last].length)};\n }\n };\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false);},\n findPrevious: function() {return this.find(true);},\n\n find: function(reverse) {\n var self = this, pos = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n function savePosAndFail(line) {\n var pos = Pos(line, 0);\n self.pos = {from: pos, to: pos};\n self.atOccurrence = false;\n return false;\n }\n\n for (;;) {\n if (this.pos = this.matches(reverse, pos)) {\n this.atOccurrence = true;\n return this.pos.match || true;\n }\n if (reverse) {\n if (!pos.line) return savePosAndFail(0);\n pos = Pos(pos.line-1, this.doc.getLine(pos.line-1).length);\n }\n else {\n var maxLine = this.doc.lineCount();\n if (pos.line == maxLine - 1) return savePosAndFail(maxLine);\n pos = Pos(pos.line + 1, 0);\n }\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from;},\n to: function() {if (this.atOccurrence) return this.pos.to;},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return;\n var lines = CodeMirror.splitLines(newText);\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n }\n };\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos) {\n if (orig.length == folded.length) return pos;\n for (var pos1 = Math.min(pos, orig.length);;) {\n var len1 = orig.slice(0, pos1).toLowerCase().length;\n if (len1 < pos) ++pos1;\n else if (len1 > pos) --pos1;\n else return pos1;\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold);\n });\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold);\n });\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = [];\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n ranges.push({anchor: cur.from(), head: cur.to()});\n }\n if (ranges.length)\n this.setSelections(ranges, 0);\n });\n});\n\n},{\"codemirror\":undefined}],14:[function(require,module,exports){\n(function (global){\n\"use strict\"\n// Module export pattern from\n// https://github.com/umdjs/umd/blob/master/returnExports.js\n;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.store = factory();\n }\n}(this, function () {\n\t\n\t// Store.js\n\tvar store = {},\n\t\twin = (typeof window != 'undefined' ? window : global),\n\t\tdoc = win.document,\n\t\tlocalStorageName = 'localStorage',\n\t\tscriptTag = 'script',\n\t\tstorage\n\n\tstore.disabled = false\n\tstore.version = '1.3.20'\n\tstore.set = function(key, value) {}\n\tstore.get = function(key, defaultVal) {}\n\tstore.has = function(key) { return store.get(key) !== undefined }\n\tstore.remove = function(key) {}\n\tstore.clear = function() {}\n\tstore.transact = function(key, defaultVal, transactionFn) {\n\t\tif (transactionFn == null) {\n\t\t\ttransactionFn = defaultVal\n\t\t\tdefaultVal = null\n\t\t}\n\t\tif (defaultVal == null) {\n\t\t\tdefaultVal = {}\n\t\t}\n\t\tvar val = store.get(key, defaultVal)\n\t\ttransactionFn(val)\n\t\tstore.set(key, val)\n\t}\n\tstore.getAll = function() {}\n\tstore.forEach = function() {}\n\n\tstore.serialize = function(value) {\n\t\treturn JSON.stringify(value)\n\t}\n\tstore.deserialize = function(value) {\n\t\tif (typeof value != 'string') { return undefined }\n\t\ttry { return JSON.parse(value) }\n\t\tcatch(e) { return value || undefined }\n\t}\n\n\t// Functions to encapsulate questionable FireFox 3.6.13 behavior\n\t// when about.config::dom.storage.enabled === false\n\t// See https://github.com/marcuswestin/store.js/issues#issue/13\n\tfunction isLocalStorageNameSupported() {\n\t\ttry { return (localStorageName in win && win[localStorageName]) }\n\t\tcatch(err) { return false }\n\t}\n\n\tif (isLocalStorageNameSupported()) {\n\t\tstorage = win[localStorageName]\n\t\tstore.set = function(key, val) {\n\t\t\tif (val === undefined) { return store.remove(key) }\n\t\t\tstorage.setItem(key, store.serialize(val))\n\t\t\treturn val\n\t\t}\n\t\tstore.get = function(key, defaultVal) {\n\t\t\tvar val = store.deserialize(storage.getItem(key))\n\t\t\treturn (val === undefined ? defaultVal : val)\n\t\t}\n\t\tstore.remove = function(key) { storage.removeItem(key) }\n\t\tstore.clear = function() { storage.clear() }\n\t\tstore.getAll = function() {\n\t\t\tvar ret = {}\n\t\t\tstore.forEach(function(key, val) {\n\t\t\t\tret[key] = val\n\t\t\t})\n\t\t\treturn ret\n\t\t}\n\t\tstore.forEach = function(callback) {\n\t\t\tfor (var i=0; i<storage.length; i++) {\n\t\t\t\tvar key = storage.key(i)\n\t\t\t\tcallback(key, store.get(key))\n\t\t\t}\n\t\t}\n\t} else if (doc && doc.documentElement.addBehavior) {\n\t\tvar storageOwner,\n\t\t\tstorageContainer\n\t\t// Since #userData storage applies only to specific paths, we need to\n\t\t// somehow link our data to a specific path. We choose /favicon.ico\n\t\t// as a pretty safe option, since all browsers already make a request to\n\t\t// this URL anyway and being a 404 will not hurt us here. We wrap an\n\t\t// iframe pointing to the favicon in an ActiveXObject(htmlfile) object\n\t\t// (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\n\t\t// since the iframe access rules appear to allow direct access and\n\t\t// manipulation of the document element, even for a 404 page. This\n\t\t// document can be used instead of the current document (which would\n\t\t// have been limited to the current path) to perform #userData storage.\n\t\ttry {\n\t\t\tstorageContainer = new ActiveXObject('htmlfile')\n\t\t\tstorageContainer.open()\n\t\t\tstorageContainer.write('<'+scriptTag+'>document.w=window</'+scriptTag+'><iframe src=\"/favicon.ico\"></iframe>')\n\t\t\tstorageContainer.close()\n\t\t\tstorageOwner = storageContainer.w.frames[0].document\n\t\t\tstorage = storageOwner.createElement('div')\n\t\t} catch(e) {\n\t\t\t// somehow ActiveXObject instantiation failed (perhaps some special\n\t\t\t// security settings or otherwse), fall back to per-path storage\n\t\t\tstorage = doc.createElement('div')\n\t\t\tstorageOwner = doc.body\n\t\t}\n\t\tvar withIEStorage = function(storeFunction) {\n\t\t\treturn function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments, 0)\n\t\t\t\targs.unshift(storage)\n\t\t\t\t// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n\t\t\t\t// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\t\t\t\tstorageOwner.appendChild(storage)\n\t\t\t\tstorage.addBehavior('#default#userData')\n\t\t\t\tstorage.load(localStorageName)\n\t\t\t\tvar result = storeFunction.apply(store, args)\n\t\t\t\tstorageOwner.removeChild(storage)\n\t\t\t\treturn result\n\t\t\t}\n\t\t}\n\n\t\t// In IE7, keys cannot start with a digit or contain certain chars.\n\t\t// See https://github.com/marcuswestin/store.js/issues/40\n\t\t// See https://github.com/marcuswestin/store.js/issues/83\n\t\tvar forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\")\n\t\tvar ieKeyFix = function(key) {\n\t\t\treturn key.replace(/^d/, '___$&').replace(forbiddenCharsRegex, '___')\n\t\t}\n\t\tstore.set = withIEStorage(function(storage, key, val) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tif (val === undefined) { return store.remove(key) }\n\t\t\tstorage.setAttribute(key, store.serialize(val))\n\t\t\tstorage.save(localStorageName)\n\t\t\treturn val\n\t\t})\n\t\tstore.get = withIEStorage(function(storage, key, defaultVal) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tvar val = store.deserialize(storage.getAttribute(key))\n\t\t\treturn (val === undefined ? defaultVal : val)\n\t\t})\n\t\tstore.remove = withIEStorage(function(storage, key) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tstorage.removeAttribute(key)\n\t\t\tstorage.save(localStorageName)\n\t\t})\n\t\tstore.clear = withIEStorage(function(storage) {\n\t\t\tvar attributes = storage.XMLDocument.documentElement.attributes\n\t\t\tstorage.load(localStorageName)\n\t\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\t\tstorage.removeAttribute(attributes[i].name)\n\t\t\t}\n\t\t\tstorage.save(localStorageName)\n\t\t})\n\t\tstore.getAll = function(storage) {\n\t\t\tvar ret = {}\n\t\t\tstore.forEach(function(key, val) {\n\t\t\t\tret[key] = val\n\t\t\t})\n\t\t\treturn ret\n\t\t}\n\t\tstore.forEach = withIEStorage(function(storage, callback) {\n\t\t\tvar attributes = storage.XMLDocument.documentElement.attributes\n\t\t\tfor (var i=0, attr; attr=attributes[i]; ++i) {\n\t\t\t\tcallback(attr.name, store.deserialize(storage.getAttribute(attr.name)))\n\t\t\t}\n\t\t})\n\t}\n\n\ttry {\n\t\tvar testKey = '__storejs__'\n\t\tstore.set(testKey, testKey)\n\t\tif (store.get(testKey) != testKey) { store.disabled = true }\n\t\tstore.remove(testKey)\n\t} catch(e) {\n\t\tstore.disabled = true\n\t}\n\tstore.enabled = !store.disabled\n\t\n\treturn store\n}));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],15:[function(require,module,exports){\nmodule.exports={\n \"_args\": [\n [\n {\n \"raw\": \"yasgui-utils@^1.6.0\",\n \"scope\": null,\n \"escapedName\": \"yasgui-utils\",\n \"name\": \"yasgui-utils\",\n \"rawSpec\": \"^1.6.0\",\n \"spec\": \">=1.6.0 <2.0.0\",\n \"type\": \"range\"\n },\n \"/home/lrd900/yasgui/yasqe\"\n ]\n ],\n \"_from\": \"yasgui-utils@>=1.6.0 <2.0.0\",\n \"_id\": \"yasgui-utils@1.6.0\",\n \"_inCache\": true,\n \"_installable\": true,\n \"_location\": \"/yasgui-utils\",\n \"_npmUser\": {\n \"name\": \"laurens.rietveld\",\n \"email\": \"laurens.rietveld@gmail.com\"\n },\n \"_npmVersion\": \"1.4.3\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"raw\": \"yasgui-utils@^1.6.0\",\n \"scope\": null,\n \"escapedName\": \"yasgui-utils\",\n \"name\": \"yasgui-utils\",\n \"rawSpec\": \"^1.6.0\",\n \"spec\": \">=1.6.0 <2.0.0\",\n \"type\": \"range\"\n },\n \"_requiredBy\": [\n \"/\"\n ],\n \"_resolved\": \"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz\",\n \"_shasum\": \"bcb9091109c233e3e82737c94c202e6512389c47\",\n \"_shrinkwrap\": null,\n \"_spec\": \"yasgui-utils@^1.6.0\",\n \"_where\": \"/home/lrd900/yasgui/yasqe\",\n \"author\": {\n \"name\": \"Laurens Rietveld\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/YASGUI/Utils/issues\"\n },\n \"dependencies\": {\n \"store\": \"^1.3.14\"\n },\n \"description\": \"Utils for YASGUI libs\",\n \"devDependencies\": {},\n \"directories\": {},\n \"dist\": {\n \"shasum\": \"bcb9091109c233e3e82737c94c202e6512389c47\",\n \"tarball\": \"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz\"\n },\n \"homepage\": \"https://github.com/YASGUI/Utils\",\n \"licenses\": [\n {\n \"type\": \"MIT\",\n \"url\": \"http://yasgui.github.io/license.txt\"\n }\n ],\n \"main\": \"src/main.js\",\n \"maintainers\": [\n {\n \"name\": \"laurens.rietveld\",\n \"email\": \"laurens.rietveld@gmail.com\"\n }\n ],\n \"name\": \"yasgui-utils\",\n \"optionalDependencies\": {},\n \"readme\": \"ERROR: No README data found!\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/YASGUI/Utils.git\"\n },\n \"version\": \"1.6.0\"\n}\n\n},{}],16:[function(require,module,exports){\nwindow.console = window.console || {\"log\":function(){}};//make sure any console statements don't break IE\nmodule.exports = {\n\tstorage: require(\"./storage.js\"),\n\tsvg: require(\"./svg.js\"),\n\tversion: {\n\t\t\"yasgui-utils\" : require(\"../package.json\").version,\n\t},\n\tnestedExists : function(obj) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\t\tfor (var i = 0; i < args.length; i++) {\n\t\t\tif (!obj || !obj.hasOwnProperty(args[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj = obj[args[i]];\n\t\t}\n\t\treturn true;\n\t}\n};\n\n},{\"../package.json\":15,\"./storage.js\":17,\"./svg.js\":18}],17:[function(require,module,exports){\nvar store = require(\"store\");\nvar times = {\n\tday: function() {\n\t\treturn 1000 * 3600 * 24;//millis to day\n\t},\n\tmonth: function() {\n\t\ttimes.day() * 30;\n\t},\n\tyear: function() {\n\t\ttimes.month() * 12;\n\t}\n};\n\nvar root = module.exports = {\n\tset : function(key, val, exp) {\n if (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key && val !== undefined) {\n\t\t\tif (typeof exp == \"string\") {\n\t\t\t\texp = times[exp]();\n\t\t\t}\n\t\t\t//try to store string for dom objects (e.g. XML result). Otherwise, we might get a circular reference error when stringifying this\n\t\t\tif (val.documentElement) val = new XMLSerializer().serializeToString(val.documentElement);\n\t\t\tstore.set(key, {\n\t\t\t\tval : val,\n\t\t\t\texp : exp,\n\t\t\t\ttime : new Date().getTime()\n\t\t\t});\n\t\t}\n\t},\n\tremove: function(key) {\n\t\tif (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key) store.remove(key)\n\t},\n\tremoveAll: function(filter) {\n\t\tif (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (typeof filter === 'function') {\n\t\t\tfor (var key in store.getAll()) {\n\t\t\t\tif (filter(key, root.get(key))) root.remove(key);\n\t\t\t}\n\t\t}\n\t},\n\tget : function(key) {\n if (!store.enabled) return null;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key) {\n\t\t\tvar info = store.get(key);\n\t\t\tif (!info) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (info.exp && new Date().getTime() - info.time > info.exp) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn info.val;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n};\n\n},{\"store\":14}],18:[function(require,module,exports){\nmodule.exports = {\n\tdraw: function(parent, svgString) {\n\t\tif (!parent) return;\n\t\tvar el = module.exports.getElement(svgString);\n\t\tif (el) {\n\t\t\tif (parent.append) {\n\t\t\t\tparent.append(el);\n\t\t\t} else {\n\t\t\t\t//regular dom doc\n\t\t\t\tparent.appendChild(el);\n\t\t\t}\n\t\t}\n\t},\n\tgetElement: function(svgString) {\n\t\tif (svgString && svgString.indexOf(\"<svg\") == 0) {\n\t\t\t//no style passed via config. guess own styles\n\t\t\tvar parser = new DOMParser();\n\t\t\tvar dom = parser.parseFromString(svgString, \"text/xml\");\n\t\t\tvar svg = dom.documentElement;\n\t\t\t\n\t\t\tvar svgContainer = document.createElement(\"div\");\n\t\t\tsvgContainer.className = 'svgImg';\n\t\t\tsvgContainer.appendChild(svg);\n\t\t\treturn svgContainer;\n\t\t}\n\t\treturn false;\n\t}\n};\n},{}],19:[function(require,module,exports){\nmodule.exports={\n \"name\": \"yasgui-yasqe\",\n \"description\": \"Yet Another SPARQL Query Editor\",\n \"version\": \"2.11.4\",\n \"main\": \"src/main.js\",\n \"license\": \"MIT\",\n \"author\": \"Laurens Rietveld\",\n \"homepage\": \"http://yasqe.yasgui.org\",\n \"scripts\": {\n \"dev\": \"gulp serve\",\n \"build\": \"gulp\",\n \"patch\": \"gulp patch\",\n \"minor\": \"gulp minor\",\n \"major\": \"gulp major\"\n },\n \"devDependencies\": {\n \"gulp-bump\": \"^2.2.0\",\n \"gulp-connect\": \"^4.2.0\",\n \"gulp-embedlr\": \"^0.5.2\",\n \"gulp-git\": \"^1.10.0\",\n \"gulp-livereload\": \"^3.8.1\",\n \"gulp-tag-version\": \"^1.3.0\",\n \"watchify\": \"^3.7.0\"\n },\n \"bugs\": \"https://github.com/YASGUI/YASQE/issues/\",\n \"keywords\": [\n \"JavaScript\",\n \"SPARQL\",\n \"Editor\",\n \"Semantic Web\",\n \"Linked Data\"\n ],\n \"maintainers\": [\n {\n \"name\": \"Laurens Rietveld\",\n \"email\": \"laurens.rietveld@gmail.com\",\n \"web\": \"http://laurensrietveld.nl\"\n }\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/YASGUI/YASQE.git\"\n },\n \"dependencies\": {\n \"bootstrap-sass\": \"^3.3.7\",\n \"browserify\": \"^13.1.0\",\n \"browserify-transform-tools\": \"^1.6.0\",\n \"codemirror\": \"5.17.0\",\n \"exorcist\": \"^0.4.0\",\n \"gulp\": \"^3.9.1\",\n \"gulp-autoprefixer\": \"^3.1.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-cssimport\": \"^3.1.0\",\n \"gulp-cssnano\": \"^2.1.2\",\n \"gulp-filter\": \"^4.0.0\",\n \"gulp-jsvalidate\": \"^2.1.0\",\n \"gulp-notify\": \"^2.2.0\",\n \"gulp-rename\": \"^1.2.2\",\n \"gulp-sass\": \"^2.3.2\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-streamify\": \"1.0.2\",\n \"gulp-uglify\": \"^1.5.4\",\n \"jquery\": \"^2.2.4\",\n \"node-sass\": \"^3.8.0\",\n \"require-dir\": \"^0.3.0\",\n \"run-sequence\": \"^1.2.2\",\n \"vinyl-buffer\": \"^1.0.0\",\n \"vinyl-source-stream\": \"~1.1.0\",\n \"vinyl-transform\": \"1.0.0\",\n \"yasgui-utils\": \"^1.6.0\"\n },\n \"optionalShim\": {\n \"codemirror\": {\n \"require\": \"codemirror\",\n \"global\": \"CodeMirror\"\n },\n \"jquery\": {\n \"require\": \"jquery\",\n \"global\": \"jQuery\"\n },\n \"../../lib/codemirror\": {\n \"require\": \"codemirror\",\n \"global\": \"CodeMirror\"\n }\n }\n}\n\n},{}],20:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('../utils.js'),\n\tyutils = require('yasgui-utils'),\n\tTrie = require('../../lib/trie.js'),\n\tYASQE = require('../main.js');\n\nmodule.exports = function(YASQE, yasqe) {\n\tvar completionNotifications = {};\n\tvar completers = {};\n\tvar tries = {};\n\n\tyasqe.on('cursorActivity', function(yasqe, eventInfo) {\n\t\tautoComplete(true);\n\t});\n\tyasqe.on('change', function() {\n\t\tvar needPossibleAdjustment = [];\n\t\tfor (var notificationName in completionNotifications) {\n\t\t\tif (completionNotifications[notificationName].is(':visible')) {\n\t\t\t\tneedPossibleAdjustment.push(completionNotifications[notificationName]);\n\t\t\t}\n\t\t}\n\t\tif (needPossibleAdjustment.length > 0) {\n\t\t\t//position completion notifications\n\t\t\tvar scrollBar = $(yasqe.getWrapperElement()).find(\".CodeMirror-vscrollbar\");\n\t\t\tvar offset = 0;\n\t\t\tif (scrollBar.is(\":visible\")) {\n\t\t\t\toffset = scrollBar.outerWidth();\n\t\t\t}\n\t\t\tneedPossibleAdjustment.forEach(function(notification) {\n\t\t\t\tnotification.css(\"right\", offset)\n\t\t\t});\n\t\t}\n\t});\n\n\n\n\t/**\n\t * Store bulk completions in memory as trie, and store these in localstorage as well (if enabled)\n\t * \n\t * @method doc.storeBulkCompletions\n\t * @param completions {array}\n\t */\n\tvar storeBulkCompletions = function(completer, completions) {\n\t\t// store array as trie\n\t\ttries[completer.name] = new Trie();\n\t\tfor (var i = 0; i < completions.length; i++) {\n\t\t\ttries[completer.name].insert(completions[i]);\n\t\t}\n\t\t// store in localstorage as well\n\t\tvar storageId = utils.getPersistencyId(yasqe, completer.persistent);\n\t\tif (storageId) yutils.storage.set(storageId, completions, \"month\");\n\t};\n\n\tvar initCompleter = function(name, completionInit) {\n\t\tvar completer = completers[name] = new completionInit(yasqe, name);\n\t\tcompleter.name = name;\n\t\tif (completer.bulk) {\n\t\t\tvar storeArrayAsBulk = function(suggestions) {\n\t\t\t\tif (suggestions && suggestions instanceof Array && suggestions.length > 0) {\n\t\t\t\t\tstoreBulkCompletions(completer, suggestions);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (completer.get instanceof Array) {\n\t\t\t\t// we don't care whether the completions are already stored in\n\t\t\t\t// localstorage. just use this one\n\t\t\t\tstoreArrayAsBulk(completer.get);\n\t\t\t} else {\n\t\t\t\t// if completions are defined in localstorage, use those! (calling the\n\t\t\t\t// function may come with overhead (e.g. async calls))\n\t\t\t\tvar completionsFromStorage = null;\n\t\t\t\tvar persistencyIdentifier = utils.getPersistencyId(yasqe, completer.persistent);\n\t\t\t\tif (persistencyIdentifier)\n\t\t\t\t\tcompletionsFromStorage = yutils.storage.get(persistencyIdentifier);\n\t\t\t\tif (completionsFromStorage && completionsFromStorage.length > 0) {\n\t\t\t\t\tstoreArrayAsBulk(completionsFromStorage);\n\t\t\t\t} else {\n\t\t\t\t\t// nothing in storage. check whether we have a function via which we\n\t\t\t\t\t// can get our prefixes\n\t\t\t\t\tif (completer.get instanceof Function) {\n\t\t\t\t\t\tif (completer.async) {\n\t\t\t\t\t\t\tcompleter.get(null, storeArrayAsBulk);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstoreArrayAsBulk(completer.get());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tvar autoComplete = function(fromAutoShow) {\n\t\tif (yasqe.somethingSelected())\n\t\t\treturn;\n\t\tvar tryHintType = function(completer) {\n\t\t\tif (fromAutoShow // from autoShow, i.e. this gets called each time the editor content changes\n\t\t\t\t&& (!completer.autoShow // autoshow for this particular type of autocompletion is -not- enabled\n\t\t\t\t\t|| (!completer.bulk && completer.async)) // async is enabled (don't want to re-do ajax-like request for every editor change)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar hintConfig = {\n\t\t\t\tcloseCharacters: /(?=a)b/,\n\t\t\t\tcompleteSingle: false\n\t\t\t};\n\t\t\tif (!completer.bulk && completer.async) {\n\t\t\t\thintConfig.async = true;\n\t\t\t}\n\t\t\tvar wrappedHintCallback = function(yasqe, callback) {\n\t\t\t\treturn getCompletionHintsObject(completer, callback);\n\t\t\t};\n\t\t\tvar result = YASQE.showHint(yasqe, wrappedHintCallback, hintConfig);\n\t\t\treturn true;\n\t\t};\n\t\tfor (var completerName in completers) {\n\t\t\tif ($.inArray(completerName, yasqe.options.autocompleters) == -1) continue; //this completer is disabled\n\t\t\tvar completer = completers[completerName];\n\t\t\tif (!completer.isValidCompletionPosition) continue; //no way to check whether we are in a valid position\n\n\t\t\tif (!completer.isValidCompletionPosition()) {\n\t\t\t\t//if needed, fire callbacks for when we are -not- in valid completion position\n\t\t\t\tif (completer.callbacks && completer.callbacks.invalidPosition) {\n\t\t\t\t\tcompleter.callbacks.invalidPosition(yasqe, completer);\n\t\t\t\t}\n\t\t\t\t//not in a valid position, so continue to next completion candidate type\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// run valid position handler, if there is one (if it returns false, stop the autocompletion!)\n\t\t\tif (completer.callbacks && completer.callbacks.validPosition) {\n\t\t\t\tif (completer.callbacks.validPosition(yasqe, completer) === false)\n\t\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar success = tryHintType(completer);\n\t\t\tif (success)\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\n\n\tvar getCompletionHintsObject = function(completer, callback) {\n\t\tvar getSuggestionsFromToken = function(partialToken) {\n\t\t\tvar stringToAutocomplete = partialToken.autocompletionString || partialToken.string;\n\t\t\tvar suggestions = [];\n\t\t\tif (tries[completer.name]) {\n\t\t\t\tsuggestions = tries[completer.name].autoComplete(stringToAutocomplete);\n\t\t\t} else if (typeof completer.get == \"function\" && completer.async == false) {\n\t\t\t\tsuggestions = completer.get(stringToAutocomplete);\n\t\t\t} else if (typeof completer.get == \"object\") {\n\t\t\t\tvar partialTokenLength = stringToAutocomplete.length;\n\t\t\t\tfor (var i = 0; i < completer.get.length; i++) {\n\t\t\t\t\tvar completion = completer.get[i];\n\t\t\t\t\tif (completion.slice(0, partialTokenLength) == stringToAutocomplete) {\n\t\t\t\t\t\tsuggestions.push(completion);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn getSuggestionsAsHintObject(suggestions, completer, partialToken);\n\n\t\t};\n\n\n\t\tvar token = yasqe.getCompleteToken();\n\t\tif (completer.preProcessToken) {\n\t\t\ttoken = completer.preProcessToken(token);\n\t\t}\n\n\t\tif (token) {\n\t\t\t// use custom completionhint function, to avoid reaching a loop when the\n\t\t\t// completionhint is the same as the current token\n\t\t\t// regular behaviour would keep changing the codemirror dom, hence\n\t\t\t// constantly calling this callback\n\t\t\tif (!completer.bulk && completer.async) {\n\t\t\t\tvar wrappedCallback = function(suggestions) {\n\t\t\t\t\tcallback(getSuggestionsAsHintObject(suggestions, completer, token));\n\t\t\t\t};\n\t\t\t\tcompleter.get(token, wrappedCallback);\n\t\t\t} else {\n\t\t\t\treturn getSuggestionsFromToken(token);\n\n\t\t\t}\n\t\t}\n\t};\n\n\n\t/**\n\t * get our array of suggestions (strings) in the codemirror hint format\n\t */\n\tvar getSuggestionsAsHintObject = function(suggestions, completer, token) {\n\t\tvar hintList = [];\n\t\tfor (var i = 0; i < suggestions.length; i++) {\n\t\t\tvar suggestedString = suggestions[i];\n\t\t\tif (completer.postProcessToken) {\n\t\t\t\tsuggestedString = completer.postProcessToken(token, suggestedString);\n\t\t\t}\n\t\t\thintList.push({\n\t\t\t\ttext: suggestedString,\n\t\t\t\tdisplayText: suggestedString,\n\t\t\t\thint: selectHint,\n\t\t\t});\n\t\t}\n\n\t\tvar cur = yasqe.getCursor();\n\t\tvar returnObj = {\n\t\t\tcompletionToken: token.string,\n\t\t\tlist: hintList,\n\t\t\tfrom: {\n\t\t\t\tline: cur.line,\n\t\t\t\tch: token.start\n\t\t\t},\n\t\t\tto: {\n\t\t\t\tline: cur.line,\n\t\t\t\tch: token.end\n\t\t\t}\n\t\t};\n\t\t//if we have some autocompletion handlers specified, add these these to the object. Codemirror will take care of firing these\n\t\tif (completer.callbacks) {\n\t\t\tfor (var callbackName in completer.callbacks) {\n\t\t\t\tif (completer.callbacks[callbackName]) {\n\t\t\t\t\tYASQE.on(returnObj, callbackName, completer.callbacks[callbackName]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn returnObj;\n\t};\n\n\treturn {\n\t\tinit: initCompleter,\n\t\tcompleters: completers,\n\t\tnotifications: {\n\t\t\tgetEl: function(completer) {\n\t\t\t\treturn $(completionNotifications[completer.name]);\n\t\t\t},\n\t\t\tshow: function(yasqe, completer) {\n\t\t\t\t//only draw when the user needs to use a keypress to summon autocompletions\n\t\t\t\tif (!completer.autoshow) {\n\t\t\t\t\tif (!completionNotifications[completer.name]) completionNotifications[completer.name] = $(\"<div class='completionNotification'></div>\");\n\t\t\t\t\tcompletionNotifications[completer.name]\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.text(\"Press \" + (navigator.userAgent.indexOf('Mac OS X') != -1 ? \"CMD\" : \"CTRL\") + \" - <spacebar> to autocomplete\")\n\t\t\t\t\t\t.appendTo($(yasqe.getWrapperElement()));\n\t\t\t\t}\n\t\t\t},\n\t\t\thide: function(yasqe, completer) {\n\t\t\t\tif (completionNotifications[completer.name]) {\n\t\t\t\t\tcompletionNotifications[completer.name].hide();\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\t\tautoComplete: autoComplete,\n\t\tgetTrie: function(completer) {\n\t\t\treturn (typeof completer == \"string\" ? tries[completer] : tries[completer.name]);\n\t\t}\n\t}\n};\n\n\n\n\n\n\n\n\n\n/**\n * function which fires after the user selects a completion. this function checks whether we actually need to store this one (if completion is same as current token, don't do anything)\n */\nvar selectHint = function(yasqe, data, completion) {\n\tif (completion.text != yasqe.getTokenAt(yasqe.getCursor()).string) {\n\t\tyasqe.replaceRange(completion.text, data.from, data.to);\n\t}\n};\n\n\n\n\n\n//\n//module.exports = {\n//\tpreprocessPrefixTokenForCompletion: preprocessPrefixTokenForCompletion,\n//\tpostprocessResourceTokenForCompletion: postprocessResourceTokenForCompletion,\n//\tpreprocessResourceTokenForCompletion: preprocessResourceTokenForCompletion,\n//\tshowCompletionNotification: showCompletionNotification,\n//\thideCompletionNotification: hideCompletionNotification,\n//\tautoComplete: autoComplete,\n//\tautocompleteVariables: autocompleteVariables,\n//\tfetchFromPrefixCc: fetchFromPrefixCc,\n//\tfetchFromLov: fetchFromLov,\n////\tstoreBulkCompletions: storeBulkCompletions,\n//\tloadBulkCompletions: loadBulkCompletions,\n//};\n},{\"../../lib/trie.js\":4,\"../main.js\":30,\"../utils.js\":36,\"jquery\":undefined,\"yasgui-utils\":16}],21:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = function(yasqe, name) {\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\treturn module.exports.isValidCompletionPosition(yasqe);\n\t\t},\n\t\tget: function(token, callback) {\n\t\t\treturn require('./utils').fetchFromLov(yasqe, this, token, callback);\n\t\t},\n\t\tpreProcessToken: function(token) {\n\t\t\treturn module.exports.preProcessToken(yasqe, token)\n\t\t},\n\t\tpostProcessToken: function(token, suggestedString) {\n\t\t\treturn module.exports.postProcessToken(yasqe, token, suggestedString);\n\t\t},\n\t\tasync: true,\n\t\tbulk: false,\n\t\tautoShow: false,\n\t\tpersistent: name,\n\t\tcallbacks: {\n\t\t\tvalidPosition: yasqe.autocompleters.notifications.show,\n\t\t\tinvalidPosition: yasqe.autocompleters.notifications.hide,\n\t\t}\n\t}\n};\n\nmodule.exports.isValidCompletionPosition = function(yasqe) {\n\tvar token = yasqe.getCompleteToken();\n\tif (token.string.indexOf(\"?\") == 0)\n\t\treturn false;\n\tvar cur = yasqe.getCursor();\n\tvar previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n\tif (previousToken.string == \"a\")\n\t\treturn true;\n\tif (previousToken.string == \"rdf:type\")\n\t\treturn true;\n\tif (previousToken.string == \"rdfs:domain\")\n\t\treturn true;\n\tif (previousToken.string == \"rdfs:range\")\n\t\treturn true;\n\treturn false;\n};\nmodule.exports.preProcessToken = function(yasqe, token) {\n\treturn require('./utils.js').preprocessResourceTokenForCompletion(yasqe, token);\n};\nmodule.exports.postProcessToken = function(yasqe, token, suggestedString) {\n\treturn require('./utils.js').postprocessResourceTokenForCompletion(yasqe, token, suggestedString)\n};\n},{\"./utils\":24,\"./utils.js\":24,\"jquery\":undefined}],22:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n//this is a mapping from the class names (generic ones, for compatability with codemirror themes), to what they -actually- represent\nvar tokenTypes = {\n\t\"string-2\": \"prefixed\",\n\t\"atom\": \"var\"\n};\n\nmodule.exports = function(yasqe, completerName) {\n\t//this autocompleter also fires on-change!\n\tyasqe.on(\"change\", function() {\n\t\tmodule.exports.appendPrefixIfNeeded(yasqe, completerName);\n\t});\n\n\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\treturn module.exports.isValidCompletionPosition(yasqe);\n\t\t},\n\t\tget: function(token, callback) {\n\t\t\t$.get(module.exports.fetchFrom, function(data) {\n\t\t\t\tvar prefixArray = [];\n\t\t\t\tfor (var prefix in data) {\n\t\t\t\t\tif (prefix == \"bif\")\n\t\t\t\t\t\tcontinue; // skip this one! see #231\n\t\t\t\t\tvar completeString = prefix + \": <\" + data[prefix] + \">\";\n\t\t\t\t\tprefixArray.push(completeString); // the array we want to store in localstorage\n\t\t\t\t}\n\n\t\t\t\tprefixArray.sort();\n\t\t\t\tcallback(prefixArray);\n\t\t\t});\n\t\t},\n\t\tpreProcessToken: function(token) {\n\t\t\treturn module.exports.preprocessPrefixTokenForCompletion(yasqe, token)\n\t\t},\n\t\tasync: true,\n\t\tbulk: true,\n\t\tautoShow: true,\n\t\tpersistent: completerName,\n\t\tcallbacks: {\n\t\t\tpick: function() {\n\t\t\t\tyasqe.collapsePrefixes(false);\n\t\t\t}\n\t\t}\n\t};\n};\nmodule.exports.isValidCompletionPosition = function(yasqe) {\n\tvar cur = yasqe.getCursor(),\n\t\ttoken = yasqe.getTokenAt(cur);\n\n\t// not at end of line\n\tif (yasqe.getLine(cur.line).length > cur.ch)\n\t\treturn false;\n\n\tif (token.type != \"ws\") {\n\t\t// we want to complete token, e.g. when the prefix starts with an a\n\t\t// (treated as a token in itself..)\n\t\t// but we to avoid including the PREFIX tag. So when we have just\n\t\t// typed a space after the prefix tag, don't get the complete token\n\t\ttoken = yasqe.getCompleteToken();\n\t}\n\n\t// we shouldnt be at the uri part the prefix declaration\n\t// also check whether current token isnt 'a' (that makes codemirror\n\t// thing a namespace is a possiblecurrent\n\tif (!token.string.indexOf(\"a\") == 0 && $.inArray(\"PNAME_NS\", token.state.possibleCurrent) == -1)\n\t\treturn false;\n\n\t// First token of line needs to be PREFIX,\n\t// there should be no trailing text (otherwise, text is wrongly inserted\n\t// in between)\n\tvar previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n\tif (!previousToken || previousToken.string.toUpperCase() != \"PREFIX\") return false;\n\treturn true;\n};\nmodule.exports.preprocessPrefixTokenForCompletion = function(yasqe, token) {\n\tvar previousToken = yasqe.getPreviousNonWsToken(yasqe.getCursor().line, token);\n\tif (previousToken && previousToken.string && previousToken.string.slice(-1) == \":\") {\n\t\t//combine both tokens! In this case we have the cursor at the end of line \"PREFIX bla: <\".\n\t\t//we want the token to be \"bla: <\", en not \"<\"\n\t\ttoken = {\n\t\t\tstart: previousToken.start,\n\t\t\tend: token.end,\n\t\t\tstring: previousToken.string + \" \" + token.string,\n\t\t\tstate: token.state\n\t\t};\n\t}\n\treturn token;\n};\n/**\n * Check whether typed prefix is declared. If not, automatically add declaration\n * using list from prefix.cc\n *\n * @param yasqe\n */\nmodule.exports.appendPrefixIfNeeded = function(yasqe, completerName) {\n\tif (!yasqe.autocompleters.getTrie(completerName))\n\t\treturn; // no prefixed defined. just stop\n\tif (!yasqe.options.autocompleters || yasqe.options.autocompleters.indexOf(completerName) == -1) return; //this autocompleter is disabled\n\tvar cur = yasqe.getCursor();\n\n\tvar token = yasqe.getTokenAt(cur);\n\tif (tokenTypes[token.type] == \"prefixed\") {\n\t\tvar colonIndex = token.string.indexOf(\":\");\n\t\tif (colonIndex !== -1) {\n\t\t\t// check previous token isnt PREFIX, or a '<'(which would mean we are in a uri)\n\t\t\t//\t\t\tvar firstTokenString = yasqe.getNextNonWsToken(cur.line).string.toUpperCase();\n\t\t\tvar lastNonWsTokenString = yasqe.getPreviousNonWsToken(cur.line, token).string.toUpperCase();\n\t\t\tvar previousToken = yasqe.getTokenAt({\n\t\t\t\tline: cur.line,\n\t\t\t\tch: token.start\n\t\t\t}); // needs to be null (beginning of line), or whitespace\n\t\t\tif (lastNonWsTokenString != \"PREFIX\" && (previousToken.type == \"ws\" || previousToken.type == null)) {\n\t\t\t\t// check whether it isnt defined already (saves us from looping\n\t\t\t\t// through the array)\n\t\t\t\tvar currentPrefix = token.string.substring(0, colonIndex + 1);\n\t\t\t\tvar queryPrefixes = yasqe.getPrefixesFromQuery();\n\t\t\t\tif (queryPrefixes[currentPrefix.slice(0, -1)] == null) {\n\t\t\t\t\t// ok, so it isnt added yet!\n\t\t\t\t\tvar completions = yasqe.autocompleters.getTrie(completerName).autoComplete(currentPrefix);\n\t\t\t\t\tif (completions.length > 0) {\n\t\t\t\t\t\tyasqe.addPrefixes(completions[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nmodule.exports.fetchFrom = (window.location.protocol.indexOf('http') === 0? '//': 'http://') + 'prefix.cc/popular/all.file.json'\n\n},{\"jquery\":undefined}],23:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = function(yasqe, name) {\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\treturn module.exports.isValidCompletionPosition(yasqe);\n\t\t},\n\t\tget: function(token, callback) {\n\t\t\treturn require('./utils').fetchFromLov(yasqe, this, token, callback);\n\t\t},\n\t\tpreProcessToken: function(token) {\n\t\t\treturn module.exports.preProcessToken(yasqe, token)\n\t\t},\n\t\tpostProcessToken: function(token, suggestedString) {\n\t\t\treturn module.exports.postProcessToken(yasqe, token, suggestedString);\n\t\t},\n\t\tasync: true,\n\t\tbulk: false,\n\t\tautoShow: false,\n\t\tpersistent: name,\n\t\tcallbacks: {\n\t\t\tvalidPosition: yasqe.autocompleters.notifications.show,\n\t\t\tinvalidPosition: yasqe.autocompleters.notifications.hide,\n\t\t}\n\t}\n};\n\nmodule.exports.isValidCompletionPosition = function(yasqe) {\n\tvar token = yasqe.getCompleteToken();\n\tif (token.string.length == 0)\n\t\treturn false; //we want -something- to autocomplete\n\tif (token.string.indexOf(\"?\") == 0)\n\t\treturn false; // we are typing a var\n\tif ($.inArray(\"a\", token.state.possibleCurrent) >= 0)\n\t\treturn true; // predicate pos\n\tvar cur = yasqe.getCursor();\n\tvar previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n\tif (previousToken.string == \"rdfs:subPropertyOf\")\n\t\treturn true;\n\n\t// hmm, we would like -better- checks here, e.g. checking whether we are\n\t// in a subject, and whether next item is a rdfs:subpropertyof.\n\t// difficult though... the grammar we use is unreliable when the query\n\t// is invalid (i.e. during typing), and often the predicate is not typed\n\t// yet, when we are busy writing the subject...\n\treturn false;\n};\nmodule.exports.preProcessToken = function(yasqe, token) {\n\treturn require('./utils.js').preprocessResourceTokenForCompletion(yasqe, token);\n};\nmodule.exports.postProcessToken = function(yasqe, token, suggestedString) {\n\treturn require('./utils.js').postprocessResourceTokenForCompletion(yasqe, token, suggestedString)\n};\n},{\"./utils\":24,\"./utils.js\":24,\"jquery\":undefined}],24:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('./utils.js'),\n\tyutils = require('yasgui-utils');\n/**\n * Where the base class only contains functionality related to -all- completions, this class contains some utils used here and there in our autocompletions\n */\n\n\n\n/**\n * Converts rdf:type to http://.../type and converts <http://...> to http://...\n * Stores additional info such as the used namespace and prefix in the token object\n */\nvar preprocessResourceTokenForCompletion = function(yasqe, token) {\n\tvar queryPrefixes = yasqe.getPrefixesFromQuery();\n\tif (!token.string.indexOf(\"<\") == 0) {\n\t\ttoken.tokenPrefix = token.string.substring(0, token.string.indexOf(\":\") + 1);\n\n\t\tif (queryPrefixes[token.tokenPrefix.slice(0, -1)] != null) {\n\t\t\ttoken.tokenPrefixUri = queryPrefixes[token.tokenPrefix.slice(0, -1)];\n\t\t}\n\t}\n\n\ttoken.autocompletionString = token.string.trim();\n\tif (!token.string.indexOf(\"<\") == 0 && token.string.indexOf(\":\") > -1) {\n\t\t// hmm, the token is prefixed. We still need the complete uri for autocompletions. generate this!\n\t\tfor (var prefix in queryPrefixes) {\n\t\t\tif (token.tokenPrefix === prefix + ':') {\n\t\t\t\ttoken.autocompletionString = queryPrefixes[prefix];\n\t\t\t\ttoken.autocompletionString += token.string.substring(prefix.length + 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (token.autocompletionString.indexOf(\"<\") == 0) token.autocompletionString = token.autocompletionString.substring(1);\n\tif (token.autocompletionString.indexOf(\">\", token.length - 1) !== -1) token.autocompletionString = token.autocompletionString.substring(0, token.autocompletionString.length - 1);\n\treturn token;\n};\n\nvar postprocessResourceTokenForCompletion = function(yasqe, token, suggestedString) {\n\tif (token.tokenPrefix && token.autocompletionString && token.tokenPrefixUri) {\n\t\t// we need to get the suggested string back to prefixed form\n\t\tsuggestedString = token.tokenPrefix + suggestedString.substring(token.tokenPrefixUri.length);\n\t} else {\n\t\t// it is a regular uri. add '<' and '>' to string\n\t\tsuggestedString = \"<\" + suggestedString + \">\";\n\t}\n\treturn suggestedString;\n};\n\n//Use protocol relative request when served via http[s]*. Otherwise (e.g. file://, fetch via http)\nvar reqProtocol = (window.location.protocol.indexOf('http') === 0? '//': 'http://')\nvar fetchFromLov = function(yasqe, completer, token, callback) {\n\tif (!token || !token.string || token.string.trim().length == 0) {\n\t\tyasqe.autocompleters.notifications.getEl(completer)\n\t\t\t.empty()\n\t\t\t.append(\"Nothing to autocomplete yet!\");\n\t\treturn false;\n\t}\n\tvar maxResults = 50;\n\n\tvar args = {\n\t\tq: token.autocompletionString,\n\t\tpage: 1\n\t};\n\tif (completer.name == \"classes\") {\n\t\targs.type = \"class\";\n\t} else {\n\t\targs.type = \"property\";\n\t}\n\tvar results = [];\n\tvar url = \"\";\n\tvar updateUrl = function() {\n\t\turl = reqProtocol + \"lov.okfn.org/dataset/lov/api/v2/autocomplete/terms?\" + $.param(args);\n\t};\n\tupdateUrl();\n\tvar increasePage = function() {\n\t\targs.page++;\n\t\tupdateUrl();\n\t};\n\tvar doRequests = function() {\n\t\t$.get(\n\t\t\turl,\n\t\t\tfunction(data) {\n\t\t\t\tfor (var i = 0; i < data.results.length; i++) {\n\t\t\t\t\tif ($.isArray(data.results[i].uri) && data.results[i].uri.length > 0) {\n\t\t\t\t\t\tresults.push(data.results[i].uri[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresults.push(data.results[i].uri);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tif (results.length < data.total_results && results.length < maxResults) {\n\t\t\t\t\tincreasePage();\n\t\t\t\t\tdoRequests();\n\t\t\t\t} else {\n\t\t\t\t\t//if notification bar is there, show feedback, or close\n\t\t\t\t\tif (results.length > 0) {\n\t\t\t\t\t\tyasqe.autocompleters.notifications.hide(yasqe, completer)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tyasqe.autocompleters.notifications.getEl(completer).text(\"0 matches found...\");\n\t\t\t\t\t}\n\t\t\t\t\tcallback(results);\n\t\t\t\t\t// requests done! Don't call this function again\n\t\t\t\t}\n\t\t\t}).fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\tyasqe.autocompleters.notifications.getEl(completer)\n\t\t\t\t.empty()\n\t\t\t\t.append(\"Failed fetching suggestions..\");\n\n\t\t});\n\t};\n\t//if notification bar is there, show a loader\n\tyasqe.autocompleters.notifications.getEl(completer)\n\t\t.empty()\n\t\t.append($(\"<span>Fetchting autocompletions </span>\"))\n\t\t.append($(yutils.svg.getElement(require('../imgs.js').loader)).addClass(\"notificationLoader\"));\n\tdoRequests();\n};\n\n\n\nmodule.exports = {\n\tfetchFromLov: fetchFromLov,\n\tpreprocessResourceTokenForCompletion: preprocessResourceTokenForCompletion,\n\tpostprocessResourceTokenForCompletion: postprocessResourceTokenForCompletion,\n};\n\n},{\"../imgs.js\":29,\"./utils.js\":24,\"jquery\":undefined,\"yasgui-utils\":16}],25:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = function(yasqe) {\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\tvar token = yasqe.getTokenAt(yasqe.getCursor());\n\t\t\tif (token.type != \"ws\") {\n\t\t\t\ttoken = yasqe.getCompleteToken(token);\n\t\t\t\tif (token && token.string.indexOf(\"?\") == 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function(token) {\n\t\t\tif (token.trim().length == 0) return []; //nothing to autocomplete\n\t\t\tvar distinctVars = {};\n\t\t\t//do this outside of codemirror. I expect jquery to be faster here (just finding dom elements with classnames)\n\t\t\t$(yasqe.getWrapperElement()).find(\".cm-atom\").each(function() {\n\t\t\t\tvar variable = this.innerHTML;\n\t\t\t\tif (variable.indexOf(\"?\") == 0) {\n\t\t\t\t\t//ok, lets check if the next element in the div is an atom as well. In that case, they belong together (may happen sometimes when query is not syntactically valid)\n\t\t\t\t\tvar nextEl = $(this).next();\n\t\t\t\t\tvar nextElClass = nextEl.attr('class');\n\t\t\t\t\tif (nextElClass && nextEl.attr('class').indexOf(\"cm-atom\") >= 0) {\n\t\t\t\t\t\tvariable += nextEl.text();\n\t\t\t\t\t}\n\n\t\t\t\t\t//skip single questionmarks\n\t\t\t\t\tif (variable.length <= 1) return;\n\n\t\t\t\t\t//it should match our token ofcourse\n\t\t\t\t\tif (variable.indexOf(token) !== 0) return;\n\n\t\t\t\t\t//skip exact matches\n\t\t\t\t\tif (variable == token) return;\n\n\t\t\t\t\t//store in map so we have a unique list \n\t\t\t\t\tdistinctVars[variable] = true;\n\n\n\t\t\t\t}\n\t\t\t});\n\t\t\tvar variables = [];\n\t\t\tfor (var variable in distinctVars) {\n\t\t\t\tvariables.push(variable);\n\t\t\t}\n\t\t\tvariables.sort();\n\t\t\treturn variables;\n\t\t},\n\t\tasync: false,\n\t\tbulk: false,\n\t\tautoShow: true,\n\t}\n};\n},{\"jquery\":undefined}],26:[function(require,module,exports){\nvar sparql = require('./sparql.js'),\n $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nvar quote = function(string) {\n return \"'\" + string + \"'\";\n}\nmodule.exports = {\n createCurlString : function(yasqe, config) {\n var ajaxConfig = sparql.getAjaxConfig(yasqe, config);\n var url = ajaxConfig.url;\n if (ajaxConfig.url.indexOf('http') !== 0) {\n //this is either a relative or absolute url, which is not supported by CURL.\n //Add domain, schema, etc etc\n var url = window.location.protocol + '//' + window.location.host;\n if (ajaxConfig.url.indexOf('/') === 0) {\n //its an absolute path\n url += ajaxConfig.url;\n } else {\n //relative, so append current location to url first\n url += window.location.pathname + ajaxConfig.url;\n }\n }\n var cmds = [\n 'curl', url,\n '-X', yasqe.options.sparql.requestMethod\n ];\n if (yasqe.options.sparql.requestMethod == 'POST') {\n cmds.push('--data ' + quote($.param(ajaxConfig.data)));\n }\n for (var header in ajaxConfig.headers) {\n cmds.push('-H ' + quote(header + ': ' + ajaxConfig.headers[header]));\n }\n return cmds.join(' ');\n }\n}\n\n},{\"./sparql.js\":33,\"jquery\":undefined}],27:[function(require,module,exports){\n/**\n * The default options of YASQE (check the CodeMirror documentation for even\n * more options, such as disabling line numbers, or changing keyboard shortcut\n * keys). Either change the default options by setting YASQE.defaults, or by\n * passing your own options as second argument to the YASQE constructor\n */\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tYASQE = require('./main.js');\nYASQE.defaults = $.extend(true, {}, YASQE.defaults, {\n\tmode: \"sparql11\",\n\t/**\n\t * Query string\n\t */\n\tvalue: \"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\\nPREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\\nSELECT * WHERE {\\n ?sub ?pred ?obj .\\n} \\nLIMIT 10\",\n\thighlightSelectionMatches: {\n\t\tshowToken: /\\w/\n\t},\n\ttabMode: \"indent\",\n\tlineNumbers: true,\n\tlineWrapping: true,\n\tbackdrop: false,\n\tfoldGutter: {\n\t\trangeFinder: new YASQE.fold.combine(YASQE.fold.brace, YASQE.fold.prefix)\n\t},\n\tcollapsePrefixesOnLoad: false,\n\tgutters: [\"gutterErrorBar\", \"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n\tmatchBrackets: true,\n\tfixedGutter: true,\n\tsyntaxErrorCheck: true,\n\t/**\n\t * Extra shortcut keys. Check the CodeMirror manual on how to add your own\n\t *\n\t * @property extraKeys\n\t * @type object\n\t */\n\textraKeys: {\n\t\t//\t\t\t\t\t\"Ctrl-Space\" : function(yasqe) {\n\t\t//\t\t\t\t\t\tYASQE.autoComplete(yasqe);\n\t\t//\t\t\t\t\t},\n\t\t\"Ctrl-Space\": YASQE.autoComplete,\n\n\t\t\"Cmd-Space\": YASQE.autoComplete,\n\t\t\"Ctrl-D\": YASQE.deleteLine,\n\t\t\"Ctrl-K\": YASQE.deleteLine,\n\t\t\"Shift-Ctrl-K\": YASQE.deleteLine,\n\t\t\"Cmd-D\": YASQE.deleteLine,\n\t\t\"Cmd-K\": YASQE.deleteLine,\n\t\t\"Ctrl-/\": YASQE.commentLines,\n\t\t\"Cmd-/\": YASQE.commentLines,\n\t\t\"Ctrl-Alt-Down\": YASQE.copyLineDown,\n\t\t\"Ctrl-Alt-Up\": YASQE.copyLineUp,\n\t\t\"Cmd-Alt-Down\": YASQE.copyLineDown,\n\t\t\"Cmd-Alt-Up\": YASQE.copyLineUp,\n\t\t\"Shift-Ctrl-F\": YASQE.doAutoFormat,\n\t\t\"Shift-Cmd-F\": YASQE.doAutoFormat,\n\t\t\"Ctrl-]\": YASQE.indentMore,\n\t\t\"Cmd-]\": YASQE.indentMore,\n\t\t\"Ctrl-[\": YASQE.indentLess,\n\t\t\"Cmd-[\": YASQE.indentLess,\n\t\t\"Ctrl-S\": YASQE.storeQuery,\n\t\t\"Cmd-S\": YASQE.storeQuery,\n\t\t\"Ctrl-Enter\": YASQE.executeQuery,\n\t\t\"Cmd-Enter\": YASQE.executeQuery,\n\t\t\"F11\": function(yasqe) {\n\t\t\tyasqe.setOption(\"fullScreen\", !yasqe.getOption(\"fullScreen\"));\n\t\t},\n\t\t\"Esc\": function(yasqe) {\n\t\t\tif (yasqe.getOption(\"fullScreen\")) yasqe.setOption(\"fullScreen\", false);\n\t\t}\n\t},\n\tcursorHeight: 0.9,\n\n\n\t/**\n\t * Show a button with which users can create a link to this query. Set this value to null to disable this functionality.\n\t * By default, this feature is enabled, and the only the query value is appended to the link.\n\t * ps. This function should return an object which is parseable by jQuery.param (http://api.jquery.com/jQuery.param/)\n\t */\n\tcreateShareLink: YASQE.createShareLink,\n\n\tcreateShortLink: null,\n\n\t/**\n\t * Consume links shared by others, by checking the url for arguments coming from a query link. Defaults by only checking the 'query=' argument in the url\n\t */\n\tconsumeShareLink: YASQE.consumeShareLink,\n\n\n\n\n\t/**\n\t * Change persistency settings for the YASQE query value. Setting the values\n\t * to null, will disable persistancy: nothing is stored between browser\n\t * sessions Setting the values to a string (or a function which returns a\n\t * string), will store the query in localstorage using the specified string.\n\t * By default, the ID is dynamically generated using the closest dom ID, to avoid collissions when using multiple YASQE items on one\n\t * page\n\t *\n\t * @type function|string\n\t */\n\tpersistent: function(yasqe) {\n\t\treturn \"yasqe_\" + $(yasqe.getWrapperElement()).closest('[id]').attr('id') + \"_queryVal\";\n\t},\n\n\n\t/**\n\t * Settings for querying sparql endpoints\n\t */\n\tsparql: {\n\t\tqueryName: function(yasqe) {return yasqe.getQueryMode()},\n\t\tshowQueryButton: false,\n\n\t\t/**f\n\t\t * Endpoint to query\n\t\t *\n\t\t * @property sparql.endpoint\n\t\t * @type String|function\n\t\t */\n\t\tendpoint: \"http://dbpedia.org/sparql\",\n\t\t/**\n\t\t * Request method via which to access SPARQL endpoint\n\t\t *\n\t\t * @property sparql.requestMethod\n\t\t * @type String|function\n\t\t */\n\t\trequestMethod: \"POST\",\n\n\t\t/**\n\t\t * @type String|function\n\t\t */\n\t\tacceptHeaderGraph: \"text/turtle,*/*;q=0.9\",\n\t\t/**\n\t\t * @type String|function\n\t\t */\n\t\tacceptHeaderSelect: \"application/sparql-results+json,*/*;q=0.9\",\n\t\t/**\n\t\t * @type String|function\n\t\t */\n\t\tacceptHeaderUpdate: \"text/plain,*/*;q=0.9\",\n\n\t\t/**\n\t\t * Named graphs to query.\n\t\t */\n\t\tnamedGraphs: [],\n\t\t/**\n\t\t * Default graphs to query.\n\t\t */\n\t\tdefaultGraphs: [],\n\n\t\t/**\n\t\t * Additional request arguments. Add them in the form: {name: \"name\", value: \"value\"}\n\t\t */\n\t\targs: [],\n\n\t\t/**\n\t\t * Additional request headers\n\t\t */\n\t\theaders: {},\n\n\t\tgetQueryForAjax: null,\n\t\t/**\n\t\t * Set of ajax callbacks\n\t\t */\n\t\tcallbacks: {\n\t\t\tbeforeSend: null,\n\t\t\tcomplete: null,\n\t\t\terror: null,\n\t\t\tsuccess: null\n\t\t},\n\t\thandlers: {} //keep here for backwards compatability\n\t},\n});\n\n},{\"./main.js\":30,\"jquery\":undefined}],28:[function(require,module,exports){\n//this is the entry-point for browserify.\n//the current browserify version does not support require-ing js files which are used as entry-point\n//this way, we can still require our main.js file\nmodule.exports = require('./main.js');\n},{\"./main.js\":30}],29:[function(require,module,exports){\n'use strict';\nmodule.exports = {\n\tquery: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"0 0 80 80\" enable-background=\"new 0 0 80 80\" xml:space=\"preserve\"><g ></g><g >\t<path d=\"M64.622,2.411H14.995c-6.627,0-12,5.373-12,12v49.897c0,6.627,5.373,12,12,12h49.627c6.627,0,12-5.373,12-12V14.411 C76.622,7.783,71.249,2.411,64.622,2.411z M24.125,63.906V15.093L61,39.168L24.125,63.906z\"/></g></svg>',\n\tqueryInvalid: '<svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"0 0 73.627 73.897\" enable-background=\"new 0 0 80 80\" xml:space=\"preserve\" inkscape:version=\"0.48.4 r9939\" sodipodi:docname=\"warning.svg\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1855\" inkscape:window-height=\"1056\" showgrid=\"false\" inkscape:zoom=\"3.1936344\" inkscape:cx=\"36.8135\" inkscape:cy=\"36.9485\" inkscape:window-x=\"2625\" inkscape:window-y=\"24\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg2\" /><g transform=\"translate(-2.995,-2.411)\" /><g transform=\"translate(-2.995,-2.411)\" ><path d=\"M 64.622,2.411 H 14.995 c -6.627,0 -12,5.373 -12,12 v 49.897 c 0,6.627 5.373,12 12,12 h 49.627 c 6.627,0 12,-5.373 12,-12 V 14.411 c 0,-6.628 -5.373,-12 -12,-12 z M 24.125,63.906 V 15.093 L 61,39.168 24.125,63.906 z\" inkscape:connector-curvature=\"0\" /></g><path d=\"M 66.129381,65.903784 H 49.769875 c -1.64721,0 -2.889385,-0.581146 -3.498678,-1.63595 -0.609293,-1.055608 -0.491079,-2.422161 0.332391,-3.848223 l 8.179753,-14.167069 c 0.822934,-1.42633 1.9477,-2.211737 3.166018,-2.211737 1.218319,0 2.343086,0.785407 3.166019,2.211737 l 8.179751,14.167069 c 0.823472,1.426062 0.941686,2.792615 0.33239,3.848223 -0.609023,1.054804 -1.851197,1.63595 -3.498138,1.63595 z M 59.618815,60.91766 c 0,-0.850276 -0.68944,-1.539719 -1.539717,-1.539719 -0.850276,0 -1.539718,0.689443 -1.539718,1.539719 0,0.850277 0.689442,1.539718 1.539718,1.539718 0.850277,0 1.539717,-0.689441 1.539717,-1.539718 z m 0.04155,-9.265919 c 0,-0.873061 -0.707939,-1.580998 -1.580999,-1.580998 -0.873061,0 -1.580999,0.707937 -1.580999,1.580998 l 0.373403,5.610965 h 0.0051 c 0.05415,0.619747 0.568548,1.10761 1.202504,1.10761 0.586239,0 1.075443,-0.415756 1.188563,-0.968489 0.0092,-0.04476 0.0099,-0.09248 0.01392,-0.138854 h 0.01072 l 0.367776,-5.611232 z\" inkscape:connector-curvature=\"0\" style=\"fill:#aa8800\" /></svg>',\n\tdownload: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"tiny\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\" xml:space=\"preserve\"><g ></g><g >\t<path fill-rule=\"evenodd\" fill=\"#000000\" d=\"M88,84v-2c0-2.961-0.859-4-4-4H16c-2.961,0-4,0.98-4,4v2c0,3.102,1.039,4,4,4h68 C87.02,88,88,87.039,88,84z M58,12H42c-5,0-6,0.941-6,6v22H16l34,34l34-34H64V18C64,12.941,62.939,12,58,12z\"/></g></svg>',\n\tshare: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\" style=\"enable-background:new 0 0 100 100;\" xml:space=\"preserve\"><path d=\"M36.764,50c0,0.308-0.07,0.598-0.088,0.905l32.247,16.119c2.76-2.338,6.293-3.797,10.195-3.797 C87.89,63.228,95,70.338,95,79.109C95,87.89,87.89,95,79.118,95c-8.78,0-15.882-7.11-15.882-15.891c0-0.316,0.07-0.598,0.088-0.905 L31.077,62.085c-2.769,2.329-6.293,3.788-10.195,3.788C12.11,65.873,5,58.771,5,50c0-8.78,7.11-15.891,15.882-15.891 c3.902,0,7.427,1.468,10.195,3.797l32.247-16.119c-0.018-0.308-0.088-0.598-0.088-0.914C63.236,12.11,70.338,5,79.118,5 C87.89,5,95,12.11,95,20.873c0,8.78-7.11,15.891-15.882,15.891c-3.911,0-7.436-1.468-10.195-3.806L36.676,49.086 C36.693,49.394,36.764,49.684,36.764,50z\"/></svg>',\n\twarning: '<svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 66.399998 66.399998\" enable-background=\"new 0 0 69.3 69.3\" xml:space=\"preserve\" height=\"100%\" width=\"100%\" inkscape:version=\"0.48.4 r9939\" ><g transform=\"translate(-1.5,-1.5)\" style=\"fill:#ff0000\"><path d=\"M 34.7,1.5 C 16.4,1.5 1.5,16.4 1.5,34.7 1.5,53 16.4,67.9 34.7,67.9 53,67.9 67.9,53 67.9,34.7 67.9,16.4 53,1.5 34.7,1.5 z m 0,59.4 C 20.2,60.9 8.5,49.1 8.5,34.7 8.5,20.2 20.3,8.5 34.7,8.5 c 14.4,0 26.2,11.8 26.2,26.2 0,14.4 -11.8,26.2 -26.2,26.2 z\" inkscape:connector-curvature=\"0\" style=\"fill:#ff0000\" /><path d=\"m 34.6,47.1 c -1.4,0 -2.5,0.5 -3.5,1.5 -0.9,1 -1.4,2.2 -1.4,3.6 0,1.6 0.5,2.8 1.5,3.8 1,0.9 2.1,1.3 3.4,1.3 1.3,0 2.4,-0.5 3.4,-1.4 1,-0.9 1.5,-2.2 1.5,-3.7 0,-1.4 -0.5,-2.6 -1.4,-3.6 -0.9,-1 -2.1,-1.5 -3.5,-1.5 z\" inkscape:connector-curvature=\"0\" style=\"fill:#ff0000\" /><path d=\"m 34.8,13.9 c -1.5,0 -2.8,0.5 -3.7,1.6 -0.9,1 -1.4,2.4 -1.4,4.2 0,1.1 0.1,2.9 0.2,5.6 l 0.8,13.1 c 0.2,1.8 0.4,3.2 0.9,4.1 0.5,1.2 1.5,1.8 2.9,1.8 1.3,0 2.3,-0.7 2.9,-1.9 0.5,-1 0.7,-2.3 0.9,-4 L 39.4,25 c 0.1,-1.3 0.2,-2.5 0.2,-3.8 0,-2.2 -0.3,-3.9 -0.8,-5.1 -0.5,-1 -1.6,-2.2 -4,-2.2 z\" inkscape:connector-curvature=\"0\" style=\"fill:#ff0000\" /></g></svg>',\n\tfullscreen: '<svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"5 -10 74.074074 100\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\" inkscape:version=\"0.48.4 r9939\" sodipodi:docname=\"noun_2186_cc.svg\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"640\" inkscape:window-height=\"480\" showgrid=\"false\" fit-margin-top=\"0\" fit-margin-left=\"0\" fit-margin-right=\"0\" fit-margin-bottom=\"0\" inkscape:zoom=\"2.36\" inkscape:cx=\"44.101509\" inkscape:cy=\"31.481481\" inkscape:window-x=\"65\" inkscape:window-y=\"24\" inkscape:window-maximized=\"0\" inkscape:current-layer=\"Layer_1\" /><path d=\"m -7.962963,-10 v 38.889 l 16.667,-16.667 16.667,16.667 5.555,-5.555 -16.667,-16.667 16.667,-16.667 h -38.889 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"m 92.037037,-10 v 38.889 l -16.667,-16.667 -16.666,16.667 -5.556,-5.555 16.666,-16.667 -16.666,-16.667 h 38.889 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"M -7.962963,90 V 51.111 l 16.667,16.666 16.667,-16.666 5.555,5.556 -16.667,16.666 16.667,16.667 h -38.889 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"M 92.037037,90 V 51.111 l -16.667,16.666 -16.666,-16.666 -5.556,5.556 16.666,16.666 -16.666,16.667 h 38.889 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /></svg>',\n\tsmallscreen: '<svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"5 -10 74.074074 100\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\" inkscape:version=\"0.48.4 r9939\" sodipodi:docname=\"noun_2186_cc.svg\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1855\" inkscape:window-height=\"1056\" showgrid=\"false\" fit-margin-top=\"0\" fit-margin-left=\"0\" fit-margin-right=\"0\" fit-margin-bottom=\"0\" inkscape:zoom=\"2.36\" inkscape:cx=\"44.101509\" inkscape:cy=\"31.481481\" inkscape:window-x=\"65\" inkscape:window-y=\"24\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"Layer_1\" /><path d=\"m 30.926037,28.889 0,-38.889 -16.667,16.667 -16.667,-16.667 -5.555,5.555 16.667,16.667 -16.667,16.667 38.889,0 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"m 53.148037,28.889 0,-38.889 16.667,16.667 16.666,-16.667 5.556,5.555 -16.666,16.667 16.666,16.667 -38.889,0 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"m 30.926037,51.111 0,38.889 -16.667,-16.666 -16.667,16.666 -5.555,-5.556 16.667,-16.666 -16.667,-16.667 38.889,0 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"m 53.148037,51.111 0,38.889 16.667,-16.666 16.666,16.666 5.556,-5.556 -16.666,-16.666 16.666,-16.667 -38.889,0 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /></svg>',\n};\n\n},{}],30:[function(require,module,exports){\n'use strict';\n//make sure any console statements\nwindow.console = window.console || {\n\t\"log\": function() {}\n};\n\n/**\n * Load libraries\n */\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tCodeMirror = (function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(),\n\tutils = require('./utils.js'),\n\tyutils = require('yasgui-utils'),\n\timgs = require('./imgs.js');\n\nrequire(\"../lib/deparam.js\");\nrequire('codemirror/addon/fold/foldcode.js');\nrequire('codemirror/addon/fold/foldgutter.js');\nrequire('codemirror/addon/fold/xml-fold.js');\nrequire('codemirror/addon/fold/brace-fold.js');\nrequire('./prefixFold.js');\nrequire('codemirror/addon/hint/show-hint.js');\nrequire('codemirror/addon/search/searchcursor.js');\nrequire('codemirror/addon/edit/matchbrackets.js');\nrequire('codemirror/addon/runmode/runmode.js');\nrequire('codemirror/addon/display/fullscreen.js');\nrequire('../lib/grammar/tokenizer.js');\n\n\n\n/**\n * Main YASQE constructor. Pass a DOM element as argument to append the editor to, and (optionally) pass along config settings (see the YASQE.defaults object below, as well as the regular CodeMirror documentation, for more information on configurability)\n *\n * @constructor\n * @param {DOM-Element} parent element to append editor to.\n * @param {object} settings\n * @class YASQE\n * @return {doc} YASQE document\n */\nvar root = module.exports = function(parent, config) {\n\tvar rootEl = $(\"<div>\", {\n\t\tclass: 'yasqe'\n\t}).appendTo($(parent));\n\tconfig = extendConfig(config);\n\tvar yasqe = extendCmInstance(CodeMirror(rootEl[0], config));\n\tpostProcessCmElement(yasqe);\n\treturn yasqe;\n};\n\n/**\n * Extend config object, which we will pass on to the CM constructor later on.\n * Need this, to make sure our own 'onBlur' etc events do not get overwritten by\n * people who add their own onblur events to the config Additionally, need this\n * to include the CM defaults ourselves. CodeMirror has a method for including\n * defaults, but we can't rely on that one: it assumes flat config object, where\n * we have nested objects (e.g. the persistency option)\n *\n * @private\n */\nvar extendConfig = function(config) {\n\tvar extendedConfig = $.extend(true, {}, root.defaults, config);\n\n\t// I know, codemirror deals with default options as well.\n\t//However, it does not do this recursively (i.e. the persistency option)\n\n\n\treturn extendedConfig;\n};\n/**\n * Add extra functions to the CM document (i.e. the codemirror instantiated\n * object)\n *\n * @private\n */\nvar extendCmInstance = function(yasqe) {\n\t//instantiate autocompleters\n\tyasqe.autocompleters = require('./autocompleters/autocompleterBase.js')(root, yasqe);\n\tif (yasqe.options.autocompleters) {\n\t\tyasqe.options.autocompleters.forEach(function(name) {\n\t\t\tif (root.Autocompleters[name]) yasqe.autocompleters.init(name, root.Autocompleters[name]);\n\t\t})\n\t}\n\tyasqe.lastQueryDuration = null;\n\tyasqe.getCompleteToken = function(token, cur) {\n\t\treturn require('./tokenUtils.js').getCompleteToken(yasqe, token, cur);\n\t};\n\tyasqe.getPreviousNonWsToken = function(line, token) {\n\t\treturn require('./tokenUtils.js').getPreviousNonWsToken(yasqe, line, token);\n\t};\n\tyasqe.getNextNonWsToken = function(lineNumber, charNumber) {\n\t\treturn require('./tokenUtils.js').getNextNonWsToken(yasqe, lineNumber, charNumber);\n\t};\n\tyasqe.collapsePrefixes = function(collapse) {\n\t\tif (collapse === undefined) collapse = true;\n\t\tyasqe.foldCode(require('./prefixFold.js').findFirstPrefixLine(yasqe), root.fold.prefix, (collapse ? \"fold\" : \"unfold\"));\n\t};\n\tvar backdrop = null;\n\tvar animateSpeed = null;\n\tyasqe.setBackdrop = function(show) {\n\n\n\t\tif (yasqe.options.backdrop || yasqe.options.backdrop === 0 || yasqe.options.backdrop === '0') {\n\t\t\tif (animateSpeed === null) {\n\t\t\t\tanimateSpeed = +yasqe.options.backdrop;\n\t\t\t\tif (animateSpeed === 1) {\n\t\t\t\t\t//ah, yasqe.options.backdrop was 'true'. Set this to default animate speed 400\n\t\t\t\t\tanimateSpeed = 400;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tif (!backdrop) {\n\t\t\t\tbackdrop = $('<div>', {\n\t\t\t\t\t\tclass: 'backdrop'\n\t\t\t\t\t})\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t})\n\t\t\t\t\t.insertAfter($(yasqe.getWrapperElement()));\n\t\t\t}\n\t\t\tif (show) {\n\t\t\t\tbackdrop.show(animateSpeed);\n\t\t\t} else {\n\t\t\t\tbackdrop.hide(animateSpeed);\n\t\t\t}\n\t\t}\n\t};\n\t/**\n\t * Execute query. Pass a callback function, or a configuration object (see\n\t * default settings below for possible values) I.e., you can change the\n\t * query configuration by either changing the default settings, changing the\n\t * settings of this document, or by passing query settings to this function\n\t *\n\t * @method doc.query\n\t * @param function|object\n\t */\n\tyasqe.query = function(callbackOrConfig) {\n\t\troot.executeQuery(yasqe, callbackOrConfig);\n\t};\n\n\tyasqe.getUrlArguments = function(config) {\n\t\treturn root.getUrlArguments(yasqe, config);\n\t};\n\n\t/**\n\t * Fetch defined prefixes from query string\n\t *\n\t * @method doc.getPrefixesFromQuery\n\t * @return object\n\t */\n\tyasqe.getPrefixesFromQuery = function() {\n\t\treturn require('./prefixUtils.js').getPrefixesFromQuery(yasqe);\n\t};\n\n\tyasqe.addPrefixes = function(prefixes) {\n\t\treturn require('./prefixUtils.js').addPrefixes(yasqe, prefixes);\n\t};\n\tyasqe.removePrefixes = function(prefixes) {\n\t\treturn require('./prefixUtils.js').removePrefixes(yasqe, prefixes);\n\t};\n\n\tyasqe.getValueWithoutComments = function() {\n\t\tvar cleanedQuery = \"\";\n\t\troot.runMode(yasqe.getValue(), \"sparql11\", function(stringVal, className) {\n\t\t\tif (className != \"comment\") {\n\t\t\t\tcleanedQuery += stringVal;\n\t\t\t}\n\t\t});\n\t\treturn cleanedQuery;\n\t};\n\t/**\n\t * Fetch the query type (e.g., SELECT||DESCRIBE||INSERT||DELETE||ASK||CONSTRUCT)\n\t *\n\t * @method doc.getQueryType\n\t * @return string\n\t *\n\t */\n\tyasqe.getQueryType = function() {\n\t\treturn yasqe.queryType;\n\t};\n\t/**\n\t * Fetch the query mode: 'query' or 'update'\n\t *\n\t * @method doc.getQueryMode\n\t * @return string\n\t *\n\t */\n\tyasqe.getQueryMode = function() {\n\t\tvar type = yasqe.getQueryType();\n\t\tif (type == \"INSERT\" || type == \"DELETE\" || type == \"LOAD\" || type == \"CLEAR\" || type == \"CREATE\" || type == \"DROP\" || type == \"COPY\" || type == \"MOVE\" || type == \"ADD\") {\n\t\t\treturn \"update\";\n\t\t} else {\n\t\t\treturn \"query\";\n\t\t}\n\n\t};\n\n\tyasqe.setCheckSyntaxErrors = function(isEnabled) {\n\t\tyasqe.options.syntaxErrorCheck = isEnabled;\n\t\tcheckSyntax(yasqe);\n\t};\n\n\tyasqe.enableCompleter = function(name) {\n\t\taddCompleterToSettings(yasqe.options, name);\n\t\tif (root.Autocompleters[name]) yasqe.autocompleters.init(name, root.Autocompleters[name]);\n\t};\n\tyasqe.disableCompleter = function(name) {\n\t\tremoveCompleterFromSettings(yasqe.options, name);\n\t};\n\treturn yasqe;\n};\n\nvar addCompleterToSettings = function(settings, name) {\n\tif (!settings.autocompleters) settings.autocompleters = [];\n\tsettings.autocompleters.push(name);\n};\nvar removeCompleterFromSettings = function(settings, name) {\n\tif (typeof settings.autocompleters == \"object\") {\n\t\tvar index = $.inArray(name, settings.autocompleters);\n\t\tif (index >= 0) {\n\t\t\tsettings.autocompleters.splice(index, 1);\n\t\t\tremoveCompleterFromSettings(settings, name); //just in case. suppose 1 completer is listed twice\n\t\t}\n\t}\n};\nvar postProcessCmElement = function(yasqe) {\n\t/**\n\t * Set doc value\n\t */\n\tvar storageId = utils.getPersistencyId(yasqe, yasqe.options.persistent);\n\tif (storageId) {\n\t\tvar valueFromStorage = yutils.storage.get(storageId);\n\t\tif (valueFromStorage)\n\t\t\tyasqe.setValue(valueFromStorage);\n\t}\n\n\troot.drawButtons(yasqe);\n\n\t/**\n\t * Add event handlers\n\t */\n\tyasqe.on('blur', function(yasqe, eventInfo) {\n\t\troot.storeQuery(yasqe);\n\t});\n\tyasqe.on('change', function(yasqe, eventInfo) {\n\t\tcheckSyntax(yasqe);\n\t\troot.updateQueryButton(yasqe);\n\t\troot.positionButtons(yasqe);\n\t});\n\tyasqe.on('changes', function() {\n\t\t//e.g. on paste\n\t\tcheckSyntax(yasqe);\n\t\troot.updateQueryButton(yasqe);\n\t\troot.positionButtons(yasqe);\n\t});\n\n\tyasqe.on('cursorActivity', function(yasqe, eventInfo) {\n\t\tupdateButtonsTransparency(yasqe);\n\t});\n\tyasqe.prevQueryValid = false;\n\tcheckSyntax(yasqe); // on first load, check as well (our stored or default query might be incorrect)\n\troot.positionButtons(yasqe);\n\n\t$(yasqe.getWrapperElement()).on('mouseenter', '.cm-atom', function() {\n\t\tvar matchText = $(this).text();\n\t\t$(yasqe.getWrapperElement()).find('.cm-atom').filter(function() {\n\t\t\treturn $(this).text() === matchText;\n\t\t}).addClass('matchingVar');\n\t}).on('mouseleave', '.cm-atom', function() {\n\t\t$(yasqe.getWrapperElement()).find('.matchingVar').removeClass('matchingVar');\n\t});\n\t/**\n\t * check url args and modify yasqe settings if needed\n\t */\n\tif (yasqe.options.consumeShareLink) {\n\t\tyasqe.options.consumeShareLink(yasqe, getUrlParams());\n\t\t//and: add a hash listener!\n\t\twindow.addEventListener(\"hashchange\", function() {\n\t\t\tyasqe.options.consumeShareLink(yasqe, getUrlParams());\n\t\t});\n\t}\n\tif (yasqe.options.collapsePrefixesOnLoad) yasqe.collapsePrefixes(true);\n};\n\n/**\n * get url params. first try fetching using hash. If it fails, try the regular query parameters (for backwards compatability)\n */\nvar getUrlParams = function() {\n\t//first try hash\n\tvar urlParams = null;\n\tif (window.location.hash.length > 1) {\n\t\t//firefox does some decoding if we're using window.location.hash (e.g. the + sign in contentType settings)\n\t\t//Don't want this. So simply get the hash string ourselves\n\t\turlParams = $.deparam(location.href.split(\"#\")[1])\n\t}\n\tif ((!urlParams || !('query' in urlParams)) && window.location.search.length > 1) {\n\t\t//ok, then just try regular url params\n\t\turlParams = $.deparam(window.location.search.substring(1));\n\t}\n\treturn urlParams;\n};\n\n\n\n/**\n * Update transparency of buttons. Increase transparency when cursor is below buttons\n */\n\nvar updateButtonsTransparency = function(yasqe) {\n\tyasqe.cursor = $(\".CodeMirror-cursor\");\n\tif (yasqe.buttons && yasqe.buttons.is(\":visible\") && yasqe.cursor.length > 0) {\n\t\tif (utils.elementsOverlap(yasqe.cursor, yasqe.buttons)) {\n\t\t\tyasqe.buttons.find(\"svg\").attr(\"opacity\", \"0.2\");\n\t\t} else {\n\t\t\tyasqe.buttons.find(\"svg\").attr(\"opacity\", \"1.0\");\n\t\t}\n\t}\n};\n\n\n\n\n\n\n\n\n\nvar clearError = null;\nvar checkSyntax = function(yasqe, deepcheck) {\n\n\tyasqe.queryValid = true;\n\n\tyasqe.clearGutter(\"gutterErrorBar\");\n\n\tvar state = null;\n\tfor (var l = 0; l < yasqe.lineCount(); ++l) {\n\t\tvar precise = false;\n\t\tif (!yasqe.prevQueryValid) {\n\t\t\t// we don't want cached information in this case, otherwise the\n\t\t\t// previous error sign might still show up,\n\t\t\t// even though the syntax error might be gone already\n\t\t\tprecise = true;\n\t\t}\n\n\t\tvar token = yasqe.getTokenAt({\n\t\t\tline: l,\n\t\t\tch: yasqe.getLine(l).length\n\t\t}, precise);\n\t\tvar state = token.state;\n\t\tyasqe.queryType = state.queryType;\n\t\tif (state.OK == false) {\n\t\t\tif (!yasqe.options.syntaxErrorCheck) {\n\t\t\t\t//the library we use already marks everything as being an error. Overwrite this class attribute.\n\t\t\t\t$(yasqe.getWrapperElement).find(\".sp-error\").css(\"color\", \"black\");\n\t\t\t\t//we don't want to gutter error, so return\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar warningEl = yutils.svg.getElement(imgs.warning);\n\t\t\tif (state.errorMsg) {\n\t\t\t\trequire('./tooltip')(yasqe, warningEl, function() {\n\t\t\t\t\treturn $(\"<div/>\").text(token.state.errorMsg).html();\n\t\t\t\t});\n\t\t\t} else if (state.possibleCurrent && state.possibleCurrent.length > 0) {\n\t\t\t\t//\t\t\t\twarningEl.style.zIndex = \"99999999\";\n\t\t\t\trequire('./tooltip')(yasqe, warningEl, function() {\n\t\t\t\t\tvar expectedEncoded = [];\n\t\t\t\t\tstate.possibleCurrent.forEach(function(expected) {\n\t\t\t\t\t\texpectedEncoded.push(\"<strong style='text-decoration:underline'>\" + $(\"<div/>\").text(expected).html() + \"</strong>\");\n\t\t\t\t\t});\n\t\t\t\t\treturn \"This line is invalid. Expected: \" + expectedEncoded.join(\", \");\n\t\t\t\t});\n\t\t\t}\n\t\t\twarningEl.style.marginTop = \"2px\";\n\t\t\twarningEl.style.marginLeft = \"2px\";\n\t\t\twarningEl.className = 'parseErrorIcon';\n\t\t\tyasqe.setGutterMarker(l, \"gutterErrorBar\", warningEl);\n\n\t\t\tyasqe.queryValid = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tyasqe.prevQueryValid = yasqe.queryValid;\n\tif (deepcheck) {\n\t\tif (state != null && state.stack != undefined) {\n\t\t\tvar stack = state.stack,\n\t\t\t\tlen = state.stack.length;\n\t\t\t// Because incremental parser doesn't receive end-of-input\n\t\t\t// it can't clear stack, so we have to check that whatever\n\t\t\t// is left on the stack is nillable\n\t\t\tif (len > 1)\n\t\t\t\tyasqe.queryValid = false;\n\t\t\telse if (len == 1) {\n\t\t\t\tif (stack[0] != \"solutionModifier\" && stack[0] != \"?limitOffsetClauses\" && stack[0] != \"?offsetClause\")\n\t\t\t\t\tyasqe.queryValid = false;\n\t\t\t}\n\t\t}\n\t}\n};\n/**\n * Static Utils\n */\n// first take all CodeMirror references and store them in the YASQE object\n$.extend(root, CodeMirror);\n\n\n//add registrar for autocompleters\nroot.Autocompleters = {};\nroot.registerAutocompleter = function(name, constructor) {\n\troot.Autocompleters[name] = constructor;\n\taddCompleterToSettings(root.defaults, name);\n}\n\nroot.autoComplete = function(yasqe) {\n\t//this function gets called when pressing the keyboard shortcut. I.e., autoShow = false\n\tyasqe.autocompleters.autoComplete(false);\n};\n//include the autocompleters we provide out-of-the-box\nroot.registerAutocompleter(\"prefixes\", require(\"./autocompleters/prefixes.js\"));\nroot.registerAutocompleter(\"properties\", require(\"./autocompleters/properties.js\"));\nroot.registerAutocompleter(\"classes\", require(\"./autocompleters/classes.js\"));\nroot.registerAutocompleter(\"variables\", require(\"./autocompleters/variables.js\"));\n\n\nroot.positionButtons = function(yasqe) {\n\tvar scrollBar = $(yasqe.getWrapperElement()).find(\".CodeMirror-vscrollbar\");\n\tvar offset = 0;\n\tif (scrollBar.is(\":visible\")) {\n\t\toffset = scrollBar.outerWidth();\n\t}\n\tif (yasqe.buttons.is(\":visible\")) yasqe.buttons.css(\"right\", offset + 4);\n};\n\n/**\n * Create a share link\n *\n * @method YASQE.createShareLink\n * @param {doc} YASQE document\n * @default {query: doc.getValue()}\n * @return object\n */\nroot.createShareLink = function(yasqe) {\n\t//extend existing link, so first fetch current arguments\n\tvar urlParams = {};\n\tif (window.location.hash.length > 1) urlParams = $.deparam(window.location.hash.substring(1));\n\turlParams['query'] = yasqe.getValue();\n\treturn urlParams;\n};\nroot.getAsCurl = function(yasqe, ajaxConfig) {\n\tvar curl = require('./curl.js');\n\treturn curl.createCurlString(yasqe, ajaxConfig);\n};\n/**\n * Consume the share link, by parsing the document URL for possible yasqe arguments, and setting the appropriate values in the YASQE doc\n *\n * @method YASQE.consumeShareLink\n * @param {doc} YASQE document\n */\nroot.consumeShareLink = function(yasqe, urlParams) {\n\tif (urlParams && urlParams.query) {\n\t\tyasqe.setValue(urlParams.query);\n\t}\n};\nroot.drawButtons = function(yasqe) {\n\tyasqe.buttons = $(\"<div class='yasqe_buttons'></div>\").appendTo($(yasqe.getWrapperElement()));\n\n\t/**\n\t * draw share link button\n\t */\n\tif (yasqe.options.createShareLink) {\n\n\t\tvar svgShare = $(yutils.svg.getElement(imgs.share));\n\t\tsvgShare.click(function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tvar popup = $(\"<div class='yasqe_sharePopup'></div>\").appendTo(yasqe.buttons);\n\t\t\t\t$('html').click(function() {\n\t\t\t\t\tif (popup) popup.remove();\n\t\t\t\t});\n\n\t\t\t\tpopup.click(function(event) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t});\n\t\t\t\tvar $input = $(\"<input>\").val(location.protocol + '//' + location.host + location.pathname + location.search + \"#\" + $.param(yasqe.options.createShareLink(yasqe)));\n\n\t\t\t\t$input.focus(function() {\n\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\t$this.select();\n\n\t\t\t\t\t// Work around Chrome's little problem\n\t\t\t\t\t$this.mouseup(function() {\n\t\t\t\t\t\t// Prevent further mouseup intervention\n\t\t\t\t\t\t$this.unbind(\"mouseup\");\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tpopup.empty().append($('<div>', {class:'inputWrapper'}).append($input));\n\t\t\t\tif (yasqe.options.createShortLink) {\n\t\t\t\t\tpopup.addClass('enableShort');\n\t\t\t\t\t$('<button>Shorten</button>')\n\t\t\t\t\t\t.addClass('yasqe_btn yasqe_btn-sm yasqe_btn-primary')\n\t\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t\t$(this).parent().find('button').attr('disabled', 'disabled');\n\t\t\t\t\t\t\tyasqe.options.createShortLink($input.val(), function(errString, shortLink) {\n\t\t\t\t\t\t\t\tif (errString) {\n\t\t\t\t\t\t\t\t\t$input.remove();\n\t\t\t\t\t\t\t\t\tpopup.find('.inputWrapper').append($('<span>', {class:\"shortlinkErr\"}).text(errString));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$input.val(shortLink).focus();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}).appendTo(popup);\n\t\t\t\t}\n\t\t\t\t$('<button>CURL</button>')\n\t\t\t\t\t.addClass('yasqe_btn yasqe_btn-sm yasqe_btn-primary')\n\t\t\t\t\t.click(function() {\n\n\t\t\t\t\t\t$(this).parent().find('button').attr('disabled', 'disabled');\n\t\t\t\t\t\t$input.val(root.getAsCurl(yasqe)).focus();\n\t\t\t\t\t}).appendTo(popup);\n\t\t\t\tvar positions = svgShare.position();\n\t\t\t\tpopup.css(\"top\", (positions.top + svgShare.outerHeight() + parseInt(popup.css('padding-top')) ) + \"px\").css(\"left\", ((positions.left + svgShare.outerWidth()) - popup.outerWidth()) + \"px\");\n\t\t\t\t$input.focus();\n\t\t\t})\n\t\t\t.addClass(\"yasqe_share\")\n\t\t\t.attr(\"title\", \"Share your query\")\n\t\t\t.appendTo(yasqe.buttons);\n\n\t}\n\n\n\t/**\n\t * draw fullscreen button\n\t */\n\n\tvar toggleFullscreen = $('<div>', {\n\t\t\tclass: 'fullscreenToggleBtns'\n\t\t})\n\t\t.append($(yutils.svg.getElement(imgs.fullscreen))\n\t\t\t.addClass(\"yasqe_fullscreenBtn\")\n\t\t\t.attr(\"title\", \"Set editor full screen\")\n\t\t\t.click(function() {\n\t\t\t\tyasqe.setOption(\"fullScreen\", true);\n\t\t\t}))\n\t\t.append($(yutils.svg.getElement(imgs.smallscreen))\n\t\t\t.addClass(\"yasqe_smallscreenBtn\")\n\t\t\t.attr(\"title\", \"Set editor to normale size\")\n\t\t\t.click(function() {\n\t\t\t\tyasqe.setOption(\"fullScreen\", false);\n\t\t\t}))\n\tyasqe.buttons.append(toggleFullscreen);\n\n\n\tif (yasqe.options.sparql.showQueryButton) {\n\t\t$(\"<div>\", {\n\t\t\t\tclass: 'yasqe_queryButton'\n\t\t\t})\n\t\t\t.click(function() {\n\t\t\t\tif ($(this).hasClass(\"query_busy\")) {\n\t\t\t\t\tif (yasqe.xhr) yasqe.xhr.abort();\n\t\t\t\t\troot.updateQueryButton(yasqe);\n\t\t\t\t} else {\n\t\t\t\t\tyasqe.query();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.appendTo(yasqe.buttons);\n\t\troot.updateQueryButton(yasqe);\n\t}\n\n};\n\n\nvar queryButtonIds = {\n\t\"busy\": \"loader\",\n\t\"valid\": \"query\",\n\t\"error\": \"queryInvalid\"\n};\n\n/**\n * Update the query button depending on current query status. If no query status is passed via the parameter, it auto-detects the current query status\n *\n * @param {doc} YASQE document\n * @param status {string|null, \"busy\"|\"valid\"|\"error\"}\n */\nroot.updateQueryButton = function(yasqe, status) {\n\tvar queryButton = $(yasqe.getWrapperElement()).find(\".yasqe_queryButton\");\n\tif (queryButton.length == 0) return; //no query button drawn\n\n\t//detect status\n\tif (!status) {\n\t\tstatus = \"valid\";\n\t\tif (yasqe.queryValid === false) status = \"error\";\n\t}\n\n\tif (status != yasqe.queryStatus) {\n\t\tqueryButton\n\t\t\t.empty()\n\t\t\t.removeClass(function(index, classNames) {\n\t\t\t\treturn classNames.split(\" \").filter(function(c) {\n\t\t\t\t\t//remove classname from previous status\n\t\t\t\t\treturn c.indexOf(\"query_\") == 0;\n\t\t\t\t}).join(\" \");\n\t\t\t});\n\n\t\tif (status == \"busy\") {\n\t\t\tqueryButton.append($('<div>', {\n\t\t\t\tclass: 'loader',\n\t\t\t}));\n\t\t\tyasqe.queryStatus = status;\n\t\t} else if (status == \"valid\" || status == \"error\") {\n\t\t\tqueryButton.addClass(\"query_\" + status);\n\t\t\tyutils.svg.draw(queryButton, imgs[queryButtonIds[status]]);\n\t\t\tyasqe.queryStatus = status;\n\t\t}\n\t}\n};\n/**\n * Initialize YASQE from an existing text area (see http://codemirror.net/doc/manual.html#fromTextArea for more info)\n *\n * @method YASQE.fromTextArea\n * @param textArea {DOM element}\n * @param config {object}\n * @returns {doc} YASQE document\n */\nroot.fromTextArea = function(textAreaEl, config) {\n\tconfig = extendConfig(config);\n\t//add yasqe div as parent (needed for styles to be manageable and scoped).\n\t//In this case, I -also- put it as parent el of the text area. This is wrapped in a div now\n\tvar rootEl = $(\"<div>\", {\n\t\tclass: 'yasqe'\n\t}).insertBefore($(textAreaEl)).append($(textAreaEl));\n\tvar yasqe = extendCmInstance(CodeMirror.fromTextArea(textAreaEl, config));\n\tpostProcessCmElement(yasqe);\n\treturn yasqe;\n};\n\n\nroot.storeQuery = function(yasqe) {\n\tvar storageId = utils.getPersistencyId(yasqe, yasqe.options.persistent);\n\tif (storageId) {\n\t\tyutils.storage.set(storageId, yasqe.getValue(), \"month\");\n\t}\n};\nroot.commentLines = function(yasqe) {\n\tvar startLine = yasqe.getCursor(true).line;\n\tvar endLine = yasqe.getCursor(false).line;\n\tvar min = Math.min(startLine, endLine);\n\tvar max = Math.max(startLine, endLine);\n\n\t// if all lines start with #, remove this char. Otherwise add this char\n\tvar linesAreCommented = true;\n\tfor (var i = min; i <= max; i++) {\n\t\tvar line = yasqe.getLine(i);\n\t\tif (line.length == 0 || line.substring(0, 1) != \"#\") {\n\t\t\tlinesAreCommented = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor (var i = min; i <= max; i++) {\n\t\tif (linesAreCommented) {\n\t\t\t// lines are commented, so remove comments\n\t\t\tyasqe.replaceRange(\"\", {\n\t\t\t\tline: i,\n\t\t\t\tch: 0\n\t\t\t}, {\n\t\t\t\tline: i,\n\t\t\t\tch: 1\n\t\t\t});\n\t\t} else {\n\t\t\t// Not all lines are commented, so add comments\n\t\t\tyasqe.replaceRange(\"#\", {\n\t\t\t\tline: i,\n\t\t\t\tch: 0\n\t\t\t});\n\t\t}\n\n\t}\n};\n\nroot.copyLineUp = function(yasqe) {\n\tvar cursor = yasqe.getCursor();\n\tvar lineCount = yasqe.lineCount();\n\t// First create new empty line at end of text\n\tyasqe.replaceRange(\"\\n\", {\n\t\tline: lineCount - 1,\n\t\tch: yasqe.getLine(lineCount - 1).length\n\t});\n\t// Copy all lines to their next line\n\tfor (var i = lineCount; i > cursor.line; i--) {\n\t\tvar line = yasqe.getLine(i - 1);\n\t\tyasqe.replaceRange(line, {\n\t\t\tline: i,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: i,\n\t\t\tch: yasqe.getLine(i).length\n\t\t});\n\t}\n};\nroot.copyLineDown = function(yasqe) {\n\troot.copyLineUp(yasqe);\n\t// Make sure cursor goes one down (we are copying downwards)\n\tvar cursor = yasqe.getCursor();\n\tcursor.line++;\n\tyasqe.setCursor(cursor);\n};\nroot.doAutoFormat = function(yasqe) {\n\tif (yasqe.somethingSelected()) {\n\t\tvar to = {\n\t\t\tline: yasqe.getCursor(false).line,\n\t\t\tch: yasqe.getSelection().length\n\t\t};\n\t\tautoFormatRange(yasqe, yasqe.getCursor(true), to);\n\t} else {\n\t\tvar totalLines = yasqe.lineCount();\n\t\tvar totalChars = yasqe.getTextArea().value.length;\n\t\tautoFormatRange(yasqe, {\n\t\t\tline: 0,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: totalLines,\n\t\t\tch: totalChars\n\t\t});\n\t}\n\n};\n\n\nvar autoFormatRange = function(yasqe, from, to) {\n\tvar absStart = yasqe.indexFromPos(from);\n\tvar absEnd = yasqe.indexFromPos(to);\n\t// Insert additional line breaks where necessary according to the\n\t// mode's syntax\n\tvar res = autoFormatLineBreaks(yasqe.getValue(), absStart, absEnd);\n\n\t// Replace and auto-indent the range\n\tyasqe.operation(function() {\n\t\tyasqe.replaceRange(res, from, to);\n\t\tvar startLine = yasqe.posFromIndex(absStart).line;\n\t\tvar endLine = yasqe.posFromIndex(absStart + res.length).line;\n\t\tfor (var i = startLine; i <= endLine; i++) {\n\t\t\tyasqe.indentLine(i, \"smart\");\n\t\t}\n\t});\n};\n\nvar autoFormatLineBreaks = function(text, start, end) {\n\ttext = text.substring(start, end);\n\tvar breakAfterArray = [\n\t\t[\"keyword\", \"ws\", \"prefixed\", \"ws\", \"uri\"], // i.e. prefix declaration\n\t\t[\"keyword\", \"ws\", \"uri\"] // i.e. base\n\t];\n\tvar breakAfterCharacters = [\"{\", \".\", \";\"];\n\tvar breakBeforeCharacters = [\"}\"];\n\tvar getBreakType = function(stringVal, type) {\n\t\tfor (var i = 0; i < breakAfterArray.length; i++) {\n\t\t\tif (stackTrace.valueOf().toString() == breakAfterArray[i].valueOf()\n\t\t\t\t.toString()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < breakAfterCharacters.length; i++) {\n\t\t\tif (stringVal == breakAfterCharacters[i]) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < breakBeforeCharacters.length; i++) {\n\t\t\t// don't want to issue 'breakbefore' AND 'breakafter', so check\n\t\t\t// current line\n\t\t\tif ($.trim(currentLine) != '' && stringVal == breakBeforeCharacters[i]) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t};\n\tvar formattedQuery = \"\";\n\tvar currentLine = \"\";\n\tvar stackTrace = [];\n\tCodeMirror.runMode(text, \"sparql11\", function(stringVal, type) {\n\t\tstackTrace.push(type);\n\t\tvar breakType = getBreakType(stringVal, type);\n\t\tif (breakType != 0) {\n\t\t\tif (breakType == 1) {\n\t\t\t\tformattedQuery += stringVal + \"\\n\";\n\t\t\t\tcurrentLine = \"\";\n\t\t\t} else { // (-1)\n\t\t\t\tformattedQuery += \"\\n\" + stringVal;\n\t\t\t\tcurrentLine = stringVal;\n\t\t\t}\n\t\t\tstackTrace = [];\n\t\t} else {\n\t\t\tcurrentLine += stringVal;\n\t\t\tformattedQuery += stringVal;\n\t\t}\n\t\tif (stackTrace.length == 1 && stackTrace[0] == \"sp-ws\")\n\t\t\tstackTrace = [];\n\t});\n\treturn $.trim(formattedQuery.replace(/\\n\\s*\\n/g, '\\n'));\n};\n\nrequire('./sparql.js'),\n\trequire('./defaults.js');\nroot.$ = $;\nroot.version = {\n\t\"CodeMirror\": CodeMirror.version,\n\t\"YASQE\": require(\"../package.json\").version,\n\t\"jquery\": $.fn.jquery,\n\t\"yasgui-utils\": yutils.version\n};\n\n},{\"../lib/deparam.js\":1,\"../lib/grammar/tokenizer.js\":3,\"../package.json\":19,\"./autocompleters/autocompleterBase.js\":20,\"./autocompleters/classes.js\":21,\"./autocompleters/prefixes.js\":22,\"./autocompleters/properties.js\":23,\"./autocompleters/variables.js\":25,\"./curl.js\":26,\"./defaults.js\":27,\"./imgs.js\":29,\"./prefixFold.js\":31,\"./prefixUtils.js\":32,\"./sparql.js\":33,\"./tokenUtils.js\":34,\"./tooltip\":35,\"./utils.js\":36,\"codemirror\":undefined,\"codemirror/addon/display/fullscreen.js\":5,\"codemirror/addon/edit/matchbrackets.js\":6,\"codemirror/addon/fold/brace-fold.js\":7,\"codemirror/addon/fold/foldcode.js\":8,\"codemirror/addon/fold/foldgutter.js\":9,\"codemirror/addon/fold/xml-fold.js\":10,\"codemirror/addon/hint/show-hint.js\":11,\"codemirror/addon/runmode/runmode.js\":12,\"codemirror/addon/search/searchcursor.js\":13,\"jquery\":undefined,\"yasgui-utils\":16}],31:[function(require,module,exports){\nvar CodeMirror = (function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(),\n\ttokenUtils = require('./tokenUtils.js');\n\n\"use strict\";\nvar lookFor = \"PREFIX\";\nmodule.exports = {\n\tfindFirstPrefixLine: function(cm) {\n\t\tvar lastLine = cm.lastLine();\n\t\tfor (var i = 0; i <= lastLine; ++i) {\n\t\t\tif (findFirstPrefix(cm, i) >= 0) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction findFirstPrefix(cm, line, ch, lineText) {\n\tif (!ch) ch = 0;\n\tif (!lineText) lineText = cm.getLine(line);\n\tlineText = lineText.toUpperCase();\n\tfor (var at = ch, pass = 0;;) {\n\t\tvar found = lineText.indexOf(lookFor, at);\n\t\tif (found == -1) {\n\t\t\tif (pass == 1)\n\t\t\t\tbreak;\n\t\t\tpass = 1;\n\t\t\tat = lineText.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (pass == 1 && found < ch)\n\t\t\tbreak;\n\t\ttokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n\t\tif (!/^(string)/.test(tokenType))\n\t\t\treturn found + 1;\n\t\tat = found - 1;\n\t}\n}\n\nCodeMirror.registerHelper(\"fold\", \"prefix\", function(cm, start) {\n\tvar line = start.line,\n\t\tlineText = cm.getLine(line);\n\n\tvar startCh, tokenType;\n\n\tfunction hasPreviousPrefix() {\n\t\tvar hasPreviousPrefix = false;\n\t\tfor (var i = line - 1; i >= 0; i--) {\n\t\t\tif (cm.getLine(i).toUpperCase().indexOf(lookFor) >= 0) {\n\t\t\t\thasPreviousPrefix = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn hasPreviousPrefix;\n\t}\n\n\n\tfunction findOpening(openCh) {\n\t\tfor (var at = start.ch, pass = 0;;) {\n\t\t\tvar found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n\t\t\tif (found == -1) {\n\t\t\t\tif (pass == 1)\n\t\t\t\t\tbreak;\n\t\t\t\tpass = 1;\n\t\t\t\tat = lineText.length;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (pass == 1 && found < start.ch)\n\t\t\t\tbreak;\n\t\t\ttokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n\t\t\tif (!/^(comment|string)/.test(tokenType))\n\t\t\t\treturn found + 1;\n\t\t\tat = found - 1;\n\t\t}\n\t}\n\tvar getLastPrefixPos = function(line, ch) {\n\t\tvar prefixKeywordToken = cm.getTokenAt(CodeMirror.Pos(line, ch + 1));\n\t\tif (!prefixKeywordToken || prefixKeywordToken.type != \"keyword\") return -1;\n\t\tvar prefixShortname = tokenUtils.getNextNonWsToken(cm, line, prefixKeywordToken.end + 1);\n\t\tif (!prefixShortname || prefixShortname.type != \"string-2\") return -1; //missing prefix keyword shortname\n\t\tvar prefixUri = tokenUtils.getNextNonWsToken(cm, line, prefixShortname.end + 1);\n\t\tif (!prefixUri || prefixUri.type != \"variable-3\") return -1; //missing prefix uri\n\t\treturn prefixUri.end;\n\t}\n\n\t//only use opening prefix declaration\n\tif (hasPreviousPrefix())\n\t\treturn;\n\tvar prefixStart = findFirstPrefix(cm, line, start.ch, lineText);\n\n\tif (prefixStart == null)\n\t\treturn;\n\tvar stopAt = '{'; //if this char is there, we won't have a chance of finding more prefixes\n\tvar stopAtNextLine = false;\n\tvar count = 1,\n\t\tlastLine = cm.lastLine(),\n\t\tend, endCh;\n\tvar prefixEndChar = getLastPrefixPos(line, prefixStart);\n\tvar prefixEndLine = line;\n\n\touter: for (var i = line; i <= lastLine; ++i) {\n\t\tif (stopAtNextLine)\n\t\t\tbreak;\n\t\tvar text = cm.getLine(i),\n\t\t\tpos = i == line ? prefixStart + 1 : 0;\n\n\t\tfor (;;) {\n\t\t\tif (!stopAtNextLine && text.indexOf(stopAt) >= 0)\n\t\t\t\tstopAtNextLine = true;\n\n\t\t\tvar nextPrefixDeclaration = text.toUpperCase()\n\t\t\t\t.indexOf(lookFor, pos);\n\n\t\t\tif (nextPrefixDeclaration >= 0) {\n\t\t\t\tif ((endCh = getLastPrefixPos(i, nextPrefixDeclaration)) > 0) {\n\t\t\t\t\tprefixEndChar = endCh;\n\t\t\t\t\tprefixEndLine = i;\n\t\t\t\t\tpos = prefixEndChar;\n\t\t\t\t}\n\t\t\t\tpos++;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tfrom: CodeMirror.Pos(line, prefixStart + lookFor.length),\n\t\tto: CodeMirror.Pos(prefixEndLine, prefixEndChar)\n\t};\n});\n\n},{\"./tokenUtils.js\":34,\"codemirror\":undefined}],32:[function(require,module,exports){\n'use strict';\n/**\n * Append prefix declaration to list of prefixes in query window.\n *\n * @param yasqe\n * @param prefix\n */\nvar addPrefixes = function(yasqe, prefixes) {\n\tvar existingPrefixes = yasqe.getPrefixesFromQuery();\n\t//for backwards compatability, we stil support prefixes value as string (e.g. 'rdf: <http://fbfgfgf>'\n\tif (typeof prefixes == \"string\") {\n\t\taddPrefixAsString(yasqe, prefixes);\n\t} else {\n\t\tfor (var pref in prefixes) {\n\t\t\tif (!(pref in existingPrefixes))\n\t\t\t\taddPrefixAsString(yasqe, pref + \": <\" + prefixes[pref] + \">\");\n\t\t}\n\t}\n\tyasqe.collapsePrefixes(false);\n};\n\nvar addPrefixAsString = function(yasqe, prefixString) {\n\tvar lastPrefix = null;\n\tvar lastPrefixLine = 0;\n\tvar numLines = yasqe.lineCount();\n\tfor (var i = 0; i < numLines; i++) {\n\t\tvar firstToken = yasqe.getNextNonWsToken(i);\n\t\tif (firstToken != null && (firstToken.string == \"PREFIX\" || firstToken.string == \"BASE\")) {\n\t\t\tlastPrefix = firstToken;\n\t\t\tlastPrefixLine = i;\n\t\t}\n\t}\n\n\tif (lastPrefix == null) {\n\t\tyasqe.replaceRange(\"PREFIX \" + prefixString + \"\\n\", {\n\t\t\tline: 0,\n\t\t\tch: 0\n\t\t});\n\t} else {\n\t\tvar previousIndent = getIndentFromLine(yasqe, lastPrefixLine);\n\t\tyasqe.replaceRange(\"\\n\" + previousIndent + \"PREFIX \" + prefixString, {\n\t\t\tline: lastPrefixLine\n\t\t});\n\t}\n\tyasqe.collapsePrefixes(false);\n};\nvar removePrefixes = function(yasqe, prefixes) {\n\tvar escapeRegex = function(string) {\n\t\t//taken from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript/3561711#3561711\n\t\treturn string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t}\n\tfor (var pref in prefixes) {\n\t\tyasqe.setValue(yasqe.getValue().replace(new RegExp(\"PREFIX\\\\s*\" + pref + \":\\\\s*\" + escapeRegex(\"<\" + prefixes[pref] + \">\") + \"\\\\s*\", \"ig\"), ''));\n\t}\n\tyasqe.collapsePrefixes(false);\n\n};\n\n/**\n * Get defined prefixes from query as array, in format {\"prefix:\" \"uri\"}\n *\n * @param cm\n * @returns {Array}\n */\nvar getPrefixesFromQuery = function(yasqe) {\n\t//Use precise here. We want to be sure we use the most up to date state. If we're\n\t//not, we might get outdated prefixes from the current query (creating loops such\n\t//as https://github.com/OpenTriply/YASGUI/issues/84)\n\treturn yasqe.getTokenAt({line: yasqe.lastLine(), ch:yasqe.getLine(yasqe.lastLine()).length}, true).state.prefixes;\n};\n\n/**\n * Get the used indentation for a certain line\n *\n * @param yasqe\n * @param line\n * @param charNumber\n * @returns\n */\nvar getIndentFromLine = function(yasqe, line, charNumber) {\n\tif (charNumber == undefined)\n\t\tcharNumber = 1;\n\tvar token = yasqe.getTokenAt({\n\t\tline: line,\n\t\tch: charNumber\n\t});\n\tif (token == null || token == undefined || token.type != \"ws\") {\n\t\treturn \"\";\n\t} else {\n\t\treturn token.string + getIndentFromLine(yasqe, line, token.end + 1);\n\t};\n};\n\nmodule.exports = {\n\taddPrefixes: addPrefixes,\n\tgetPrefixesFromQuery: getPrefixesFromQuery,\n\tremovePrefixes: removePrefixes\n};\n\n},{}],33:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('./utils.js'),\n\tYASQE = require('./main.js');\n\nYASQE.getAjaxConfig = function(yasqe, callbackOrConfig) {\n\tvar callback = (typeof callbackOrConfig == \"function\" ? callbackOrConfig : null);\n\tvar config = (typeof callbackOrConfig == \"object\" ? callbackOrConfig : {});\n\n\tif (yasqe.options.sparql)\n\t\tconfig = $.extend({}, yasqe.options.sparql, config);\n\n\t//for backwards compatability, make sure we copy sparql handlers to sparql callbacks\n\tif (config.handlers)\n\t\t$.extend(true, config.callbacks, config.handlers);\n\n\n\tif (!config.endpoint || config.endpoint.length == 0)\n\t\treturn; // nothing to query!\n\n\t/**\n\t * initialize ajax config\n\t */\n\tvar ajaxConfig = {\n\t\turl: (typeof config.endpoint == \"function\" ? config.endpoint(yasqe) : config.endpoint),\n\t\ttype: (typeof config.requestMethod == \"function\" ? config.requestMethod(yasqe) : config.requestMethod),\n\t\theaders: {\n\t\t\tAccept: getAcceptHeader(yasqe, config),\n\t\t}\n\t};\n\tif (config.xhrFields) ajaxConfig.xhrFields = config.xhrFields;\n\t/**\n\t * add complete, beforesend, etc callbacks (if specified)\n\t */\n\tvar handlerDefined = false;\n\tif (config.callbacks) {\n\t\tfor (var handler in config.callbacks) {\n\t\t\tif (config.callbacks[handler]) {\n\t\t\t\thandlerDefined = true;\n\t\t\t\tajaxConfig[handler] = config.callbacks[handler];\n\t\t\t}\n\t\t}\n\t}\n\tif (ajaxConfig.type === 'GET') {\n\t\t//we need to do encoding ourselve, as jquery does not properly encode the url string\n\t\t//https://github.com/OpenTriply/YASGUI/issues/75\n\t\tvar first = true;\n\t\t$.each(yasqe.getUrlArguments(config), function(key, val) {\n\t\t\tajaxConfig.url += (first?'?': '&') + val.name + '=' + encodeURIComponent(val.value);\n\t\t\tfirst = false;\n\t\t});\n\t} else {\n\t\tajaxConfig.data = yasqe.getUrlArguments(config);\n\t}\n\tif (!handlerDefined && !callback)\n\t\treturn; // ok, we can query, but have no callbacks. just stop now\n\n\t// if only callback is passed as arg, add that on as 'onComplete' callback\n\tif (callback)\n\t\tajaxConfig.complete = callback;\n\n\n\n\t/**\n\t * merge additional request headers\n\t */\n\tif (config.headers && !$.isEmptyObject(config.headers))\n\t\t$.extend(ajaxConfig.headers, config.headers);\n\n\n\tvar queryStart = new Date();\n\tvar updateYasqe = function() {\n\t\tyasqe.lastQueryDuration = new Date() - queryStart;\n\t\tYASQE.updateQueryButton(yasqe);\n\t\tyasqe.setBackdrop(false);\n\t};\n\t//Make sure the query button is updated again on complete\n\tvar completeCallbacks = [\n\t\tfunction(){require('./main.js').signal(yasqe, 'queryFinish', arguments)},\n\t\tupdateYasqe\n\t];\n\n\tif (ajaxConfig.complete) {\n\t\tcompleteCallbacks.push(ajaxConfig.complete);\n\t}\n\tajaxConfig.complete = completeCallbacks;\n\treturn ajaxConfig;\n};\n\n\n\nYASQE.executeQuery = function(yasqe, callbackOrConfig) {\n\tYASQE.signal(yasqe, 'query', yasqe, callbackOrConfig);\n\tYASQE.updateQueryButton(yasqe, \"busy\");\n\tyasqe.setBackdrop(true);\n\tyasqe.xhr = $.ajax(YASQE.getAjaxConfig(yasqe, callbackOrConfig));\n};\n\n\nYASQE.getUrlArguments = function(yasqe, config) {\n\tvar queryMode = yasqe.getQueryMode();\n\tvar data = [{\n\t\tname: utils.getString(yasqe, yasqe.options.sparql.queryName),\n\t\tvalue: (config.getQueryForAjax? config.getQueryForAjax(yasqe): yasqe.getValue())\n\t}];\n\n\t/**\n\t * add named graphs to ajax config\n\t */\n\tif (config.namedGraphs && config.namedGraphs.length > 0) {\n\t\tvar argName = (queryMode == \"query\" ? \"named-graph-uri\" : \"using-named-graph-uri \");\n\t\tfor (var i = 0; i < config.namedGraphs.length; i++)\n\t\t\tdata.push({\n\t\t\t\tname: argName,\n\t\t\t\tvalue: config.namedGraphs[i]\n\t\t\t});\n\t}\n\t/**\n\t * add default graphs to ajax config\n\t */\n\tif (config.defaultGraphs && config.defaultGraphs.length > 0) {\n\t\tvar argName = (queryMode == \"query\" ? \"default-graph-uri\" : \"using-graph-uri \");\n\t\tfor (var i = 0; i < config.defaultGraphs.length; i++)\n\t\t\tdata.push({\n\t\t\t\tname: argName,\n\t\t\t\tvalue: config.defaultGraphs[i]\n\t\t\t});\n\t}\n\n\t/**\n\t * add additional request args\n\t */\n\tif (config.args && config.args.length > 0) $.merge(data, config.args);\n\n\treturn data;\n}\nvar getAcceptHeader = function(yasqe, config) {\n\tvar acceptHeader = null;\n\tif (config.acceptHeader && !config.acceptHeaderGraph && !config.acceptHeaderSelect && !config.acceptHeaderUpdate) {\n\t\t//this is the old config. For backwards compatability, keep supporting it\n\t\tif (typeof config.acceptHeader == \"function\") {\n\t\t\tacceptHeader = config.acceptHeader(yasqe);\n\t\t} else {\n\t\t\tacceptHeader = config.acceptHeader;\n\t\t}\n\t} else {\n\t\tif (yasqe.getQueryMode() == \"update\") {\n\t\t\tacceptHeader = (typeof config.acceptHeader == \"function\" ? config.acceptHeaderUpdate(yasqe) : config.acceptHeaderUpdate);\n\t\t} else {\n\t\t\tvar qType = yasqe.getQueryType();\n\t\t\tif (qType == \"DESCRIBE\" || qType == \"CONSTRUCT\") {\n\t\t\t\tacceptHeader = (typeof config.acceptHeaderGraph == \"function\" ? config.acceptHeaderGraph(yasqe) : config.acceptHeaderGraph);\n\t\t\t} else {\n\t\t\t\tacceptHeader = (typeof config.acceptHeaderSelect == \"function\" ? config.acceptHeaderSelect(yasqe) : config.acceptHeaderSelect);\n\t\t\t}\n\t\t}\n\t}\n\treturn acceptHeader;\n};\n\nmodule.exports = {\n\tgetAjaxConfig: YASQE.getAjaxConfig\n}\n\n},{\"./main.js\":30,\"./utils.js\":36,\"jquery\":undefined}],34:[function(require,module,exports){\n'use strict';\n/**\n * When typing a query, this query is sometimes syntactically invalid, causing\n * the current tokens to be incorrect This causes problem for autocompletion.\n * http://bla might result in two tokens: http:// and bla. We'll want to combine\n * these\n * \n * @param yasqe {doc}\n * @param token {object}\n * @param cursor {object}\n * @return token {object}\n * @method YASQE.getCompleteToken\n */\nvar getCompleteToken = function(yasqe, token, cur) {\n\tif (!cur) {\n\t\tcur = yasqe.getCursor();\n\t}\n\tif (!token) {\n\t\ttoken = yasqe.getTokenAt(cur);\n\t}\n\tvar prevToken = yasqe.getTokenAt({\n\t\tline: cur.line,\n\t\tch: token.start\n\t});\n\t// not start of line, and not whitespace\n\tif (\n\t\tprevToken.type != null && prevToken.type != \"ws\" && token.type != null && token.type != \"ws\"\n\t) {\n\t\ttoken.start = prevToken.start;\n\t\ttoken.string = prevToken.string + token.string;\n\t\treturn getCompleteToken(yasqe, token, {\n\t\t\tline: cur.line,\n\t\t\tch: prevToken.start\n\t\t}); // recursively, might have multiple tokens which it should include\n\t} else if (token.type != null && token.type == \"ws\") {\n\t\t//always keep 1 char of whitespace between tokens. Otherwise, autocompletions might end up next to the previous node, without whitespace between them\n\t\ttoken.start = token.start + 1;\n\t\ttoken.string = token.string.substring(1);\n\t\treturn token;\n\t} else {\n\t\treturn token;\n\t}\n};\nvar getPreviousNonWsToken = function(yasqe, line, token) {\n\tvar previousToken = yasqe.getTokenAt({\n\t\tline: line,\n\t\tch: token.start\n\t});\n\tif (previousToken != null && previousToken.type == \"ws\") {\n\t\tpreviousToken = getPreviousNonWsToken(yasqe, line, previousToken);\n\t}\n\treturn previousToken;\n}\nvar getNextNonWsToken = function(yasqe, lineNumber, charNumber) {\n\tif (charNumber == undefined)\n\t\tcharNumber = 1;\n\tvar token = yasqe.getTokenAt({\n\t\tline: lineNumber,\n\t\tch: charNumber\n\t});\n\tif (token == null || token == undefined || token.end < charNumber) {\n\t\treturn null;\n\t}\n\tif (token.type == \"ws\") {\n\t\treturn getNextNonWsToken(yasqe, lineNumber, token.end + 1);\n\t}\n\treturn token;\n};\n\nmodule.exports = {\n\tgetPreviousNonWsToken: getPreviousNonWsToken,\n\tgetCompleteToken: getCompleteToken,\n\tgetNextNonWsToken: getNextNonWsToken,\n};\n},{}],35:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('./utils.js');\n\n/**\n * Write our own tooltip, to avoid loading another library for just this functionality. For now, we only use tooltip for showing parse errors, so this is quite a tailored solution\n * Requirements: \n * \t\tposition tooltip within codemirror frame as much as possible, to avoid z-index issues with external things on page\n * \t\tuse html as content\n */\nmodule.exports = function(yasqe, parent, html) {\n\tvar parent = $(parent);\n\tvar tooltip;\n\tparent.hover(function() {\n\t\t\tif (typeof html == \"function\") html = html();\n\t\t\ttooltip = $(\"<div>\").addClass('yasqe_tooltip').html(html).appendTo(parent);\n\t\t\trepositionTooltip();\n\t\t},\n\t\tfunction() {\n\t\t\t$(\".yasqe_tooltip\").remove();\n\t\t});\n\n\n\n\t/**\n\t * only need to take into account top and bottom offset for this usecase\n\t */\n\tvar repositionTooltip = function() {\n\t\tif ($(yasqe.getWrapperElement()).offset().top >= tooltip.offset().top) {\n\t\t\t//shit, move the tooltip down. The tooltip now hovers over the top edge of the yasqe instance\n\t\t\ttooltip.css('bottom', 'auto');\n\t\t\ttooltip.css('top', '26px');\n\t\t}\n\t};\n};\n},{\"./utils.js\":36,\"jquery\":undefined}],36:[function(require,module,exports){\n'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n\nvar keyExists = function(objectToTest, key) {\n\tvar exists = false;\n\ttry {\n\t\tif (objectToTest[key] !== undefined)\n\t\t\texists = true;\n\t} catch (e) {}\n\treturn exists;\n};\n\nvar getPersistencyId = function(yasqe, persistentIdCreator) {\n\tvar persistencyId = null;\n\n\tif (persistentIdCreator) {\n\t\tif (typeof persistentIdCreator == \"string\") {\n\t\t\tpersistencyId = persistentIdCreator;\n\t\t} else {\n\t\t\tpersistencyId = persistentIdCreator(yasqe);\n\t\t}\n\t}\n\treturn persistencyId;\n};\n\nvar elementsOverlap = (function() {\n\tfunction getPositions(elem) {\n\t\tvar pos, width, height;\n\t\tpos = $(elem).offset();\n\t\twidth = $(elem).width();\n\t\theight = $(elem).height();\n\t\treturn [\n\t\t\t[pos.left, pos.left + width],\n\t\t\t[pos.top, pos.top + height]\n\t\t];\n\t}\n\n\tfunction comparePositions(p1, p2) {\n\t\tvar r1, r2;\n\t\tr1 = p1[0] < p2[0] ? p1 : p2;\n\t\tr2 = p1[0] < p2[0] ? p2 : p1;\n\t\treturn r1[1] > r2[0] || r1[0] === r2[0];\n\t}\n\n\treturn function(a, b) {\n\t\tvar pos1 = getPositions(a),\n\t\t\tpos2 = getPositions(b);\n\t\treturn comparePositions(pos1[0], pos2[0]) && comparePositions(pos1[1], pos2[1]);\n\t};\n})();\n\nvar getString = function(yasqe, item) {\n\tif (typeof item == \"function\") {\n\t\treturn item(yasqe);\n\t} else {\n\t\treturn item;\n\t}\n}\nmodule.exports = {\n\tkeyExists: keyExists,\n\tgetPersistencyId: getPersistencyId,\n\telementsOverlap: elementsOverlap,\n\tgetString:getString\n};\n\n},{\"jquery\":undefined}]},{},[28])(28)\n});\n\n","module.exports = {table:\n{\n \"*[&&,valueLogical]\" : {\n \"&&\": [\"[&&,valueLogical]\",\"*[&&,valueLogical]\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \";\": []}, \n \"*[,,expression]\" : {\n \",\": [\"[,,expression]\",\"*[,,expression]\"], \n \")\": []}, \n \"*[,,objectPath]\" : {\n \",\": [\"[,,objectPath]\",\"*[,,objectPath]\"], \n \".\": [], \n \";\": [], \n \"]\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"*[,,object]\" : {\n \",\": [\"[,,object]\",\"*[,,object]\"], \n \".\": [], \n \";\": [], \n \"]\": [], \n \"}\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"*[/,pathEltOrInverse]\" : {\n \"/\": [\"[/,pathEltOrInverse]\",\"*[/,pathEltOrInverse]\"], \n \"|\": [], \n \")\": [], \n \"(\": [], \n \"[\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"*[;,?[or([verbPath,verbSimple]),objectList]]\" : {\n \";\": [\"[;,?[or([verbPath,verbSimple]),objectList]]\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \".\": [], \n \"]\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"*[;,?[verb,objectList]]\" : {\n \";\": [\"[;,?[verb,objectList]]\",\"*[;,?[verb,objectList]]\"], \n \".\": [], \n \"]\": [], \n \"}\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"*[UNION,groupGraphPattern]\" : {\n \"UNION\": [\"[UNION,groupGraphPattern]\",\"*[UNION,groupGraphPattern]\"], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \".\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"*[graphPatternNotTriples,?.,?triplesBlock]\" : {\n \"{\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"OPTIONAL\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"MINUS\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"GRAPH\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"SERVICE\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"FILTER\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"BIND\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VALUES\": [\"[graphPatternNotTriples,?.,?triplesBlock]\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"}\": []}, \n \"*[quadsNotTriples,?.,?triplesTemplate]\" : {\n \"GRAPH\": [\"[quadsNotTriples,?.,?triplesTemplate]\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"}\": []}, \n \"*[|,pathOneInPropertySet]\" : {\n \"|\": [\"[|,pathOneInPropertySet]\",\"*[|,pathOneInPropertySet]\"], \n \")\": []}, \n \"*[|,pathSequence]\" : {\n \"|\": [\"[|,pathSequence]\",\"*[|,pathSequence]\"], \n \")\": [], \n \"(\": [], \n \"[\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"*[||,conditionalAndExpression]\" : {\n \"||\": [\"[||,conditionalAndExpression]\",\"*[||,conditionalAndExpression]\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \";\": []}, \n \"*dataBlockValue\" : {\n \"UNDEF\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"IRI_REF\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"TRUE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"FALSE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"PNAME_LN\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"PNAME_NS\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"STRING_LITERAL1\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"STRING_LITERAL2\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"STRING_LITERAL_LONG1\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"STRING_LITERAL_LONG2\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"INTEGER\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DECIMAL\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DOUBLE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"INTEGER_POSITIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DECIMAL_POSITIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DOUBLE_POSITIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"INTEGER_NEGATIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DECIMAL_NEGATIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"DOUBLE_NEGATIVE\": [\"dataBlockValue\",\"*dataBlockValue\"], \n \"}\": [], \n \")\": []}, \n \"*datasetClause\" : {\n \"FROM\": [\"datasetClause\",\"*datasetClause\"], \n \"WHERE\": [], \n \"{\": []}, \n \"*describeDatasetClause\" : {\n \"FROM\": [\"describeDatasetClause\",\"*describeDatasetClause\"], \n \"ORDER\": [], \n \"HAVING\": [], \n \"GROUP\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"WHERE\": [], \n \"{\": [], \n \"VALUES\": [], \n \"$\": []}, \n \"*graphNode\" : {\n \"(\": [\"graphNode\",\"*graphNode\"], \n \"[\": [\"graphNode\",\"*graphNode\"], \n \"VAR1\": [\"graphNode\",\"*graphNode\"], \n \"VAR2\": [\"graphNode\",\"*graphNode\"], \n \"NIL\": [\"graphNode\",\"*graphNode\"], \n \"IRI_REF\": [\"graphNode\",\"*graphNode\"], \n \"TRUE\": [\"graphNode\",\"*graphNode\"], \n \"FALSE\": [\"graphNode\",\"*graphNode\"], \n \"BLANK_NODE_LABEL\": [\"graphNode\",\"*graphNode\"], \n \"ANON\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_LN\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_NS\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL2\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG2\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \")\": []}, \n \"*graphNodePath\" : {\n \"(\": [\"graphNodePath\",\"*graphNodePath\"], \n \"[\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"NIL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"IRI_REF\": [\"graphNodePath\",\"*graphNodePath\"], \n \"TRUE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"FALSE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"BLANK_NODE_LABEL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"ANON\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_LN\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_NS\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \")\": []}, \n \"*groupCondition\" : {\n \"(\": [\"groupCondition\",\"*groupCondition\"], \n \"STR\": [\"groupCondition\",\"*groupCondition\"], \n \"LANG\": [\"groupCondition\",\"*groupCondition\"], \n \"LANGMATCHES\": [\"groupCondition\",\"*groupCondition\"], \n \"DATATYPE\": [\"groupCondition\",\"*groupCondition\"], \n \"BOUND\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI\": [\"groupCondition\",\"*groupCondition\"], \n \"URI\": [\"groupCondition\",\"*groupCondition\"], \n \"BNODE\": [\"groupCondition\",\"*groupCondition\"], \n \"RAND\": [\"groupCondition\",\"*groupCondition\"], \n \"ABS\": [\"groupCondition\",\"*groupCondition\"], \n \"CEIL\": [\"groupCondition\",\"*groupCondition\"], \n \"FLOOR\": [\"groupCondition\",\"*groupCondition\"], \n \"ROUND\": [\"groupCondition\",\"*groupCondition\"], \n \"CONCAT\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLEN\": [\"groupCondition\",\"*groupCondition\"], \n \"UCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"LCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"ENCODE_FOR_URI\": [\"groupCondition\",\"*groupCondition\"], \n \"CONTAINS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRSTARTS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRENDS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRBEFORE\": [\"groupCondition\",\"*groupCondition\"], \n \"STRAFTER\": [\"groupCondition\",\"*groupCondition\"], \n \"YEAR\": [\"groupCondition\",\"*groupCondition\"], \n \"MONTH\": [\"groupCondition\",\"*groupCondition\"], \n \"DAY\": [\"groupCondition\",\"*groupCondition\"], \n \"HOURS\": [\"groupCondition\",\"*groupCondition\"], \n \"MINUTES\": [\"groupCondition\",\"*groupCondition\"], \n \"SECONDS\": [\"groupCondition\",\"*groupCondition\"], \n \"TIMEZONE\": [\"groupCondition\",\"*groupCondition\"], \n \"TZ\": [\"groupCondition\",\"*groupCondition\"], \n \"NOW\": [\"groupCondition\",\"*groupCondition\"], \n \"UUID\": [\"groupCondition\",\"*groupCondition\"], \n \"STRUUID\": [\"groupCondition\",\"*groupCondition\"], \n \"MD5\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA1\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA256\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA384\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA512\": [\"groupCondition\",\"*groupCondition\"], \n \"COALESCE\": [\"groupCondition\",\"*groupCondition\"], \n \"IF\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLANG\": [\"groupCondition\",\"*groupCondition\"], \n \"STRDT\": [\"groupCondition\",\"*groupCondition\"], \n \"SAMETERM\": [\"groupCondition\",\"*groupCondition\"], \n \"ISIRI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISURI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISBLANK\": [\"groupCondition\",\"*groupCondition\"], \n \"ISLITERAL\": [\"groupCondition\",\"*groupCondition\"], \n \"ISNUMERIC\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR1\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR2\": [\"groupCondition\",\"*groupCondition\"], \n \"SUBSTR\": [\"groupCondition\",\"*groupCondition\"], \n \"REPLACE\": [\"groupCondition\",\"*groupCondition\"], \n \"REGEX\": [\"groupCondition\",\"*groupCondition\"], \n \"EXISTS\": [\"groupCondition\",\"*groupCondition\"], \n \"NOT\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI_REF\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_LN\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_NS\": [\"groupCondition\",\"*groupCondition\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"HAVING\": [], \n \"$\": [], \n \"}\": []}, \n \"*havingCondition\" : {\n \"(\": [\"havingCondition\",\"*havingCondition\"], \n \"STR\": [\"havingCondition\",\"*havingCondition\"], \n \"LANG\": [\"havingCondition\",\"*havingCondition\"], \n \"LANGMATCHES\": [\"havingCondition\",\"*havingCondition\"], \n \"DATATYPE\": [\"havingCondition\",\"*havingCondition\"], \n \"BOUND\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI\": [\"havingCondition\",\"*havingCondition\"], \n \"URI\": [\"havingCondition\",\"*havingCondition\"], \n \"BNODE\": [\"havingCondition\",\"*havingCondition\"], \n \"RAND\": [\"havingCondition\",\"*havingCondition\"], \n \"ABS\": [\"havingCondition\",\"*havingCondition\"], \n \"CEIL\": [\"havingCondition\",\"*havingCondition\"], \n \"FLOOR\": [\"havingCondition\",\"*havingCondition\"], \n \"ROUND\": [\"havingCondition\",\"*havingCondition\"], \n \"CONCAT\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLEN\": [\"havingCondition\",\"*havingCondition\"], \n \"UCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"LCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"ENCODE_FOR_URI\": [\"havingCondition\",\"*havingCondition\"], \n \"CONTAINS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRSTARTS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRENDS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRBEFORE\": [\"havingCondition\",\"*havingCondition\"], \n \"STRAFTER\": [\"havingCondition\",\"*havingCondition\"], \n \"YEAR\": [\"havingCondition\",\"*havingCondition\"], \n \"MONTH\": [\"havingCondition\",\"*havingCondition\"], \n \"DAY\": [\"havingCondition\",\"*havingCondition\"], \n \"HOURS\": [\"havingCondition\",\"*havingCondition\"], \n \"MINUTES\": [\"havingCondition\",\"*havingCondition\"], \n \"SECONDS\": [\"havingCondition\",\"*havingCondition\"], \n \"TIMEZONE\": [\"havingCondition\",\"*havingCondition\"], \n \"TZ\": [\"havingCondition\",\"*havingCondition\"], \n \"NOW\": [\"havingCondition\",\"*havingCondition\"], \n \"UUID\": [\"havingCondition\",\"*havingCondition\"], \n \"STRUUID\": [\"havingCondition\",\"*havingCondition\"], \n \"MD5\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA1\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA256\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA384\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA512\": [\"havingCondition\",\"*havingCondition\"], \n \"COALESCE\": [\"havingCondition\",\"*havingCondition\"], \n \"IF\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLANG\": [\"havingCondition\",\"*havingCondition\"], \n \"STRDT\": [\"havingCondition\",\"*havingCondition\"], \n \"SAMETERM\": [\"havingCondition\",\"*havingCondition\"], \n \"ISIRI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISURI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISBLANK\": [\"havingCondition\",\"*havingCondition\"], \n \"ISLITERAL\": [\"havingCondition\",\"*havingCondition\"], \n \"ISNUMERIC\": [\"havingCondition\",\"*havingCondition\"], \n \"SUBSTR\": [\"havingCondition\",\"*havingCondition\"], \n \"REPLACE\": [\"havingCondition\",\"*havingCondition\"], \n \"REGEX\": [\"havingCondition\",\"*havingCondition\"], \n \"EXISTS\": [\"havingCondition\",\"*havingCondition\"], \n \"NOT\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI_REF\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_LN\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_NS\": [\"havingCondition\",\"*havingCondition\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"$\": [], \n \"}\": []}, \n \"*or([[ (,*dataBlockValue,)],NIL])\" : {\n \"(\": [\"or([[ (,*dataBlockValue,)],NIL])\",\"*or([[ (,*dataBlockValue,)],NIL])\"], \n \"NIL\": [\"or([[ (,*dataBlockValue,)],NIL])\",\"*or([[ (,*dataBlockValue,)],NIL])\"], \n \"}\": []}, \n \"*or([[*,unaryExpression],[/,unaryExpression]])\" : {\n \"*\": [\"or([[*,unaryExpression],[/,unaryExpression]])\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"/\": [\"or([[*,unaryExpression],[/,unaryExpression]])\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \"+\": [], \n \"-\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \";\": []}, \n \"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\" : {\n \"+\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"-\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_POSITIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_POSITIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_POSITIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_NEGATIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_NEGATIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_NEGATIVE\": [\"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \";\": []}, \n \"*or([baseDecl,prefixDecl])\" : {\n \"BASE\": [\"or([baseDecl,prefixDecl])\",\"*or([baseDecl,prefixDecl])\"], \n \"PREFIX\": [\"or([baseDecl,prefixDecl])\",\"*or([baseDecl,prefixDecl])\"], \n \"$\": [], \n \"CONSTRUCT\": [], \n \"DESCRIBE\": [], \n \"ASK\": [], \n \"INSERT\": [], \n \"DELETE\": [], \n \"SELECT\": [], \n \"LOAD\": [], \n \"CLEAR\": [], \n \"DROP\": [], \n \"ADD\": [], \n \"MOVE\": [], \n \"COPY\": [], \n \"CREATE\": [], \n \"WITH\": []}, \n \"*or([var,[ (,expression,AS,var,)]])\" : {\n \"(\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR1\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR2\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"WHERE\": [], \n \"{\": [], \n \"FROM\": []}, \n \"*orderCondition\" : {\n \"ASC\": [\"orderCondition\",\"*orderCondition\"], \n \"DESC\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR1\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR2\": [\"orderCondition\",\"*orderCondition\"], \n \"(\": [\"orderCondition\",\"*orderCondition\"], \n \"STR\": [\"orderCondition\",\"*orderCondition\"], \n \"LANG\": [\"orderCondition\",\"*orderCondition\"], \n \"LANGMATCHES\": [\"orderCondition\",\"*orderCondition\"], \n \"DATATYPE\": [\"orderCondition\",\"*orderCondition\"], \n \"BOUND\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI\": [\"orderCondition\",\"*orderCondition\"], \n \"URI\": [\"orderCondition\",\"*orderCondition\"], \n \"BNODE\": [\"orderCondition\",\"*orderCondition\"], \n \"RAND\": [\"orderCondition\",\"*orderCondition\"], \n \"ABS\": [\"orderCondition\",\"*orderCondition\"], \n \"CEIL\": [\"orderCondition\",\"*orderCondition\"], \n \"FLOOR\": [\"orderCondition\",\"*orderCondition\"], \n \"ROUND\": [\"orderCondition\",\"*orderCondition\"], \n \"CONCAT\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLEN\": [\"orderCondition\",\"*orderCondition\"], \n \"UCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"LCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"ENCODE_FOR_URI\": [\"orderCondition\",\"*orderCondition\"], \n \"CONTAINS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRSTARTS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRENDS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRBEFORE\": [\"orderCondition\",\"*orderCondition\"], \n \"STRAFTER\": [\"orderCondition\",\"*orderCondition\"], \n \"YEAR\": [\"orderCondition\",\"*orderCondition\"], \n \"MONTH\": [\"orderCondition\",\"*orderCondition\"], \n \"DAY\": [\"orderCondition\",\"*orderCondition\"], \n \"HOURS\": [\"orderCondition\",\"*orderCondition\"], \n \"MINUTES\": [\"orderCondition\",\"*orderCondition\"], \n \"SECONDS\": [\"orderCondition\",\"*orderCondition\"], \n \"TIMEZONE\": [\"orderCondition\",\"*orderCondition\"], \n \"TZ\": [\"orderCondition\",\"*orderCondition\"], \n \"NOW\": [\"orderCondition\",\"*orderCondition\"], \n \"UUID\": [\"orderCondition\",\"*orderCondition\"], \n \"STRUUID\": [\"orderCondition\",\"*orderCondition\"], \n \"MD5\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA1\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA256\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA384\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA512\": [\"orderCondition\",\"*orderCondition\"], \n \"COALESCE\": [\"orderCondition\",\"*orderCondition\"], \n \"IF\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLANG\": [\"orderCondition\",\"*orderCondition\"], \n \"STRDT\": [\"orderCondition\",\"*orderCondition\"], \n \"SAMETERM\": [\"orderCondition\",\"*orderCondition\"], \n \"ISIRI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISURI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISBLANK\": [\"orderCondition\",\"*orderCondition\"], \n \"ISLITERAL\": [\"orderCondition\",\"*orderCondition\"], \n \"ISNUMERIC\": [\"orderCondition\",\"*orderCondition\"], \n \"SUBSTR\": [\"orderCondition\",\"*orderCondition\"], \n \"REPLACE\": [\"orderCondition\",\"*orderCondition\"], \n \"REGEX\": [\"orderCondition\",\"*orderCondition\"], \n \"EXISTS\": [\"orderCondition\",\"*orderCondition\"], \n \"NOT\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI_REF\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_LN\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_NS\": [\"orderCondition\",\"*orderCondition\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"$\": [], \n \"}\": []}, \n \"*usingClause\" : {\n \"USING\": [\"usingClause\",\"*usingClause\"], \n \"WHERE\": []}, \n \"*var\" : {\n \"VAR1\": [\"var\",\"*var\"], \n \"VAR2\": [\"var\",\"*var\"], \n \")\": []}, \n \"*varOrIRIref\" : {\n \"VAR1\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"VAR2\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"IRI_REF\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_LN\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_NS\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"ORDER\": [], \n \"HAVING\": [], \n \"GROUP\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"WHERE\": [], \n \"{\": [], \n \"FROM\": [], \n \"VALUES\": [], \n \"$\": []}, \n \"+graphNode\" : {\n \"(\": [\"graphNode\",\"*graphNode\"], \n \"[\": [\"graphNode\",\"*graphNode\"], \n \"VAR1\": [\"graphNode\",\"*graphNode\"], \n \"VAR2\": [\"graphNode\",\"*graphNode\"], \n \"NIL\": [\"graphNode\",\"*graphNode\"], \n \"IRI_REF\": [\"graphNode\",\"*graphNode\"], \n \"TRUE\": [\"graphNode\",\"*graphNode\"], \n \"FALSE\": [\"graphNode\",\"*graphNode\"], \n \"BLANK_NODE_LABEL\": [\"graphNode\",\"*graphNode\"], \n \"ANON\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_LN\": [\"graphNode\",\"*graphNode\"], \n \"PNAME_NS\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL2\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG1\": [\"graphNode\",\"*graphNode\"], \n \"STRING_LITERAL_LONG2\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_POSITIVE\": [\"graphNode\",\"*graphNode\"], \n \"INTEGER_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DECIMAL_NEGATIVE\": [\"graphNode\",\"*graphNode\"], \n \"DOUBLE_NEGATIVE\": [\"graphNode\",\"*graphNode\"]}, \n \"+graphNodePath\" : {\n \"(\": [\"graphNodePath\",\"*graphNodePath\"], \n \"[\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"VAR2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"NIL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"IRI_REF\": [\"graphNodePath\",\"*graphNodePath\"], \n \"TRUE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"FALSE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"BLANK_NODE_LABEL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"ANON\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_LN\": [\"graphNodePath\",\"*graphNodePath\"], \n \"PNAME_NS\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG1\": [\"graphNodePath\",\"*graphNodePath\"], \n \"STRING_LITERAL_LONG2\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_POSITIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"INTEGER_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DECIMAL_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"], \n \"DOUBLE_NEGATIVE\": [\"graphNodePath\",\"*graphNodePath\"]}, \n \"+groupCondition\" : {\n \"(\": [\"groupCondition\",\"*groupCondition\"], \n \"STR\": [\"groupCondition\",\"*groupCondition\"], \n \"LANG\": [\"groupCondition\",\"*groupCondition\"], \n \"LANGMATCHES\": [\"groupCondition\",\"*groupCondition\"], \n \"DATATYPE\": [\"groupCondition\",\"*groupCondition\"], \n \"BOUND\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI\": [\"groupCondition\",\"*groupCondition\"], \n \"URI\": [\"groupCondition\",\"*groupCondition\"], \n \"BNODE\": [\"groupCondition\",\"*groupCondition\"], \n \"RAND\": [\"groupCondition\",\"*groupCondition\"], \n \"ABS\": [\"groupCondition\",\"*groupCondition\"], \n \"CEIL\": [\"groupCondition\",\"*groupCondition\"], \n \"FLOOR\": [\"groupCondition\",\"*groupCondition\"], \n \"ROUND\": [\"groupCondition\",\"*groupCondition\"], \n \"CONCAT\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLEN\": [\"groupCondition\",\"*groupCondition\"], \n \"UCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"LCASE\": [\"groupCondition\",\"*groupCondition\"], \n \"ENCODE_FOR_URI\": [\"groupCondition\",\"*groupCondition\"], \n \"CONTAINS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRSTARTS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRENDS\": [\"groupCondition\",\"*groupCondition\"], \n \"STRBEFORE\": [\"groupCondition\",\"*groupCondition\"], \n \"STRAFTER\": [\"groupCondition\",\"*groupCondition\"], \n \"YEAR\": [\"groupCondition\",\"*groupCondition\"], \n \"MONTH\": [\"groupCondition\",\"*groupCondition\"], \n \"DAY\": [\"groupCondition\",\"*groupCondition\"], \n \"HOURS\": [\"groupCondition\",\"*groupCondition\"], \n \"MINUTES\": [\"groupCondition\",\"*groupCondition\"], \n \"SECONDS\": [\"groupCondition\",\"*groupCondition\"], \n \"TIMEZONE\": [\"groupCondition\",\"*groupCondition\"], \n \"TZ\": [\"groupCondition\",\"*groupCondition\"], \n \"NOW\": [\"groupCondition\",\"*groupCondition\"], \n \"UUID\": [\"groupCondition\",\"*groupCondition\"], \n \"STRUUID\": [\"groupCondition\",\"*groupCondition\"], \n \"MD5\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA1\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA256\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA384\": [\"groupCondition\",\"*groupCondition\"], \n \"SHA512\": [\"groupCondition\",\"*groupCondition\"], \n \"COALESCE\": [\"groupCondition\",\"*groupCondition\"], \n \"IF\": [\"groupCondition\",\"*groupCondition\"], \n \"STRLANG\": [\"groupCondition\",\"*groupCondition\"], \n \"STRDT\": [\"groupCondition\",\"*groupCondition\"], \n \"SAMETERM\": [\"groupCondition\",\"*groupCondition\"], \n \"ISIRI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISURI\": [\"groupCondition\",\"*groupCondition\"], \n \"ISBLANK\": [\"groupCondition\",\"*groupCondition\"], \n \"ISLITERAL\": [\"groupCondition\",\"*groupCondition\"], \n \"ISNUMERIC\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR1\": [\"groupCondition\",\"*groupCondition\"], \n \"VAR2\": [\"groupCondition\",\"*groupCondition\"], \n \"SUBSTR\": [\"groupCondition\",\"*groupCondition\"], \n \"REPLACE\": [\"groupCondition\",\"*groupCondition\"], \n \"REGEX\": [\"groupCondition\",\"*groupCondition\"], \n \"EXISTS\": [\"groupCondition\",\"*groupCondition\"], \n \"NOT\": [\"groupCondition\",\"*groupCondition\"], \n \"IRI_REF\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_LN\": [\"groupCondition\",\"*groupCondition\"], \n \"PNAME_NS\": [\"groupCondition\",\"*groupCondition\"]}, \n \"+havingCondition\" : {\n \"(\": [\"havingCondition\",\"*havingCondition\"], \n \"STR\": [\"havingCondition\",\"*havingCondition\"], \n \"LANG\": [\"havingCondition\",\"*havingCondition\"], \n \"LANGMATCHES\": [\"havingCondition\",\"*havingCondition\"], \n \"DATATYPE\": [\"havingCondition\",\"*havingCondition\"], \n \"BOUND\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI\": [\"havingCondition\",\"*havingCondition\"], \n \"URI\": [\"havingCondition\",\"*havingCondition\"], \n \"BNODE\": [\"havingCondition\",\"*havingCondition\"], \n \"RAND\": [\"havingCondition\",\"*havingCondition\"], \n \"ABS\": [\"havingCondition\",\"*havingCondition\"], \n \"CEIL\": [\"havingCondition\",\"*havingCondition\"], \n \"FLOOR\": [\"havingCondition\",\"*havingCondition\"], \n \"ROUND\": [\"havingCondition\",\"*havingCondition\"], \n \"CONCAT\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLEN\": [\"havingCondition\",\"*havingCondition\"], \n \"UCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"LCASE\": [\"havingCondition\",\"*havingCondition\"], \n \"ENCODE_FOR_URI\": [\"havingCondition\",\"*havingCondition\"], \n \"CONTAINS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRSTARTS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRENDS\": [\"havingCondition\",\"*havingCondition\"], \n \"STRBEFORE\": [\"havingCondition\",\"*havingCondition\"], \n \"STRAFTER\": [\"havingCondition\",\"*havingCondition\"], \n \"YEAR\": [\"havingCondition\",\"*havingCondition\"], \n \"MONTH\": [\"havingCondition\",\"*havingCondition\"], \n \"DAY\": [\"havingCondition\",\"*havingCondition\"], \n \"HOURS\": [\"havingCondition\",\"*havingCondition\"], \n \"MINUTES\": [\"havingCondition\",\"*havingCondition\"], \n \"SECONDS\": [\"havingCondition\",\"*havingCondition\"], \n \"TIMEZONE\": [\"havingCondition\",\"*havingCondition\"], \n \"TZ\": [\"havingCondition\",\"*havingCondition\"], \n \"NOW\": [\"havingCondition\",\"*havingCondition\"], \n \"UUID\": [\"havingCondition\",\"*havingCondition\"], \n \"STRUUID\": [\"havingCondition\",\"*havingCondition\"], \n \"MD5\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA1\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA256\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA384\": [\"havingCondition\",\"*havingCondition\"], \n \"SHA512\": [\"havingCondition\",\"*havingCondition\"], \n \"COALESCE\": [\"havingCondition\",\"*havingCondition\"], \n \"IF\": [\"havingCondition\",\"*havingCondition\"], \n \"STRLANG\": [\"havingCondition\",\"*havingCondition\"], \n \"STRDT\": [\"havingCondition\",\"*havingCondition\"], \n \"SAMETERM\": [\"havingCondition\",\"*havingCondition\"], \n \"ISIRI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISURI\": [\"havingCondition\",\"*havingCondition\"], \n \"ISBLANK\": [\"havingCondition\",\"*havingCondition\"], \n \"ISLITERAL\": [\"havingCondition\",\"*havingCondition\"], \n \"ISNUMERIC\": [\"havingCondition\",\"*havingCondition\"], \n \"SUBSTR\": [\"havingCondition\",\"*havingCondition\"], \n \"REPLACE\": [\"havingCondition\",\"*havingCondition\"], \n \"REGEX\": [\"havingCondition\",\"*havingCondition\"], \n \"EXISTS\": [\"havingCondition\",\"*havingCondition\"], \n \"NOT\": [\"havingCondition\",\"*havingCondition\"], \n \"IRI_REF\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_LN\": [\"havingCondition\",\"*havingCondition\"], \n \"PNAME_NS\": [\"havingCondition\",\"*havingCondition\"]}, \n \"+or([var,[ (,expression,AS,var,)]])\" : {\n \"(\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR1\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"], \n \"VAR2\": [\"or([var,[ (,expression,AS,var,)]])\",\"*or([var,[ (,expression,AS,var,)]])\"]}, \n \"+orderCondition\" : {\n \"ASC\": [\"orderCondition\",\"*orderCondition\"], \n \"DESC\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR1\": [\"orderCondition\",\"*orderCondition\"], \n \"VAR2\": [\"orderCondition\",\"*orderCondition\"], \n \"(\": [\"orderCondition\",\"*orderCondition\"], \n \"STR\": [\"orderCondition\",\"*orderCondition\"], \n \"LANG\": [\"orderCondition\",\"*orderCondition\"], \n \"LANGMATCHES\": [\"orderCondition\",\"*orderCondition\"], \n \"DATATYPE\": [\"orderCondition\",\"*orderCondition\"], \n \"BOUND\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI\": [\"orderCondition\",\"*orderCondition\"], \n \"URI\": [\"orderCondition\",\"*orderCondition\"], \n \"BNODE\": [\"orderCondition\",\"*orderCondition\"], \n \"RAND\": [\"orderCondition\",\"*orderCondition\"], \n \"ABS\": [\"orderCondition\",\"*orderCondition\"], \n \"CEIL\": [\"orderCondition\",\"*orderCondition\"], \n \"FLOOR\": [\"orderCondition\",\"*orderCondition\"], \n \"ROUND\": [\"orderCondition\",\"*orderCondition\"], \n \"CONCAT\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLEN\": [\"orderCondition\",\"*orderCondition\"], \n \"UCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"LCASE\": [\"orderCondition\",\"*orderCondition\"], \n \"ENCODE_FOR_URI\": [\"orderCondition\",\"*orderCondition\"], \n \"CONTAINS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRSTARTS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRENDS\": [\"orderCondition\",\"*orderCondition\"], \n \"STRBEFORE\": [\"orderCondition\",\"*orderCondition\"], \n \"STRAFTER\": [\"orderCondition\",\"*orderCondition\"], \n \"YEAR\": [\"orderCondition\",\"*orderCondition\"], \n \"MONTH\": [\"orderCondition\",\"*orderCondition\"], \n \"DAY\": [\"orderCondition\",\"*orderCondition\"], \n \"HOURS\": [\"orderCondition\",\"*orderCondition\"], \n \"MINUTES\": [\"orderCondition\",\"*orderCondition\"], \n \"SECONDS\": [\"orderCondition\",\"*orderCondition\"], \n \"TIMEZONE\": [\"orderCondition\",\"*orderCondition\"], \n \"TZ\": [\"orderCondition\",\"*orderCondition\"], \n \"NOW\": [\"orderCondition\",\"*orderCondition\"], \n \"UUID\": [\"orderCondition\",\"*orderCondition\"], \n \"STRUUID\": [\"orderCondition\",\"*orderCondition\"], \n \"MD5\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA1\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA256\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA384\": [\"orderCondition\",\"*orderCondition\"], \n \"SHA512\": [\"orderCondition\",\"*orderCondition\"], \n \"COALESCE\": [\"orderCondition\",\"*orderCondition\"], \n \"IF\": [\"orderCondition\",\"*orderCondition\"], \n \"STRLANG\": [\"orderCondition\",\"*orderCondition\"], \n \"STRDT\": [\"orderCondition\",\"*orderCondition\"], \n \"SAMETERM\": [\"orderCondition\",\"*orderCondition\"], \n \"ISIRI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISURI\": [\"orderCondition\",\"*orderCondition\"], \n \"ISBLANK\": [\"orderCondition\",\"*orderCondition\"], \n \"ISLITERAL\": [\"orderCondition\",\"*orderCondition\"], \n \"ISNUMERIC\": [\"orderCondition\",\"*orderCondition\"], \n \"SUBSTR\": [\"orderCondition\",\"*orderCondition\"], \n \"REPLACE\": [\"orderCondition\",\"*orderCondition\"], \n \"REGEX\": [\"orderCondition\",\"*orderCondition\"], \n \"EXISTS\": [\"orderCondition\",\"*orderCondition\"], \n \"NOT\": [\"orderCondition\",\"*orderCondition\"], \n \"IRI_REF\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_LN\": [\"orderCondition\",\"*orderCondition\"], \n \"PNAME_NS\": [\"orderCondition\",\"*orderCondition\"]}, \n \"+varOrIRIref\" : {\n \"VAR1\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"VAR2\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"IRI_REF\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_LN\": [\"varOrIRIref\",\"*varOrIRIref\"], \n \"PNAME_NS\": [\"varOrIRIref\",\"*varOrIRIref\"]}, \n \"?.\" : {\n \".\": [\".\"], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?DISTINCT\" : {\n \"DISTINCT\": [\"DISTINCT\"], \n \"!\": [], \n \"+\": [], \n \"-\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"(\": [], \n \"STR\": [], \n \"LANG\": [], \n \"LANGMATCHES\": [], \n \"DATATYPE\": [], \n \"BOUND\": [], \n \"IRI\": [], \n \"URI\": [], \n \"BNODE\": [], \n \"RAND\": [], \n \"ABS\": [], \n \"CEIL\": [], \n \"FLOOR\": [], \n \"ROUND\": [], \n \"CONCAT\": [], \n \"STRLEN\": [], \n \"UCASE\": [], \n \"LCASE\": [], \n \"ENCODE_FOR_URI\": [], \n \"CONTAINS\": [], \n \"STRSTARTS\": [], \n \"STRENDS\": [], \n \"STRBEFORE\": [], \n \"STRAFTER\": [], \n \"YEAR\": [], \n \"MONTH\": [], \n \"DAY\": [], \n \"HOURS\": [], \n \"MINUTES\": [], \n \"SECONDS\": [], \n \"TIMEZONE\": [], \n \"TZ\": [], \n \"NOW\": [], \n \"UUID\": [], \n \"STRUUID\": [], \n \"MD5\": [], \n \"SHA1\": [], \n \"SHA256\": [], \n \"SHA384\": [], \n \"SHA512\": [], \n \"COALESCE\": [], \n \"IF\": [], \n \"STRLANG\": [], \n \"STRDT\": [], \n \"SAMETERM\": [], \n \"ISIRI\": [], \n \"ISURI\": [], \n \"ISBLANK\": [], \n \"ISLITERAL\": [], \n \"ISNUMERIC\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"COUNT\": [], \n \"SUM\": [], \n \"MIN\": [], \n \"MAX\": [], \n \"AVG\": [], \n \"SAMPLE\": [], \n \"GROUP_CONCAT\": [], \n \"SUBSTR\": [], \n \"REPLACE\": [], \n \"REGEX\": [], \n \"EXISTS\": [], \n \"NOT\": [], \n \"IRI_REF\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"*\": []}, \n \"?GRAPH\" : {\n \"GRAPH\": [\"GRAPH\"], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?SILENT\" : {\n \"SILENT\": [\"SILENT\"], \n \"VAR1\": [], \n \"VAR2\": [], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?SILENT_1\" : {\n \"SILENT\": [\"SILENT\"], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?SILENT_2\" : {\n \"SILENT\": [\"SILENT\"], \n \"GRAPH\": [], \n \"DEFAULT\": [], \n \"NAMED\": [], \n \"ALL\": []}, \n \"?SILENT_3\" : {\n \"SILENT\": [\"SILENT\"], \n \"GRAPH\": []}, \n \"?SILENT_4\" : {\n \"SILENT\": [\"SILENT\"], \n \"DEFAULT\": [], \n \"GRAPH\": [], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": []}, \n \"?WHERE\" : {\n \"WHERE\": [\"WHERE\"], \n \"{\": []}, \n \"?[,,expression]\" : {\n \",\": [\"[,,expression]\"], \n \")\": []}, \n \"?[.,?constructTriples]\" : {\n \".\": [\"[.,?constructTriples]\"], \n \"}\": []}, \n \"?[.,?triplesBlock]\" : {\n \".\": [\"[.,?triplesBlock]\"], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?[.,?triplesTemplate]\" : {\n \".\": [\"[.,?triplesTemplate]\"], \n \"}\": [], \n \"GRAPH\": []}, \n \"?[;,SEPARATOR,=,string]\" : {\n \";\": [\"[;,SEPARATOR,=,string]\"], \n \")\": []}, \n \"?[;,update]\" : {\n \";\": [\"[;,update]\"], \n \"$\": []}, \n \"?[AS,var]\" : {\n \"AS\": [\"[AS,var]\"], \n \")\": []}, \n \"?[INTO,graphRef]\" : {\n \"INTO\": [\"[INTO,graphRef]\"], \n \";\": [], \n \"$\": []}, \n \"?[or([verbPath,verbSimple]),objectList]\" : {\n \"VAR1\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"VAR2\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"^\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"a\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"!\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"(\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"IRI_REF\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"PNAME_LN\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \"PNAME_NS\": [\"[or([verbPath,verbSimple]),objectList]\"], \n \";\": [], \n \".\": [], \n \"]\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?[pathOneInPropertySet,*[|,pathOneInPropertySet]]\" : {\n \"a\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"^\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"IRI_REF\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"PNAME_LN\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \"PNAME_NS\": [\"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\"], \n \")\": []}, \n \"?[update1,?[;,update]]\" : {\n \"INSERT\": [\"[update1,?[;,update]]\"], \n \"DELETE\": [\"[update1,?[;,update]]\"], \n \"LOAD\": [\"[update1,?[;,update]]\"], \n \"CLEAR\": [\"[update1,?[;,update]]\"], \n \"DROP\": [\"[update1,?[;,update]]\"], \n \"ADD\": [\"[update1,?[;,update]]\"], \n \"MOVE\": [\"[update1,?[;,update]]\"], \n \"COPY\": [\"[update1,?[;,update]]\"], \n \"CREATE\": [\"[update1,?[;,update]]\"], \n \"WITH\": [\"[update1,?[;,update]]\"], \n \"$\": []}, \n \"?[verb,objectList]\" : {\n \"a\": [\"[verb,objectList]\"], \n \"VAR1\": [\"[verb,objectList]\"], \n \"VAR2\": [\"[verb,objectList]\"], \n \"IRI_REF\": [\"[verb,objectList]\"], \n \"PNAME_LN\": [\"[verb,objectList]\"], \n \"PNAME_NS\": [\"[verb,objectList]\"], \n \";\": [], \n \".\": [], \n \"]\": [], \n \"}\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"?argList\" : {\n \"NIL\": [\"argList\"], \n \"(\": [\"argList\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \"+\": [], \n \"-\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"*\": [], \n \"/\": [], \n \";\": []}, \n \"?constructTriples\" : {\n \"VAR1\": [\"constructTriples\"], \n \"VAR2\": [\"constructTriples\"], \n \"NIL\": [\"constructTriples\"], \n \"(\": [\"constructTriples\"], \n \"[\": [\"constructTriples\"], \n \"IRI_REF\": [\"constructTriples\"], \n \"TRUE\": [\"constructTriples\"], \n \"FALSE\": [\"constructTriples\"], \n \"BLANK_NODE_LABEL\": [\"constructTriples\"], \n \"ANON\": [\"constructTriples\"], \n \"PNAME_LN\": [\"constructTriples\"], \n \"PNAME_NS\": [\"constructTriples\"], \n \"STRING_LITERAL1\": [\"constructTriples\"], \n \"STRING_LITERAL2\": [\"constructTriples\"], \n \"STRING_LITERAL_LONG1\": [\"constructTriples\"], \n \"STRING_LITERAL_LONG2\": [\"constructTriples\"], \n \"INTEGER\": [\"constructTriples\"], \n \"DECIMAL\": [\"constructTriples\"], \n \"DOUBLE\": [\"constructTriples\"], \n \"INTEGER_POSITIVE\": [\"constructTriples\"], \n \"DECIMAL_POSITIVE\": [\"constructTriples\"], \n \"DOUBLE_POSITIVE\": [\"constructTriples\"], \n \"INTEGER_NEGATIVE\": [\"constructTriples\"], \n \"DECIMAL_NEGATIVE\": [\"constructTriples\"], \n \"DOUBLE_NEGATIVE\": [\"constructTriples\"], \n \"}\": []}, \n \"?groupClause\" : {\n \"GROUP\": [\"groupClause\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"HAVING\": [], \n \"$\": [], \n \"}\": []}, \n \"?havingClause\" : {\n \"HAVING\": [\"havingClause\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"ORDER\": [], \n \"$\": [], \n \"}\": []}, \n \"?insertClause\" : {\n \"INSERT\": [\"insertClause\"], \n \"WHERE\": [], \n \"USING\": []}, \n \"?limitClause\" : {\n \"LIMIT\": [\"limitClause\"], \n \"VALUES\": [], \n \"$\": [], \n \"}\": []}, \n \"?limitOffsetClauses\" : {\n \"LIMIT\": [\"limitOffsetClauses\"], \n \"OFFSET\": [\"limitOffsetClauses\"], \n \"VALUES\": [], \n \"$\": [], \n \"}\": []}, \n \"?offsetClause\" : {\n \"OFFSET\": [\"offsetClause\"], \n \"VALUES\": [], \n \"$\": [], \n \"}\": []}, \n \"?or([DISTINCT,REDUCED])\" : {\n \"DISTINCT\": [\"or([DISTINCT,REDUCED])\"], \n \"REDUCED\": [\"or([DISTINCT,REDUCED])\"], \n \"*\": [], \n \"(\": [], \n \"VAR1\": [], \n \"VAR2\": []}, \n \"?or([LANGTAG,[^^,iriRef]])\" : {\n \"LANGTAG\": [\"or([LANGTAG,[^^,iriRef]])\"], \n \"^^\": [\"or([LANGTAG,[^^,iriRef]])\"], \n \"UNDEF\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"a\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"^\": [], \n \"!\": [], \n \"(\": [], \n \".\": [], \n \";\": [], \n \",\": [], \n \"AS\": [], \n \")\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \"+\": [], \n \"-\": [], \n \"*\": [], \n \"/\": [], \n \"}\": [], \n \"[\": [], \n \"NIL\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"]\": [], \n \"GRAPH\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": []}, \n \"?or([[*,unaryExpression],[/,unaryExpression]])\" : {\n \"*\": [\"or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"/\": [\"or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"+\": [], \n \"-\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": [], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \"=\": [], \n \"!=\": [], \n \"<\": [], \n \">\": [], \n \"<=\": [], \n \">=\": [], \n \"IN\": [], \n \"NOT\": [], \n \";\": []}, \n \"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\" : {\n \"=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"!=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"<\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \">\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"<=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \">=\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IN\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"NOT\": [\"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"AS\": [], \n \")\": [], \n \",\": [], \n \"||\": [], \n \"&&\": [], \n \";\": []}, \n \"?orderClause\" : {\n \"ORDER\": [\"orderClause\"], \n \"VALUES\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"$\": [], \n \"}\": []}, \n \"?pathMod\" : {\n \"*\": [\"pathMod\"], \n \"?\": [\"pathMod\"], \n \"+\": [\"pathMod\"], \n \"{\": [\"pathMod\"], \n \"|\": [], \n \"/\": [], \n \")\": [], \n \"(\": [], \n \"[\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"?triplesBlock\" : {\n \"VAR1\": [\"triplesBlock\"], \n \"VAR2\": [\"triplesBlock\"], \n \"NIL\": [\"triplesBlock\"], \n \"(\": [\"triplesBlock\"], \n \"[\": [\"triplesBlock\"], \n \"IRI_REF\": [\"triplesBlock\"], \n \"TRUE\": [\"triplesBlock\"], \n \"FALSE\": [\"triplesBlock\"], \n \"BLANK_NODE_LABEL\": [\"triplesBlock\"], \n \"ANON\": [\"triplesBlock\"], \n \"PNAME_LN\": [\"triplesBlock\"], \n \"PNAME_NS\": [\"triplesBlock\"], \n \"STRING_LITERAL1\": [\"triplesBlock\"], \n \"STRING_LITERAL2\": [\"triplesBlock\"], \n \"STRING_LITERAL_LONG1\": [\"triplesBlock\"], \n \"STRING_LITERAL_LONG2\": [\"triplesBlock\"], \n \"INTEGER\": [\"triplesBlock\"], \n \"DECIMAL\": [\"triplesBlock\"], \n \"DOUBLE\": [\"triplesBlock\"], \n \"INTEGER_POSITIVE\": [\"triplesBlock\"], \n \"DECIMAL_POSITIVE\": [\"triplesBlock\"], \n \"DOUBLE_POSITIVE\": [\"triplesBlock\"], \n \"INTEGER_NEGATIVE\": [\"triplesBlock\"], \n \"DECIMAL_NEGATIVE\": [\"triplesBlock\"], \n \"DOUBLE_NEGATIVE\": [\"triplesBlock\"], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"?triplesTemplate\" : {\n \"VAR1\": [\"triplesTemplate\"], \n \"VAR2\": [\"triplesTemplate\"], \n \"NIL\": [\"triplesTemplate\"], \n \"(\": [\"triplesTemplate\"], \n \"[\": [\"triplesTemplate\"], \n \"IRI_REF\": [\"triplesTemplate\"], \n \"TRUE\": [\"triplesTemplate\"], \n \"FALSE\": [\"triplesTemplate\"], \n \"BLANK_NODE_LABEL\": [\"triplesTemplate\"], \n \"ANON\": [\"triplesTemplate\"], \n \"PNAME_LN\": [\"triplesTemplate\"], \n \"PNAME_NS\": [\"triplesTemplate\"], \n \"STRING_LITERAL1\": [\"triplesTemplate\"], \n \"STRING_LITERAL2\": [\"triplesTemplate\"], \n \"STRING_LITERAL_LONG1\": [\"triplesTemplate\"], \n \"STRING_LITERAL_LONG2\": [\"triplesTemplate\"], \n \"INTEGER\": [\"triplesTemplate\"], \n \"DECIMAL\": [\"triplesTemplate\"], \n \"DOUBLE\": [\"triplesTemplate\"], \n \"INTEGER_POSITIVE\": [\"triplesTemplate\"], \n \"DECIMAL_POSITIVE\": [\"triplesTemplate\"], \n \"DOUBLE_POSITIVE\": [\"triplesTemplate\"], \n \"INTEGER_NEGATIVE\": [\"triplesTemplate\"], \n \"DECIMAL_NEGATIVE\": [\"triplesTemplate\"], \n \"DOUBLE_NEGATIVE\": [\"triplesTemplate\"], \n \"}\": [], \n \"GRAPH\": []}, \n \"?whereClause\" : {\n \"WHERE\": [\"whereClause\"], \n \"{\": [\"whereClause\"], \n \"ORDER\": [], \n \"HAVING\": [], \n \"GROUP\": [], \n \"LIMIT\": [], \n \"OFFSET\": [], \n \"VALUES\": [], \n \"$\": []}, \n \"[ (,*dataBlockValue,)]\" : {\n \"(\": [\"(\",\"*dataBlockValue\",\")\"]}, \n \"[ (,*var,)]\" : {\n \"(\": [\"(\",\"*var\",\")\"]}, \n \"[ (,expression,)]\" : {\n \"(\": [\"(\",\"expression\",\")\"]}, \n \"[ (,expression,AS,var,)]\" : {\n \"(\": [\"(\",\"expression\",\"AS\",\"var\",\")\"]}, \n \"[!=,numericExpression]\" : {\n \"!=\": [\"!=\",\"numericExpression\"]}, \n \"[&&,valueLogical]\" : {\n \"&&\": [\"&&\",\"valueLogical\"]}, \n \"[*,unaryExpression]\" : {\n \"*\": [\"*\",\"unaryExpression\"]}, \n \"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]\" : {\n \"WHERE\": [\"*datasetClause\",\"WHERE\",\"{\",\"?triplesTemplate\",\"}\",\"solutionModifier\"], \n \"FROM\": [\"*datasetClause\",\"WHERE\",\"{\",\"?triplesTemplate\",\"}\",\"solutionModifier\"]}, \n \"[+,multiplicativeExpression]\" : {\n \"+\": [\"+\",\"multiplicativeExpression\"]}, \n \"[,,expression]\" : {\n \",\": [\",\",\"expression\"]}, \n \"[,,integer,}]\" : {\n \",\": [\",\",\"integer\",\"}\"]}, \n \"[,,objectPath]\" : {\n \",\": [\",\",\"objectPath\"]}, \n \"[,,object]\" : {\n \",\": [\",\",\"object\"]}, \n \"[,,or([},[integer,}]])]\" : {\n \",\": [\",\",\"or([},[integer,}]])\"]}, \n \"[-,multiplicativeExpression]\" : {\n \"-\": [\"-\",\"multiplicativeExpression\"]}, \n \"[.,?constructTriples]\" : {\n \".\": [\".\",\"?constructTriples\"]}, \n \"[.,?triplesBlock]\" : {\n \".\": [\".\",\"?triplesBlock\"]}, \n \"[.,?triplesTemplate]\" : {\n \".\": [\".\",\"?triplesTemplate\"]}, \n \"[/,pathEltOrInverse]\" : {\n \"/\": [\"/\",\"pathEltOrInverse\"]}, \n \"[/,unaryExpression]\" : {\n \"/\": [\"/\",\"unaryExpression\"]}, \n \"[;,?[or([verbPath,verbSimple]),objectList]]\" : {\n \";\": [\";\",\"?[or([verbPath,verbSimple]),objectList]\"]}, \n \"[;,?[verb,objectList]]\" : {\n \";\": [\";\",\"?[verb,objectList]\"]}, \n \"[;,SEPARATOR,=,string]\" : {\n \";\": [\";\",\"SEPARATOR\",\"=\",\"string\"]}, \n \"[;,update]\" : {\n \";\": [\";\",\"update\"]}, \n \"[<,numericExpression]\" : {\n \"<\": [\"<\",\"numericExpression\"]}, \n \"[<=,numericExpression]\" : {\n \"<=\": [\"<=\",\"numericExpression\"]}, \n \"[=,numericExpression]\" : {\n \"=\": [\"=\",\"numericExpression\"]}, \n \"[>,numericExpression]\" : {\n \">\": [\">\",\"numericExpression\"]}, \n \"[>=,numericExpression]\" : {\n \">=\": [\">=\",\"numericExpression\"]}, \n \"[AS,var]\" : {\n \"AS\": [\"AS\",\"var\"]}, \n \"[IN,expressionList]\" : {\n \"IN\": [\"IN\",\"expressionList\"]}, \n \"[INTO,graphRef]\" : {\n \"INTO\": [\"INTO\",\"graphRef\"]}, \n \"[NAMED,iriRef]\" : {\n \"NAMED\": [\"NAMED\",\"iriRef\"]}, \n \"[NOT,IN,expressionList]\" : {\n \"NOT\": [\"NOT\",\"IN\",\"expressionList\"]}, \n \"[UNION,groupGraphPattern]\" : {\n \"UNION\": [\"UNION\",\"groupGraphPattern\"]}, \n \"[^^,iriRef]\" : {\n \"^^\": [\"^^\",\"iriRef\"]}, \n \"[constructTemplate,*datasetClause,whereClause,solutionModifier]\" : {\n \"{\": [\"constructTemplate\",\"*datasetClause\",\"whereClause\",\"solutionModifier\"]}, \n \"[deleteClause,?insertClause]\" : {\n \"DELETE\": [\"deleteClause\",\"?insertClause\"]}, \n \"[graphPatternNotTriples,?.,?triplesBlock]\" : {\n \"{\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"OPTIONAL\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"MINUS\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"GRAPH\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"SERVICE\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"FILTER\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"BIND\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"], \n \"VALUES\": [\"graphPatternNotTriples\",\"?.\",\"?triplesBlock\"]}, \n \"[integer,or([[,,or([},[integer,}]])],}])]\" : {\n \"INTEGER\": [\"integer\",\"or([[,,or([},[integer,}]])],}])\"]}, \n \"[integer,}]\" : {\n \"INTEGER\": [\"integer\",\"}\"]}, \n \"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\" : {\n \"INTEGER_POSITIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_POSITIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_POSITIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER_NEGATIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_NEGATIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_NEGATIVE\": [\"or([numericLiteralPositive,numericLiteralNegative])\",\"?or([[*,unaryExpression],[/,unaryExpression]])\"]}, \n \"[or([verbPath,verbSimple]),objectList]\" : {\n \"VAR1\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"VAR2\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"^\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"a\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"!\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"(\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"IRI_REF\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"PNAME_LN\": [\"or([verbPath,verbSimple])\",\"objectList\"], \n \"PNAME_NS\": [\"or([verbPath,verbSimple])\",\"objectList\"]}, \n \"[pathOneInPropertySet,*[|,pathOneInPropertySet]]\" : {\n \"a\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"^\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"IRI_REF\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"PNAME_LN\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"], \n \"PNAME_NS\": [\"pathOneInPropertySet\",\"*[|,pathOneInPropertySet]\"]}, \n \"[quadsNotTriples,?.,?triplesTemplate]\" : {\n \"GRAPH\": [\"quadsNotTriples\",\"?.\",\"?triplesTemplate\"]}, \n \"[update1,?[;,update]]\" : {\n \"INSERT\": [\"update1\",\"?[;,update]\"], \n \"DELETE\": [\"update1\",\"?[;,update]\"], \n \"LOAD\": [\"update1\",\"?[;,update]\"], \n \"CLEAR\": [\"update1\",\"?[;,update]\"], \n \"DROP\": [\"update1\",\"?[;,update]\"], \n \"ADD\": [\"update1\",\"?[;,update]\"], \n \"MOVE\": [\"update1\",\"?[;,update]\"], \n \"COPY\": [\"update1\",\"?[;,update]\"], \n \"CREATE\": [\"update1\",\"?[;,update]\"], \n \"WITH\": [\"update1\",\"?[;,update]\"]}, \n \"[verb,objectList]\" : {\n \"a\": [\"verb\",\"objectList\"], \n \"VAR1\": [\"verb\",\"objectList\"], \n \"VAR2\": [\"verb\",\"objectList\"], \n \"IRI_REF\": [\"verb\",\"objectList\"], \n \"PNAME_LN\": [\"verb\",\"objectList\"], \n \"PNAME_NS\": [\"verb\",\"objectList\"]}, \n \"[|,pathOneInPropertySet]\" : {\n \"|\": [\"|\",\"pathOneInPropertySet\"]}, \n \"[|,pathSequence]\" : {\n \"|\": [\"|\",\"pathSequence\"]}, \n \"[||,conditionalAndExpression]\" : {\n \"||\": [\"||\",\"conditionalAndExpression\"]}, \n \"add\" : {\n \"ADD\": [\"ADD\",\"?SILENT_4\",\"graphOrDefault\",\"TO\",\"graphOrDefault\"]}, \n \"additiveExpression\" : {\n \"!\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"+\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"-\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"VAR1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"VAR2\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"(\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"LANG\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"LANGMATCHES\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DATATYPE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"BOUND\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"IRI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"URI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"BNODE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"RAND\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ABS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"CEIL\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"FLOOR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ROUND\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"CONCAT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRLEN\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"UCASE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"LCASE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ENCODE_FOR_URI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"CONTAINS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRSTARTS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRENDS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRBEFORE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRAFTER\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"YEAR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MONTH\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DAY\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"HOURS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MINUTES\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SECONDS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"TIMEZONE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"TZ\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"NOW\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"UUID\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRUUID\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MD5\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA256\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA384\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SHA512\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"COALESCE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"IF\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRLANG\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRDT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SAMETERM\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISIRI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISURI\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISBLANK\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISLITERAL\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"ISNUMERIC\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"TRUE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"FALSE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"COUNT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SUM\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MIN\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"MAX\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"AVG\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SAMPLE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"GROUP_CONCAT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"SUBSTR\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"REPLACE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"REGEX\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"EXISTS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"NOT\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"IRI_REF\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL2\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL_LONG1\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"STRING_LITERAL_LONG2\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_POSITIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_POSITIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_POSITIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"INTEGER_NEGATIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DECIMAL_NEGATIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"DOUBLE_NEGATIVE\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"PNAME_LN\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"], \n \"PNAME_NS\": [\"multiplicativeExpression\",\"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\"]}, \n \"aggregate\" : {\n \"COUNT\": [\"COUNT\",\"(\",\"?DISTINCT\",\"or([*,expression])\",\")\"], \n \"SUM\": [\"SUM\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"MIN\": [\"MIN\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"MAX\": [\"MAX\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"AVG\": [\"AVG\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"SAMPLE\": [\"SAMPLE\",\"(\",\"?DISTINCT\",\"expression\",\")\"], \n \"GROUP_CONCAT\": [\"GROUP_CONCAT\",\"(\",\"?DISTINCT\",\"expression\",\"?[;,SEPARATOR,=,string]\",\")\"]}, \n \"allowBnodes\" : {\n \"}\": []}, \n \"allowVars\" : {\n \"}\": []}, \n \"argList\" : {\n \"NIL\": [\"NIL\"], \n \"(\": [\"(\",\"?DISTINCT\",\"expression\",\"*[,,expression]\",\")\"]}, \n \"askQuery\" : {\n \"ASK\": [\"ASK\",\"*datasetClause\",\"whereClause\",\"solutionModifier\"]}, \n \"baseDecl\" : {\n \"BASE\": [\"BASE\",\"IRI_REF\"]}, \n \"bind\" : {\n \"BIND\": [\"BIND\",\"(\",\"expression\",\"AS\",\"var\",\")\"]}, \n \"blankNode\" : {\n \"BLANK_NODE_LABEL\": [\"BLANK_NODE_LABEL\"], \n \"ANON\": [\"ANON\"]}, \n \"blankNodePropertyList\" : {\n \"[\": [\"[\",\"propertyListNotEmpty\",\"]\"]}, \n \"blankNodePropertyListPath\" : {\n \"[\": [\"[\",\"propertyListPathNotEmpty\",\"]\"]}, \n \"booleanLiteral\" : {\n \"TRUE\": [\"TRUE\"], \n \"FALSE\": [\"FALSE\"]}, \n \"brackettedExpression\" : {\n \"(\": [\"(\",\"expression\",\")\"]}, \n \"builtInCall\" : {\n \"STR\": [\"STR\",\"(\",\"expression\",\")\"], \n \"LANG\": [\"LANG\",\"(\",\"expression\",\")\"], \n \"LANGMATCHES\": [\"LANGMATCHES\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"DATATYPE\": [\"DATATYPE\",\"(\",\"expression\",\")\"], \n \"BOUND\": [\"BOUND\",\"(\",\"var\",\")\"], \n \"IRI\": [\"IRI\",\"(\",\"expression\",\")\"], \n \"URI\": [\"URI\",\"(\",\"expression\",\")\"], \n \"BNODE\": [\"BNODE\",\"or([[ (,expression,)],NIL])\"], \n \"RAND\": [\"RAND\",\"NIL\"], \n \"ABS\": [\"ABS\",\"(\",\"expression\",\")\"], \n \"CEIL\": [\"CEIL\",\"(\",\"expression\",\")\"], \n \"FLOOR\": [\"FLOOR\",\"(\",\"expression\",\")\"], \n \"ROUND\": [\"ROUND\",\"(\",\"expression\",\")\"], \n \"CONCAT\": [\"CONCAT\",\"expressionList\"], \n \"SUBSTR\": [\"substringExpression\"], \n \"STRLEN\": [\"STRLEN\",\"(\",\"expression\",\")\"], \n \"REPLACE\": [\"strReplaceExpression\"], \n \"UCASE\": [\"UCASE\",\"(\",\"expression\",\")\"], \n \"LCASE\": [\"LCASE\",\"(\",\"expression\",\")\"], \n \"ENCODE_FOR_URI\": [\"ENCODE_FOR_URI\",\"(\",\"expression\",\")\"], \n \"CONTAINS\": [\"CONTAINS\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRSTARTS\": [\"STRSTARTS\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRENDS\": [\"STRENDS\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRBEFORE\": [\"STRBEFORE\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRAFTER\": [\"STRAFTER\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"YEAR\": [\"YEAR\",\"(\",\"expression\",\")\"], \n \"MONTH\": [\"MONTH\",\"(\",\"expression\",\")\"], \n \"DAY\": [\"DAY\",\"(\",\"expression\",\")\"], \n \"HOURS\": [\"HOURS\",\"(\",\"expression\",\")\"], \n \"MINUTES\": [\"MINUTES\",\"(\",\"expression\",\")\"], \n \"SECONDS\": [\"SECONDS\",\"(\",\"expression\",\")\"], \n \"TIMEZONE\": [\"TIMEZONE\",\"(\",\"expression\",\")\"], \n \"TZ\": [\"TZ\",\"(\",\"expression\",\")\"], \n \"NOW\": [\"NOW\",\"NIL\"], \n \"UUID\": [\"UUID\",\"NIL\"], \n \"STRUUID\": [\"STRUUID\",\"NIL\"], \n \"MD5\": [\"MD5\",\"(\",\"expression\",\")\"], \n \"SHA1\": [\"SHA1\",\"(\",\"expression\",\")\"], \n \"SHA256\": [\"SHA256\",\"(\",\"expression\",\")\"], \n \"SHA384\": [\"SHA384\",\"(\",\"expression\",\")\"], \n \"SHA512\": [\"SHA512\",\"(\",\"expression\",\")\"], \n \"COALESCE\": [\"COALESCE\",\"expressionList\"], \n \"IF\": [\"IF\",\"(\",\"expression\",\",\",\"expression\",\",\",\"expression\",\")\"], \n \"STRLANG\": [\"STRLANG\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"STRDT\": [\"STRDT\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"SAMETERM\": [\"SAMETERM\",\"(\",\"expression\",\",\",\"expression\",\")\"], \n \"ISIRI\": [\"ISIRI\",\"(\",\"expression\",\")\"], \n \"ISURI\": [\"ISURI\",\"(\",\"expression\",\")\"], \n \"ISBLANK\": [\"ISBLANK\",\"(\",\"expression\",\")\"], \n \"ISLITERAL\": [\"ISLITERAL\",\"(\",\"expression\",\")\"], \n \"ISNUMERIC\": [\"ISNUMERIC\",\"(\",\"expression\",\")\"], \n \"REGEX\": [\"regexExpression\"], \n \"EXISTS\": [\"existsFunc\"], \n \"NOT\": [\"notExistsFunc\"]}, \n \"clear\" : {\n \"CLEAR\": [\"CLEAR\",\"?SILENT_2\",\"graphRefAll\"]}, \n \"collection\" : {\n \"(\": [\"(\",\"+graphNode\",\")\"]}, \n \"collectionPath\" : {\n \"(\": [\"(\",\"+graphNodePath\",\")\"]}, \n \"conditionalAndExpression\" : {\n \"!\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"+\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"-\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"VAR1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"VAR2\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"(\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"LANG\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"LANGMATCHES\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DATATYPE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"BOUND\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"IRI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"URI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"BNODE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"RAND\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ABS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"CEIL\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"FLOOR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ROUND\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"CONCAT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRLEN\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"UCASE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"LCASE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ENCODE_FOR_URI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"CONTAINS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRSTARTS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRENDS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRBEFORE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRAFTER\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"YEAR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MONTH\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DAY\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"HOURS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MINUTES\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SECONDS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"TIMEZONE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"TZ\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"NOW\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"UUID\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRUUID\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MD5\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA256\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA384\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SHA512\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"COALESCE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"IF\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRLANG\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRDT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SAMETERM\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISIRI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISURI\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISBLANK\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISLITERAL\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"ISNUMERIC\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"TRUE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"FALSE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"COUNT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SUM\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MIN\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"MAX\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"AVG\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SAMPLE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"GROUP_CONCAT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"SUBSTR\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"REPLACE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"REGEX\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"EXISTS\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"NOT\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"IRI_REF\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL2\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL_LONG1\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"STRING_LITERAL_LONG2\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"INTEGER\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DECIMAL\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DOUBLE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"INTEGER_POSITIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DECIMAL_POSITIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DOUBLE_POSITIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"INTEGER_NEGATIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DECIMAL_NEGATIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"DOUBLE_NEGATIVE\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"PNAME_LN\": [\"valueLogical\",\"*[&&,valueLogical]\"], \n \"PNAME_NS\": [\"valueLogical\",\"*[&&,valueLogical]\"]}, \n \"conditionalOrExpression\" : {\n \"!\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"+\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"-\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"VAR1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"VAR2\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"(\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"LANG\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"LANGMATCHES\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DATATYPE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"BOUND\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"IRI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"URI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"BNODE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"RAND\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ABS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"CEIL\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"FLOOR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ROUND\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"CONCAT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRLEN\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"UCASE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"LCASE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ENCODE_FOR_URI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"CONTAINS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRSTARTS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRENDS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRBEFORE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRAFTER\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"YEAR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MONTH\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DAY\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"HOURS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MINUTES\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SECONDS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"TIMEZONE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"TZ\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"NOW\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"UUID\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRUUID\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MD5\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA256\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA384\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SHA512\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"COALESCE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"IF\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRLANG\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRDT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SAMETERM\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISIRI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISURI\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISBLANK\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISLITERAL\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"ISNUMERIC\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"TRUE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"FALSE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"COUNT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SUM\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MIN\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"MAX\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"AVG\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SAMPLE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"GROUP_CONCAT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"SUBSTR\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"REPLACE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"REGEX\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"EXISTS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"NOT\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"IRI_REF\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL2\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL_LONG1\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"STRING_LITERAL_LONG2\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"INTEGER\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DECIMAL\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DOUBLE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"INTEGER_POSITIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DECIMAL_POSITIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DOUBLE_POSITIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"INTEGER_NEGATIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DECIMAL_NEGATIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"DOUBLE_NEGATIVE\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"PNAME_LN\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"], \n \"PNAME_NS\": [\"conditionalAndExpression\",\"*[||,conditionalAndExpression]\"]}, \n \"constraint\" : {\n \"(\": [\"brackettedExpression\"], \n \"STR\": [\"builtInCall\"], \n \"LANG\": [\"builtInCall\"], \n \"LANGMATCHES\": [\"builtInCall\"], \n \"DATATYPE\": [\"builtInCall\"], \n \"BOUND\": [\"builtInCall\"], \n \"IRI\": [\"builtInCall\"], \n \"URI\": [\"builtInCall\"], \n \"BNODE\": [\"builtInCall\"], \n \"RAND\": [\"builtInCall\"], \n \"ABS\": [\"builtInCall\"], \n \"CEIL\": [\"builtInCall\"], \n \"FLOOR\": [\"builtInCall\"], \n \"ROUND\": [\"builtInCall\"], \n \"CONCAT\": [\"builtInCall\"], \n \"STRLEN\": [\"builtInCall\"], \n \"UCASE\": [\"builtInCall\"], \n \"LCASE\": [\"builtInCall\"], \n \"ENCODE_FOR_URI\": [\"builtInCall\"], \n \"CONTAINS\": [\"builtInCall\"], \n \"STRSTARTS\": [\"builtInCall\"], \n \"STRENDS\": [\"builtInCall\"], \n \"STRBEFORE\": [\"builtInCall\"], \n \"STRAFTER\": [\"builtInCall\"], \n \"YEAR\": [\"builtInCall\"], \n \"MONTH\": [\"builtInCall\"], \n \"DAY\": [\"builtInCall\"], \n \"HOURS\": [\"builtInCall\"], \n \"MINUTES\": [\"builtInCall\"], \n \"SECONDS\": [\"builtInCall\"], \n \"TIMEZONE\": [\"builtInCall\"], \n \"TZ\": [\"builtInCall\"], \n \"NOW\": [\"builtInCall\"], \n \"UUID\": [\"builtInCall\"], \n \"STRUUID\": [\"builtInCall\"], \n \"MD5\": [\"builtInCall\"], \n \"SHA1\": [\"builtInCall\"], \n \"SHA256\": [\"builtInCall\"], \n \"SHA384\": [\"builtInCall\"], \n \"SHA512\": [\"builtInCall\"], \n \"COALESCE\": [\"builtInCall\"], \n \"IF\": [\"builtInCall\"], \n \"STRLANG\": [\"builtInCall\"], \n \"STRDT\": [\"builtInCall\"], \n \"SAMETERM\": [\"builtInCall\"], \n \"ISIRI\": [\"builtInCall\"], \n \"ISURI\": [\"builtInCall\"], \n \"ISBLANK\": [\"builtInCall\"], \n \"ISLITERAL\": [\"builtInCall\"], \n \"ISNUMERIC\": [\"builtInCall\"], \n \"SUBSTR\": [\"builtInCall\"], \n \"REPLACE\": [\"builtInCall\"], \n \"REGEX\": [\"builtInCall\"], \n \"EXISTS\": [\"builtInCall\"], \n \"NOT\": [\"builtInCall\"], \n \"IRI_REF\": [\"functionCall\"], \n \"PNAME_LN\": [\"functionCall\"], \n \"PNAME_NS\": [\"functionCall\"]}, \n \"constructQuery\" : {\n \"CONSTRUCT\": [\"CONSTRUCT\",\"or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])\"]}, \n \"constructTemplate\" : {\n \"{\": [\"{\",\"?constructTriples\",\"}\"]}, \n \"constructTriples\" : {\n \"VAR1\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"VAR2\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"NIL\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"(\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"[\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"IRI_REF\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"TRUE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"FALSE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"BLANK_NODE_LABEL\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"ANON\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"PNAME_LN\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"PNAME_NS\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL1\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL2\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL_LONG1\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"STRING_LITERAL_LONG2\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"INTEGER\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DECIMAL\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DOUBLE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"INTEGER_POSITIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DECIMAL_POSITIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DOUBLE_POSITIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"INTEGER_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DECIMAL_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"], \n \"DOUBLE_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?constructTriples]\"]}, \n \"copy\" : {\n \"COPY\": [\"COPY\",\"?SILENT_4\",\"graphOrDefault\",\"TO\",\"graphOrDefault\"]}, \n \"create\" : {\n \"CREATE\": [\"CREATE\",\"?SILENT_3\",\"graphRef\"]}, \n \"dataBlock\" : {\n \"NIL\": [\"or([inlineDataOneVar,inlineDataFull])\"], \n \"(\": [\"or([inlineDataOneVar,inlineDataFull])\"], \n \"VAR1\": [\"or([inlineDataOneVar,inlineDataFull])\"], \n \"VAR2\": [\"or([inlineDataOneVar,inlineDataFull])\"]}, \n \"dataBlockValue\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"STRING_LITERAL1\": [\"rdfLiteral\"], \n \"STRING_LITERAL2\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG1\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG2\": [\"rdfLiteral\"], \n \"INTEGER\": [\"numericLiteral\"], \n \"DECIMAL\": [\"numericLiteral\"], \n \"DOUBLE\": [\"numericLiteral\"], \n \"INTEGER_POSITIVE\": [\"numericLiteral\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteral\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteral\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteral\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteral\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteral\"], \n \"TRUE\": [\"booleanLiteral\"], \n \"FALSE\": [\"booleanLiteral\"], \n \"UNDEF\": [\"UNDEF\"]}, \n \"datasetClause\" : {\n \"FROM\": [\"FROM\",\"or([defaultGraphClause,namedGraphClause])\"]}, \n \"defaultGraphClause\" : {\n \"IRI_REF\": [\"sourceSelector\"], \n \"PNAME_LN\": [\"sourceSelector\"], \n \"PNAME_NS\": [\"sourceSelector\"]}, \n \"delete1\" : {\n \"DATA\": [\"DATA\",\"quadDataNoBnodes\"], \n \"WHERE\": [\"WHERE\",\"quadPatternNoBnodes\"], \n \"{\": [\"quadPatternNoBnodes\",\"?insertClause\",\"*usingClause\",\"WHERE\",\"groupGraphPattern\"]}, \n \"deleteClause\" : {\n \"DELETE\": [\"DELETE\",\"quadPattern\"]}, \n \"describeDatasetClause\" : {\n \"FROM\": [\"FROM\",\"or([defaultGraphClause,namedGraphClause])\"]}, \n \"describeQuery\" : {\n \"DESCRIBE\": [\"DESCRIBE\",\"or([+varOrIRIref,*])\",\"*describeDatasetClause\",\"?whereClause\",\"solutionModifier\"]}, \n \"disallowBnodes\" : {\n \"}\": [], \n \"GRAPH\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"disallowVars\" : {\n \"}\": [], \n \"GRAPH\": [], \n \"VAR1\": [], \n \"VAR2\": [], \n \"NIL\": [], \n \"(\": [], \n \"[\": [], \n \"IRI_REF\": [], \n \"TRUE\": [], \n \"FALSE\": [], \n \"BLANK_NODE_LABEL\": [], \n \"ANON\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"STRING_LITERAL1\": [], \n \"STRING_LITERAL2\": [], \n \"STRING_LITERAL_LONG1\": [], \n \"STRING_LITERAL_LONG2\": [], \n \"INTEGER\": [], \n \"DECIMAL\": [], \n \"DOUBLE\": [], \n \"INTEGER_POSITIVE\": [], \n \"DECIMAL_POSITIVE\": [], \n \"DOUBLE_POSITIVE\": [], \n \"INTEGER_NEGATIVE\": [], \n \"DECIMAL_NEGATIVE\": [], \n \"DOUBLE_NEGATIVE\": []}, \n \"drop\" : {\n \"DROP\": [\"DROP\",\"?SILENT_2\",\"graphRefAll\"]}, \n \"existsFunc\" : {\n \"EXISTS\": [\"EXISTS\",\"groupGraphPattern\"]}, \n \"expression\" : {\n \"!\": [\"conditionalOrExpression\"], \n \"+\": [\"conditionalOrExpression\"], \n \"-\": [\"conditionalOrExpression\"], \n \"VAR1\": [\"conditionalOrExpression\"], \n \"VAR2\": [\"conditionalOrExpression\"], \n \"(\": [\"conditionalOrExpression\"], \n \"STR\": [\"conditionalOrExpression\"], \n \"LANG\": [\"conditionalOrExpression\"], \n \"LANGMATCHES\": [\"conditionalOrExpression\"], \n \"DATATYPE\": [\"conditionalOrExpression\"], \n \"BOUND\": [\"conditionalOrExpression\"], \n \"IRI\": [\"conditionalOrExpression\"], \n \"URI\": [\"conditionalOrExpression\"], \n \"BNODE\": [\"conditionalOrExpression\"], \n \"RAND\": [\"conditionalOrExpression\"], \n \"ABS\": [\"conditionalOrExpression\"], \n \"CEIL\": [\"conditionalOrExpression\"], \n \"FLOOR\": [\"conditionalOrExpression\"], \n \"ROUND\": [\"conditionalOrExpression\"], \n \"CONCAT\": [\"conditionalOrExpression\"], \n \"STRLEN\": [\"conditionalOrExpression\"], \n \"UCASE\": [\"conditionalOrExpression\"], \n \"LCASE\": [\"conditionalOrExpression\"], \n \"ENCODE_FOR_URI\": [\"conditionalOrExpression\"], \n \"CONTAINS\": [\"conditionalOrExpression\"], \n \"STRSTARTS\": [\"conditionalOrExpression\"], \n \"STRENDS\": [\"conditionalOrExpression\"], \n \"STRBEFORE\": [\"conditionalOrExpression\"], \n \"STRAFTER\": [\"conditionalOrExpression\"], \n \"YEAR\": [\"conditionalOrExpression\"], \n \"MONTH\": [\"conditionalOrExpression\"], \n \"DAY\": [\"conditionalOrExpression\"], \n \"HOURS\": [\"conditionalOrExpression\"], \n \"MINUTES\": [\"conditionalOrExpression\"], \n \"SECONDS\": [\"conditionalOrExpression\"], \n \"TIMEZONE\": [\"conditionalOrExpression\"], \n \"TZ\": [\"conditionalOrExpression\"], \n \"NOW\": [\"conditionalOrExpression\"], \n \"UUID\": [\"conditionalOrExpression\"], \n \"STRUUID\": [\"conditionalOrExpression\"], \n \"MD5\": [\"conditionalOrExpression\"], \n \"SHA1\": [\"conditionalOrExpression\"], \n \"SHA256\": [\"conditionalOrExpression\"], \n \"SHA384\": [\"conditionalOrExpression\"], \n \"SHA512\": [\"conditionalOrExpression\"], \n \"COALESCE\": [\"conditionalOrExpression\"], \n \"IF\": [\"conditionalOrExpression\"], \n \"STRLANG\": [\"conditionalOrExpression\"], \n \"STRDT\": [\"conditionalOrExpression\"], \n \"SAMETERM\": [\"conditionalOrExpression\"], \n \"ISIRI\": [\"conditionalOrExpression\"], \n \"ISURI\": [\"conditionalOrExpression\"], \n \"ISBLANK\": [\"conditionalOrExpression\"], \n \"ISLITERAL\": [\"conditionalOrExpression\"], \n \"ISNUMERIC\": [\"conditionalOrExpression\"], \n \"TRUE\": [\"conditionalOrExpression\"], \n \"FALSE\": [\"conditionalOrExpression\"], \n \"COUNT\": [\"conditionalOrExpression\"], \n \"SUM\": [\"conditionalOrExpression\"], \n \"MIN\": [\"conditionalOrExpression\"], \n \"MAX\": [\"conditionalOrExpression\"], \n \"AVG\": [\"conditionalOrExpression\"], \n \"SAMPLE\": [\"conditionalOrExpression\"], \n \"GROUP_CONCAT\": [\"conditionalOrExpression\"], \n \"SUBSTR\": [\"conditionalOrExpression\"], \n \"REPLACE\": [\"conditionalOrExpression\"], \n \"REGEX\": [\"conditionalOrExpression\"], \n \"EXISTS\": [\"conditionalOrExpression\"], \n \"NOT\": [\"conditionalOrExpression\"], \n \"IRI_REF\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL1\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL2\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL_LONG1\": [\"conditionalOrExpression\"], \n \"STRING_LITERAL_LONG2\": [\"conditionalOrExpression\"], \n \"INTEGER\": [\"conditionalOrExpression\"], \n \"DECIMAL\": [\"conditionalOrExpression\"], \n \"DOUBLE\": [\"conditionalOrExpression\"], \n \"INTEGER_POSITIVE\": [\"conditionalOrExpression\"], \n \"DECIMAL_POSITIVE\": [\"conditionalOrExpression\"], \n \"DOUBLE_POSITIVE\": [\"conditionalOrExpression\"], \n \"INTEGER_NEGATIVE\": [\"conditionalOrExpression\"], \n \"DECIMAL_NEGATIVE\": [\"conditionalOrExpression\"], \n \"DOUBLE_NEGATIVE\": [\"conditionalOrExpression\"], \n \"PNAME_LN\": [\"conditionalOrExpression\"], \n \"PNAME_NS\": [\"conditionalOrExpression\"]}, \n \"expressionList\" : {\n \"NIL\": [\"NIL\"], \n \"(\": [\"(\",\"expression\",\"*[,,expression]\",\")\"]}, \n \"filter\" : {\n \"FILTER\": [\"FILTER\",\"constraint\"]}, \n \"functionCall\" : {\n \"IRI_REF\": [\"iriRef\",\"argList\"], \n \"PNAME_LN\": [\"iriRef\",\"argList\"], \n \"PNAME_NS\": [\"iriRef\",\"argList\"]}, \n \"graphGraphPattern\" : {\n \"GRAPH\": [\"GRAPH\",\"varOrIRIref\",\"groupGraphPattern\"]}, \n \"graphNode\" : {\n \"VAR1\": [\"varOrTerm\"], \n \"VAR2\": [\"varOrTerm\"], \n \"NIL\": [\"varOrTerm\"], \n \"IRI_REF\": [\"varOrTerm\"], \n \"TRUE\": [\"varOrTerm\"], \n \"FALSE\": [\"varOrTerm\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\"], \n \"ANON\": [\"varOrTerm\"], \n \"PNAME_LN\": [\"varOrTerm\"], \n \"PNAME_NS\": [\"varOrTerm\"], \n \"STRING_LITERAL1\": [\"varOrTerm\"], \n \"STRING_LITERAL2\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\"], \n \"INTEGER\": [\"varOrTerm\"], \n \"DECIMAL\": [\"varOrTerm\"], \n \"DOUBLE\": [\"varOrTerm\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\"], \n \"(\": [\"triplesNode\"], \n \"[\": [\"triplesNode\"]}, \n \"graphNodePath\" : {\n \"VAR1\": [\"varOrTerm\"], \n \"VAR2\": [\"varOrTerm\"], \n \"NIL\": [\"varOrTerm\"], \n \"IRI_REF\": [\"varOrTerm\"], \n \"TRUE\": [\"varOrTerm\"], \n \"FALSE\": [\"varOrTerm\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\"], \n \"ANON\": [\"varOrTerm\"], \n \"PNAME_LN\": [\"varOrTerm\"], \n \"PNAME_NS\": [\"varOrTerm\"], \n \"STRING_LITERAL1\": [\"varOrTerm\"], \n \"STRING_LITERAL2\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\"], \n \"INTEGER\": [\"varOrTerm\"], \n \"DECIMAL\": [\"varOrTerm\"], \n \"DOUBLE\": [\"varOrTerm\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\"], \n \"(\": [\"triplesNodePath\"], \n \"[\": [\"triplesNodePath\"]}, \n \"graphOrDefault\" : {\n \"DEFAULT\": [\"DEFAULT\"], \n \"IRI_REF\": [\"?GRAPH\",\"iriRef\"], \n \"PNAME_LN\": [\"?GRAPH\",\"iriRef\"], \n \"PNAME_NS\": [\"?GRAPH\",\"iriRef\"], \n \"GRAPH\": [\"?GRAPH\",\"iriRef\"]}, \n \"graphPatternNotTriples\" : {\n \"{\": [\"groupOrUnionGraphPattern\"], \n \"OPTIONAL\": [\"optionalGraphPattern\"], \n \"MINUS\": [\"minusGraphPattern\"], \n \"GRAPH\": [\"graphGraphPattern\"], \n \"SERVICE\": [\"serviceGraphPattern\"], \n \"FILTER\": [\"filter\"], \n \"BIND\": [\"bind\"], \n \"VALUES\": [\"inlineData\"]}, \n \"graphRef\" : {\n \"GRAPH\": [\"GRAPH\",\"iriRef\"]}, \n \"graphRefAll\" : {\n \"GRAPH\": [\"graphRef\"], \n \"DEFAULT\": [\"DEFAULT\"], \n \"NAMED\": [\"NAMED\"], \n \"ALL\": [\"ALL\"]}, \n \"graphTerm\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"STRING_LITERAL1\": [\"rdfLiteral\"], \n \"STRING_LITERAL2\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG1\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG2\": [\"rdfLiteral\"], \n \"INTEGER\": [\"numericLiteral\"], \n \"DECIMAL\": [\"numericLiteral\"], \n \"DOUBLE\": [\"numericLiteral\"], \n \"INTEGER_POSITIVE\": [\"numericLiteral\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteral\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteral\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteral\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteral\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteral\"], \n \"TRUE\": [\"booleanLiteral\"], \n \"FALSE\": [\"booleanLiteral\"], \n \"BLANK_NODE_LABEL\": [\"blankNode\"], \n \"ANON\": [\"blankNode\"], \n \"NIL\": [\"NIL\"]}, \n \"groupClause\" : {\n \"GROUP\": [\"GROUP\",\"BY\",\"+groupCondition\"]}, \n \"groupCondition\" : {\n \"STR\": [\"builtInCall\"], \n \"LANG\": [\"builtInCall\"], \n \"LANGMATCHES\": [\"builtInCall\"], \n \"DATATYPE\": [\"builtInCall\"], \n \"BOUND\": [\"builtInCall\"], \n \"IRI\": [\"builtInCall\"], \n \"URI\": [\"builtInCall\"], \n \"BNODE\": [\"builtInCall\"], \n \"RAND\": [\"builtInCall\"], \n \"ABS\": [\"builtInCall\"], \n \"CEIL\": [\"builtInCall\"], \n \"FLOOR\": [\"builtInCall\"], \n \"ROUND\": [\"builtInCall\"], \n \"CONCAT\": [\"builtInCall\"], \n \"STRLEN\": [\"builtInCall\"], \n \"UCASE\": [\"builtInCall\"], \n \"LCASE\": [\"builtInCall\"], \n \"ENCODE_FOR_URI\": [\"builtInCall\"], \n \"CONTAINS\": [\"builtInCall\"], \n \"STRSTARTS\": [\"builtInCall\"], \n \"STRENDS\": [\"builtInCall\"], \n \"STRBEFORE\": [\"builtInCall\"], \n \"STRAFTER\": [\"builtInCall\"], \n \"YEAR\": [\"builtInCall\"], \n \"MONTH\": [\"builtInCall\"], \n \"DAY\": [\"builtInCall\"], \n \"HOURS\": [\"builtInCall\"], \n \"MINUTES\": [\"builtInCall\"], \n \"SECONDS\": [\"builtInCall\"], \n \"TIMEZONE\": [\"builtInCall\"], \n \"TZ\": [\"builtInCall\"], \n \"NOW\": [\"builtInCall\"], \n \"UUID\": [\"builtInCall\"], \n \"STRUUID\": [\"builtInCall\"], \n \"MD5\": [\"builtInCall\"], \n \"SHA1\": [\"builtInCall\"], \n \"SHA256\": [\"builtInCall\"], \n \"SHA384\": [\"builtInCall\"], \n \"SHA512\": [\"builtInCall\"], \n \"COALESCE\": [\"builtInCall\"], \n \"IF\": [\"builtInCall\"], \n \"STRLANG\": [\"builtInCall\"], \n \"STRDT\": [\"builtInCall\"], \n \"SAMETERM\": [\"builtInCall\"], \n \"ISIRI\": [\"builtInCall\"], \n \"ISURI\": [\"builtInCall\"], \n \"ISBLANK\": [\"builtInCall\"], \n \"ISLITERAL\": [\"builtInCall\"], \n \"ISNUMERIC\": [\"builtInCall\"], \n \"SUBSTR\": [\"builtInCall\"], \n \"REPLACE\": [\"builtInCall\"], \n \"REGEX\": [\"builtInCall\"], \n \"EXISTS\": [\"builtInCall\"], \n \"NOT\": [\"builtInCall\"], \n \"IRI_REF\": [\"functionCall\"], \n \"PNAME_LN\": [\"functionCall\"], \n \"PNAME_NS\": [\"functionCall\"], \n \"(\": [\"(\",\"expression\",\"?[AS,var]\",\")\"], \n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"]}, \n \"groupGraphPattern\" : {\n \"{\": [\"{\",\"or([subSelect,groupGraphPatternSub])\",\"}\"]}, \n \"groupGraphPatternSub\" : {\n \"{\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"OPTIONAL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"MINUS\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"GRAPH\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"SERVICE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"FILTER\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"BIND\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VALUES\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VAR1\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"VAR2\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"NIL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"(\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"[\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"IRI_REF\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"TRUE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"FALSE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"BLANK_NODE_LABEL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"ANON\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"PNAME_LN\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"PNAME_NS\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL1\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL2\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG1\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG2\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"INTEGER\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DECIMAL\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DOUBLE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"INTEGER_POSITIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DECIMAL_POSITIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DOUBLE_POSITIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"INTEGER_NEGATIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DECIMAL_NEGATIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"DOUBLE_NEGATIVE\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"], \n \"}\": [\"?triplesBlock\",\"*[graphPatternNotTriples,?.,?triplesBlock]\"]}, \n \"groupOrUnionGraphPattern\" : {\n \"{\": [\"groupGraphPattern\",\"*[UNION,groupGraphPattern]\"]}, \n \"havingClause\" : {\n \"HAVING\": [\"HAVING\",\"+havingCondition\"]}, \n \"havingCondition\" : {\n \"(\": [\"constraint\"], \n \"STR\": [\"constraint\"], \n \"LANG\": [\"constraint\"], \n \"LANGMATCHES\": [\"constraint\"], \n \"DATATYPE\": [\"constraint\"], \n \"BOUND\": [\"constraint\"], \n \"IRI\": [\"constraint\"], \n \"URI\": [\"constraint\"], \n \"BNODE\": [\"constraint\"], \n \"RAND\": [\"constraint\"], \n \"ABS\": [\"constraint\"], \n \"CEIL\": [\"constraint\"], \n \"FLOOR\": [\"constraint\"], \n \"ROUND\": [\"constraint\"], \n \"CONCAT\": [\"constraint\"], \n \"STRLEN\": [\"constraint\"], \n \"UCASE\": [\"constraint\"], \n \"LCASE\": [\"constraint\"], \n \"ENCODE_FOR_URI\": [\"constraint\"], \n \"CONTAINS\": [\"constraint\"], \n \"STRSTARTS\": [\"constraint\"], \n \"STRENDS\": [\"constraint\"], \n \"STRBEFORE\": [\"constraint\"], \n \"STRAFTER\": [\"constraint\"], \n \"YEAR\": [\"constraint\"], \n \"MONTH\": [\"constraint\"], \n \"DAY\": [\"constraint\"], \n \"HOURS\": [\"constraint\"], \n \"MINUTES\": [\"constraint\"], \n \"SECONDS\": [\"constraint\"], \n \"TIMEZONE\": [\"constraint\"], \n \"TZ\": [\"constraint\"], \n \"NOW\": [\"constraint\"], \n \"UUID\": [\"constraint\"], \n \"STRUUID\": [\"constraint\"], \n \"MD5\": [\"constraint\"], \n \"SHA1\": [\"constraint\"], \n \"SHA256\": [\"constraint\"], \n \"SHA384\": [\"constraint\"], \n \"SHA512\": [\"constraint\"], \n \"COALESCE\": [\"constraint\"], \n \"IF\": [\"constraint\"], \n \"STRLANG\": [\"constraint\"], \n \"STRDT\": [\"constraint\"], \n \"SAMETERM\": [\"constraint\"], \n \"ISIRI\": [\"constraint\"], \n \"ISURI\": [\"constraint\"], \n \"ISBLANK\": [\"constraint\"], \n \"ISLITERAL\": [\"constraint\"], \n \"ISNUMERIC\": [\"constraint\"], \n \"SUBSTR\": [\"constraint\"], \n \"REPLACE\": [\"constraint\"], \n \"REGEX\": [\"constraint\"], \n \"EXISTS\": [\"constraint\"], \n \"NOT\": [\"constraint\"], \n \"IRI_REF\": [\"constraint\"], \n \"PNAME_LN\": [\"constraint\"], \n \"PNAME_NS\": [\"constraint\"]}, \n \"inlineData\" : {\n \"VALUES\": [\"VALUES\",\"dataBlock\"]}, \n \"inlineDataFull\" : {\n \"NIL\": [\"or([NIL,[ (,*var,)]])\",\"{\",\"*or([[ (,*dataBlockValue,)],NIL])\",\"}\"], \n \"(\": [\"or([NIL,[ (,*var,)]])\",\"{\",\"*or([[ (,*dataBlockValue,)],NIL])\",\"}\"]}, \n \"inlineDataOneVar\" : {\n \"VAR1\": [\"var\",\"{\",\"*dataBlockValue\",\"}\"], \n \"VAR2\": [\"var\",\"{\",\"*dataBlockValue\",\"}\"]}, \n \"insert1\" : {\n \"DATA\": [\"DATA\",\"quadData\"], \n \"{\": [\"quadPattern\",\"*usingClause\",\"WHERE\",\"groupGraphPattern\"]}, \n \"insertClause\" : {\n \"INSERT\": [\"INSERT\",\"quadPattern\"]}, \n \"integer\" : {\n \"INTEGER\": [\"INTEGER\"]}, \n \"iriRef\" : {\n \"IRI_REF\": [\"IRI_REF\"], \n \"PNAME_LN\": [\"prefixedName\"], \n \"PNAME_NS\": [\"prefixedName\"]}, \n \"iriRefOrFunction\" : {\n \"IRI_REF\": [\"iriRef\",\"?argList\"], \n \"PNAME_LN\": [\"iriRef\",\"?argList\"], \n \"PNAME_NS\": [\"iriRef\",\"?argList\"]}, \n \"limitClause\" : {\n \"LIMIT\": [\"LIMIT\",\"INTEGER\"]}, \n \"limitOffsetClauses\" : {\n \"LIMIT\": [\"limitClause\",\"?offsetClause\"], \n \"OFFSET\": [\"offsetClause\",\"?limitClause\"]}, \n \"load\" : {\n \"LOAD\": [\"LOAD\",\"?SILENT_1\",\"iriRef\",\"?[INTO,graphRef]\"]}, \n \"minusGraphPattern\" : {\n \"MINUS\": [\"MINUS\",\"groupGraphPattern\"]}, \n \"modify\" : {\n \"WITH\": [\"WITH\",\"iriRef\",\"or([[deleteClause,?insertClause],insertClause])\",\"*usingClause\",\"WHERE\",\"groupGraphPattern\"]}, \n \"move\" : {\n \"MOVE\": [\"MOVE\",\"?SILENT_4\",\"graphOrDefault\",\"TO\",\"graphOrDefault\"]}, \n \"multiplicativeExpression\" : {\n \"!\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"+\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"-\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"VAR1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"VAR2\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"(\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"LANG\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"LANGMATCHES\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DATATYPE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"BOUND\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"IRI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"URI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"BNODE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"RAND\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ABS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"CEIL\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"FLOOR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ROUND\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"CONCAT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRLEN\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"UCASE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"LCASE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ENCODE_FOR_URI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"CONTAINS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRSTARTS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRENDS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRBEFORE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRAFTER\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"YEAR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MONTH\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DAY\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"HOURS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MINUTES\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SECONDS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"TIMEZONE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"TZ\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"NOW\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"UUID\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRUUID\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MD5\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA256\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA384\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SHA512\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"COALESCE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"IF\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRLANG\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRDT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SAMETERM\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISIRI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISURI\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISBLANK\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISLITERAL\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"ISNUMERIC\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"TRUE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"FALSE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"COUNT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SUM\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MIN\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"MAX\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"AVG\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SAMPLE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"GROUP_CONCAT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"SUBSTR\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"REPLACE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"REGEX\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"EXISTS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"NOT\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"IRI_REF\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL2\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL_LONG1\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"STRING_LITERAL_LONG2\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER_POSITIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_POSITIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_POSITIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"INTEGER_NEGATIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DECIMAL_NEGATIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"DOUBLE_NEGATIVE\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"PNAME_LN\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"], \n \"PNAME_NS\": [\"unaryExpression\",\"*or([[*,unaryExpression],[/,unaryExpression]])\"]}, \n \"namedGraphClause\" : {\n \"NAMED\": [\"NAMED\",\"sourceSelector\"]}, \n \"notExistsFunc\" : {\n \"NOT\": [\"NOT\",\"EXISTS\",\"groupGraphPattern\"]}, \n \"numericExpression\" : {\n \"!\": [\"additiveExpression\"], \n \"+\": [\"additiveExpression\"], \n \"-\": [\"additiveExpression\"], \n \"VAR1\": [\"additiveExpression\"], \n \"VAR2\": [\"additiveExpression\"], \n \"(\": [\"additiveExpression\"], \n \"STR\": [\"additiveExpression\"], \n \"LANG\": [\"additiveExpression\"], \n \"LANGMATCHES\": [\"additiveExpression\"], \n \"DATATYPE\": [\"additiveExpression\"], \n \"BOUND\": [\"additiveExpression\"], \n \"IRI\": [\"additiveExpression\"], \n \"URI\": [\"additiveExpression\"], \n \"BNODE\": [\"additiveExpression\"], \n \"RAND\": [\"additiveExpression\"], \n \"ABS\": [\"additiveExpression\"], \n \"CEIL\": [\"additiveExpression\"], \n \"FLOOR\": [\"additiveExpression\"], \n \"ROUND\": [\"additiveExpression\"], \n \"CONCAT\": [\"additiveExpression\"], \n \"STRLEN\": [\"additiveExpression\"], \n \"UCASE\": [\"additiveExpression\"], \n \"LCASE\": [\"additiveExpression\"], \n \"ENCODE_FOR_URI\": [\"additiveExpression\"], \n \"CONTAINS\": [\"additiveExpression\"], \n \"STRSTARTS\": [\"additiveExpression\"], \n \"STRENDS\": [\"additiveExpression\"], \n \"STRBEFORE\": [\"additiveExpression\"], \n \"STRAFTER\": [\"additiveExpression\"], \n \"YEAR\": [\"additiveExpression\"], \n \"MONTH\": [\"additiveExpression\"], \n \"DAY\": [\"additiveExpression\"], \n \"HOURS\": [\"additiveExpression\"], \n \"MINUTES\": [\"additiveExpression\"], \n \"SECONDS\": [\"additiveExpression\"], \n \"TIMEZONE\": [\"additiveExpression\"], \n \"TZ\": [\"additiveExpression\"], \n \"NOW\": [\"additiveExpression\"], \n \"UUID\": [\"additiveExpression\"], \n \"STRUUID\": [\"additiveExpression\"], \n \"MD5\": [\"additiveExpression\"], \n \"SHA1\": [\"additiveExpression\"], \n \"SHA256\": [\"additiveExpression\"], \n \"SHA384\": [\"additiveExpression\"], \n \"SHA512\": [\"additiveExpression\"], \n \"COALESCE\": [\"additiveExpression\"], \n \"IF\": [\"additiveExpression\"], \n \"STRLANG\": [\"additiveExpression\"], \n \"STRDT\": [\"additiveExpression\"], \n \"SAMETERM\": [\"additiveExpression\"], \n \"ISIRI\": [\"additiveExpression\"], \n \"ISURI\": [\"additiveExpression\"], \n \"ISBLANK\": [\"additiveExpression\"], \n \"ISLITERAL\": [\"additiveExpression\"], \n \"ISNUMERIC\": [\"additiveExpression\"], \n \"TRUE\": [\"additiveExpression\"], \n \"FALSE\": [\"additiveExpression\"], \n \"COUNT\": [\"additiveExpression\"], \n \"SUM\": [\"additiveExpression\"], \n \"MIN\": [\"additiveExpression\"], \n \"MAX\": [\"additiveExpression\"], \n \"AVG\": [\"additiveExpression\"], \n \"SAMPLE\": [\"additiveExpression\"], \n \"GROUP_CONCAT\": [\"additiveExpression\"], \n \"SUBSTR\": [\"additiveExpression\"], \n \"REPLACE\": [\"additiveExpression\"], \n \"REGEX\": [\"additiveExpression\"], \n \"EXISTS\": [\"additiveExpression\"], \n \"NOT\": [\"additiveExpression\"], \n \"IRI_REF\": [\"additiveExpression\"], \n \"STRING_LITERAL1\": [\"additiveExpression\"], \n \"STRING_LITERAL2\": [\"additiveExpression\"], \n \"STRING_LITERAL_LONG1\": [\"additiveExpression\"], \n \"STRING_LITERAL_LONG2\": [\"additiveExpression\"], \n \"INTEGER\": [\"additiveExpression\"], \n \"DECIMAL\": [\"additiveExpression\"], \n \"DOUBLE\": [\"additiveExpression\"], \n \"INTEGER_POSITIVE\": [\"additiveExpression\"], \n \"DECIMAL_POSITIVE\": [\"additiveExpression\"], \n \"DOUBLE_POSITIVE\": [\"additiveExpression\"], \n \"INTEGER_NEGATIVE\": [\"additiveExpression\"], \n \"DECIMAL_NEGATIVE\": [\"additiveExpression\"], \n \"DOUBLE_NEGATIVE\": [\"additiveExpression\"], \n \"PNAME_LN\": [\"additiveExpression\"], \n \"PNAME_NS\": [\"additiveExpression\"]}, \n \"numericLiteral\" : {\n \"INTEGER\": [\"numericLiteralUnsigned\"], \n \"DECIMAL\": [\"numericLiteralUnsigned\"], \n \"DOUBLE\": [\"numericLiteralUnsigned\"], \n \"INTEGER_POSITIVE\": [\"numericLiteralPositive\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteralPositive\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteralPositive\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteralNegative\"]}, \n \"numericLiteralNegative\" : {\n \"INTEGER_NEGATIVE\": [\"INTEGER_NEGATIVE\"], \n \"DECIMAL_NEGATIVE\": [\"DECIMAL_NEGATIVE\"], \n \"DOUBLE_NEGATIVE\": [\"DOUBLE_NEGATIVE\"]}, \n \"numericLiteralPositive\" : {\n \"INTEGER_POSITIVE\": [\"INTEGER_POSITIVE\"], \n \"DECIMAL_POSITIVE\": [\"DECIMAL_POSITIVE\"], \n \"DOUBLE_POSITIVE\": [\"DOUBLE_POSITIVE\"]}, \n \"numericLiteralUnsigned\" : {\n \"INTEGER\": [\"INTEGER\"], \n \"DECIMAL\": [\"DECIMAL\"], \n \"DOUBLE\": [\"DOUBLE\"]}, \n \"object\" : {\n \"(\": [\"graphNode\"], \n \"[\": [\"graphNode\"], \n \"VAR1\": [\"graphNode\"], \n \"VAR2\": [\"graphNode\"], \n \"NIL\": [\"graphNode\"], \n \"IRI_REF\": [\"graphNode\"], \n \"TRUE\": [\"graphNode\"], \n \"FALSE\": [\"graphNode\"], \n \"BLANK_NODE_LABEL\": [\"graphNode\"], \n \"ANON\": [\"graphNode\"], \n \"PNAME_LN\": [\"graphNode\"], \n \"PNAME_NS\": [\"graphNode\"], \n \"STRING_LITERAL1\": [\"graphNode\"], \n \"STRING_LITERAL2\": [\"graphNode\"], \n \"STRING_LITERAL_LONG1\": [\"graphNode\"], \n \"STRING_LITERAL_LONG2\": [\"graphNode\"], \n \"INTEGER\": [\"graphNode\"], \n \"DECIMAL\": [\"graphNode\"], \n \"DOUBLE\": [\"graphNode\"], \n \"INTEGER_POSITIVE\": [\"graphNode\"], \n \"DECIMAL_POSITIVE\": [\"graphNode\"], \n \"DOUBLE_POSITIVE\": [\"graphNode\"], \n \"INTEGER_NEGATIVE\": [\"graphNode\"], \n \"DECIMAL_NEGATIVE\": [\"graphNode\"], \n \"DOUBLE_NEGATIVE\": [\"graphNode\"]}, \n \"objectList\" : {\n \"(\": [\"object\",\"*[,,object]\"], \n \"[\": [\"object\",\"*[,,object]\"], \n \"VAR1\": [\"object\",\"*[,,object]\"], \n \"VAR2\": [\"object\",\"*[,,object]\"], \n \"NIL\": [\"object\",\"*[,,object]\"], \n \"IRI_REF\": [\"object\",\"*[,,object]\"], \n \"TRUE\": [\"object\",\"*[,,object]\"], \n \"FALSE\": [\"object\",\"*[,,object]\"], \n \"BLANK_NODE_LABEL\": [\"object\",\"*[,,object]\"], \n \"ANON\": [\"object\",\"*[,,object]\"], \n \"PNAME_LN\": [\"object\",\"*[,,object]\"], \n \"PNAME_NS\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL1\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL2\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL_LONG1\": [\"object\",\"*[,,object]\"], \n \"STRING_LITERAL_LONG2\": [\"object\",\"*[,,object]\"], \n \"INTEGER\": [\"object\",\"*[,,object]\"], \n \"DECIMAL\": [\"object\",\"*[,,object]\"], \n \"DOUBLE\": [\"object\",\"*[,,object]\"], \n \"INTEGER_POSITIVE\": [\"object\",\"*[,,object]\"], \n \"DECIMAL_POSITIVE\": [\"object\",\"*[,,object]\"], \n \"DOUBLE_POSITIVE\": [\"object\",\"*[,,object]\"], \n \"INTEGER_NEGATIVE\": [\"object\",\"*[,,object]\"], \n \"DECIMAL_NEGATIVE\": [\"object\",\"*[,,object]\"], \n \"DOUBLE_NEGATIVE\": [\"object\",\"*[,,object]\"]}, \n \"objectListPath\" : {\n \"(\": [\"objectPath\",\"*[,,objectPath]\"], \n \"[\": [\"objectPath\",\"*[,,objectPath]\"], \n \"VAR1\": [\"objectPath\",\"*[,,objectPath]\"], \n \"VAR2\": [\"objectPath\",\"*[,,objectPath]\"], \n \"NIL\": [\"objectPath\",\"*[,,objectPath]\"], \n \"IRI_REF\": [\"objectPath\",\"*[,,objectPath]\"], \n \"TRUE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"FALSE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"BLANK_NODE_LABEL\": [\"objectPath\",\"*[,,objectPath]\"], \n \"ANON\": [\"objectPath\",\"*[,,objectPath]\"], \n \"PNAME_LN\": [\"objectPath\",\"*[,,objectPath]\"], \n \"PNAME_NS\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL1\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL2\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL_LONG1\": [\"objectPath\",\"*[,,objectPath]\"], \n \"STRING_LITERAL_LONG2\": [\"objectPath\",\"*[,,objectPath]\"], \n \"INTEGER\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DECIMAL\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DOUBLE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"INTEGER_POSITIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DECIMAL_POSITIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DOUBLE_POSITIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"INTEGER_NEGATIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DECIMAL_NEGATIVE\": [\"objectPath\",\"*[,,objectPath]\"], \n \"DOUBLE_NEGATIVE\": [\"objectPath\",\"*[,,objectPath]\"]}, \n \"objectPath\" : {\n \"(\": [\"graphNodePath\"], \n \"[\": [\"graphNodePath\"], \n \"VAR1\": [\"graphNodePath\"], \n \"VAR2\": [\"graphNodePath\"], \n \"NIL\": [\"graphNodePath\"], \n \"IRI_REF\": [\"graphNodePath\"], \n \"TRUE\": [\"graphNodePath\"], \n \"FALSE\": [\"graphNodePath\"], \n \"BLANK_NODE_LABEL\": [\"graphNodePath\"], \n \"ANON\": [\"graphNodePath\"], \n \"PNAME_LN\": [\"graphNodePath\"], \n \"PNAME_NS\": [\"graphNodePath\"], \n \"STRING_LITERAL1\": [\"graphNodePath\"], \n \"STRING_LITERAL2\": [\"graphNodePath\"], \n \"STRING_LITERAL_LONG1\": [\"graphNodePath\"], \n \"STRING_LITERAL_LONG2\": [\"graphNodePath\"], \n \"INTEGER\": [\"graphNodePath\"], \n \"DECIMAL\": [\"graphNodePath\"], \n \"DOUBLE\": [\"graphNodePath\"], \n \"INTEGER_POSITIVE\": [\"graphNodePath\"], \n \"DECIMAL_POSITIVE\": [\"graphNodePath\"], \n \"DOUBLE_POSITIVE\": [\"graphNodePath\"], \n \"INTEGER_NEGATIVE\": [\"graphNodePath\"], \n \"DECIMAL_NEGATIVE\": [\"graphNodePath\"], \n \"DOUBLE_NEGATIVE\": [\"graphNodePath\"]}, \n \"offsetClause\" : {\n \"OFFSET\": [\"OFFSET\",\"INTEGER\"]}, \n \"optionalGraphPattern\" : {\n \"OPTIONAL\": [\"OPTIONAL\",\"groupGraphPattern\"]}, \n \"or([*,expression])\" : {\n \"*\": [\"*\"], \n \"!\": [\"expression\"], \n \"+\": [\"expression\"], \n \"-\": [\"expression\"], \n \"VAR1\": [\"expression\"], \n \"VAR2\": [\"expression\"], \n \"(\": [\"expression\"], \n \"STR\": [\"expression\"], \n \"LANG\": [\"expression\"], \n \"LANGMATCHES\": [\"expression\"], \n \"DATATYPE\": [\"expression\"], \n \"BOUND\": [\"expression\"], \n \"IRI\": [\"expression\"], \n \"URI\": [\"expression\"], \n \"BNODE\": [\"expression\"], \n \"RAND\": [\"expression\"], \n \"ABS\": [\"expression\"], \n \"CEIL\": [\"expression\"], \n \"FLOOR\": [\"expression\"], \n \"ROUND\": [\"expression\"], \n \"CONCAT\": [\"expression\"], \n \"STRLEN\": [\"expression\"], \n \"UCASE\": [\"expression\"], \n \"LCASE\": [\"expression\"], \n \"ENCODE_FOR_URI\": [\"expression\"], \n \"CONTAINS\": [\"expression\"], \n \"STRSTARTS\": [\"expression\"], \n \"STRENDS\": [\"expression\"], \n \"STRBEFORE\": [\"expression\"], \n \"STRAFTER\": [\"expression\"], \n \"YEAR\": [\"expression\"], \n \"MONTH\": [\"expression\"], \n \"DAY\": [\"expression\"], \n \"HOURS\": [\"expression\"], \n \"MINUTES\": [\"expression\"], \n \"SECONDS\": [\"expression\"], \n \"TIMEZONE\": [\"expression\"], \n \"TZ\": [\"expression\"], \n \"NOW\": [\"expression\"], \n \"UUID\": [\"expression\"], \n \"STRUUID\": [\"expression\"], \n \"MD5\": [\"expression\"], \n \"SHA1\": [\"expression\"], \n \"SHA256\": [\"expression\"], \n \"SHA384\": [\"expression\"], \n \"SHA512\": [\"expression\"], \n \"COALESCE\": [\"expression\"], \n \"IF\": [\"expression\"], \n \"STRLANG\": [\"expression\"], \n \"STRDT\": [\"expression\"], \n \"SAMETERM\": [\"expression\"], \n \"ISIRI\": [\"expression\"], \n \"ISURI\": [\"expression\"], \n \"ISBLANK\": [\"expression\"], \n \"ISLITERAL\": [\"expression\"], \n \"ISNUMERIC\": [\"expression\"], \n \"TRUE\": [\"expression\"], \n \"FALSE\": [\"expression\"], \n \"COUNT\": [\"expression\"], \n \"SUM\": [\"expression\"], \n \"MIN\": [\"expression\"], \n \"MAX\": [\"expression\"], \n \"AVG\": [\"expression\"], \n \"SAMPLE\": [\"expression\"], \n \"GROUP_CONCAT\": [\"expression\"], \n \"SUBSTR\": [\"expression\"], \n \"REPLACE\": [\"expression\"], \n \"REGEX\": [\"expression\"], \n \"EXISTS\": [\"expression\"], \n \"NOT\": [\"expression\"], \n \"IRI_REF\": [\"expression\"], \n \"STRING_LITERAL1\": [\"expression\"], \n \"STRING_LITERAL2\": [\"expression\"], \n \"STRING_LITERAL_LONG1\": [\"expression\"], \n \"STRING_LITERAL_LONG2\": [\"expression\"], \n \"INTEGER\": [\"expression\"], \n \"DECIMAL\": [\"expression\"], \n \"DOUBLE\": [\"expression\"], \n \"INTEGER_POSITIVE\": [\"expression\"], \n \"DECIMAL_POSITIVE\": [\"expression\"], \n \"DOUBLE_POSITIVE\": [\"expression\"], \n \"INTEGER_NEGATIVE\": [\"expression\"], \n \"DECIMAL_NEGATIVE\": [\"expression\"], \n \"DOUBLE_NEGATIVE\": [\"expression\"], \n \"PNAME_LN\": [\"expression\"], \n \"PNAME_NS\": [\"expression\"]}, \n \"or([+or([var,[ (,expression,AS,var,)]]),*])\" : {\n \"(\": [\"+or([var,[ (,expression,AS,var,)]])\"], \n \"VAR1\": [\"+or([var,[ (,expression,AS,var,)]])\"], \n \"VAR2\": [\"+or([var,[ (,expression,AS,var,)]])\"], \n \"*\": [\"*\"]}, \n \"or([+varOrIRIref,*])\" : {\n \"VAR1\": [\"+varOrIRIref\"], \n \"VAR2\": [\"+varOrIRIref\"], \n \"IRI_REF\": [\"+varOrIRIref\"], \n \"PNAME_LN\": [\"+varOrIRIref\"], \n \"PNAME_NS\": [\"+varOrIRIref\"], \n \"*\": [\"*\"]}, \n \"or([ASC,DESC])\" : {\n \"ASC\": [\"ASC\"], \n \"DESC\": [\"DESC\"]}, \n \"or([DISTINCT,REDUCED])\" : {\n \"DISTINCT\": [\"DISTINCT\"], \n \"REDUCED\": [\"REDUCED\"]}, \n \"or([LANGTAG,[^^,iriRef]])\" : {\n \"LANGTAG\": [\"LANGTAG\"], \n \"^^\": [\"[^^,iriRef]\"]}, \n \"or([NIL,[ (,*var,)]])\" : {\n \"NIL\": [\"NIL\"], \n \"(\": [\"[ (,*var,)]\"]}, \n \"or([[ (,*dataBlockValue,)],NIL])\" : {\n \"(\": [\"[ (,*dataBlockValue,)]\"], \n \"NIL\": [\"NIL\"]}, \n \"or([[ (,expression,)],NIL])\" : {\n \"(\": [\"[ (,expression,)]\"], \n \"NIL\": [\"NIL\"]}, \n \"or([[*,unaryExpression],[/,unaryExpression]])\" : {\n \"*\": [\"[*,unaryExpression]\"], \n \"/\": [\"[/,unaryExpression]\"]}, \n \"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])\" : {\n \"+\": [\"[+,multiplicativeExpression]\"], \n \"-\": [\"[-,multiplicativeExpression]\"], \n \"INTEGER_POSITIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DECIMAL_POSITIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DOUBLE_POSITIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"INTEGER_NEGATIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DECIMAL_NEGATIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"], \n \"DOUBLE_NEGATIVE\": [\"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]\"]}, \n \"or([[,,or([},[integer,}]])],}])\" : {\n \",\": [\"[,,or([},[integer,}]])]\"], \n \"}\": [\"}\"]}, \n \"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\" : {\n \"=\": [\"[=,numericExpression]\"], \n \"!=\": [\"[!=,numericExpression]\"], \n \"<\": [\"[<,numericExpression]\"], \n \">\": [\"[>,numericExpression]\"], \n \"<=\": [\"[<=,numericExpression]\"], \n \">=\": [\"[>=,numericExpression]\"], \n \"IN\": [\"[IN,expressionList]\"], \n \"NOT\": [\"[NOT,IN,expressionList]\"]}, \n \"or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])\" : {\n \"{\": [\"[constructTemplate,*datasetClause,whereClause,solutionModifier]\"], \n \"WHERE\": [\"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]\"], \n \"FROM\": [\"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]\"]}, \n \"or([[deleteClause,?insertClause],insertClause])\" : {\n \"DELETE\": [\"[deleteClause,?insertClause]\"], \n \"INSERT\": [\"insertClause\"]}, \n \"or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])\" : {\n \"INTEGER\": [\"[integer,or([[,,or([},[integer,}]])],}])]\"], \n \",\": [\"[,,integer,}]\"]}, \n \"or([baseDecl,prefixDecl])\" : {\n \"BASE\": [\"baseDecl\"], \n \"PREFIX\": [\"prefixDecl\"]}, \n \"or([defaultGraphClause,namedGraphClause])\" : {\n \"IRI_REF\": [\"defaultGraphClause\"], \n \"PNAME_LN\": [\"defaultGraphClause\"], \n \"PNAME_NS\": [\"defaultGraphClause\"], \n \"NAMED\": [\"namedGraphClause\"]}, \n \"or([inlineDataOneVar,inlineDataFull])\" : {\n \"VAR1\": [\"inlineDataOneVar\"], \n \"VAR2\": [\"inlineDataOneVar\"], \n \"NIL\": [\"inlineDataFull\"], \n \"(\": [\"inlineDataFull\"]}, \n \"or([iriRef,[NAMED,iriRef]])\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"NAMED\": [\"[NAMED,iriRef]\"]}, \n \"or([iriRef,a])\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"a\": [\"a\"]}, \n \"or([numericLiteralPositive,numericLiteralNegative])\" : {\n \"INTEGER_POSITIVE\": [\"numericLiteralPositive\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteralPositive\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteralPositive\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteralNegative\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteralNegative\"]}, \n \"or([queryAll,updateAll])\" : {\n \"CONSTRUCT\": [\"queryAll\"], \n \"DESCRIBE\": [\"queryAll\"], \n \"ASK\": [\"queryAll\"], \n \"SELECT\": [\"queryAll\"], \n \"INSERT\": [\"updateAll\"], \n \"DELETE\": [\"updateAll\"], \n \"LOAD\": [\"updateAll\"], \n \"CLEAR\": [\"updateAll\"], \n \"DROP\": [\"updateAll\"], \n \"ADD\": [\"updateAll\"], \n \"MOVE\": [\"updateAll\"], \n \"COPY\": [\"updateAll\"], \n \"CREATE\": [\"updateAll\"], \n \"WITH\": [\"updateAll\"], \n \"$\": [\"updateAll\"]}, \n \"or([selectQuery,constructQuery,describeQuery,askQuery])\" : {\n \"SELECT\": [\"selectQuery\"], \n \"CONSTRUCT\": [\"constructQuery\"], \n \"DESCRIBE\": [\"describeQuery\"], \n \"ASK\": [\"askQuery\"]}, \n \"or([subSelect,groupGraphPatternSub])\" : {\n \"SELECT\": [\"subSelect\"], \n \"{\": [\"groupGraphPatternSub\"], \n \"OPTIONAL\": [\"groupGraphPatternSub\"], \n \"MINUS\": [\"groupGraphPatternSub\"], \n \"GRAPH\": [\"groupGraphPatternSub\"], \n \"SERVICE\": [\"groupGraphPatternSub\"], \n \"FILTER\": [\"groupGraphPatternSub\"], \n \"BIND\": [\"groupGraphPatternSub\"], \n \"VALUES\": [\"groupGraphPatternSub\"], \n \"VAR1\": [\"groupGraphPatternSub\"], \n \"VAR2\": [\"groupGraphPatternSub\"], \n \"NIL\": [\"groupGraphPatternSub\"], \n \"(\": [\"groupGraphPatternSub\"], \n \"[\": [\"groupGraphPatternSub\"], \n \"IRI_REF\": [\"groupGraphPatternSub\"], \n \"TRUE\": [\"groupGraphPatternSub\"], \n \"FALSE\": [\"groupGraphPatternSub\"], \n \"BLANK_NODE_LABEL\": [\"groupGraphPatternSub\"], \n \"ANON\": [\"groupGraphPatternSub\"], \n \"PNAME_LN\": [\"groupGraphPatternSub\"], \n \"PNAME_NS\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL1\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL2\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL_LONG1\": [\"groupGraphPatternSub\"], \n \"STRING_LITERAL_LONG2\": [\"groupGraphPatternSub\"], \n \"INTEGER\": [\"groupGraphPatternSub\"], \n \"DECIMAL\": [\"groupGraphPatternSub\"], \n \"DOUBLE\": [\"groupGraphPatternSub\"], \n \"INTEGER_POSITIVE\": [\"groupGraphPatternSub\"], \n \"DECIMAL_POSITIVE\": [\"groupGraphPatternSub\"], \n \"DOUBLE_POSITIVE\": [\"groupGraphPatternSub\"], \n \"INTEGER_NEGATIVE\": [\"groupGraphPatternSub\"], \n \"DECIMAL_NEGATIVE\": [\"groupGraphPatternSub\"], \n \"DOUBLE_NEGATIVE\": [\"groupGraphPatternSub\"], \n \"}\": [\"groupGraphPatternSub\"]}, \n \"or([var,[ (,expression,AS,var,)]])\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"(\": [\"[ (,expression,AS,var,)]\"]}, \n \"or([verbPath,verbSimple])\" : {\n \"^\": [\"verbPath\"], \n \"a\": [\"verbPath\"], \n \"!\": [\"verbPath\"], \n \"(\": [\"verbPath\"], \n \"IRI_REF\": [\"verbPath\"], \n \"PNAME_LN\": [\"verbPath\"], \n \"PNAME_NS\": [\"verbPath\"], \n \"VAR1\": [\"verbSimple\"], \n \"VAR2\": [\"verbSimple\"]}, \n \"or([},[integer,}]])\" : {\n \"}\": [\"}\"], \n \"INTEGER\": [\"[integer,}]\"]}, \n \"orderClause\" : {\n \"ORDER\": [\"ORDER\",\"BY\",\"+orderCondition\"]}, \n \"orderCondition\" : {\n \"ASC\": [\"or([ASC,DESC])\",\"brackettedExpression\"], \n \"DESC\": [\"or([ASC,DESC])\",\"brackettedExpression\"], \n \"(\": [\"constraint\"], \n \"STR\": [\"constraint\"], \n \"LANG\": [\"constraint\"], \n \"LANGMATCHES\": [\"constraint\"], \n \"DATATYPE\": [\"constraint\"], \n \"BOUND\": [\"constraint\"], \n \"IRI\": [\"constraint\"], \n \"URI\": [\"constraint\"], \n \"BNODE\": [\"constraint\"], \n \"RAND\": [\"constraint\"], \n \"ABS\": [\"constraint\"], \n \"CEIL\": [\"constraint\"], \n \"FLOOR\": [\"constraint\"], \n \"ROUND\": [\"constraint\"], \n \"CONCAT\": [\"constraint\"], \n \"STRLEN\": [\"constraint\"], \n \"UCASE\": [\"constraint\"], \n \"LCASE\": [\"constraint\"], \n \"ENCODE_FOR_URI\": [\"constraint\"], \n \"CONTAINS\": [\"constraint\"], \n \"STRSTARTS\": [\"constraint\"], \n \"STRENDS\": [\"constraint\"], \n \"STRBEFORE\": [\"constraint\"], \n \"STRAFTER\": [\"constraint\"], \n \"YEAR\": [\"constraint\"], \n \"MONTH\": [\"constraint\"], \n \"DAY\": [\"constraint\"], \n \"HOURS\": [\"constraint\"], \n \"MINUTES\": [\"constraint\"], \n \"SECONDS\": [\"constraint\"], \n \"TIMEZONE\": [\"constraint\"], \n \"TZ\": [\"constraint\"], \n \"NOW\": [\"constraint\"], \n \"UUID\": [\"constraint\"], \n \"STRUUID\": [\"constraint\"], \n \"MD5\": [\"constraint\"], \n \"SHA1\": [\"constraint\"], \n \"SHA256\": [\"constraint\"], \n \"SHA384\": [\"constraint\"], \n \"SHA512\": [\"constraint\"], \n \"COALESCE\": [\"constraint\"], \n \"IF\": [\"constraint\"], \n \"STRLANG\": [\"constraint\"], \n \"STRDT\": [\"constraint\"], \n \"SAMETERM\": [\"constraint\"], \n \"ISIRI\": [\"constraint\"], \n \"ISURI\": [\"constraint\"], \n \"ISBLANK\": [\"constraint\"], \n \"ISLITERAL\": [\"constraint\"], \n \"ISNUMERIC\": [\"constraint\"], \n \"SUBSTR\": [\"constraint\"], \n \"REPLACE\": [\"constraint\"], \n \"REGEX\": [\"constraint\"], \n \"EXISTS\": [\"constraint\"], \n \"NOT\": [\"constraint\"], \n \"IRI_REF\": [\"constraint\"], \n \"PNAME_LN\": [\"constraint\"], \n \"PNAME_NS\": [\"constraint\"], \n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"]}, \n \"path\" : {\n \"^\": [\"pathAlternative\"], \n \"a\": [\"pathAlternative\"], \n \"!\": [\"pathAlternative\"], \n \"(\": [\"pathAlternative\"], \n \"IRI_REF\": [\"pathAlternative\"], \n \"PNAME_LN\": [\"pathAlternative\"], \n \"PNAME_NS\": [\"pathAlternative\"]}, \n \"pathAlternative\" : {\n \"^\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"a\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"!\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"(\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"IRI_REF\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"PNAME_LN\": [\"pathSequence\",\"*[|,pathSequence]\"], \n \"PNAME_NS\": [\"pathSequence\",\"*[|,pathSequence]\"]}, \n \"pathElt\" : {\n \"a\": [\"pathPrimary\",\"?pathMod\"], \n \"!\": [\"pathPrimary\",\"?pathMod\"], \n \"(\": [\"pathPrimary\",\"?pathMod\"], \n \"IRI_REF\": [\"pathPrimary\",\"?pathMod\"], \n \"PNAME_LN\": [\"pathPrimary\",\"?pathMod\"], \n \"PNAME_NS\": [\"pathPrimary\",\"?pathMod\"]}, \n \"pathEltOrInverse\" : {\n \"a\": [\"pathElt\"], \n \"!\": [\"pathElt\"], \n \"(\": [\"pathElt\"], \n \"IRI_REF\": [\"pathElt\"], \n \"PNAME_LN\": [\"pathElt\"], \n \"PNAME_NS\": [\"pathElt\"], \n \"^\": [\"^\",\"pathElt\"]}, \n \"pathMod\" : {\n \"*\": [\"*\"], \n \"?\": [\"?\"], \n \"+\": [\"+\"], \n \"{\": [\"{\",\"or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])\"]}, \n \"pathNegatedPropertySet\" : {\n \"a\": [\"pathOneInPropertySet\"], \n \"^\": [\"pathOneInPropertySet\"], \n \"IRI_REF\": [\"pathOneInPropertySet\"], \n \"PNAME_LN\": [\"pathOneInPropertySet\"], \n \"PNAME_NS\": [\"pathOneInPropertySet\"], \n \"(\": [\"(\",\"?[pathOneInPropertySet,*[|,pathOneInPropertySet]]\",\")\"]}, \n \"pathOneInPropertySet\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"], \n \"a\": [\"a\"], \n \"^\": [\"^\",\"or([iriRef,a])\"]}, \n \"pathPrimary\" : {\n \"IRI_REF\": [\"storeProperty\",\"iriRef\"], \n \"PNAME_LN\": [\"storeProperty\",\"iriRef\"], \n \"PNAME_NS\": [\"storeProperty\",\"iriRef\"], \n \"a\": [\"storeProperty\",\"a\"], \n \"!\": [\"!\",\"pathNegatedPropertySet\"], \n \"(\": [\"(\",\"path\",\")\"]}, \n \"pathSequence\" : {\n \"^\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"a\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"!\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"(\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"IRI_REF\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"PNAME_LN\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"], \n \"PNAME_NS\": [\"pathEltOrInverse\",\"*[/,pathEltOrInverse]\"]}, \n \"prefixDecl\" : {\n \"PREFIX\": [\"PREFIX\",\"PNAME_NS\",\"IRI_REF\"]}, \n \"prefixedName\" : {\n \"PNAME_LN\": [\"PNAME_LN\"], \n \"PNAME_NS\": [\"PNAME_NS\"]}, \n \"primaryExpression\" : {\n \"(\": [\"brackettedExpression\"], \n \"STR\": [\"builtInCall\"], \n \"LANG\": [\"builtInCall\"], \n \"LANGMATCHES\": [\"builtInCall\"], \n \"DATATYPE\": [\"builtInCall\"], \n \"BOUND\": [\"builtInCall\"], \n \"IRI\": [\"builtInCall\"], \n \"URI\": [\"builtInCall\"], \n \"BNODE\": [\"builtInCall\"], \n \"RAND\": [\"builtInCall\"], \n \"ABS\": [\"builtInCall\"], \n \"CEIL\": [\"builtInCall\"], \n \"FLOOR\": [\"builtInCall\"], \n \"ROUND\": [\"builtInCall\"], \n \"CONCAT\": [\"builtInCall\"], \n \"STRLEN\": [\"builtInCall\"], \n \"UCASE\": [\"builtInCall\"], \n \"LCASE\": [\"builtInCall\"], \n \"ENCODE_FOR_URI\": [\"builtInCall\"], \n \"CONTAINS\": [\"builtInCall\"], \n \"STRSTARTS\": [\"builtInCall\"], \n \"STRENDS\": [\"builtInCall\"], \n \"STRBEFORE\": [\"builtInCall\"], \n \"STRAFTER\": [\"builtInCall\"], \n \"YEAR\": [\"builtInCall\"], \n \"MONTH\": [\"builtInCall\"], \n \"DAY\": [\"builtInCall\"], \n \"HOURS\": [\"builtInCall\"], \n \"MINUTES\": [\"builtInCall\"], \n \"SECONDS\": [\"builtInCall\"], \n \"TIMEZONE\": [\"builtInCall\"], \n \"TZ\": [\"builtInCall\"], \n \"NOW\": [\"builtInCall\"], \n \"UUID\": [\"builtInCall\"], \n \"STRUUID\": [\"builtInCall\"], \n \"MD5\": [\"builtInCall\"], \n \"SHA1\": [\"builtInCall\"], \n \"SHA256\": [\"builtInCall\"], \n \"SHA384\": [\"builtInCall\"], \n \"SHA512\": [\"builtInCall\"], \n \"COALESCE\": [\"builtInCall\"], \n \"IF\": [\"builtInCall\"], \n \"STRLANG\": [\"builtInCall\"], \n \"STRDT\": [\"builtInCall\"], \n \"SAMETERM\": [\"builtInCall\"], \n \"ISIRI\": [\"builtInCall\"], \n \"ISURI\": [\"builtInCall\"], \n \"ISBLANK\": [\"builtInCall\"], \n \"ISLITERAL\": [\"builtInCall\"], \n \"ISNUMERIC\": [\"builtInCall\"], \n \"SUBSTR\": [\"builtInCall\"], \n \"REPLACE\": [\"builtInCall\"], \n \"REGEX\": [\"builtInCall\"], \n \"EXISTS\": [\"builtInCall\"], \n \"NOT\": [\"builtInCall\"], \n \"IRI_REF\": [\"iriRefOrFunction\"], \n \"PNAME_LN\": [\"iriRefOrFunction\"], \n \"PNAME_NS\": [\"iriRefOrFunction\"], \n \"STRING_LITERAL1\": [\"rdfLiteral\"], \n \"STRING_LITERAL2\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG1\": [\"rdfLiteral\"], \n \"STRING_LITERAL_LONG2\": [\"rdfLiteral\"], \n \"INTEGER\": [\"numericLiteral\"], \n \"DECIMAL\": [\"numericLiteral\"], \n \"DOUBLE\": [\"numericLiteral\"], \n \"INTEGER_POSITIVE\": [\"numericLiteral\"], \n \"DECIMAL_POSITIVE\": [\"numericLiteral\"], \n \"DOUBLE_POSITIVE\": [\"numericLiteral\"], \n \"INTEGER_NEGATIVE\": [\"numericLiteral\"], \n \"DECIMAL_NEGATIVE\": [\"numericLiteral\"], \n \"DOUBLE_NEGATIVE\": [\"numericLiteral\"], \n \"TRUE\": [\"booleanLiteral\"], \n \"FALSE\": [\"booleanLiteral\"], \n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"COUNT\": [\"aggregate\"], \n \"SUM\": [\"aggregate\"], \n \"MIN\": [\"aggregate\"], \n \"MAX\": [\"aggregate\"], \n \"AVG\": [\"aggregate\"], \n \"SAMPLE\": [\"aggregate\"], \n \"GROUP_CONCAT\": [\"aggregate\"]}, \n \"prologue\" : {\n \"BASE\": [\"*or([baseDecl,prefixDecl])\"], \n \"PREFIX\": [\"*or([baseDecl,prefixDecl])\"], \n \"$\": [\"*or([baseDecl,prefixDecl])\"], \n \"CONSTRUCT\": [\"*or([baseDecl,prefixDecl])\"], \n \"DESCRIBE\": [\"*or([baseDecl,prefixDecl])\"], \n \"ASK\": [\"*or([baseDecl,prefixDecl])\"], \n \"INSERT\": [\"*or([baseDecl,prefixDecl])\"], \n \"DELETE\": [\"*or([baseDecl,prefixDecl])\"], \n \"SELECT\": [\"*or([baseDecl,prefixDecl])\"], \n \"LOAD\": [\"*or([baseDecl,prefixDecl])\"], \n \"CLEAR\": [\"*or([baseDecl,prefixDecl])\"], \n \"DROP\": [\"*or([baseDecl,prefixDecl])\"], \n \"ADD\": [\"*or([baseDecl,prefixDecl])\"], \n \"MOVE\": [\"*or([baseDecl,prefixDecl])\"], \n \"COPY\": [\"*or([baseDecl,prefixDecl])\"], \n \"CREATE\": [\"*or([baseDecl,prefixDecl])\"], \n \"WITH\": [\"*or([baseDecl,prefixDecl])\"]}, \n \"propertyList\" : {\n \"a\": [\"propertyListNotEmpty\"], \n \"VAR1\": [\"propertyListNotEmpty\"], \n \"VAR2\": [\"propertyListNotEmpty\"], \n \"IRI_REF\": [\"propertyListNotEmpty\"], \n \"PNAME_LN\": [\"propertyListNotEmpty\"], \n \"PNAME_NS\": [\"propertyListNotEmpty\"], \n \".\": [], \n \"}\": [], \n \"GRAPH\": []}, \n \"propertyListNotEmpty\" : {\n \"a\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"VAR1\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"VAR2\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"IRI_REF\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"PNAME_LN\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"], \n \"PNAME_NS\": [\"verb\",\"objectList\",\"*[;,?[verb,objectList]]\"]}, \n \"propertyListPath\" : {\n \"a\": [\"propertyListNotEmpty\"], \n \"VAR1\": [\"propertyListNotEmpty\"], \n \"VAR2\": [\"propertyListNotEmpty\"], \n \"IRI_REF\": [\"propertyListNotEmpty\"], \n \"PNAME_LN\": [\"propertyListNotEmpty\"], \n \"PNAME_NS\": [\"propertyListNotEmpty\"], \n \".\": [], \n \"{\": [], \n \"OPTIONAL\": [], \n \"MINUS\": [], \n \"GRAPH\": [], \n \"SERVICE\": [], \n \"FILTER\": [], \n \"BIND\": [], \n \"VALUES\": [], \n \"}\": []}, \n \"propertyListPathNotEmpty\" : {\n \"VAR1\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"VAR2\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"^\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"a\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"!\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"(\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"IRI_REF\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"PNAME_LN\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"], \n \"PNAME_NS\": [\"or([verbPath,verbSimple])\",\"objectListPath\",\"*[;,?[or([verbPath,verbSimple]),objectList]]\"]}, \n \"quadData\" : {\n \"{\": [\"{\",\"disallowVars\",\"quads\",\"allowVars\",\"}\"]}, \n \"quadDataNoBnodes\" : {\n \"{\": [\"{\",\"disallowBnodes\",\"disallowVars\",\"quads\",\"allowVars\",\"allowBnodes\",\"}\"]}, \n \"quadPattern\" : {\n \"{\": [\"{\",\"quads\",\"}\"]}, \n \"quadPatternNoBnodes\" : {\n \"{\": [\"{\",\"disallowBnodes\",\"quads\",\"allowBnodes\",\"}\"]}, \n \"quads\" : {\n \"GRAPH\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"VAR1\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"VAR2\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"NIL\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"(\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"[\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"IRI_REF\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"TRUE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"FALSE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"BLANK_NODE_LABEL\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"ANON\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"PNAME_LN\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"PNAME_NS\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL1\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL2\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG1\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG2\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"INTEGER\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DECIMAL\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DOUBLE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"INTEGER_POSITIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DECIMAL_POSITIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DOUBLE_POSITIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"INTEGER_NEGATIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DECIMAL_NEGATIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"DOUBLE_NEGATIVE\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"], \n \"}\": [\"?triplesTemplate\",\"*[quadsNotTriples,?.,?triplesTemplate]\"]}, \n \"quadsNotTriples\" : {\n \"GRAPH\": [\"GRAPH\",\"varOrIRIref\",\"{\",\"?triplesTemplate\",\"}\"]}, \n \"queryAll\" : {\n \"CONSTRUCT\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"], \n \"DESCRIBE\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"], \n \"ASK\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"], \n \"SELECT\": [\"or([selectQuery,constructQuery,describeQuery,askQuery])\",\"valuesClause\"]}, \n \"rdfLiteral\" : {\n \"STRING_LITERAL1\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"], \n \"STRING_LITERAL2\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"], \n \"STRING_LITERAL_LONG1\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"], \n \"STRING_LITERAL_LONG2\": [\"string\",\"?or([LANGTAG,[^^,iriRef]])\"]}, \n \"regexExpression\" : {\n \"REGEX\": [\"REGEX\",\"(\",\"expression\",\",\",\"expression\",\"?[,,expression]\",\")\"]}, \n \"relationalExpression\" : {\n \"!\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"+\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"-\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"VAR1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"VAR2\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"(\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"LANG\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"LANGMATCHES\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DATATYPE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"BOUND\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IRI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"URI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"BNODE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"RAND\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ABS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"CEIL\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"FLOOR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ROUND\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"CONCAT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRLEN\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"UCASE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"LCASE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ENCODE_FOR_URI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"CONTAINS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRSTARTS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRENDS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRBEFORE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRAFTER\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"YEAR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MONTH\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DAY\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"HOURS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MINUTES\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SECONDS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"TIMEZONE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"TZ\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"NOW\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"UUID\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRUUID\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MD5\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA256\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA384\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SHA512\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"COALESCE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IF\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRLANG\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRDT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SAMETERM\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISIRI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISURI\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISBLANK\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISLITERAL\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"ISNUMERIC\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"TRUE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"FALSE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"COUNT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SUM\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MIN\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"MAX\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"AVG\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SAMPLE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"GROUP_CONCAT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"SUBSTR\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"REPLACE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"REGEX\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"EXISTS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"NOT\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"IRI_REF\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL2\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL_LONG1\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"STRING_LITERAL_LONG2\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"INTEGER\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DECIMAL\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DOUBLE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"INTEGER_POSITIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DECIMAL_POSITIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DOUBLE_POSITIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"INTEGER_NEGATIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DECIMAL_NEGATIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"DOUBLE_NEGATIVE\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"PNAME_LN\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"], \n \"PNAME_NS\": [\"numericExpression\",\"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])\"]}, \n \"selectClause\" : {\n \"SELECT\": [\"SELECT\",\"?or([DISTINCT,REDUCED])\",\"or([+or([var,[ (,expression,AS,var,)]]),*])\"]}, \n \"selectQuery\" : {\n \"SELECT\": [\"selectClause\",\"*datasetClause\",\"whereClause\",\"solutionModifier\"]}, \n \"serviceGraphPattern\" : {\n \"SERVICE\": [\"SERVICE\",\"?SILENT\",\"varOrIRIref\",\"groupGraphPattern\"]}, \n \"solutionModifier\" : {\n \"LIMIT\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"OFFSET\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"ORDER\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"HAVING\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"GROUP\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"VALUES\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"$\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"], \n \"}\": [\"?groupClause\",\"?havingClause\",\"?orderClause\",\"?limitOffsetClauses\"]}, \n \"sourceSelector\" : {\n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"]}, \n \"sparql11\" : {\n \"$\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"CONSTRUCT\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"DESCRIBE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"ASK\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"INSERT\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"DELETE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"SELECT\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"LOAD\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"CLEAR\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"DROP\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"ADD\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"MOVE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"COPY\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"CREATE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"WITH\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"BASE\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"], \n \"PREFIX\": [\"prologue\",\"or([queryAll,updateAll])\",\"$\"]}, \n \"storeProperty\" : {\n \"VAR1\": [], \n \"VAR2\": [], \n \"IRI_REF\": [], \n \"PNAME_LN\": [], \n \"PNAME_NS\": [], \n \"a\": []}, \n \"strReplaceExpression\" : {\n \"REPLACE\": [\"REPLACE\",\"(\",\"expression\",\",\",\"expression\",\",\",\"expression\",\"?[,,expression]\",\")\"]}, \n \"string\" : {\n \"STRING_LITERAL1\": [\"STRING_LITERAL1\"], \n \"STRING_LITERAL2\": [\"STRING_LITERAL2\"], \n \"STRING_LITERAL_LONG1\": [\"STRING_LITERAL_LONG1\"], \n \"STRING_LITERAL_LONG2\": [\"STRING_LITERAL_LONG2\"]}, \n \"subSelect\" : {\n \"SELECT\": [\"selectClause\",\"whereClause\",\"solutionModifier\",\"valuesClause\"]}, \n \"substringExpression\" : {\n \"SUBSTR\": [\"SUBSTR\",\"(\",\"expression\",\",\",\"expression\",\"?[,,expression]\",\")\"]}, \n \"triplesBlock\" : {\n \"VAR1\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"VAR2\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"NIL\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"(\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"[\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"IRI_REF\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"TRUE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"FALSE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"BLANK_NODE_LABEL\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"ANON\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"PNAME_LN\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"PNAME_NS\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL1\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL2\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG1\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"STRING_LITERAL_LONG2\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"INTEGER\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DECIMAL\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DOUBLE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"INTEGER_POSITIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DECIMAL_POSITIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DOUBLE_POSITIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"INTEGER_NEGATIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DECIMAL_NEGATIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"], \n \"DOUBLE_NEGATIVE\": [\"triplesSameSubjectPath\",\"?[.,?triplesBlock]\"]}, \n \"triplesNode\" : {\n \"(\": [\"collection\"], \n \"[\": [\"blankNodePropertyList\"]}, \n \"triplesNodePath\" : {\n \"(\": [\"collectionPath\"], \n \"[\": [\"blankNodePropertyListPath\"]}, \n \"triplesSameSubject\" : {\n \"VAR1\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"VAR2\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"NIL\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"IRI_REF\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"TRUE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"FALSE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"ANON\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"PNAME_LN\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"PNAME_NS\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL1\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL2\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"INTEGER\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DECIMAL\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DOUBLE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\",\"propertyListNotEmpty\"], \n \"(\": [\"triplesNode\",\"propertyList\"], \n \"[\": [\"triplesNode\",\"propertyList\"]}, \n \"triplesSameSubjectPath\" : {\n \"VAR1\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"VAR2\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"NIL\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"IRI_REF\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"TRUE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"FALSE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"BLANK_NODE_LABEL\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"ANON\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"PNAME_LN\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"PNAME_NS\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL1\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL2\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL_LONG1\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"STRING_LITERAL_LONG2\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"INTEGER\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DECIMAL\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DOUBLE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"INTEGER_POSITIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DECIMAL_POSITIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DOUBLE_POSITIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"INTEGER_NEGATIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DECIMAL_NEGATIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"DOUBLE_NEGATIVE\": [\"varOrTerm\",\"propertyListPathNotEmpty\"], \n \"(\": [\"triplesNodePath\",\"propertyListPath\"], \n \"[\": [\"triplesNodePath\",\"propertyListPath\"]}, \n \"triplesTemplate\" : {\n \"VAR1\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"VAR2\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"NIL\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"(\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"[\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"IRI_REF\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"TRUE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"FALSE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"BLANK_NODE_LABEL\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"ANON\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"PNAME_LN\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"PNAME_NS\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL1\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL2\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG1\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"STRING_LITERAL_LONG2\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"INTEGER\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DECIMAL\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DOUBLE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"INTEGER_POSITIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DECIMAL_POSITIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DOUBLE_POSITIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"INTEGER_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DECIMAL_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"], \n \"DOUBLE_NEGATIVE\": [\"triplesSameSubject\",\"?[.,?triplesTemplate]\"]}, \n \"unaryExpression\" : {\n \"!\": [\"!\",\"primaryExpression\"], \n \"+\": [\"+\",\"primaryExpression\"], \n \"-\": [\"-\",\"primaryExpression\"], \n \"VAR1\": [\"primaryExpression\"], \n \"VAR2\": [\"primaryExpression\"], \n \"(\": [\"primaryExpression\"], \n \"STR\": [\"primaryExpression\"], \n \"LANG\": [\"primaryExpression\"], \n \"LANGMATCHES\": [\"primaryExpression\"], \n \"DATATYPE\": [\"primaryExpression\"], \n \"BOUND\": [\"primaryExpression\"], \n \"IRI\": [\"primaryExpression\"], \n \"URI\": [\"primaryExpression\"], \n \"BNODE\": [\"primaryExpression\"], \n \"RAND\": [\"primaryExpression\"], \n \"ABS\": [\"primaryExpression\"], \n \"CEIL\": [\"primaryExpression\"], \n \"FLOOR\": [\"primaryExpression\"], \n \"ROUND\": [\"primaryExpression\"], \n \"CONCAT\": [\"primaryExpression\"], \n \"STRLEN\": [\"primaryExpression\"], \n \"UCASE\": [\"primaryExpression\"], \n \"LCASE\": [\"primaryExpression\"], \n \"ENCODE_FOR_URI\": [\"primaryExpression\"], \n \"CONTAINS\": [\"primaryExpression\"], \n \"STRSTARTS\": [\"primaryExpression\"], \n \"STRENDS\": [\"primaryExpression\"], \n \"STRBEFORE\": [\"primaryExpression\"], \n \"STRAFTER\": [\"primaryExpression\"], \n \"YEAR\": [\"primaryExpression\"], \n \"MONTH\": [\"primaryExpression\"], \n \"DAY\": [\"primaryExpression\"], \n \"HOURS\": [\"primaryExpression\"], \n \"MINUTES\": [\"primaryExpression\"], \n \"SECONDS\": [\"primaryExpression\"], \n \"TIMEZONE\": [\"primaryExpression\"], \n \"TZ\": [\"primaryExpression\"], \n \"NOW\": [\"primaryExpression\"], \n \"UUID\": [\"primaryExpression\"], \n \"STRUUID\": [\"primaryExpression\"], \n \"MD5\": [\"primaryExpression\"], \n \"SHA1\": [\"primaryExpression\"], \n \"SHA256\": [\"primaryExpression\"], \n \"SHA384\": [\"primaryExpression\"], \n \"SHA512\": [\"primaryExpression\"], \n \"COALESCE\": [\"primaryExpression\"], \n \"IF\": [\"primaryExpression\"], \n \"STRLANG\": [\"primaryExpression\"], \n \"STRDT\": [\"primaryExpression\"], \n \"SAMETERM\": [\"primaryExpression\"], \n \"ISIRI\": [\"primaryExpression\"], \n \"ISURI\": [\"primaryExpression\"], \n \"ISBLANK\": [\"primaryExpression\"], \n \"ISLITERAL\": [\"primaryExpression\"], \n \"ISNUMERIC\": [\"primaryExpression\"], \n \"TRUE\": [\"primaryExpression\"], \n \"FALSE\": [\"primaryExpression\"], \n \"COUNT\": [\"primaryExpression\"], \n \"SUM\": [\"primaryExpression\"], \n \"MIN\": [\"primaryExpression\"], \n \"MAX\": [\"primaryExpression\"], \n \"AVG\": [\"primaryExpression\"], \n \"SAMPLE\": [\"primaryExpression\"], \n \"GROUP_CONCAT\": [\"primaryExpression\"], \n \"SUBSTR\": [\"primaryExpression\"], \n \"REPLACE\": [\"primaryExpression\"], \n \"REGEX\": [\"primaryExpression\"], \n \"EXISTS\": [\"primaryExpression\"], \n \"NOT\": [\"primaryExpression\"], \n \"IRI_REF\": [\"primaryExpression\"], \n \"STRING_LITERAL1\": [\"primaryExpression\"], \n \"STRING_LITERAL2\": [\"primaryExpression\"], \n \"STRING_LITERAL_LONG1\": [\"primaryExpression\"], \n \"STRING_LITERAL_LONG2\": [\"primaryExpression\"], \n \"INTEGER\": [\"primaryExpression\"], \n \"DECIMAL\": [\"primaryExpression\"], \n \"DOUBLE\": [\"primaryExpression\"], \n \"INTEGER_POSITIVE\": [\"primaryExpression\"], \n \"DECIMAL_POSITIVE\": [\"primaryExpression\"], \n \"DOUBLE_POSITIVE\": [\"primaryExpression\"], \n \"INTEGER_NEGATIVE\": [\"primaryExpression\"], \n \"DECIMAL_NEGATIVE\": [\"primaryExpression\"], \n \"DOUBLE_NEGATIVE\": [\"primaryExpression\"], \n \"PNAME_LN\": [\"primaryExpression\"], \n \"PNAME_NS\": [\"primaryExpression\"]}, \n \"update\" : {\n \"INSERT\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"DELETE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"LOAD\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"CLEAR\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"DROP\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"ADD\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"MOVE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"COPY\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"CREATE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"WITH\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"BASE\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"PREFIX\": [\"prologue\",\"?[update1,?[;,update]]\"], \n \"$\": [\"prologue\",\"?[update1,?[;,update]]\"]}, \n \"update1\" : {\n \"LOAD\": [\"load\"], \n \"CLEAR\": [\"clear\"], \n \"DROP\": [\"drop\"], \n \"ADD\": [\"add\"], \n \"MOVE\": [\"move\"], \n \"COPY\": [\"copy\"], \n \"CREATE\": [\"create\"], \n \"INSERT\": [\"INSERT\",\"insert1\"], \n \"DELETE\": [\"DELETE\",\"delete1\"], \n \"WITH\": [\"modify\"]}, \n \"updateAll\" : {\n \"INSERT\": [\"?[update1,?[;,update]]\"], \n \"DELETE\": [\"?[update1,?[;,update]]\"], \n \"LOAD\": [\"?[update1,?[;,update]]\"], \n \"CLEAR\": [\"?[update1,?[;,update]]\"], \n \"DROP\": [\"?[update1,?[;,update]]\"], \n \"ADD\": [\"?[update1,?[;,update]]\"], \n \"MOVE\": [\"?[update1,?[;,update]]\"], \n \"COPY\": [\"?[update1,?[;,update]]\"], \n \"CREATE\": [\"?[update1,?[;,update]]\"], \n \"WITH\": [\"?[update1,?[;,update]]\"], \n \"$\": [\"?[update1,?[;,update]]\"]}, \n \"usingClause\" : {\n \"USING\": [\"USING\",\"or([iriRef,[NAMED,iriRef]])\"]}, \n \"valueLogical\" : {\n \"!\": [\"relationalExpression\"], \n \"+\": [\"relationalExpression\"], \n \"-\": [\"relationalExpression\"], \n \"VAR1\": [\"relationalExpression\"], \n \"VAR2\": [\"relationalExpression\"], \n \"(\": [\"relationalExpression\"], \n \"STR\": [\"relationalExpression\"], \n \"LANG\": [\"relationalExpression\"], \n \"LANGMATCHES\": [\"relationalExpression\"], \n \"DATATYPE\": [\"relationalExpression\"], \n \"BOUND\": [\"relationalExpression\"], \n \"IRI\": [\"relationalExpression\"], \n \"URI\": [\"relationalExpression\"], \n \"BNODE\": [\"relationalExpression\"], \n \"RAND\": [\"relationalExpression\"], \n \"ABS\": [\"relationalExpression\"], \n \"CEIL\": [\"relationalExpression\"], \n \"FLOOR\": [\"relationalExpression\"], \n \"ROUND\": [\"relationalExpression\"], \n \"CONCAT\": [\"relationalExpression\"], \n \"STRLEN\": [\"relationalExpression\"], \n \"UCASE\": [\"relationalExpression\"], \n \"LCASE\": [\"relationalExpression\"], \n \"ENCODE_FOR_URI\": [\"relationalExpression\"], \n \"CONTAINS\": [\"relationalExpression\"], \n \"STRSTARTS\": [\"relationalExpression\"], \n \"STRENDS\": [\"relationalExpression\"], \n \"STRBEFORE\": [\"relationalExpression\"], \n \"STRAFTER\": [\"relationalExpression\"], \n \"YEAR\": [\"relationalExpression\"], \n \"MONTH\": [\"relationalExpression\"], \n \"DAY\": [\"relationalExpression\"], \n \"HOURS\": [\"relationalExpression\"], \n \"MINUTES\": [\"relationalExpression\"], \n \"SECONDS\": [\"relationalExpression\"], \n \"TIMEZONE\": [\"relationalExpression\"], \n \"TZ\": [\"relationalExpression\"], \n \"NOW\": [\"relationalExpression\"], \n \"UUID\": [\"relationalExpression\"], \n \"STRUUID\": [\"relationalExpression\"], \n \"MD5\": [\"relationalExpression\"], \n \"SHA1\": [\"relationalExpression\"], \n \"SHA256\": [\"relationalExpression\"], \n \"SHA384\": [\"relationalExpression\"], \n \"SHA512\": [\"relationalExpression\"], \n \"COALESCE\": [\"relationalExpression\"], \n \"IF\": [\"relationalExpression\"], \n \"STRLANG\": [\"relationalExpression\"], \n \"STRDT\": [\"relationalExpression\"], \n \"SAMETERM\": [\"relationalExpression\"], \n \"ISIRI\": [\"relationalExpression\"], \n \"ISURI\": [\"relationalExpression\"], \n \"ISBLANK\": [\"relationalExpression\"], \n \"ISLITERAL\": [\"relationalExpression\"], \n \"ISNUMERIC\": [\"relationalExpression\"], \n \"TRUE\": [\"relationalExpression\"], \n \"FALSE\": [\"relationalExpression\"], \n \"COUNT\": [\"relationalExpression\"], \n \"SUM\": [\"relationalExpression\"], \n \"MIN\": [\"relationalExpression\"], \n \"MAX\": [\"relationalExpression\"], \n \"AVG\": [\"relationalExpression\"], \n \"SAMPLE\": [\"relationalExpression\"], \n \"GROUP_CONCAT\": [\"relationalExpression\"], \n \"SUBSTR\": [\"relationalExpression\"], \n \"REPLACE\": [\"relationalExpression\"], \n \"REGEX\": [\"relationalExpression\"], \n \"EXISTS\": [\"relationalExpression\"], \n \"NOT\": [\"relationalExpression\"], \n \"IRI_REF\": [\"relationalExpression\"], \n \"STRING_LITERAL1\": [\"relationalExpression\"], \n \"STRING_LITERAL2\": [\"relationalExpression\"], \n \"STRING_LITERAL_LONG1\": [\"relationalExpression\"], \n \"STRING_LITERAL_LONG2\": [\"relationalExpression\"], \n \"INTEGER\": [\"relationalExpression\"], \n \"DECIMAL\": [\"relationalExpression\"], \n \"DOUBLE\": [\"relationalExpression\"], \n \"INTEGER_POSITIVE\": [\"relationalExpression\"], \n \"DECIMAL_POSITIVE\": [\"relationalExpression\"], \n \"DOUBLE_POSITIVE\": [\"relationalExpression\"], \n \"INTEGER_NEGATIVE\": [\"relationalExpression\"], \n \"DECIMAL_NEGATIVE\": [\"relationalExpression\"], \n \"DOUBLE_NEGATIVE\": [\"relationalExpression\"], \n \"PNAME_LN\": [\"relationalExpression\"], \n \"PNAME_NS\": [\"relationalExpression\"]}, \n \"valuesClause\" : {\n \"VALUES\": [\"VALUES\",\"dataBlock\"], \n \"$\": [], \n \"}\": []}, \n \"var\" : {\n \"VAR1\": [\"VAR1\"], \n \"VAR2\": [\"VAR2\"]}, \n \"varOrIRIref\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"IRI_REF\": [\"iriRef\"], \n \"PNAME_LN\": [\"iriRef\"], \n \"PNAME_NS\": [\"iriRef\"]}, \n \"varOrTerm\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"], \n \"NIL\": [\"graphTerm\"], \n \"IRI_REF\": [\"graphTerm\"], \n \"TRUE\": [\"graphTerm\"], \n \"FALSE\": [\"graphTerm\"], \n \"BLANK_NODE_LABEL\": [\"graphTerm\"], \n \"ANON\": [\"graphTerm\"], \n \"PNAME_LN\": [\"graphTerm\"], \n \"PNAME_NS\": [\"graphTerm\"], \n \"STRING_LITERAL1\": [\"graphTerm\"], \n \"STRING_LITERAL2\": [\"graphTerm\"], \n \"STRING_LITERAL_LONG1\": [\"graphTerm\"], \n \"STRING_LITERAL_LONG2\": [\"graphTerm\"], \n \"INTEGER\": [\"graphTerm\"], \n \"DECIMAL\": [\"graphTerm\"], \n \"DOUBLE\": [\"graphTerm\"], \n \"INTEGER_POSITIVE\": [\"graphTerm\"], \n \"DECIMAL_POSITIVE\": [\"graphTerm\"], \n \"DOUBLE_POSITIVE\": [\"graphTerm\"], \n \"INTEGER_NEGATIVE\": [\"graphTerm\"], \n \"DECIMAL_NEGATIVE\": [\"graphTerm\"], \n \"DOUBLE_NEGATIVE\": [\"graphTerm\"]}, \n \"verb\" : {\n \"VAR1\": [\"storeProperty\",\"varOrIRIref\"], \n \"VAR2\": [\"storeProperty\",\"varOrIRIref\"], \n \"IRI_REF\": [\"storeProperty\",\"varOrIRIref\"], \n \"PNAME_LN\": [\"storeProperty\",\"varOrIRIref\"], \n \"PNAME_NS\": [\"storeProperty\",\"varOrIRIref\"], \n \"a\": [\"storeProperty\",\"a\"]}, \n \"verbPath\" : {\n \"^\": [\"path\"], \n \"a\": [\"path\"], \n \"!\": [\"path\"], \n \"(\": [\"path\"], \n \"IRI_REF\": [\"path\"], \n \"PNAME_LN\": [\"path\"], \n \"PNAME_NS\": [\"path\"]}, \n \"verbSimple\" : {\n \"VAR1\": [\"var\"], \n \"VAR2\": [\"var\"]}, \n \"whereClause\" : {\n \"{\": [\"?WHERE\",\"groupGraphPattern\"], \n \"WHERE\": [\"?WHERE\",\"groupGraphPattern\"]}\n},\n\nkeywords:/^(GROUP_CONCAT|DATATYPE|BASE|PREFIX|SELECT|CONSTRUCT|DESCRIBE|ASK|FROM|NAMED|ORDER|BY|LIMIT|ASC|DESC|OFFSET|DISTINCT|REDUCED|WHERE|GRAPH|OPTIONAL|UNION|FILTER|GROUP|HAVING|AS|VALUES|LOAD|CLEAR|DROP|CREATE|MOVE|COPY|SILENT|INSERT|DELETE|DATA|WITH|TO|USING|NAMED|MINUS|BIND|LANGMATCHES|LANG|BOUND|SAMETERM|ISIRI|ISURI|ISBLANK|ISLITERAL|REGEX|TRUE|FALSE|UNDEF|ADD|DEFAULT|ALL|SERVICE|INTO|IN|NOT|IRI|URI|BNODE|RAND|ABS|CEIL|FLOOR|ROUND|CONCAT|STRLEN|UCASE|LCASE|ENCODE_FOR_URI|CONTAINS|STRSTARTS|STRENDS|STRBEFORE|STRAFTER|YEAR|MONTH|DAY|HOURS|MINUTES|SECONDS|TIMEZONE|TZ|NOW|UUID|STRUUID|MD5|SHA1|SHA256|SHA384|SHA512|COALESCE|IF|STRLANG|STRDT|ISNUMERIC|SUBSTR|REPLACE|EXISTS|COUNT|SUM|MIN|MAX|AVG|SAMPLE|SEPARATOR|STR)/i ,\n\npunct:/^(\\*|a|\\.|\\{|\\}|,|\\(|\\)|;|\\[|\\]|\\|\\||&&|=|!=|!|<=|>=|<|>|\\+|-|\\/|\\^\\^|\\?|\\||\\^)/ ,\n\nstartSymbol:\"sparql11\",\nacceptEmpty:true,\n}","\"use strict\";\nvar CodeMirror = (function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})();\nCodeMirror.defineMode(\"sparql11\", function(config, parserConfig) {\n\n\tvar indentUnit = config.indentUnit;\n\n\tvar grammar = require('./_tokenizer-table.js');\n\tvar ll1_table = grammar.table;\n\n\tvar IRI_REF = '<[^<>\\\"`\\|\\{\\}\\^\\\\\\x00-\\x20]*>';\n\t/*\n\t * PN_CHARS_BASE =\n\t * '[A-Z]|[a-z]|[\\\\u00C0-\\\\u00D6]|[\\\\u00D8-\\\\u00F6]|[\\\\u00F8-\\\\u02FF]|[\\\\u0370-\\\\u037D]|[\\\\u037F-\\\\u1FFF]|[\\\\u200C-\\\\u200D]|[\\\\u2070-\\\\u218F]|[\\\\u2C00-\\\\u2FEF]|[\\\\u3001-\\\\uD7FF]|[\\\\uF900-\\\\uFDCF]|[\\\\uFDF0-\\\\uFFFD]|[\\\\u10000-\\\\uEFFFF]';\n\t */\n\n\tvar PN_CHARS_BASE =\n\t\t'[A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD]';\n\tvar PN_CHARS_U = PN_CHARS_BASE+'|_';\n\n\tvar PN_CHARS= '('+PN_CHARS_U+'|-|[0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040])';\n\tvar VARNAME = '('+PN_CHARS_U+'|[0-9])'+\n\t\t'('+PN_CHARS_U+'|[0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040])*';\n\tvar VAR1 = '\\\\?'+VARNAME;\n\tvar VAR2 = '\\\\$'+VARNAME;\n\n\tvar PN_PREFIX= '('+PN_CHARS_BASE+')((('+PN_CHARS+')|\\\\.)*('+PN_CHARS+'))?';\n\n\tvar HEX= '[0-9A-Fa-f]';\n\tvar PERCENT='(%'+HEX+HEX+')';\n\tvar PN_LOCAL_ESC='(\\\\\\\\[_~\\\\.\\\\-!\\\\$&\\'\\\\(\\\\)\\\\*\\\\+,;=/\\\\?#@%])';\n\tvar PLX= '('+PERCENT+'|'+PN_LOCAL_ESC+')';\n\tvar PN_LOCAL= '('+PN_CHARS_U+'|:|[0-9]|'+PLX+')(('+PN_CHARS+'|\\\\.|:|'+PLX+')*('+PN_CHARS+'|:|'+PLX+'))?';\n\tvar BLANK_NODE_LABEL = '_:('+PN_CHARS_U+'|[0-9])(('+PN_CHARS+'|\\\\.)*'+PN_CHARS+')?';\n\tvar PNAME_NS = '('+PN_PREFIX+')?:';\n\tvar PNAME_LN = PNAME_NS+PN_LOCAL;\n\tvar LANGTAG = '@[a-zA-Z]+(-[a-zA-Z0-9]+)*';\n\n\tvar EXPONENT = '[eE][\\\\+-]?[0-9]+';\n\tvar INTEGER = '[0-9]+';\n\tvar DECIMAL = '(([0-9]+\\\\.[0-9]*)|(\\\\.[0-9]+))';\n\tvar DOUBLE =\n\t\t'(([0-9]+\\\\.[0-9]*'+EXPONENT+')|'+\n\t\t'(\\\\.[0-9]+'+EXPONENT+')|'+\n\t\t'([0-9]+'+EXPONENT+'))';\n\n\tvar INTEGER_POSITIVE = '\\\\+' + INTEGER;\n\tvar DECIMAL_POSITIVE = '\\\\+' + DECIMAL;\n\tvar DOUBLE_POSITIVE = '\\\\+' + DOUBLE;\n\tvar INTEGER_NEGATIVE = '-' + INTEGER;\n\tvar DECIMAL_NEGATIVE = '-' + DECIMAL;\n\tvar DOUBLE_NEGATIVE = '-' + DOUBLE;\n\n\tvar ECHAR = '\\\\\\\\[tbnrf\\\\\\\\\"\\']';\n\n\n\t //IMPORTANT: this unicode rule is not in the official grammar.\n //Reason: https://github.com/YASGUI/YASQE/issues/49\n //unicode escape sequences (which the sparql spec considers part of the pre-processing of sparql queries)\n //are marked as invalid. We have little choice (other than adding a layer of complixity) than to modify the grammar accordingly\n //however, for now only allow these escape sequences in literals (where actually, this should be allows in e.g. prefixes as well)\n\tvar hex4 = HEX + '{4}'\n\tvar unicode = '(\\\\\\\\u' + hex4 +'|\\\\\\\\U00(10|0' + HEX + ')'+ hex4 + ')';\n\tvar LINE_BREAK = \"\\n\";\n\tvar STRING_LITERAL1 = \"'(([^\\\\x27\\\\x5C\\\\x0A\\\\x0D])|\"+ECHAR+\"|\" + unicode + \")*'\";\n\tvar STRING_LITERAL2 = '\"(([^\\\\x22\\\\x5C\\\\x0A\\\\x0D])|'+ECHAR+'|' + unicode + ')*\"';\n\n\tvar STRING_LITERAL_LONG = {\n\t\tSINGLE: {\n\t\t\tCAT: \"STRING_LITERAL_LONG1\",\n\t\t\tQUOTES: \"'''\",\n\t\t\tCONTENTS: \"(('|'')?([^'\\\\\\\\]|\"+ECHAR+\"|\"+unicode+\"))*\",\n\n\t\t},\n\t\tDOUBLE: {\n\t\t\tCAT: \"STRING_LITERAL_LONG2\",\n\t\t\tQUOTES: '\"\"\"',\n\t\t\tCONTENTS: '((\"|\"\")?([^\"\\\\\\\\]|'+ECHAR+'|'+unicode+'))*',\n\t\t}\n\t};\n\tfor (var key in STRING_LITERAL_LONG) {\n\t\tSTRING_LITERAL_LONG[key].COMPLETE = STRING_LITERAL_LONG[key].QUOTES + STRING_LITERAL_LONG[key].CONTENTS + STRING_LITERAL_LONG[key].QUOTES;\n\t}\n//\tvar STRING_LITERAL_LONG_QUOTES = {\n//\t\t\"STRING_LITERAL_LONG_QUOTES1\": \"'''\",\n//\t\t\"STRING_LITERAL_LONG_QUOTES2\": '\"\"\"',\n//\t}\n//\tvar STRING_LITERAL_LONG_CONTENTS = {\n//\t\t\"STRING_LITERAL_LONG_QUOTES1\": \"(('|'')?([^'\\\\\\\\]|\"+ECHAR+\"|\"+unicode+\"))*\",\n//\t\t\"STRING_LITERAL_LONG_QUOTES2\": '((\"|\"\")?([^\"\\\\\\\\]|'+ECHAR+'|'+unicode+'))*'\n//\t};\n//\tvar STRING_LITERAL_LONG1 = STRING_LITERAL_LONG['SINGLE'].QUOTES + STRING_LITERAL_LONG['SINGLE'].CONTENTS + STRING_LITERAL_LONG['SINGLE'].QUOTES;\n//\tvar STRING_LITERAL_LONG2 = STRING_LITERAL_LONG['DOUBLE'].QUOTES + STRING_LITERAL_LONG['DOUBLE'].CONTENTS + STRING_LITERAL_LONG['DOUBLE'].QUOTES;\n\n//\tvar stringLiteralLongContentTerminals = {};\n//\tfor (var key in STRING_LITERAL_LONG) {\n//\t\tstringLiteralLongContentTerminals[key] = {\n//\t\t\tname: key,\n//\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG_CONTENTS[key]),\n//\t\t\tstyle:\"string\"\n//\t\t};\n//\t}\n\t//some regular expressions not used in regular terminals, because this is used accross lines\n\tvar stringLiteralLongRegex = {};\n\tfor (var key in STRING_LITERAL_LONG) {\n\t\tstringLiteralLongRegex[key] = {\n\t\t\tcomplete: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].COMPLETE),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\tcontents: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].CONTENTS),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\tclosing: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].CONTENTS + STRING_LITERAL_LONG[key].QUOTES),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\t\t\tquotes: {\n\t\t\t\tname: \"STRING_LITERAL_LONG_QUOTES_\" + key,\n\t\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL_LONG[key].QUOTES),\n\t\t\t\tstyle:\"string\"\n\t\t\t},\n\n\t\t}\n\t}\n\n\tvar WS = '[\\\\x20\\\\x09\\\\x0D\\\\x0A]';\n\t// Careful! Code mirror feeds one line at a time with no \\n\n\t// ... but otherwise comment is terminated by \\n\n\tvar COMMENT = '#([^\\\\n\\\\r]*[\\\\n\\\\r]|[^\\\\n\\\\r]*$)';\n\tvar WS_OR_COMMENT_STAR = '('+WS+'|('+COMMENT+'))*';\n\tvar NIL = '\\\\('+WS_OR_COMMENT_STAR+'\\\\)';\n\tvar ANON = '\\\\['+WS_OR_COMMENT_STAR+'\\\\]';\n\tvar terminals= [\n\t\t{ name: \"WS\",\n\t\t\tregex:new RegExp(\"^\"+WS+\"+\"),\n\t\t\tstyle:\"ws\" },\n\n\t\t{ name: \"COMMENT\",\n\t\t\tregex:new RegExp(\"^\"+COMMENT),\n\t\t\tstyle:\"comment\" },\n\n\t\t{ name: \"IRI_REF\",\n\t\t\tregex:new RegExp(\"^\"+IRI_REF),\n\t\t\tstyle:\"variable-3\" },\n\n\t\t{ name: \"VAR1\",\n\t\t\tregex:new RegExp(\"^\"+VAR1),\n\t\t\tstyle:\"atom\"},\n\n\t\t{ name: \"VAR2\",\n\t\t\tregex:new RegExp(\"^\"+VAR2),\n\t\t\tstyle:\"atom\"},\n\n\t\t{ name: \"LANGTAG\",\n\t\t\tregex:new RegExp(\"^\"+LANGTAG),\n\t\t\tstyle:\"meta\"},\n\n\t\t{ name: \"DOUBLE\",\n\t\t\tregex:new RegExp(\"^\"+DOUBLE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DECIMAL\",\n\t\t\tregex:new RegExp(\"^\"+DECIMAL),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"INTEGER\",\n\t\t\tregex:new RegExp(\"^\"+INTEGER),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DOUBLE_POSITIVE\",\n\t\t\tregex:new RegExp(\"^\"+DOUBLE_POSITIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DECIMAL_POSITIVE\",\n\t\t\tregex:new RegExp(\"^\"+DECIMAL_POSITIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"INTEGER_POSITIVE\",\n\t\t\tregex:new RegExp(\"^\"+INTEGER_POSITIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DOUBLE_NEGATIVE\",\n\t\t\tregex:new RegExp(\"^\"+DOUBLE_NEGATIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"DECIMAL_NEGATIVE\",\n\t\t\tregex:new RegExp(\"^\"+DECIMAL_NEGATIVE),\n\t\t\tstyle:\"number\" },\n\n\t\t{ name: \"INTEGER_NEGATIVE\",\n\t\t\tregex:new RegExp(\"^\"+INTEGER_NEGATIVE),\n\t\t\tstyle:\"number\" },\n//\t\tstringLiteralLongRegex.SINGLE.complete,\n//\t\tstringLiteralLongRegex.DOUBLE.complete,\n//\t\tstringLiteralLongRegex.SINGLE.quotes,\n//\t\tstringLiteralLongRegex.DOUBLE.quotes,\n\n\t\t{ name: \"STRING_LITERAL1\",\n\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL1),\n\t\t\tstyle:\"string\" },\n\n\t\t{ name: \"STRING_LITERAL2\",\n\t\t\tregex:new RegExp(\"^\"+STRING_LITERAL2),\n\t\t\tstyle:\"string\" },\n\n\t\t// Enclosed comments won't be highlighted\n\t\t{ name: \"NIL\",\n\t\t\tregex:new RegExp(\"^\"+NIL),\n\t\t\tstyle:\"punc\" },\n\n\t\t// Enclosed comments won't be highlighted\n\t\t{ name: \"ANON\",\n\t\t\tregex:new RegExp(\"^\"+ANON),\n\t\t\tstyle:\"punc\" },\n\n\t\t{ name: \"PNAME_LN\",\n\t\t\tregex:new RegExp(\"^\"+PNAME_LN),\n\t\t\tstyle:\"string-2\" },\n\n\t\t{ name: \"PNAME_NS\",\n\t\t\tregex:new RegExp(\"^\"+PNAME_NS),\n\t\t\tstyle:\"string-2\" },\n\n\t\t{ name: \"BLANK_NODE_LABEL\",\n\t\t\tregex:new RegExp(\"^\"+BLANK_NODE_LABEL),\n\t\t\tstyle:\"string-2\" }\n\t];\n\n\tfunction getPossibles(symbol) {\n\t\tvar possibles=[], possiblesOb=ll1_table[symbol];\n\t\tif (possiblesOb!=undefined) {\n\t\t\tfor (var property in possiblesOb) {\n\t\t\t\tpossibles.push(property.toString());\n\t\t\t}\n\t\t} else {\n\t\t\tpossibles.push(symbol);\n\t\t}\n\t\treturn possibles;\n\t}\n\n\n\tfunction tokenBase(stream, state) {\n\n\t\tfunction nextToken() {\n\t\t\tvar consumed=null;\n\t\t\tif (state.inLiteral) {\n\n\t\t\t\tvar closingQuotes = false;\n\t\t\t\t//multi-line literal. try to parse contents.\n\t\t\t\tconsumed = stream.match(stringLiteralLongRegex[state.inLiteral].contents.regex, true, false);\n\t\t\t\tif (consumed && consumed[0].length == 0) {\n\t\t\t\t\t//try seeing whether we can consume closing quotes, to avoid stopping\n\t\t\t\t\tconsumed = stream.match(stringLiteralLongRegex[state.inLiteral].closing.regex, true, false);\n\t\t\t\t\tclosingQuotes = true;\n\t\t\t\t}\n\n\t\t\t\tif (consumed && consumed[0].length > 0) {\n\t\t\t\t\t//some string content here.\n\t\t\t\t\t var returnObj = {\n\t\t\t\t\t\tquotePos: (closingQuotes? 'end': 'content'),\n\t\t\t\t\t\tcat: STRING_LITERAL_LONG[state.inLiteral].CAT,\n\t\t\t\t\t\tstyle: stringLiteralLongRegex[state.inLiteral].complete.style,\n\t\t\t\t\t\ttext: consumed[0],\n\t\t\t\t\t\tstart: stream.start\n\t\t\t\t\t};\n\t\t\t\t\t if (closingQuotes) state.inLiteral = false;\n\t\t\t\t\t return returnObj;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Multiline literals\n\t\t\tfor (var quoteType in stringLiteralLongRegex) {\n\t\t\t\tconsumed= stream.match(stringLiteralLongRegex[quoteType].quotes.regex,true,false);\n\t\t\t\tif (consumed) {\n\t\t\t\t\tvar quotePos;\n\t\t\t\t\tif (state.inLiteral) {\n\t\t\t\t\t\t//end of literal. everything is fine\n\t\t\t\t\t\tstate.inLiteral = false;\n\t\t\t\t\t\tquotePos = 'end';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.inLiteral = quoteType;\n\t\t\t\t\t\tquotePos = 'start';\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcat: STRING_LITERAL_LONG[quoteType].CAT,\n\t\t\t\t\t\tstyle: stringLiteralLongRegex[quoteType].quotes.style,\n\t\t\t\t\t\ttext: consumed[0],\n\t\t\t\t\t\tquotePos: quotePos,\n\t\t\t\t\t\tstart: stream.start\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\n\n\t\t\t// Tokens defined by individual regular expressions\n\t\t\tfor (var i=0; i<terminals.length; ++i) {\n\t\t\t\tconsumed= stream.match(terminals[i].regex,true,false);\n\t\t\t\tif (consumed) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcat: terminals[i].name,\n\t\t\t\t\t\tstyle: terminals[i].style,\n\t\t\t\t\t\ttext: consumed[0],\n\t\t\t\t\t\tstart: stream.start\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Keywords\n\t\t\tconsumed= stream.match(grammar.keywords,true,false);\n\t\t\tif (consumed)\n\t\t\t\treturn { cat: stream.current().toUpperCase(),\n\t\t\t\t\t\t\t\t style: \"keyword\",\n\t\t\t\t\t\t\t\t text: consumed[0],\n\t\t\t\t\t\t\t\t start: stream.start\n\t\t\t\t\t\t\t };\n\n\t\t\t// Punctuation\n\t\t\tconsumed= stream.match(grammar.punct,true,false);\n\t\t\tif (consumed)\n\t\t\t\treturn { cat: stream.current(),\n\t\t\t\t\t\t\t\t style: \"punc\",\n\t\t\t\t\t\t\t\t text: consumed[0],\n\t\t\t\t\t\t\t\t start: stream.start\n\t\t\t\t\t\t\t };\n\n\t\t\t// Token is invalid\n\t\t\t// better consume something anyway, or else we're stuck\n\t\t\tconsumed= stream.match(/^.[A-Za-z0-9]*/,true,false);\n\t\t\treturn { cat:\"<invalid_token>\",\n\t\t\t\t\t\t\t style: \"error\",\n\t\t\t\t\t\t\t text: consumed[0],\n\t\t\t\t\t\t\t start: stream.start\n\t\t\t\t\t\t };\n\t\t}\n\n\t\tfunction recordFailurePos() {\n\t\t\t// tokenOb.style= \"sp-invalid\";\n\t\t\tvar col= stream.column();\n\t\t\tstate.errorStartPos= col;\n\t\t\tstate.errorEndPos= col+tokenOb.text.length;\n\t\t};\n\t\tfunction setQueryType(s) {\n\t\t\tif (state.queryType==null) {\n\t\t\t\tif (s ==\"SELECT\" || s==\"CONSTRUCT\" || s==\"ASK\" || s==\"DESCRIBE\" || s==\"INSERT\" || s==\"DELETE\" || s==\"LOAD\" || s==\"CLEAR\" || s==\"CREATE\" || s==\"DROP\" || s==\"COPY\" || s==\"MOVE\" || s==\"ADD\")\n\t\t\t\t\tstate.queryType=s;\n\t\t\t}\n\t\t}\n\n\t\t// Some fake non-terminals are just there to have side-effect on state\n\t\t// - i.e. allow or disallow variables and bnodes in certain non-nesting\n\t\t// contexts\n\t\tfunction setSideConditions(topSymbol) {\n\t\t\tif (topSymbol === \"prefixDecl\") {\n\t\t\t\tstate.inPrefixDecl = true;\n\t\t\t} else {\n\t\t\t\tstate.inPrefixDecl = false;\n\t\t\t}\n\t\t\tswitch(topSymbol) {\n\t\t\t\tcase \"disallowVars\":\n\t\t\t\t\t\tstate.allowVars=false;break;\n\t\t\t\tcase \"allowVars\":\n\t\t\t\t\tstate.allowVars=true; break;\n\t\t\t\tcase \"disallowBnodes\":\n\t\t\t\t\tstate.allowBnodes=false;break;\n\t\t\t\tcase \"allowBnodes\":\n\t\t\t\t\tstate.allowBnodes=true; break;\n\t\t\t\tcase \"storeProperty\":\n\t\t\t\t\tstate.storeProperty=true; break;\n\t\t\t}\n\t\t}\n\n\t\tfunction checkSideConditions(topSymbol) {\n\t\t\treturn(\n\t\t\t\t(state.allowVars || topSymbol!=\"var\") &&\n\t\t\t\t\t(state.allowBnodes ||\n\t\t\t\t\t (topSymbol!=\"blankNode\" &&\n\t\t\t\t\t\ttopSymbol!=\"blankNodePropertyList\" &&\n\t\t\t\t\t\ttopSymbol!=\"blankNodePropertyListPath\")));\n\t\t}\n\n\t\t// CodeMirror works with one line at a time,\n\t\t// but newline should behave like whitespace\n\t\t// - i.e. a definite break between tokens (for autocompleter)\n\t\tif (stream.pos==0)\n\t\t\tstate.possibleCurrent= state.possibleNext;\n\n\t\tvar tokenOb= nextToken();\n\n\n\t\tif (tokenOb.cat==\"<invalid_token>\") {\n\t\t\t// set error state, and\n\t\t\tif (state.OK==true) {\n\t\t\t\tstate.OK=false;\n\t\t\t\trecordFailurePos();\n\t\t\t}\n\t\t\tstate.complete=false;\n\t\t\t// alert(\"Invalid:\"+tokenOb.text);\n\t\t\treturn tokenOb.style;\n\t\t}\n\n\t\tif (tokenOb.cat == \"WS\" || tokenOb.cat == \"COMMENT\" || (tokenOb.quotePos && tokenOb.quotePos != 'end')) {\n\t\t\tstate.possibleCurrent = state.possibleNext;\n\t\t\treturn(tokenOb.style);\n\t\t}\n\t\t// Otherwise, run the parser until the token is digested\n\t\t// or failure\n\t\tvar finished= false;\n\t\tvar topSymbol;\n\t\tvar token= tokenOb.cat;\n\n\t\tif (!tokenOb.quotePos || tokenOb.quotePos == 'end') {\n\t\t// Incremental LL1 parse\n\t\t\twhile(state.stack.length>0 && token && state.OK && !finished ) {\n\t\t\t\ttopSymbol= state.stack.pop();\n\n\t\t\t\tif (!ll1_table[topSymbol]) {\n\t\t\t\t\t// Top symbol is a terminal\n\t\t\t\t\tif (topSymbol == token) {\n\t\t\t\t\t\tif (state.inPrefixDecl) {\n\t\t\t\t\t\t\tif (topSymbol === \"PNAME_NS\" && tokenOb.text.length > 0) {\n\t\t\t\t\t\t\t\tstate.currentPnameNs = tokenOb.text.slice(0,-1);\n\t\t\t\t\t\t\t} else if (state.currentPnameNs !== undefined && tokenOb.text.length > 2) {\n\t\t\t\t\t\t\t\tstate.prefixes[state.currentPnameNs] = tokenOb.text.slice(1,-1);\n\t\t\t\t\t\t\t\t//reset current pname ns\n\t\t\t\t\t\t\t\tstate.currentPnameNs = undefined;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Matching terminals\n\t\t\t\t\t\t// - consume token from input stream\n\t\t\t\t\t\tfinished=true;\n\t\t\t\t\t\tsetQueryType(topSymbol);\n\t\t\t\t\t\t// Check whether $ (end of input token) is poss next\n\t\t\t\t\t\t// for everything on stack\n\t\t\t\t\t\tvar allNillable=true;\n\t\t\t\t\t\tfor(var sp=state.stack.length;sp>0;--sp) {\n\t\t\t\t\t\t\tvar item=ll1_table[state.stack[sp-1]];\n\t\t\t\t\t\t\tif (!item || !item[\"$\"])\n\t\t\t\t\t\t\t\tallNillable=false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstate.complete= allNillable;\n\t\t\t\t\t\tif (state.storeProperty && token.cat != \"punc\") {\n\t\t\t\t\t\t\tstate.lastProperty = tokenOb.text;\n\t\t\t\t\t\t\tstate.storeProperty = false;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t//check whether a used prefix is actually defined\n\t\t\t\t\t\tif (!state.inPrefixDecl && (token === \"PNAME_NS\" || token === \"PNAME_LN\")) {\n\t\t\t\t\t\t\tvar colonIndex = tokenOb.text.indexOf(':');\n\t\t\t\t\t\t\tif (colonIndex >= 0) {\n\t\t\t\t\t\t\t\tvar prefNs = tokenOb.text.slice(0,colonIndex)\n\t\t\t\t\t\t\t\t//avoid warnings for missing bif prefixes (yuck, virtuoso-specific)\n\t\t\t\t\t\t\t\tif (!state.prefixes[prefNs] && prefNs !== 'bif') {\n\t\t\t\t\t\t\t\t\tstate.OK = false;\n\t\t\t\t\t\t\t\t\trecordFailurePos();\n\t\t\t\t\t\t\t\t\tstate.errorMsg = \"Prefix '\" + prefNs + \"' is not defined\";\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate.OK=false;\n\t\t\t\t\t\tstate.complete=false;\n\t\t\t\t\t\trecordFailurePos();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// topSymbol is nonterminal\n\t\t\t\t\t// - see if there is an entry for topSymbol\n\t\t\t\t\t// and nextToken in table\n\t\t\t\t\tvar nextSymbols= ll1_table[topSymbol][token];\n\t\t\t\t\tif (nextSymbols!=undefined && checkSideConditions(topSymbol)) {\n\t\t\t\t\t\t// Match - copy RHS of rule to stack\n\t\t\t\t\t\tfor (var i=nextSymbols.length-1; i>=0; --i) {\n\t\t\t\t\t\t\tstate.stack.push(nextSymbols[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Peform any non-grammatical side-effects\n\t\t\t\t\t\tsetSideConditions(topSymbol);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No match in table - fail\n\t\t\t\t\t\tstate.OK=false;\n\t\t\t\t\t\tstate.complete=false;\n\t\t\t\t\t\trecordFailurePos();\n\t\t\t\t\t\tstate.stack.push(topSymbol); // Shove topSymbol back on stack\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!finished && state.OK) {\n\t\t\tstate.OK=false; state.complete=false; recordFailurePos();\n\t\t}\n\n\t\tif (state.possibleCurrent.indexOf('a') >= 0){\n\t\t\tstate.lastPredicateOffset = tokenOb.start;\n\t\t}\n\t\tstate.possibleCurrent = state.possibleNext;\n\n\t\tstate.possibleNext = getPossibles(state.stack[state.stack.length-1]);\n\n\t\treturn tokenOb.style;\n\t}\n\n\tvar indentTop={\n\t\t\"*[,, object]\": 3,\n\t\t\"*[(,),object]\": 3,\n\t\t\"*[(,),objectPath]\": 3,\n\t\t\"*[/,pathEltOrInverse]\": 2,\n\t\t\"object\": 2,\n\t\t\"objectPath\": 2,\n\t\t\"objectList\": 2,\n\t\t\"objectListPath\": 2,\n\t\t\"storeProperty\": 2,\n\t\t\"pathMod\": 2,\n\t\t\"?pathMod\": 2,\n\t\t\"propertyListNotEmpty\": 1,\n\t\t\"propertyList\": 1,\n\t\t\"propertyListPath\": 1,\n\t\t\"propertyListPathNotEmpty\": 1,\n\t\t\"?[verb,objectList]\": 1,\n//\t\t\"?[or([verbPath, verbSimple]),objectList]\": 1,\n\t};\n\n\tvar indentTable={\n\t\t\"}\":1,\n\t\t\"]\":0,\n\t\t\")\":1,\n\t\t\"{\":-1,\n\t\t\"(\":-1,\n//\t\t\"*[;,?[or([verbPath,verbSimple]),objectList]]\": 1,\n\t};\n\n\n\tfunction indent(state, textAfter) {\n\t\t//just avoid we don't indent multi-line literals\n\t\tif (state.inLiteral) return 0;\n\t\tif (state.stack.length && state.stack[state.stack.length-1] == \"?[or([verbPath,verbSimple]),objectList]\") {\n\t\t\t//we are after a semi-colon. I.e., nicely align this line with predicate position of previous line\n\t\t\treturn state.lastPredicateOffset;\n\t\t} else {\n\t\t\tvar n = 0; // indent level\n\t\t\tvar i = state.stack.length-1;\n\t\t\tif (/^[\\}\\]\\)]/.test(textAfter)) {\n\t\t\t\t// Skip stack items until after matching bracket\n\t\t\t\tvar closeBracket=textAfter.substr(0,1);\n\t\t\t\tfor( ;i>=0;--i)\t{\n\t\t\t\t\tif (state.stack[i]==closeBracket) {\n\t\t\t\t\t\t--i;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Consider nullable non-terminals if at top of stack\n\t\t\t\tvar dn = indentTop[state.stack[i]];\n\t\t\t\tif (dn) {\n\t\t\t\t\tn += dn;\n\t\t\t\t\t--i;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor( ;i>=0;--i)\t{\n\t\t\t\tvar dn = indentTable[state.stack[i]];\n\t\t\t\tif (dn) {\n\t\t\t\t\tn+=dn;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn n * config.indentUnit;\n\t\t}\n\t};\n\n\treturn {\n\t\ttoken: tokenBase,\n\t\tstartState: function(base) {\n\t\t\treturn {\n\t\t\t\ttokenize: tokenBase,\n\t\t\t\tOK: true,\n\t\t\t\tcomplete: grammar.acceptEmpty,\n\t\t\t\terrorStartPos: null,\n\t\t\t\terrorEndPos: null,\n\t\t\t\tqueryType: null,\n\t\t\t\tpossibleCurrent: getPossibles(grammar.startSymbol),\n\t\t\t\tpossibleNext: getPossibles(grammar.startSymbol),\n\t\t\t\tallowVars : true,\n\t\t\t\tallowBnodes : true,\n\t\t\t\tstoreProperty : false,\n\t\t\t\tlastProperty : \"\",\n\t\t\t\tinLiteral: false,\n\t\t\t\tstack: [grammar.startSymbol],\n\t\t\t\tlastPredicateOffset: config.indentUnit,\n\t\t\t\tprefixes: {},\n\t\t\t};\n\t\t},\n\t\tindent: indent,\n\t\telectricChars: \"}])\"\n\t};\n}\n);\nCodeMirror.defineMIME(\"application/x-sparql-query\", \"sparql11\");\n","/*\n* TRIE implementation in Javascript\n* Copyright (c) 2010 Saurabh Odhyan | http://odhyan.com\n* \n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n* \n* The above copyright notice and this permission notice shall be included in\n* all copies or substantial portions of the Software.\n* \n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n* THE SOFTWARE.\n*\n* Date: Nov 7, 2010\n*/\n\n/*\n* A trie, or prefix tree, is a multi-way tree structure useful for storing strings over an alphabet. \n* It has been used to store large dictionaries of English (say) words in spell-checking programs \n* and in natural-language \"understanding\" programs. \n* @see http://en.wikipedia.org/wiki/Trie\n* @see http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Tree/Trie/\n/*\n\n* @class Trie\n* @constructor\n*/ \nvar Trie = module.exports = function() {\n this.words = 0;\n this.prefixes = 0;\n this.children = [];\n};\n\nTrie.prototype = {\n \n /*\n * Insert a word into the dictionary. \n * Recursively traverse through the trie nodes, and create new node if does not already exist.\n *\n * @method insert\n * @param {String} str Word to insert in the dictionary\n * @param {Integer} pos Current index of the string to be inserted\n * @return {Void}\n */\n insert: function(str, pos) {\n if(str.length == 0) { //blank string cannot be inserted\n return;\n }\n \n var T = this,\n k,\n child;\n \n if(pos === undefined) {\n pos = 0;\n }\n if(pos === str.length) {\n T.words ++;\n return;\n }\n T.prefixes ++;\n k = str[pos];\n if(T.children[k] === undefined) { //if node for this char doesn't exist, create one\n T.children[k] = new Trie();\n }\n child = T.children[k];\n child.insert(str, pos + 1);\n },\n \n /*\n * Remove a word from the dictionary.\n *\n * @method remove\n * @param {String} str Word to be removed\n * @param {Integer} pos Current index of the string to be removed\n * @return {Void}\n */\n remove: function(str, pos) {\n if(str.length == 0) {\n return;\n }\n \n var T = this,\n k,\n child;\n \n if(pos === undefined) {\n pos = 0;\n } \n if(T === undefined) {\n return;\n }\n if(pos === str.length) {\n T.words --;\n return;\n }\n T.prefixes --;\n k = str[pos];\n child = T.children[k];\n child.remove(str, pos + 1);\n },\n \n /*\n * Update an existing word in the dictionary. \n * This method removes the old word from the dictionary and inserts the new word.\n *\n * @method update\n * @param {String} strOld The old word to be replaced\n * @param {String} strNew The new word to be inserted\n * @return {Void}\n */\n update: function(strOld, strNew) {\n if(strOld.length == 0 || strNew.length == 0) {\n return;\n }\n this.remove(strOld);\n this.insert(strNew);\n },\n \n /*\n * Count the number of times a given word has been inserted into the dictionary\n *\n * @method countWord\n * @param {String} str Word to get count of\n * @param {Integer} pos Current index of the given word\n * @return {Integer} The number of times a given word exists in the dictionary\n */\n countWord: function(str, pos) {\n if(str.length == 0) {\n return 0;\n }\n \n var T = this,\n k,\n child,\n ret = 0;\n \n if(pos === undefined) {\n pos = 0;\n } \n if(pos === str.length) {\n return T.words;\n }\n k = str[pos];\n child = T.children[k];\n if(child !== undefined) { //node exists\n ret = child.countWord(str, pos + 1);\n }\n return ret;\n },\n \n /*\n * Count the number of times a given prefix exists in the dictionary\n *\n * @method countPrefix\n * @param {String} str Prefix to get count of\n * @param {Integer} pos Current index of the given prefix\n * @return {Integer} The number of times a given prefix exists in the dictionary\n */\n countPrefix: function(str, pos) {\n if(str.length == 0) {\n return 0;\n }\n \n var T = this,\n k,\n child,\n ret = 0;\n\n if(pos === undefined) {\n pos = 0;\n }\n if(pos === str.length) {\n return T.prefixes;\n }\n var k = str[pos];\n child = T.children[k];\n if(child !== undefined) { //node exists\n ret = child.countPrefix(str, pos + 1); \n }\n return ret; \n },\n \n /*\n * Find a word in the dictionary\n *\n * @method find\n * @param {String} str The word to find in the dictionary\n * @return {Boolean} True if the word exists in the dictionary, else false\n */\n find: function(str) {\n if(str.length == 0) {\n return false;\n }\n \n if(this.countWord(str) > 0) {\n return true;\n } else {\n return false;\n }\n },\n \n /*\n * Get all words in the dictionary\n *\n * @method getAllWords\n * @param {String} str Prefix of current word\n * @return {Array} Array of words in the dictionary\n */\n getAllWords: function(str) {\n var T = this,\n k,\n child,\n ret = [];\n if(str === undefined) {\n str = \"\";\n }\n if(T === undefined) {\n return [];\n }\n if(T.words > 0) {\n ret.push(str);\n }\n for(k in T.children) {\n child = T.children[k];\n ret = ret.concat(child.getAllWords(str + k));\n }\n return ret;\n },\n \n /*\n * Autocomplete a given prefix\n *\n * @method autoComplete\n * @param {String} str Prefix to be completed based on dictionary entries\n * @param {Integer} pos Current index of the prefix\n * @return {Array} Array of possible suggestions\n */\n autoComplete: function(str, pos) {\n \n \n var T = this,\n k,\n child;\n if(str.length == 0) {\n\t\t\tif (pos === undefined) {\n\t\t\t\treturn T.getAllWords(str);\n\t\t\t} else {\n\t\t\t\treturn [];\n\t\t\t}\n }\n if(pos === undefined) {\n pos = 0;\n } \n k = str[pos];\n child = T.children[k];\n if(child === undefined) { //node doesn't exist\n return [];\n }\n if(pos === str.length - 1) {\n return child.getAllWords(str);\n }\n return child.autoComplete(str, pos + 1);\n }\n};\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"fullScreen\", false, function(cm, val, old) {\n if (old == CodeMirror.Init) old = false;\n if (!old == !val) return;\n if (val) setFullscreen(cm);\n else setNormal(cm);\n });\n\n function setFullscreen(cm) {\n var wrap = cm.getWrapperElement();\n cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset,\n width: wrap.style.width, height: wrap.style.height};\n wrap.style.width = \"\";\n wrap.style.height = \"auto\";\n wrap.className += \" CodeMirror-fullscreen\";\n document.documentElement.style.overflow = \"hidden\";\n cm.refresh();\n }\n\n function setNormal(cm) {\n var wrap = cm.getWrapperElement();\n wrap.className = wrap.className.replace(/\\s*CodeMirror-fullscreen\\b/, \"\");\n document.documentElement.style.overflow = \"\";\n var info = cm.state.fullScreenRestore;\n wrap.style.width = info.width; wrap.style.height = info.height;\n window.scrollTo(info.scrollLeft, info.scrollTop);\n cm.refresh();\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\"};\n\n function findMatchingBracket(cm, where, strict, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\\]]/;\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {\n var match = matching[ch];\n if ((match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);\n if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textare whever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n var currentlyHighlighted = null;\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, strict, config){\n return findMatchingBracket(this, pos, strict, config);\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.registerHelper(\"fold\", \"brace\", function(cm, start) {\n var line = start.line, lineText = cm.getLine(line);\n var tokenType;\n\n function findOpening(openCh) {\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n if (pass == 1 && found < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n if (!/^(comment|string)/.test(tokenType)) return found + 1;\n at = found - 1;\n }\n }\n\n var startToken = \"{\", endToken = \"}\", startCh = findOpening(\"{\");\n if (startCh == null) {\n startToken = \"[\", endToken = \"]\";\n startCh = findOpening(\"[\");\n }\n\n if (startCh == null) return;\n var count = 1, lastLine = cm.lastLine(), end, endCh;\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i), pos = i == line ? startCh : 0;\n for (;;) {\n var nextOpen = text.indexOf(startToken, pos), nextClose = text.indexOf(endToken, pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == tokenType) {\n if (pos == nextOpen) ++count;\n else if (!--count) { end = i; endCh = pos; break outer; }\n }\n ++pos;\n }\n }\n if (end == null || line == end && endCh == startCh) return;\n return {from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)};\n});\n\nCodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type != \"keyword\" || start.string != \"import\") return null;\n // Now find closing semicolon, return its position\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i), semi = text.indexOf(\";\");\n if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};\n }\n }\n\n var startLine = start.line, has = hasImport(startLine), prev;\n if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1))\n return null;\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to: end};\n});\n\nCodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n }\n\n var startLine = start.line, has = hasInclude(startLine);\n if (has == null || hasInclude(startLine - 1) != null) return null;\n for (var end = startLine;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n return {from: CodeMirror.Pos(startLine, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))};\n});\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n function doFold(cm, pos, options, force) {\n if (options && options.call) {\n var finder = options;\n options = null;\n } else {\n var finder = getOption(cm, options, \"rangeFinder\");\n }\n if (typeof pos == \"number\") pos = CodeMirror.Pos(pos, 0);\n var minSize = getOption(cm, options, \"minFoldSize\");\n\n function getRange(allowFolded) {\n var range = finder(cm, pos);\n if (!range || range.to.line - range.from.line < minSize) return null;\n var marks = cm.findMarksAt(range.from);\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold && force !== \"fold\") {\n if (!allowFolded) return null;\n range.cleared = true;\n marks[i].clear();\n }\n }\n return range;\n }\n\n var range = getRange(true);\n if (getOption(cm, options, \"scanUp\")) while (!range && pos.line > cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n\n var myWidget = makeWidget(cm, options);\n CodeMirror.on(myWidget, \"mousedown\", function(e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n __isFold: true\n });\n myRange.on(\"clear\", function(from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n function makeWidget(cm, options) {\n var widget = getOption(cm, options, \"widget\");\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n }\n return widget;\n }\n\n // Clumsy backwards-compatible interface\n CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };\n };\n\n // New-style interface\n CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n doFold(this, pos, options, force);\n });\n\n CodeMirror.defineExtension(\"isFolded\", function(pos) {\n var marks = this.findMarksAt(pos);\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function(cm) {\n cm.foldCode(cm.getCursor());\n };\n CodeMirror.commands.fold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n CodeMirror.commands.unfold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"unfold\");\n };\n CodeMirror.commands.foldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), null, \"fold\");\n });\n };\n CodeMirror.commands.unfoldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), null, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function(cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n\n CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false,\n clearOnEnter: true\n };\n\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined)\n return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined)\n return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n return getOption(this, options, name);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(), require(\"./foldcode\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./foldcode\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"change\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", onChange);\n }\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"change\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", onChange);\n }\n });\n\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n function isFolded(cm, line) {\n var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold && marks[i].find().from.line == line) return marks[i];\n }\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options, cur = from;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\");\n cm.eachLine(from, to, function(line) {\n var mark = null;\n if (isFolded(cm, cur)) {\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n if (range && range.to.line - range.from.line >= minSize)\n mark = marker(opts.indicatorOpen);\n }\n cm.setGutterMarker(line, opts.gutter, mark);\n ++cur;\n });\n }\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(), state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function() {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from; state.to = vp.to;\n }\n\n function onGutterClick(cm, line, gutter) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n if (gutter != opts.gutter) return;\n var folded = isFolded(cm, line);\n if (folded) folded.clear();\n else cm.foldCode(Pos(line, 0), opts.rangeFinder);\n }\n\n function onChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);\n }\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() {\n var vp = cm.getViewport();\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function() {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var line = from.line;\n if (line >= state.from && line < state.to)\n updateFoldInfo(cm, line, line + 1);\n }\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var Pos = CodeMirror.Pos;\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch; }\n\n var nameStartChar = \"A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n var nameChar = nameStartChar + \"\\-\\:\\.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n var xmlTagStart = new RegExp(\"<(/?)([\" + nameStartChar + \"][\" + nameChar + \"]*)\", \"g\");\n\n function Iter(cm, line, ch, range) {\n this.line = line; this.ch = ch;\n this.cm = cm; this.text = cm.getLine(line);\n this.min = range ? Math.max(range.from, cm.firstLine()) : cm.firstLine();\n this.max = range ? Math.min(range.to - 1, cm.lastLine()) : cm.lastLine();\n }\n\n function tagAt(iter, ch) {\n var type = iter.cm.getTokenTypeAt(Pos(iter.line, ch));\n return type && /\\btag\\b/.test(type);\n }\n\n function nextLine(iter) {\n if (iter.line >= iter.max) return;\n iter.ch = 0;\n iter.text = iter.cm.getLine(++iter.line);\n return true;\n }\n function prevLine(iter) {\n if (iter.line <= iter.min) return;\n iter.text = iter.cm.getLine(--iter.line);\n iter.ch = iter.text.length;\n return true;\n }\n\n function toTagEnd(iter) {\n for (;;) {\n var gt = iter.text.indexOf(\">\", iter.ch);\n if (gt == -1) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt + 1; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n function toTagStart(iter) {\n for (;;) {\n var lt = iter.ch ? iter.text.lastIndexOf(\"<\", iter.ch - 1) : -1;\n if (lt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, lt + 1)) { iter.ch = lt; continue; }\n xmlTagStart.lastIndex = lt;\n iter.ch = lt;\n var match = xmlTagStart.exec(iter.text);\n if (match && match.index == lt) return match;\n }\n }\n\n function toNextTag(iter) {\n for (;;) {\n xmlTagStart.lastIndex = iter.ch;\n var found = xmlTagStart.exec(iter.text);\n if (!found) { if (nextLine(iter)) continue; else return; }\n if (!tagAt(iter, found.index + 1)) { iter.ch = found.index + 1; continue; }\n iter.ch = found.index + found[0].length;\n return found;\n }\n }\n function toPrevTag(iter) {\n for (;;) {\n var gt = iter.ch ? iter.text.lastIndexOf(\">\", iter.ch - 1) : -1;\n if (gt == -1) { if (prevLine(iter)) continue; else return; }\n if (!tagAt(iter, gt + 1)) { iter.ch = gt; continue; }\n var lastSlash = iter.text.lastIndexOf(\"/\", gt);\n var selfClose = lastSlash > -1 && !/\\S/.test(iter.text.slice(lastSlash + 1, gt));\n iter.ch = gt + 1;\n return selfClose ? \"selfClose\" : \"regular\";\n }\n }\n\n function findMatchingClose(iter, tag) {\n var stack = [];\n for (;;) {\n var next = toNextTag(iter), end, startLine = iter.line, startCh = iter.ch - (next ? next[0].length : 0);\n if (!next || !(end = toTagEnd(iter))) return;\n if (end == \"selfClose\") continue;\n if (next[1]) { // closing tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == next[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == next[2])) return {\n tag: next[2],\n from: Pos(startLine, startCh),\n to: Pos(iter.line, iter.ch)\n };\n } else { // opening tag\n stack.push(next[2]);\n }\n }\n }\n function findMatchingOpen(iter, tag) {\n var stack = [];\n for (;;) {\n var prev = toPrevTag(iter);\n if (!prev) return;\n if (prev == \"selfClose\") { toTagStart(iter); continue; }\n var endLine = iter.line, endCh = iter.ch;\n var start = toTagStart(iter);\n if (!start) return;\n if (start[1]) { // closing tag\n stack.push(start[2]);\n } else { // opening tag\n for (var i = stack.length - 1; i >= 0; --i) if (stack[i] == start[2]) {\n stack.length = i;\n break;\n }\n if (i < 0 && (!tag || tag == start[2])) return {\n tag: start[2],\n from: Pos(iter.line, iter.ch),\n to: Pos(endLine, endCh)\n };\n }\n }\n }\n\n CodeMirror.registerHelper(\"fold\", \"xml\", function(cm, start) {\n var iter = new Iter(cm, start.line, 0);\n for (;;) {\n var openTag = toNextTag(iter), end;\n if (!openTag || iter.line != start.line || !(end = toTagEnd(iter))) return;\n if (!openTag[1] && end != \"selfClose\") {\n var startPos = Pos(iter.line, iter.ch);\n var endPos = findMatchingClose(iter, openTag[2]);\n return endPos && {from: startPos, to: endPos.from};\n }\n }\n });\n CodeMirror.findMatchingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n if (iter.text.indexOf(\">\") == -1 && iter.text.indexOf(\"<\") == -1) return;\n var end = toTagEnd(iter), to = end && Pos(iter.line, iter.ch);\n var start = end && toTagStart(iter);\n if (!end || !start || cmp(iter, pos) > 0) return;\n var here = {from: Pos(iter.line, iter.ch), to: to, tag: start[2]};\n if (end == \"selfClose\") return {open: here, close: null, at: \"open\"};\n\n if (start[1]) { // closing tag\n return {open: findMatchingOpen(iter, start[2]), close: here, at: \"close\"};\n } else { // opening tag\n iter = new Iter(cm, to.line, to.ch, range);\n return {open: here, close: findMatchingClose(iter, start[2]), at: \"open\"};\n }\n };\n\n CodeMirror.findEnclosingTag = function(cm, pos, range) {\n var iter = new Iter(cm, pos.line, pos.ch, range);\n for (;;) {\n var open = findMatchingOpen(iter);\n if (!open) break;\n var forward = new Iter(cm, pos.line, pos.ch, range);\n var close = findMatchingClose(forward, open.tag);\n if (close) return {open: open, close: close};\n }\n };\n\n // Used by addon/edit/closetag.js\n CodeMirror.scanForClosingTag = function(cm, pos, name, end) {\n var iter = new Iter(cm, pos.line, pos.ch, end ? {from: 0, to: end} : null);\n return findMatchingClose(iter, name);\n };\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n this.cm.off(\"cursorActivity\", this.activityFunc);\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i];\n if (completion.hint) completion.hint(this.cm, data, completion);\n else this.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n this.close();\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < this.startPos.ch || this.cm.somethingSelected() ||\n (pos.ch && this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n if (data && this.data && isNewCompletion(this.data, data)) return;\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function isNewCompletion(old, nw) {\n var moved = CodeMirror.cmpPos(nw.from, old.from)\n return moved > 0 && old.to.ch - old.from.ch != nw.to.ch - nw.from.ch\n }\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n\n var hints = this.hints = document.createElement(\"ul\");\n hints.className = \"CodeMirror-hints\";\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(document.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(document.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n hints.style.left = left + \"px\";\n hints.style.top = top + \"px\";\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = window.innerWidth || Math.max(document.body.offsetWidth, document.documentElement.offsetWidth);\n var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight);\n (completion.options.container || document.body).appendChild(hints);\n var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;\n var scrolls = hints.scrollHeight > hints.clientHeight + 1\n var startScroll = cm.getScrollInfo();\n\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = pos.left - overlapX) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (window.pageYOffset || (document.documentElement || document.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n CodeMirror.signal(data, \"select\", completions[0], hints.firstChild);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n if (node.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node.offsetTop - 3;\n else if (node.offsetTop + node.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node.offsetTop + node.offsetHeight - this.hints.clientHeight + 3;\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur);\n var to = CodeMirror.Pos(cur.line, token.end);\n if (token.string && /\\w/.test(token.string[token.string.length - 1])) {\n var term = token.string, from = CodeMirror.Pos(cur.line, token.start);\n } else {\n var term = \"\", from = to;\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnUnfocus: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.runMode = function(string, modespec, callback, options) {\n var mode = CodeMirror.getMode(CodeMirror.defaults, modespec);\n var ie = /MSIE \\d/.test(navigator.userAgent);\n var ie_lt9 = ie && (document.documentMode == null || document.documentMode < 9);\n\n if (callback.appendChild) {\n var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize;\n var node = callback, col = 0;\n node.innerHTML = \"\";\n callback = function(text, style) {\n if (text == \"\\n\") {\n // Emitting LF or CRLF on IE8 or earlier results in an incorrect display.\n // Emitting a carriage return makes everything ok.\n node.appendChild(document.createTextNode(ie_lt9 ? '\\r' : text));\n col = 0;\n return;\n }\n var content = \"\";\n // replace tabs\n for (var pos = 0;;) {\n var idx = text.indexOf(\"\\t\", pos);\n if (idx == -1) {\n content += text.slice(pos);\n col += text.length - pos;\n break;\n } else {\n col += idx - pos;\n content += text.slice(pos, idx);\n var size = tabSize - col % tabSize;\n col += size;\n for (var i = 0; i < size; ++i) content += \" \";\n pos = idx + 1;\n }\n }\n\n if (style) {\n var sp = node.appendChild(document.createElement(\"span\"));\n sp.className = \"cm-\" + style.replace(/ +/g, \" cm-\");\n sp.appendChild(document.createTextNode(content));\n } else {\n node.appendChild(document.createTextNode(content));\n }\n };\n }\n\n var lines = CodeMirror.splitLines(string), state = (options && options.state) || CodeMirror.startState(mode);\n for (var i = 0, e = lines.length; i < e; ++i) {\n if (i) callback(\"\\n\");\n var stream = new CodeMirror.StringStream(lines[i]);\n if (!stream.string && mode.blankLine) mode.blankLine(state);\n while (!stream.eol()) {\n var style = mode.token(stream, state);\n callback(stream.current(), style, i, stream.start, state);\n stream.start = stream.pos;\n }\n }\n};\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod((function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})());\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n var Pos = CodeMirror.Pos;\n\n function SearchCursor(doc, query, pos, caseFold) {\n this.atOccurrence = false; this.doc = doc;\n if (caseFold == null && typeof query == \"string\") caseFold = false;\n\n pos = pos ? doc.clipPos(pos) : Pos(0, 0);\n this.pos = {from: pos, to: pos};\n\n // The matches method is filled in based on the type of query.\n // It takes a position and a direction, and returns an object\n // describing the next occurrence of the query, or null if no\n // more matches were found.\n if (typeof query != \"string\") { // Regexp match\n if (!query.global) query = new RegExp(query.source, query.ignoreCase ? \"ig\" : \"g\");\n this.matches = function(reverse, pos) {\n if (reverse) {\n query.lastIndex = 0;\n var line = doc.getLine(pos.line).slice(0, pos.ch), cutOff = 0, match, start;\n for (;;) {\n query.lastIndex = cutOff;\n var newMatch = query.exec(line);\n if (!newMatch) break;\n match = newMatch;\n start = match.index;\n cutOff = match.index + (match[0].length || 1);\n if (cutOff == line.length) break;\n }\n var matchLen = (match && match[0].length) || 0;\n if (!matchLen) {\n if (start == 0 && line.length == 0) {match = undefined;}\n else if (start != doc.getLine(pos.line).length) {\n matchLen++;\n }\n }\n } else {\n query.lastIndex = pos.ch;\n var line = doc.getLine(pos.line), match = query.exec(line);\n var matchLen = (match && match[0].length) || 0;\n var start = match && match.index;\n if (start + matchLen != line.length && !matchLen) matchLen = 1;\n }\n if (match && matchLen)\n return {from: Pos(pos.line, start),\n to: Pos(pos.line, start + matchLen),\n match: match};\n };\n } else { // String query\n var origQuery = query;\n if (caseFold) query = query.toLowerCase();\n var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;};\n var target = query.split(\"\\n\");\n // Different methods for single-line and multi-line queries\n if (target.length == 1) {\n if (!query.length) {\n // Empty string would match anything and never progress, so\n // we define it to match nothing instead.\n this.matches = function() {};\n } else {\n this.matches = function(reverse, pos) {\n if (reverse) {\n var orig = doc.getLine(pos.line).slice(0, pos.ch), line = fold(orig);\n var match = line.lastIndexOf(query);\n if (match > -1) {\n match = adjustPos(orig, line, match);\n return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n }\n } else {\n var orig = doc.getLine(pos.line).slice(pos.ch), line = fold(orig);\n var match = line.indexOf(query);\n if (match > -1) {\n match = adjustPos(orig, line, match) + pos.ch;\n return {from: Pos(pos.line, match), to: Pos(pos.line, match + origQuery.length)};\n }\n }\n };\n }\n } else {\n var origTarget = origQuery.split(\"\\n\");\n this.matches = function(reverse, pos) {\n var last = target.length - 1;\n if (reverse) {\n if (pos.line - (target.length - 1) < doc.firstLine()) return;\n if (fold(doc.getLine(pos.line).slice(0, origTarget[last].length)) != target[target.length - 1]) return;\n var to = Pos(pos.line, origTarget[last].length);\n for (var ln = pos.line - 1, i = last - 1; i >= 1; --i, --ln)\n if (target[i] != fold(doc.getLine(ln))) return;\n var line = doc.getLine(ln), cut = line.length - origTarget[0].length;\n if (fold(line.slice(cut)) != target[0]) return;\n return {from: Pos(ln, cut), to: to};\n } else {\n if (pos.line + (target.length - 1) > doc.lastLine()) return;\n var line = doc.getLine(pos.line), cut = line.length - origTarget[0].length;\n if (fold(line.slice(cut)) != target[0]) return;\n var from = Pos(pos.line, cut);\n for (var ln = pos.line + 1, i = 1; i < last; ++i, ++ln)\n if (target[i] != fold(doc.getLine(ln))) return;\n if (fold(doc.getLine(ln).slice(0, origTarget[last].length)) != target[last]) return;\n return {from: from, to: Pos(ln, origTarget[last].length)};\n }\n };\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false);},\n findPrevious: function() {return this.find(true);},\n\n find: function(reverse) {\n var self = this, pos = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n function savePosAndFail(line) {\n var pos = Pos(line, 0);\n self.pos = {from: pos, to: pos};\n self.atOccurrence = false;\n return false;\n }\n\n for (;;) {\n if (this.pos = this.matches(reverse, pos)) {\n this.atOccurrence = true;\n return this.pos.match || true;\n }\n if (reverse) {\n if (!pos.line) return savePosAndFail(0);\n pos = Pos(pos.line-1, this.doc.getLine(pos.line-1).length);\n }\n else {\n var maxLine = this.doc.lineCount();\n if (pos.line == maxLine - 1) return savePosAndFail(maxLine);\n pos = Pos(pos.line + 1, 0);\n }\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from;},\n to: function() {if (this.atOccurrence) return this.pos.to;},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return;\n var lines = CodeMirror.splitLines(newText);\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin);\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0));\n }\n };\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos) {\n if (orig.length == folded.length) return pos;\n for (var pos1 = Math.min(pos, orig.length);;) {\n var len1 = orig.slice(0, pos1).toLowerCase().length;\n if (len1 < pos) ++pos1;\n else if (len1 > pos) --pos1;\n else return pos1;\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold);\n });\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold);\n });\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = [];\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold);\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break;\n ranges.push({anchor: cur.from(), head: cur.to()});\n }\n if (ranges.length)\n this.setSelections(ranges, 0);\n });\n});\n","\"use strict\"\n// Module export pattern from\n// https://github.com/umdjs/umd/blob/master/returnExports.js\n;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.store = factory();\n }\n}(this, function () {\n\t\n\t// Store.js\n\tvar store = {},\n\t\twin = (typeof window != 'undefined' ? window : global),\n\t\tdoc = win.document,\n\t\tlocalStorageName = 'localStorage',\n\t\tscriptTag = 'script',\n\t\tstorage\n\n\tstore.disabled = false\n\tstore.version = '1.3.20'\n\tstore.set = function(key, value) {}\n\tstore.get = function(key, defaultVal) {}\n\tstore.has = function(key) { return store.get(key) !== undefined }\n\tstore.remove = function(key) {}\n\tstore.clear = function() {}\n\tstore.transact = function(key, defaultVal, transactionFn) {\n\t\tif (transactionFn == null) {\n\t\t\ttransactionFn = defaultVal\n\t\t\tdefaultVal = null\n\t\t}\n\t\tif (defaultVal == null) {\n\t\t\tdefaultVal = {}\n\t\t}\n\t\tvar val = store.get(key, defaultVal)\n\t\ttransactionFn(val)\n\t\tstore.set(key, val)\n\t}\n\tstore.getAll = function() {}\n\tstore.forEach = function() {}\n\n\tstore.serialize = function(value) {\n\t\treturn JSON.stringify(value)\n\t}\n\tstore.deserialize = function(value) {\n\t\tif (typeof value != 'string') { return undefined }\n\t\ttry { return JSON.parse(value) }\n\t\tcatch(e) { return value || undefined }\n\t}\n\n\t// Functions to encapsulate questionable FireFox 3.6.13 behavior\n\t// when about.config::dom.storage.enabled === false\n\t// See https://github.com/marcuswestin/store.js/issues#issue/13\n\tfunction isLocalStorageNameSupported() {\n\t\ttry { return (localStorageName in win && win[localStorageName]) }\n\t\tcatch(err) { return false }\n\t}\n\n\tif (isLocalStorageNameSupported()) {\n\t\tstorage = win[localStorageName]\n\t\tstore.set = function(key, val) {\n\t\t\tif (val === undefined) { return store.remove(key) }\n\t\t\tstorage.setItem(key, store.serialize(val))\n\t\t\treturn val\n\t\t}\n\t\tstore.get = function(key, defaultVal) {\n\t\t\tvar val = store.deserialize(storage.getItem(key))\n\t\t\treturn (val === undefined ? defaultVal : val)\n\t\t}\n\t\tstore.remove = function(key) { storage.removeItem(key) }\n\t\tstore.clear = function() { storage.clear() }\n\t\tstore.getAll = function() {\n\t\t\tvar ret = {}\n\t\t\tstore.forEach(function(key, val) {\n\t\t\t\tret[key] = val\n\t\t\t})\n\t\t\treturn ret\n\t\t}\n\t\tstore.forEach = function(callback) {\n\t\t\tfor (var i=0; i<storage.length; i++) {\n\t\t\t\tvar key = storage.key(i)\n\t\t\t\tcallback(key, store.get(key))\n\t\t\t}\n\t\t}\n\t} else if (doc && doc.documentElement.addBehavior) {\n\t\tvar storageOwner,\n\t\t\tstorageContainer\n\t\t// Since #userData storage applies only to specific paths, we need to\n\t\t// somehow link our data to a specific path. We choose /favicon.ico\n\t\t// as a pretty safe option, since all browsers already make a request to\n\t\t// this URL anyway and being a 404 will not hurt us here. We wrap an\n\t\t// iframe pointing to the favicon in an ActiveXObject(htmlfile) object\n\t\t// (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\n\t\t// since the iframe access rules appear to allow direct access and\n\t\t// manipulation of the document element, even for a 404 page. This\n\t\t// document can be used instead of the current document (which would\n\t\t// have been limited to the current path) to perform #userData storage.\n\t\ttry {\n\t\t\tstorageContainer = new ActiveXObject('htmlfile')\n\t\t\tstorageContainer.open()\n\t\t\tstorageContainer.write('<'+scriptTag+'>document.w=window</'+scriptTag+'><iframe src=\"/favicon.ico\"></iframe>')\n\t\t\tstorageContainer.close()\n\t\t\tstorageOwner = storageContainer.w.frames[0].document\n\t\t\tstorage = storageOwner.createElement('div')\n\t\t} catch(e) {\n\t\t\t// somehow ActiveXObject instantiation failed (perhaps some special\n\t\t\t// security settings or otherwse), fall back to per-path storage\n\t\t\tstorage = doc.createElement('div')\n\t\t\tstorageOwner = doc.body\n\t\t}\n\t\tvar withIEStorage = function(storeFunction) {\n\t\t\treturn function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments, 0)\n\t\t\t\targs.unshift(storage)\n\t\t\t\t// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\n\t\t\t\t// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\n\t\t\t\tstorageOwner.appendChild(storage)\n\t\t\t\tstorage.addBehavior('#default#userData')\n\t\t\t\tstorage.load(localStorageName)\n\t\t\t\tvar result = storeFunction.apply(store, args)\n\t\t\t\tstorageOwner.removeChild(storage)\n\t\t\t\treturn result\n\t\t\t}\n\t\t}\n\n\t\t// In IE7, keys cannot start with a digit or contain certain chars.\n\t\t// See https://github.com/marcuswestin/store.js/issues/40\n\t\t// See https://github.com/marcuswestin/store.js/issues/83\n\t\tvar forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\")\n\t\tvar ieKeyFix = function(key) {\n\t\t\treturn key.replace(/^d/, '___$&').replace(forbiddenCharsRegex, '___')\n\t\t}\n\t\tstore.set = withIEStorage(function(storage, key, val) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tif (val === undefined) { return store.remove(key) }\n\t\t\tstorage.setAttribute(key, store.serialize(val))\n\t\t\tstorage.save(localStorageName)\n\t\t\treturn val\n\t\t})\n\t\tstore.get = withIEStorage(function(storage, key, defaultVal) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tvar val = store.deserialize(storage.getAttribute(key))\n\t\t\treturn (val === undefined ? defaultVal : val)\n\t\t})\n\t\tstore.remove = withIEStorage(function(storage, key) {\n\t\t\tkey = ieKeyFix(key)\n\t\t\tstorage.removeAttribute(key)\n\t\t\tstorage.save(localStorageName)\n\t\t})\n\t\tstore.clear = withIEStorage(function(storage) {\n\t\t\tvar attributes = storage.XMLDocument.documentElement.attributes\n\t\t\tstorage.load(localStorageName)\n\t\t\tfor (var i=attributes.length-1; i>=0; i--) {\n\t\t\t\tstorage.removeAttribute(attributes[i].name)\n\t\t\t}\n\t\t\tstorage.save(localStorageName)\n\t\t})\n\t\tstore.getAll = function(storage) {\n\t\t\tvar ret = {}\n\t\t\tstore.forEach(function(key, val) {\n\t\t\t\tret[key] = val\n\t\t\t})\n\t\t\treturn ret\n\t\t}\n\t\tstore.forEach = withIEStorage(function(storage, callback) {\n\t\t\tvar attributes = storage.XMLDocument.documentElement.attributes\n\t\t\tfor (var i=0, attr; attr=attributes[i]; ++i) {\n\t\t\t\tcallback(attr.name, store.deserialize(storage.getAttribute(attr.name)))\n\t\t\t}\n\t\t})\n\t}\n\n\ttry {\n\t\tvar testKey = '__storejs__'\n\t\tstore.set(testKey, testKey)\n\t\tif (store.get(testKey) != testKey) { store.disabled = true }\n\t\tstore.remove(testKey)\n\t} catch(e) {\n\t\tstore.disabled = true\n\t}\n\tstore.enabled = !store.disabled\n\t\n\treturn store\n}));\n","module.exports={\n \"_args\": [\n [\n {\n \"raw\": \"yasgui-utils@^1.6.0\",\n \"scope\": null,\n \"escapedName\": \"yasgui-utils\",\n \"name\": \"yasgui-utils\",\n \"rawSpec\": \"^1.6.0\",\n \"spec\": \">=1.6.0 <2.0.0\",\n \"type\": \"range\"\n },\n \"/home/lrd900/yasgui/yasqe\"\n ]\n ],\n \"_from\": \"yasgui-utils@>=1.6.0 <2.0.0\",\n \"_id\": \"yasgui-utils@1.6.0\",\n \"_inCache\": true,\n \"_installable\": true,\n \"_location\": \"/yasgui-utils\",\n \"_npmUser\": {\n \"name\": \"laurens.rietveld\",\n \"email\": \"laurens.rietveld@gmail.com\"\n },\n \"_npmVersion\": \"1.4.3\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"raw\": \"yasgui-utils@^1.6.0\",\n \"scope\": null,\n \"escapedName\": \"yasgui-utils\",\n \"name\": \"yasgui-utils\",\n \"rawSpec\": \"^1.6.0\",\n \"spec\": \">=1.6.0 <2.0.0\",\n \"type\": \"range\"\n },\n \"_requiredBy\": [\n \"/\"\n ],\n \"_resolved\": \"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz\",\n \"_shasum\": \"bcb9091109c233e3e82737c94c202e6512389c47\",\n \"_shrinkwrap\": null,\n \"_spec\": \"yasgui-utils@^1.6.0\",\n \"_where\": \"/home/lrd900/yasgui/yasqe\",\n \"author\": {\n \"name\": \"Laurens Rietveld\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/YASGUI/Utils/issues\"\n },\n \"dependencies\": {\n \"store\": \"^1.3.14\"\n },\n \"description\": \"Utils for YASGUI libs\",\n \"devDependencies\": {},\n \"directories\": {},\n \"dist\": {\n \"shasum\": \"bcb9091109c233e3e82737c94c202e6512389c47\",\n \"tarball\": \"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz\"\n },\n \"homepage\": \"https://github.com/YASGUI/Utils\",\n \"licenses\": [\n {\n \"type\": \"MIT\",\n \"url\": \"http://yasgui.github.io/license.txt\"\n }\n ],\n \"main\": \"src/main.js\",\n \"maintainers\": [\n {\n \"name\": \"laurens.rietveld\",\n \"email\": \"laurens.rietveld@gmail.com\"\n }\n ],\n \"name\": \"yasgui-utils\",\n \"optionalDependencies\": {},\n \"readme\": \"ERROR: No README data found!\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git://github.com/YASGUI/Utils.git\"\n },\n \"version\": \"1.6.0\"\n}\n","window.console = window.console || {\"log\":function(){}};//make sure any console statements don't break IE\nmodule.exports = {\n\tstorage: require(\"./storage.js\"),\n\tsvg: require(\"./svg.js\"),\n\tversion: {\n\t\t\"yasgui-utils\" : require(\"../package.json\").version,\n\t},\n\tnestedExists : function(obj) {\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\n\n\t\tfor (var i = 0; i < args.length; i++) {\n\t\t\tif (!obj || !obj.hasOwnProperty(args[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tobj = obj[args[i]];\n\t\t}\n\t\treturn true;\n\t}\n};\n","var store = require(\"store\");\nvar times = {\n\tday: function() {\n\t\treturn 1000 * 3600 * 24;//millis to day\n\t},\n\tmonth: function() {\n\t\ttimes.day() * 30;\n\t},\n\tyear: function() {\n\t\ttimes.month() * 12;\n\t}\n};\n\nvar root = module.exports = {\n\tset : function(key, val, exp) {\n if (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key && val !== undefined) {\n\t\t\tif (typeof exp == \"string\") {\n\t\t\t\texp = times[exp]();\n\t\t\t}\n\t\t\t//try to store string for dom objects (e.g. XML result). Otherwise, we might get a circular reference error when stringifying this\n\t\t\tif (val.documentElement) val = new XMLSerializer().serializeToString(val.documentElement);\n\t\t\tstore.set(key, {\n\t\t\t\tval : val,\n\t\t\t\texp : exp,\n\t\t\t\ttime : new Date().getTime()\n\t\t\t});\n\t\t}\n\t},\n\tremove: function(key) {\n\t\tif (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key) store.remove(key)\n\t},\n\tremoveAll: function(filter) {\n\t\tif (!store.enabled) return;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (typeof filter === 'function') {\n\t\t\tfor (var key in store.getAll()) {\n\t\t\t\tif (filter(key, root.get(key))) root.remove(key);\n\t\t\t}\n\t\t}\n\t},\n\tget : function(key) {\n if (!store.enabled) return null;//this is probably in private mode. Don't run, as we might get Js errors\n\t\tif (key) {\n\t\t\tvar info = store.get(key);\n\t\t\tif (!info) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tif (info.exp && new Date().getTime() - info.time > info.exp) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn info.val;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n};\n","module.exports = {\n\tdraw: function(parent, svgString) {\n\t\tif (!parent) return;\n\t\tvar el = module.exports.getElement(svgString);\n\t\tif (el) {\n\t\t\tif (parent.append) {\n\t\t\t\tparent.append(el);\n\t\t\t} else {\n\t\t\t\t//regular dom doc\n\t\t\t\tparent.appendChild(el);\n\t\t\t}\n\t\t}\n\t},\n\tgetElement: function(svgString) {\n\t\tif (svgString && svgString.indexOf(\"<svg\") == 0) {\n\t\t\t//no style passed via config. guess own styles\n\t\t\tvar parser = new DOMParser();\n\t\t\tvar dom = parser.parseFromString(svgString, \"text/xml\");\n\t\t\tvar svg = dom.documentElement;\n\t\t\t\n\t\t\tvar svgContainer = document.createElement(\"div\");\n\t\t\tsvgContainer.className = 'svgImg';\n\t\t\tsvgContainer.appendChild(svg);\n\t\t\treturn svgContainer;\n\t\t}\n\t\treturn false;\n\t}\n};","module.exports={\n \"name\": \"yasgui-yasqe\",\n \"description\": \"Yet Another SPARQL Query Editor\",\n \"version\": \"2.11.4\",\n \"main\": \"src/main.js\",\n \"license\": \"MIT\",\n \"author\": \"Laurens Rietveld\",\n \"homepage\": \"http://yasqe.yasgui.org\",\n \"scripts\": {\n \"dev\": \"gulp serve\",\n \"build\": \"gulp\",\n \"patch\": \"gulp patch\",\n \"minor\": \"gulp minor\",\n \"major\": \"gulp major\"\n },\n \"devDependencies\": {\n \"gulp-bump\": \"^2.2.0\",\n \"gulp-connect\": \"^4.2.0\",\n \"gulp-embedlr\": \"^0.5.2\",\n \"gulp-git\": \"^1.10.0\",\n \"gulp-livereload\": \"^3.8.1\",\n \"gulp-tag-version\": \"^1.3.0\",\n \"watchify\": \"^3.7.0\"\n },\n \"bugs\": \"https://github.com/YASGUI/YASQE/issues/\",\n \"keywords\": [\n \"JavaScript\",\n \"SPARQL\",\n \"Editor\",\n \"Semantic Web\",\n \"Linked Data\"\n ],\n \"maintainers\": [\n {\n \"name\": \"Laurens Rietveld\",\n \"email\": \"laurens.rietveld@gmail.com\",\n \"web\": \"http://laurensrietveld.nl\"\n }\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/YASGUI/YASQE.git\"\n },\n \"dependencies\": {\n \"bootstrap-sass\": \"^3.3.7\",\n \"browserify\": \"^13.1.0\",\n \"browserify-transform-tools\": \"^1.6.0\",\n \"codemirror\": \"5.17.0\",\n \"exorcist\": \"^0.4.0\",\n \"gulp\": \"^3.9.1\",\n \"gulp-autoprefixer\": \"^3.1.0\",\n \"gulp-concat\": \"^2.6.0\",\n \"gulp-cssimport\": \"^3.1.0\",\n \"gulp-cssnano\": \"^2.1.2\",\n \"gulp-filter\": \"^4.0.0\",\n \"gulp-jsvalidate\": \"^2.1.0\",\n \"gulp-notify\": \"^2.2.0\",\n \"gulp-rename\": \"^1.2.2\",\n \"gulp-sass\": \"^2.3.2\",\n \"gulp-sourcemaps\": \"^1.6.0\",\n \"gulp-streamify\": \"1.0.2\",\n \"gulp-uglify\": \"^1.5.4\",\n \"jquery\": \"^2.2.4\",\n \"node-sass\": \"^3.8.0\",\n \"require-dir\": \"^0.3.0\",\n \"run-sequence\": \"^1.2.2\",\n \"vinyl-buffer\": \"^1.0.0\",\n \"vinyl-source-stream\": \"~1.1.0\",\n \"vinyl-transform\": \"1.0.0\",\n \"yasgui-utils\": \"^1.6.0\"\n },\n \"optionalShim\": {\n \"codemirror\": {\n \"require\": \"codemirror\",\n \"global\": \"CodeMirror\"\n },\n \"jquery\": {\n \"require\": \"jquery\",\n \"global\": \"jQuery\"\n },\n \"../../lib/codemirror\": {\n \"require\": \"codemirror\",\n \"global\": \"CodeMirror\"\n }\n }\n}\n","'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('../utils.js'),\n\tyutils = require('yasgui-utils'),\n\tTrie = require('../../lib/trie.js'),\n\tYASQE = require('../main.js');\n\nmodule.exports = function(YASQE, yasqe) {\n\tvar completionNotifications = {};\n\tvar completers = {};\n\tvar tries = {};\n\n\tyasqe.on('cursorActivity', function(yasqe, eventInfo) {\n\t\tautoComplete(true);\n\t});\n\tyasqe.on('change', function() {\n\t\tvar needPossibleAdjustment = [];\n\t\tfor (var notificationName in completionNotifications) {\n\t\t\tif (completionNotifications[notificationName].is(':visible')) {\n\t\t\t\tneedPossibleAdjustment.push(completionNotifications[notificationName]);\n\t\t\t}\n\t\t}\n\t\tif (needPossibleAdjustment.length > 0) {\n\t\t\t//position completion notifications\n\t\t\tvar scrollBar = $(yasqe.getWrapperElement()).find(\".CodeMirror-vscrollbar\");\n\t\t\tvar offset = 0;\n\t\t\tif (scrollBar.is(\":visible\")) {\n\t\t\t\toffset = scrollBar.outerWidth();\n\t\t\t}\n\t\t\tneedPossibleAdjustment.forEach(function(notification) {\n\t\t\t\tnotification.css(\"right\", offset)\n\t\t\t});\n\t\t}\n\t});\n\n\n\n\t/**\n\t * Store bulk completions in memory as trie, and store these in localstorage as well (if enabled)\n\t * \n\t * @method doc.storeBulkCompletions\n\t * @param completions {array}\n\t */\n\tvar storeBulkCompletions = function(completer, completions) {\n\t\t// store array as trie\n\t\ttries[completer.name] = new Trie();\n\t\tfor (var i = 0; i < completions.length; i++) {\n\t\t\ttries[completer.name].insert(completions[i]);\n\t\t}\n\t\t// store in localstorage as well\n\t\tvar storageId = utils.getPersistencyId(yasqe, completer.persistent);\n\t\tif (storageId) yutils.storage.set(storageId, completions, \"month\");\n\t};\n\n\tvar initCompleter = function(name, completionInit) {\n\t\tvar completer = completers[name] = new completionInit(yasqe, name);\n\t\tcompleter.name = name;\n\t\tif (completer.bulk) {\n\t\t\tvar storeArrayAsBulk = function(suggestions) {\n\t\t\t\tif (suggestions && suggestions instanceof Array && suggestions.length > 0) {\n\t\t\t\t\tstoreBulkCompletions(completer, suggestions);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (completer.get instanceof Array) {\n\t\t\t\t// we don't care whether the completions are already stored in\n\t\t\t\t// localstorage. just use this one\n\t\t\t\tstoreArrayAsBulk(completer.get);\n\t\t\t} else {\n\t\t\t\t// if completions are defined in localstorage, use those! (calling the\n\t\t\t\t// function may come with overhead (e.g. async calls))\n\t\t\t\tvar completionsFromStorage = null;\n\t\t\t\tvar persistencyIdentifier = utils.getPersistencyId(yasqe, completer.persistent);\n\t\t\t\tif (persistencyIdentifier)\n\t\t\t\t\tcompletionsFromStorage = yutils.storage.get(persistencyIdentifier);\n\t\t\t\tif (completionsFromStorage && completionsFromStorage.length > 0) {\n\t\t\t\t\tstoreArrayAsBulk(completionsFromStorage);\n\t\t\t\t} else {\n\t\t\t\t\t// nothing in storage. check whether we have a function via which we\n\t\t\t\t\t// can get our prefixes\n\t\t\t\t\tif (completer.get instanceof Function) {\n\t\t\t\t\t\tif (completer.async) {\n\t\t\t\t\t\t\tcompleter.get(null, storeArrayAsBulk);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstoreArrayAsBulk(completer.get());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tvar autoComplete = function(fromAutoShow) {\n\t\tif (yasqe.somethingSelected())\n\t\t\treturn;\n\t\tvar tryHintType = function(completer) {\n\t\t\tif (fromAutoShow // from autoShow, i.e. this gets called each time the editor content changes\n\t\t\t\t&& (!completer.autoShow // autoshow for this particular type of autocompletion is -not- enabled\n\t\t\t\t\t|| (!completer.bulk && completer.async)) // async is enabled (don't want to re-do ajax-like request for every editor change)\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar hintConfig = {\n\t\t\t\tcloseCharacters: /(?=a)b/,\n\t\t\t\tcompleteSingle: false\n\t\t\t};\n\t\t\tif (!completer.bulk && completer.async) {\n\t\t\t\thintConfig.async = true;\n\t\t\t}\n\t\t\tvar wrappedHintCallback = function(yasqe, callback) {\n\t\t\t\treturn getCompletionHintsObject(completer, callback);\n\t\t\t};\n\t\t\tvar result = YASQE.showHint(yasqe, wrappedHintCallback, hintConfig);\n\t\t\treturn true;\n\t\t};\n\t\tfor (var completerName in completers) {\n\t\t\tif ($.inArray(completerName, yasqe.options.autocompleters) == -1) continue; //this completer is disabled\n\t\t\tvar completer = completers[completerName];\n\t\t\tif (!completer.isValidCompletionPosition) continue; //no way to check whether we are in a valid position\n\n\t\t\tif (!completer.isValidCompletionPosition()) {\n\t\t\t\t//if needed, fire callbacks for when we are -not- in valid completion position\n\t\t\t\tif (completer.callbacks && completer.callbacks.invalidPosition) {\n\t\t\t\t\tcompleter.callbacks.invalidPosition(yasqe, completer);\n\t\t\t\t}\n\t\t\t\t//not in a valid position, so continue to next completion candidate type\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// run valid position handler, if there is one (if it returns false, stop the autocompletion!)\n\t\t\tif (completer.callbacks && completer.callbacks.validPosition) {\n\t\t\t\tif (completer.callbacks.validPosition(yasqe, completer) === false)\n\t\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar success = tryHintType(completer);\n\t\t\tif (success)\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\n\n\tvar getCompletionHintsObject = function(completer, callback) {\n\t\tvar getSuggestionsFromToken = function(partialToken) {\n\t\t\tvar stringToAutocomplete = partialToken.autocompletionString || partialToken.string;\n\t\t\tvar suggestions = [];\n\t\t\tif (tries[completer.name]) {\n\t\t\t\tsuggestions = tries[completer.name].autoComplete(stringToAutocomplete);\n\t\t\t} else if (typeof completer.get == \"function\" && completer.async == false) {\n\t\t\t\tsuggestions = completer.get(stringToAutocomplete);\n\t\t\t} else if (typeof completer.get == \"object\") {\n\t\t\t\tvar partialTokenLength = stringToAutocomplete.length;\n\t\t\t\tfor (var i = 0; i < completer.get.length; i++) {\n\t\t\t\t\tvar completion = completer.get[i];\n\t\t\t\t\tif (completion.slice(0, partialTokenLength) == stringToAutocomplete) {\n\t\t\t\t\t\tsuggestions.push(completion);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn getSuggestionsAsHintObject(suggestions, completer, partialToken);\n\n\t\t};\n\n\n\t\tvar token = yasqe.getCompleteToken();\n\t\tif (completer.preProcessToken) {\n\t\t\ttoken = completer.preProcessToken(token);\n\t\t}\n\n\t\tif (token) {\n\t\t\t// use custom completionhint function, to avoid reaching a loop when the\n\t\t\t// completionhint is the same as the current token\n\t\t\t// regular behaviour would keep changing the codemirror dom, hence\n\t\t\t// constantly calling this callback\n\t\t\tif (!completer.bulk && completer.async) {\n\t\t\t\tvar wrappedCallback = function(suggestions) {\n\t\t\t\t\tcallback(getSuggestionsAsHintObject(suggestions, completer, token));\n\t\t\t\t};\n\t\t\t\tcompleter.get(token, wrappedCallback);\n\t\t\t} else {\n\t\t\t\treturn getSuggestionsFromToken(token);\n\n\t\t\t}\n\t\t}\n\t};\n\n\n\t/**\n\t * get our array of suggestions (strings) in the codemirror hint format\n\t */\n\tvar getSuggestionsAsHintObject = function(suggestions, completer, token) {\n\t\tvar hintList = [];\n\t\tfor (var i = 0; i < suggestions.length; i++) {\n\t\t\tvar suggestedString = suggestions[i];\n\t\t\tif (completer.postProcessToken) {\n\t\t\t\tsuggestedString = completer.postProcessToken(token, suggestedString);\n\t\t\t}\n\t\t\thintList.push({\n\t\t\t\ttext: suggestedString,\n\t\t\t\tdisplayText: suggestedString,\n\t\t\t\thint: selectHint,\n\t\t\t});\n\t\t}\n\n\t\tvar cur = yasqe.getCursor();\n\t\tvar returnObj = {\n\t\t\tcompletionToken: token.string,\n\t\t\tlist: hintList,\n\t\t\tfrom: {\n\t\t\t\tline: cur.line,\n\t\t\t\tch: token.start\n\t\t\t},\n\t\t\tto: {\n\t\t\t\tline: cur.line,\n\t\t\t\tch: token.end\n\t\t\t}\n\t\t};\n\t\t//if we have some autocompletion handlers specified, add these these to the object. Codemirror will take care of firing these\n\t\tif (completer.callbacks) {\n\t\t\tfor (var callbackName in completer.callbacks) {\n\t\t\t\tif (completer.callbacks[callbackName]) {\n\t\t\t\t\tYASQE.on(returnObj, callbackName, completer.callbacks[callbackName]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn returnObj;\n\t};\n\n\treturn {\n\t\tinit: initCompleter,\n\t\tcompleters: completers,\n\t\tnotifications: {\n\t\t\tgetEl: function(completer) {\n\t\t\t\treturn $(completionNotifications[completer.name]);\n\t\t\t},\n\t\t\tshow: function(yasqe, completer) {\n\t\t\t\t//only draw when the user needs to use a keypress to summon autocompletions\n\t\t\t\tif (!completer.autoshow) {\n\t\t\t\t\tif (!completionNotifications[completer.name]) completionNotifications[completer.name] = $(\"<div class='completionNotification'></div>\");\n\t\t\t\t\tcompletionNotifications[completer.name]\n\t\t\t\t\t\t.show()\n\t\t\t\t\t\t.text(\"Press \" + (navigator.userAgent.indexOf('Mac OS X') != -1 ? \"CMD\" : \"CTRL\") + \" - <spacebar> to autocomplete\")\n\t\t\t\t\t\t.appendTo($(yasqe.getWrapperElement()));\n\t\t\t\t}\n\t\t\t},\n\t\t\thide: function(yasqe, completer) {\n\t\t\t\tif (completionNotifications[completer.name]) {\n\t\t\t\t\tcompletionNotifications[completer.name].hide();\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\t\tautoComplete: autoComplete,\n\t\tgetTrie: function(completer) {\n\t\t\treturn (typeof completer == \"string\" ? tries[completer] : tries[completer.name]);\n\t\t}\n\t}\n};\n\n\n\n\n\n\n\n\n\n/**\n * function which fires after the user selects a completion. this function checks whether we actually need to store this one (if completion is same as current token, don't do anything)\n */\nvar selectHint = function(yasqe, data, completion) {\n\tif (completion.text != yasqe.getTokenAt(yasqe.getCursor()).string) {\n\t\tyasqe.replaceRange(completion.text, data.from, data.to);\n\t}\n};\n\n\n\n\n\n//\n//module.exports = {\n//\tpreprocessPrefixTokenForCompletion: preprocessPrefixTokenForCompletion,\n//\tpostprocessResourceTokenForCompletion: postprocessResourceTokenForCompletion,\n//\tpreprocessResourceTokenForCompletion: preprocessResourceTokenForCompletion,\n//\tshowCompletionNotification: showCompletionNotification,\n//\thideCompletionNotification: hideCompletionNotification,\n//\tautoComplete: autoComplete,\n//\tautocompleteVariables: autocompleteVariables,\n//\tfetchFromPrefixCc: fetchFromPrefixCc,\n//\tfetchFromLov: fetchFromLov,\n////\tstoreBulkCompletions: storeBulkCompletions,\n//\tloadBulkCompletions: loadBulkCompletions,\n//};","'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = function(yasqe, name) {\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\treturn module.exports.isValidCompletionPosition(yasqe);\n\t\t},\n\t\tget: function(token, callback) {\n\t\t\treturn require('./utils').fetchFromLov(yasqe, this, token, callback);\n\t\t},\n\t\tpreProcessToken: function(token) {\n\t\t\treturn module.exports.preProcessToken(yasqe, token)\n\t\t},\n\t\tpostProcessToken: function(token, suggestedString) {\n\t\t\treturn module.exports.postProcessToken(yasqe, token, suggestedString);\n\t\t},\n\t\tasync: true,\n\t\tbulk: false,\n\t\tautoShow: false,\n\t\tpersistent: name,\n\t\tcallbacks: {\n\t\t\tvalidPosition: yasqe.autocompleters.notifications.show,\n\t\t\tinvalidPosition: yasqe.autocompleters.notifications.hide,\n\t\t}\n\t}\n};\n\nmodule.exports.isValidCompletionPosition = function(yasqe) {\n\tvar token = yasqe.getCompleteToken();\n\tif (token.string.indexOf(\"?\") == 0)\n\t\treturn false;\n\tvar cur = yasqe.getCursor();\n\tvar previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n\tif (previousToken.string == \"a\")\n\t\treturn true;\n\tif (previousToken.string == \"rdf:type\")\n\t\treturn true;\n\tif (previousToken.string == \"rdfs:domain\")\n\t\treturn true;\n\tif (previousToken.string == \"rdfs:range\")\n\t\treturn true;\n\treturn false;\n};\nmodule.exports.preProcessToken = function(yasqe, token) {\n\treturn require('./utils.js').preprocessResourceTokenForCompletion(yasqe, token);\n};\nmodule.exports.postProcessToken = function(yasqe, token, suggestedString) {\n\treturn require('./utils.js').postprocessResourceTokenForCompletion(yasqe, token, suggestedString)\n};","'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n//this is a mapping from the class names (generic ones, for compatability with codemirror themes), to what they -actually- represent\nvar tokenTypes = {\n\t\"string-2\": \"prefixed\",\n\t\"atom\": \"var\"\n};\n\nmodule.exports = function(yasqe, completerName) {\n\t//this autocompleter also fires on-change!\n\tyasqe.on(\"change\", function() {\n\t\tmodule.exports.appendPrefixIfNeeded(yasqe, completerName);\n\t});\n\n\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\treturn module.exports.isValidCompletionPosition(yasqe);\n\t\t},\n\t\tget: function(token, callback) {\n\t\t\t$.get(module.exports.fetchFrom, function(data) {\n\t\t\t\tvar prefixArray = [];\n\t\t\t\tfor (var prefix in data) {\n\t\t\t\t\tif (prefix == \"bif\")\n\t\t\t\t\t\tcontinue; // skip this one! see #231\n\t\t\t\t\tvar completeString = prefix + \": <\" + data[prefix] + \">\";\n\t\t\t\t\tprefixArray.push(completeString); // the array we want to store in localstorage\n\t\t\t\t}\n\n\t\t\t\tprefixArray.sort();\n\t\t\t\tcallback(prefixArray);\n\t\t\t});\n\t\t},\n\t\tpreProcessToken: function(token) {\n\t\t\treturn module.exports.preprocessPrefixTokenForCompletion(yasqe, token)\n\t\t},\n\t\tasync: true,\n\t\tbulk: true,\n\t\tautoShow: true,\n\t\tpersistent: completerName,\n\t\tcallbacks: {\n\t\t\tpick: function() {\n\t\t\t\tyasqe.collapsePrefixes(false);\n\t\t\t}\n\t\t}\n\t};\n};\nmodule.exports.isValidCompletionPosition = function(yasqe) {\n\tvar cur = yasqe.getCursor(),\n\t\ttoken = yasqe.getTokenAt(cur);\n\n\t// not at end of line\n\tif (yasqe.getLine(cur.line).length > cur.ch)\n\t\treturn false;\n\n\tif (token.type != \"ws\") {\n\t\t// we want to complete token, e.g. when the prefix starts with an a\n\t\t// (treated as a token in itself..)\n\t\t// but we to avoid including the PREFIX tag. So when we have just\n\t\t// typed a space after the prefix tag, don't get the complete token\n\t\ttoken = yasqe.getCompleteToken();\n\t}\n\n\t// we shouldnt be at the uri part the prefix declaration\n\t// also check whether current token isnt 'a' (that makes codemirror\n\t// thing a namespace is a possiblecurrent\n\tif (!token.string.indexOf(\"a\") == 0 && $.inArray(\"PNAME_NS\", token.state.possibleCurrent) == -1)\n\t\treturn false;\n\n\t// First token of line needs to be PREFIX,\n\t// there should be no trailing text (otherwise, text is wrongly inserted\n\t// in between)\n\tvar previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n\tif (!previousToken || previousToken.string.toUpperCase() != \"PREFIX\") return false;\n\treturn true;\n};\nmodule.exports.preprocessPrefixTokenForCompletion = function(yasqe, token) {\n\tvar previousToken = yasqe.getPreviousNonWsToken(yasqe.getCursor().line, token);\n\tif (previousToken && previousToken.string && previousToken.string.slice(-1) == \":\") {\n\t\t//combine both tokens! In this case we have the cursor at the end of line \"PREFIX bla: <\".\n\t\t//we want the token to be \"bla: <\", en not \"<\"\n\t\ttoken = {\n\t\t\tstart: previousToken.start,\n\t\t\tend: token.end,\n\t\t\tstring: previousToken.string + \" \" + token.string,\n\t\t\tstate: token.state\n\t\t};\n\t}\n\treturn token;\n};\n/**\n * Check whether typed prefix is declared. If not, automatically add declaration\n * using list from prefix.cc\n *\n * @param yasqe\n */\nmodule.exports.appendPrefixIfNeeded = function(yasqe, completerName) {\n\tif (!yasqe.autocompleters.getTrie(completerName))\n\t\treturn; // no prefixed defined. just stop\n\tif (!yasqe.options.autocompleters || yasqe.options.autocompleters.indexOf(completerName) == -1) return; //this autocompleter is disabled\n\tvar cur = yasqe.getCursor();\n\n\tvar token = yasqe.getTokenAt(cur);\n\tif (tokenTypes[token.type] == \"prefixed\") {\n\t\tvar colonIndex = token.string.indexOf(\":\");\n\t\tif (colonIndex !== -1) {\n\t\t\t// check previous token isnt PREFIX, or a '<'(which would mean we are in a uri)\n\t\t\t//\t\t\tvar firstTokenString = yasqe.getNextNonWsToken(cur.line).string.toUpperCase();\n\t\t\tvar lastNonWsTokenString = yasqe.getPreviousNonWsToken(cur.line, token).string.toUpperCase();\n\t\t\tvar previousToken = yasqe.getTokenAt({\n\t\t\t\tline: cur.line,\n\t\t\t\tch: token.start\n\t\t\t}); // needs to be null (beginning of line), or whitespace\n\t\t\tif (lastNonWsTokenString != \"PREFIX\" && (previousToken.type == \"ws\" || previousToken.type == null)) {\n\t\t\t\t// check whether it isnt defined already (saves us from looping\n\t\t\t\t// through the array)\n\t\t\t\tvar currentPrefix = token.string.substring(0, colonIndex + 1);\n\t\t\t\tvar queryPrefixes = yasqe.getPrefixesFromQuery();\n\t\t\t\tif (queryPrefixes[currentPrefix.slice(0, -1)] == null) {\n\t\t\t\t\t// ok, so it isnt added yet!\n\t\t\t\t\tvar completions = yasqe.autocompleters.getTrie(completerName).autoComplete(currentPrefix);\n\t\t\t\t\tif (completions.length > 0) {\n\t\t\t\t\t\tyasqe.addPrefixes(completions[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nmodule.exports.fetchFrom = (window.location.protocol.indexOf('http') === 0? '//': 'http://') + 'prefix.cc/popular/all.file.json'\n","'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = function(yasqe, name) {\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\treturn module.exports.isValidCompletionPosition(yasqe);\n\t\t},\n\t\tget: function(token, callback) {\n\t\t\treturn require('./utils').fetchFromLov(yasqe, this, token, callback);\n\t\t},\n\t\tpreProcessToken: function(token) {\n\t\t\treturn module.exports.preProcessToken(yasqe, token)\n\t\t},\n\t\tpostProcessToken: function(token, suggestedString) {\n\t\t\treturn module.exports.postProcessToken(yasqe, token, suggestedString);\n\t\t},\n\t\tasync: true,\n\t\tbulk: false,\n\t\tautoShow: false,\n\t\tpersistent: name,\n\t\tcallbacks: {\n\t\t\tvalidPosition: yasqe.autocompleters.notifications.show,\n\t\t\tinvalidPosition: yasqe.autocompleters.notifications.hide,\n\t\t}\n\t}\n};\n\nmodule.exports.isValidCompletionPosition = function(yasqe) {\n\tvar token = yasqe.getCompleteToken();\n\tif (token.string.length == 0)\n\t\treturn false; //we want -something- to autocomplete\n\tif (token.string.indexOf(\"?\") == 0)\n\t\treturn false; // we are typing a var\n\tif ($.inArray(\"a\", token.state.possibleCurrent) >= 0)\n\t\treturn true; // predicate pos\n\tvar cur = yasqe.getCursor();\n\tvar previousToken = yasqe.getPreviousNonWsToken(cur.line, token);\n\tif (previousToken.string == \"rdfs:subPropertyOf\")\n\t\treturn true;\n\n\t// hmm, we would like -better- checks here, e.g. checking whether we are\n\t// in a subject, and whether next item is a rdfs:subpropertyof.\n\t// difficult though... the grammar we use is unreliable when the query\n\t// is invalid (i.e. during typing), and often the predicate is not typed\n\t// yet, when we are busy writing the subject...\n\treturn false;\n};\nmodule.exports.preProcessToken = function(yasqe, token) {\n\treturn require('./utils.js').preprocessResourceTokenForCompletion(yasqe, token);\n};\nmodule.exports.postProcessToken = function(yasqe, token, suggestedString) {\n\treturn require('./utils.js').postprocessResourceTokenForCompletion(yasqe, token, suggestedString)\n};","'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('./utils.js'),\n\tyutils = require('yasgui-utils');\n/**\n * Where the base class only contains functionality related to -all- completions, this class contains some utils used here and there in our autocompletions\n */\n\n\n\n/**\n * Converts rdf:type to http://.../type and converts <http://...> to http://...\n * Stores additional info such as the used namespace and prefix in the token object\n */\nvar preprocessResourceTokenForCompletion = function(yasqe, token) {\n\tvar queryPrefixes = yasqe.getPrefixesFromQuery();\n\tif (!token.string.indexOf(\"<\") == 0) {\n\t\ttoken.tokenPrefix = token.string.substring(0, token.string.indexOf(\":\") + 1);\n\n\t\tif (queryPrefixes[token.tokenPrefix.slice(0, -1)] != null) {\n\t\t\ttoken.tokenPrefixUri = queryPrefixes[token.tokenPrefix.slice(0, -1)];\n\t\t}\n\t}\n\n\ttoken.autocompletionString = token.string.trim();\n\tif (!token.string.indexOf(\"<\") == 0 && token.string.indexOf(\":\") > -1) {\n\t\t// hmm, the token is prefixed. We still need the complete uri for autocompletions. generate this!\n\t\tfor (var prefix in queryPrefixes) {\n\t\t\tif (token.tokenPrefix === prefix + ':') {\n\t\t\t\ttoken.autocompletionString = queryPrefixes[prefix];\n\t\t\t\ttoken.autocompletionString += token.string.substring(prefix.length + 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (token.autocompletionString.indexOf(\"<\") == 0) token.autocompletionString = token.autocompletionString.substring(1);\n\tif (token.autocompletionString.indexOf(\">\", token.length - 1) !== -1) token.autocompletionString = token.autocompletionString.substring(0, token.autocompletionString.length - 1);\n\treturn token;\n};\n\nvar postprocessResourceTokenForCompletion = function(yasqe, token, suggestedString) {\n\tif (token.tokenPrefix && token.autocompletionString && token.tokenPrefixUri) {\n\t\t// we need to get the suggested string back to prefixed form\n\t\tsuggestedString = token.tokenPrefix + suggestedString.substring(token.tokenPrefixUri.length);\n\t} else {\n\t\t// it is a regular uri. add '<' and '>' to string\n\t\tsuggestedString = \"<\" + suggestedString + \">\";\n\t}\n\treturn suggestedString;\n};\n\n//Use protocol relative request when served via http[s]*. Otherwise (e.g. file://, fetch via http)\nvar reqProtocol = (window.location.protocol.indexOf('http') === 0? '//': 'http://')\nvar fetchFromLov = function(yasqe, completer, token, callback) {\n\tif (!token || !token.string || token.string.trim().length == 0) {\n\t\tyasqe.autocompleters.notifications.getEl(completer)\n\t\t\t.empty()\n\t\t\t.append(\"Nothing to autocomplete yet!\");\n\t\treturn false;\n\t}\n\tvar maxResults = 50;\n\n\tvar args = {\n\t\tq: token.autocompletionString,\n\t\tpage: 1\n\t};\n\tif (completer.name == \"classes\") {\n\t\targs.type = \"class\";\n\t} else {\n\t\targs.type = \"property\";\n\t}\n\tvar results = [];\n\tvar url = \"\";\n\tvar updateUrl = function() {\n\t\turl = reqProtocol + \"lov.okfn.org/dataset/lov/api/v2/autocomplete/terms?\" + $.param(args);\n\t};\n\tupdateUrl();\n\tvar increasePage = function() {\n\t\targs.page++;\n\t\tupdateUrl();\n\t};\n\tvar doRequests = function() {\n\t\t$.get(\n\t\t\turl,\n\t\t\tfunction(data) {\n\t\t\t\tfor (var i = 0; i < data.results.length; i++) {\n\t\t\t\t\tif ($.isArray(data.results[i].uri) && data.results[i].uri.length > 0) {\n\t\t\t\t\t\tresults.push(data.results[i].uri[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresults.push(data.results[i].uri);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\tif (results.length < data.total_results && results.length < maxResults) {\n\t\t\t\t\tincreasePage();\n\t\t\t\t\tdoRequests();\n\t\t\t\t} else {\n\t\t\t\t\t//if notification bar is there, show feedback, or close\n\t\t\t\t\tif (results.length > 0) {\n\t\t\t\t\t\tyasqe.autocompleters.notifications.hide(yasqe, completer)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tyasqe.autocompleters.notifications.getEl(completer).text(\"0 matches found...\");\n\t\t\t\t\t}\n\t\t\t\t\tcallback(results);\n\t\t\t\t\t// requests done! Don't call this function again\n\t\t\t\t}\n\t\t\t}).fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\tyasqe.autocompleters.notifications.getEl(completer)\n\t\t\t\t.empty()\n\t\t\t\t.append(\"Failed fetching suggestions..\");\n\n\t\t});\n\t};\n\t//if notification bar is there, show a loader\n\tyasqe.autocompleters.notifications.getEl(completer)\n\t\t.empty()\n\t\t.append($(\"<span>Fetchting autocompletions </span>\"))\n\t\t.append($(yutils.svg.getElement(require('../imgs.js').loader)).addClass(\"notificationLoader\"));\n\tdoRequests();\n};\n\n\n\nmodule.exports = {\n\tfetchFromLov: fetchFromLov,\n\tpreprocessResourceTokenForCompletion: preprocessResourceTokenForCompletion,\n\tpostprocessResourceTokenForCompletion: postprocessResourceTokenForCompletion,\n};\n","'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nmodule.exports = function(yasqe) {\n\treturn {\n\t\tisValidCompletionPosition: function() {\n\t\t\tvar token = yasqe.getTokenAt(yasqe.getCursor());\n\t\t\tif (token.type != \"ws\") {\n\t\t\t\ttoken = yasqe.getCompleteToken(token);\n\t\t\t\tif (token && token.string.indexOf(\"?\") == 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function(token) {\n\t\t\tif (token.trim().length == 0) return []; //nothing to autocomplete\n\t\t\tvar distinctVars = {};\n\t\t\t//do this outside of codemirror. I expect jquery to be faster here (just finding dom elements with classnames)\n\t\t\t$(yasqe.getWrapperElement()).find(\".cm-atom\").each(function() {\n\t\t\t\tvar variable = this.innerHTML;\n\t\t\t\tif (variable.indexOf(\"?\") == 0) {\n\t\t\t\t\t//ok, lets check if the next element in the div is an atom as well. In that case, they belong together (may happen sometimes when query is not syntactically valid)\n\t\t\t\t\tvar nextEl = $(this).next();\n\t\t\t\t\tvar nextElClass = nextEl.attr('class');\n\t\t\t\t\tif (nextElClass && nextEl.attr('class').indexOf(\"cm-atom\") >= 0) {\n\t\t\t\t\t\tvariable += nextEl.text();\n\t\t\t\t\t}\n\n\t\t\t\t\t//skip single questionmarks\n\t\t\t\t\tif (variable.length <= 1) return;\n\n\t\t\t\t\t//it should match our token ofcourse\n\t\t\t\t\tif (variable.indexOf(token) !== 0) return;\n\n\t\t\t\t\t//skip exact matches\n\t\t\t\t\tif (variable == token) return;\n\n\t\t\t\t\t//store in map so we have a unique list \n\t\t\t\t\tdistinctVars[variable] = true;\n\n\n\t\t\t\t}\n\t\t\t});\n\t\t\tvar variables = [];\n\t\t\tfor (var variable in distinctVars) {\n\t\t\t\tvariables.push(variable);\n\t\t\t}\n\t\t\tvariables.sort();\n\t\t\treturn variables;\n\t\t},\n\t\tasync: false,\n\t\tbulk: false,\n\t\tautoShow: true,\n\t}\n};","var sparql = require('./sparql.js'),\n $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\nvar quote = function(string) {\n return \"'\" + string + \"'\";\n}\nmodule.exports = {\n createCurlString : function(yasqe, config) {\n var ajaxConfig = sparql.getAjaxConfig(yasqe, config);\n var url = ajaxConfig.url;\n if (ajaxConfig.url.indexOf('http') !== 0) {\n //this is either a relative or absolute url, which is not supported by CURL.\n //Add domain, schema, etc etc\n var url = window.location.protocol + '//' + window.location.host;\n if (ajaxConfig.url.indexOf('/') === 0) {\n //its an absolute path\n url += ajaxConfig.url;\n } else {\n //relative, so append current location to url first\n url += window.location.pathname + ajaxConfig.url;\n }\n }\n var cmds = [\n 'curl', url,\n '-X', yasqe.options.sparql.requestMethod\n ];\n if (yasqe.options.sparql.requestMethod == 'POST') {\n cmds.push('--data ' + quote($.param(ajaxConfig.data)));\n }\n for (var header in ajaxConfig.headers) {\n cmds.push('-H ' + quote(header + ': ' + ajaxConfig.headers[header]));\n }\n return cmds.join(' ');\n }\n}\n","/**\n * The default options of YASQE (check the CodeMirror documentation for even\n * more options, such as disabling line numbers, or changing keyboard shortcut\n * keys). Either change the default options by setting YASQE.defaults, or by\n * passing your own options as second argument to the YASQE constructor\n */\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tYASQE = require('./main.js');\nYASQE.defaults = $.extend(true, {}, YASQE.defaults, {\n\tmode: \"sparql11\",\n\t/**\n\t * Query string\n\t */\n\tvalue: \"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\\nPREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\\nSELECT * WHERE {\\n ?sub ?pred ?obj .\\n} \\nLIMIT 10\",\n\thighlightSelectionMatches: {\n\t\tshowToken: /\\w/\n\t},\n\ttabMode: \"indent\",\n\tlineNumbers: true,\n\tlineWrapping: true,\n\tbackdrop: false,\n\tfoldGutter: {\n\t\trangeFinder: new YASQE.fold.combine(YASQE.fold.brace, YASQE.fold.prefix)\n\t},\n\tcollapsePrefixesOnLoad: false,\n\tgutters: [\"gutterErrorBar\", \"CodeMirror-linenumbers\", \"CodeMirror-foldgutter\"],\n\tmatchBrackets: true,\n\tfixedGutter: true,\n\tsyntaxErrorCheck: true,\n\t/**\n\t * Extra shortcut keys. Check the CodeMirror manual on how to add your own\n\t *\n\t * @property extraKeys\n\t * @type object\n\t */\n\textraKeys: {\n\t\t//\t\t\t\t\t\"Ctrl-Space\" : function(yasqe) {\n\t\t//\t\t\t\t\t\tYASQE.autoComplete(yasqe);\n\t\t//\t\t\t\t\t},\n\t\t\"Ctrl-Space\": YASQE.autoComplete,\n\n\t\t\"Cmd-Space\": YASQE.autoComplete,\n\t\t\"Ctrl-D\": YASQE.deleteLine,\n\t\t\"Ctrl-K\": YASQE.deleteLine,\n\t\t\"Shift-Ctrl-K\": YASQE.deleteLine,\n\t\t\"Cmd-D\": YASQE.deleteLine,\n\t\t\"Cmd-K\": YASQE.deleteLine,\n\t\t\"Ctrl-/\": YASQE.commentLines,\n\t\t\"Cmd-/\": YASQE.commentLines,\n\t\t\"Ctrl-Alt-Down\": YASQE.copyLineDown,\n\t\t\"Ctrl-Alt-Up\": YASQE.copyLineUp,\n\t\t\"Cmd-Alt-Down\": YASQE.copyLineDown,\n\t\t\"Cmd-Alt-Up\": YASQE.copyLineUp,\n\t\t\"Shift-Ctrl-F\": YASQE.doAutoFormat,\n\t\t\"Shift-Cmd-F\": YASQE.doAutoFormat,\n\t\t\"Ctrl-]\": YASQE.indentMore,\n\t\t\"Cmd-]\": YASQE.indentMore,\n\t\t\"Ctrl-[\": YASQE.indentLess,\n\t\t\"Cmd-[\": YASQE.indentLess,\n\t\t\"Ctrl-S\": YASQE.storeQuery,\n\t\t\"Cmd-S\": YASQE.storeQuery,\n\t\t\"Ctrl-Enter\": YASQE.executeQuery,\n\t\t\"Cmd-Enter\": YASQE.executeQuery,\n\t\t\"F11\": function(yasqe) {\n\t\t\tyasqe.setOption(\"fullScreen\", !yasqe.getOption(\"fullScreen\"));\n\t\t},\n\t\t\"Esc\": function(yasqe) {\n\t\t\tif (yasqe.getOption(\"fullScreen\")) yasqe.setOption(\"fullScreen\", false);\n\t\t}\n\t},\n\tcursorHeight: 0.9,\n\n\n\t/**\n\t * Show a button with which users can create a link to this query. Set this value to null to disable this functionality.\n\t * By default, this feature is enabled, and the only the query value is appended to the link.\n\t * ps. This function should return an object which is parseable by jQuery.param (http://api.jquery.com/jQuery.param/)\n\t */\n\tcreateShareLink: YASQE.createShareLink,\n\n\tcreateShortLink: null,\n\n\t/**\n\t * Consume links shared by others, by checking the url for arguments coming from a query link. Defaults by only checking the 'query=' argument in the url\n\t */\n\tconsumeShareLink: YASQE.consumeShareLink,\n\n\n\n\n\t/**\n\t * Change persistency settings for the YASQE query value. Setting the values\n\t * to null, will disable persistancy: nothing is stored between browser\n\t * sessions Setting the values to a string (or a function which returns a\n\t * string), will store the query in localstorage using the specified string.\n\t * By default, the ID is dynamically generated using the closest dom ID, to avoid collissions when using multiple YASQE items on one\n\t * page\n\t *\n\t * @type function|string\n\t */\n\tpersistent: function(yasqe) {\n\t\treturn \"yasqe_\" + $(yasqe.getWrapperElement()).closest('[id]').attr('id') + \"_queryVal\";\n\t},\n\n\n\t/**\n\t * Settings for querying sparql endpoints\n\t */\n\tsparql: {\n\t\tqueryName: function(yasqe) {return yasqe.getQueryMode()},\n\t\tshowQueryButton: false,\n\n\t\t/**f\n\t\t * Endpoint to query\n\t\t *\n\t\t * @property sparql.endpoint\n\t\t * @type String|function\n\t\t */\n\t\tendpoint: \"http://dbpedia.org/sparql\",\n\t\t/**\n\t\t * Request method via which to access SPARQL endpoint\n\t\t *\n\t\t * @property sparql.requestMethod\n\t\t * @type String|function\n\t\t */\n\t\trequestMethod: \"POST\",\n\n\t\t/**\n\t\t * @type String|function\n\t\t */\n\t\tacceptHeaderGraph: \"text/turtle,*/*;q=0.9\",\n\t\t/**\n\t\t * @type String|function\n\t\t */\n\t\tacceptHeaderSelect: \"application/sparql-results+json,*/*;q=0.9\",\n\t\t/**\n\t\t * @type String|function\n\t\t */\n\t\tacceptHeaderUpdate: \"text/plain,*/*;q=0.9\",\n\n\t\t/**\n\t\t * Named graphs to query.\n\t\t */\n\t\tnamedGraphs: [],\n\t\t/**\n\t\t * Default graphs to query.\n\t\t */\n\t\tdefaultGraphs: [],\n\n\t\t/**\n\t\t * Additional request arguments. Add them in the form: {name: \"name\", value: \"value\"}\n\t\t */\n\t\targs: [],\n\n\t\t/**\n\t\t * Additional request headers\n\t\t */\n\t\theaders: {},\n\n\t\tgetQueryForAjax: null,\n\t\t/**\n\t\t * Set of ajax callbacks\n\t\t */\n\t\tcallbacks: {\n\t\t\tbeforeSend: null,\n\t\t\tcomplete: null,\n\t\t\terror: null,\n\t\t\tsuccess: null\n\t\t},\n\t\thandlers: {} //keep here for backwards compatability\n\t},\n});\n","//this is the entry-point for browserify.\n//the current browserify version does not support require-ing js files which are used as entry-point\n//this way, we can still require our main.js file\nmodule.exports = require('./main.js');","'use strict';\nmodule.exports = {\n\tquery: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"0 0 80 80\" enable-background=\"new 0 0 80 80\" xml:space=\"preserve\"><g ></g><g >\t<path d=\"M64.622,2.411H14.995c-6.627,0-12,5.373-12,12v49.897c0,6.627,5.373,12,12,12h49.627c6.627,0,12-5.373,12-12V14.411 C76.622,7.783,71.249,2.411,64.622,2.411z M24.125,63.906V15.093L61,39.168L24.125,63.906z\"/></g></svg>',\n\tqueryInvalid: '<svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"0 0 73.627 73.897\" enable-background=\"new 0 0 80 80\" xml:space=\"preserve\" inkscape:version=\"0.48.4 r9939\" sodipodi:docname=\"warning.svg\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1855\" inkscape:window-height=\"1056\" showgrid=\"false\" inkscape:zoom=\"3.1936344\" inkscape:cx=\"36.8135\" inkscape:cy=\"36.9485\" inkscape:window-x=\"2625\" inkscape:window-y=\"24\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"svg2\" /><g transform=\"translate(-2.995,-2.411)\" /><g transform=\"translate(-2.995,-2.411)\" ><path d=\"M 64.622,2.411 H 14.995 c -6.627,0 -12,5.373 -12,12 v 49.897 c 0,6.627 5.373,12 12,12 h 49.627 c 6.627,0 12,-5.373 12,-12 V 14.411 c 0,-6.628 -5.373,-12 -12,-12 z M 24.125,63.906 V 15.093 L 61,39.168 24.125,63.906 z\" inkscape:connector-curvature=\"0\" /></g><path d=\"M 66.129381,65.903784 H 49.769875 c -1.64721,0 -2.889385,-0.581146 -3.498678,-1.63595 -0.609293,-1.055608 -0.491079,-2.422161 0.332391,-3.848223 l 8.179753,-14.167069 c 0.822934,-1.42633 1.9477,-2.211737 3.166018,-2.211737 1.218319,0 2.343086,0.785407 3.166019,2.211737 l 8.179751,14.167069 c 0.823472,1.426062 0.941686,2.792615 0.33239,3.848223 -0.609023,1.054804 -1.851197,1.63595 -3.498138,1.63595 z M 59.618815,60.91766 c 0,-0.850276 -0.68944,-1.539719 -1.539717,-1.539719 -0.850276,0 -1.539718,0.689443 -1.539718,1.539719 0,0.850277 0.689442,1.539718 1.539718,1.539718 0.850277,0 1.539717,-0.689441 1.539717,-1.539718 z m 0.04155,-9.265919 c 0,-0.873061 -0.707939,-1.580998 -1.580999,-1.580998 -0.873061,0 -1.580999,0.707937 -1.580999,1.580998 l 0.373403,5.610965 h 0.0051 c 0.05415,0.619747 0.568548,1.10761 1.202504,1.10761 0.586239,0 1.075443,-0.415756 1.188563,-0.968489 0.0092,-0.04476 0.0099,-0.09248 0.01392,-0.138854 h 0.01072 l 0.367776,-5.611232 z\" inkscape:connector-curvature=\"0\" style=\"fill:#aa8800\" /></svg>',\n\tdownload: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"tiny\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\" xml:space=\"preserve\"><g ></g><g >\t<path fill-rule=\"evenodd\" fill=\"#000000\" d=\"M88,84v-2c0-2.961-0.859-4-4-4H16c-2.961,0-4,0.98-4,4v2c0,3.102,1.039,4,4,4h68 C87.02,88,88,87.039,88,84z M58,12H42c-5,0-6,0.941-6,6v22H16l34,34l34-34H64V18C64,12.941,62.939,12,58,12z\"/></g></svg>',\n\tshare: '<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\" style=\"enable-background:new 0 0 100 100;\" xml:space=\"preserve\"><path d=\"M36.764,50c0,0.308-0.07,0.598-0.088,0.905l32.247,16.119c2.76-2.338,6.293-3.797,10.195-3.797 C87.89,63.228,95,70.338,95,79.109C95,87.89,87.89,95,79.118,95c-8.78,0-15.882-7.11-15.882-15.891c0-0.316,0.07-0.598,0.088-0.905 L31.077,62.085c-2.769,2.329-6.293,3.788-10.195,3.788C12.11,65.873,5,58.771,5,50c0-8.78,7.11-15.891,15.882-15.891 c3.902,0,7.427,1.468,10.195,3.797l32.247-16.119c-0.018-0.308-0.088-0.598-0.088-0.914C63.236,12.11,70.338,5,79.118,5 C87.89,5,95,12.11,95,20.873c0,8.78-7.11,15.891-15.882,15.891c-3.911,0-7.436-1.468-10.195-3.806L36.676,49.086 C36.693,49.394,36.764,49.684,36.764,50z\"/></svg>',\n\twarning: '<svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 66.399998 66.399998\" enable-background=\"new 0 0 69.3 69.3\" xml:space=\"preserve\" height=\"100%\" width=\"100%\" inkscape:version=\"0.48.4 r9939\" ><g transform=\"translate(-1.5,-1.5)\" style=\"fill:#ff0000\"><path d=\"M 34.7,1.5 C 16.4,1.5 1.5,16.4 1.5,34.7 1.5,53 16.4,67.9 34.7,67.9 53,67.9 67.9,53 67.9,34.7 67.9,16.4 53,1.5 34.7,1.5 z m 0,59.4 C 20.2,60.9 8.5,49.1 8.5,34.7 8.5,20.2 20.3,8.5 34.7,8.5 c 14.4,0 26.2,11.8 26.2,26.2 0,14.4 -11.8,26.2 -26.2,26.2 z\" inkscape:connector-curvature=\"0\" style=\"fill:#ff0000\" /><path d=\"m 34.6,47.1 c -1.4,0 -2.5,0.5 -3.5,1.5 -0.9,1 -1.4,2.2 -1.4,3.6 0,1.6 0.5,2.8 1.5,3.8 1,0.9 2.1,1.3 3.4,1.3 1.3,0 2.4,-0.5 3.4,-1.4 1,-0.9 1.5,-2.2 1.5,-3.7 0,-1.4 -0.5,-2.6 -1.4,-3.6 -0.9,-1 -2.1,-1.5 -3.5,-1.5 z\" inkscape:connector-curvature=\"0\" style=\"fill:#ff0000\" /><path d=\"m 34.8,13.9 c -1.5,0 -2.8,0.5 -3.7,1.6 -0.9,1 -1.4,2.4 -1.4,4.2 0,1.1 0.1,2.9 0.2,5.6 l 0.8,13.1 c 0.2,1.8 0.4,3.2 0.9,4.1 0.5,1.2 1.5,1.8 2.9,1.8 1.3,0 2.3,-0.7 2.9,-1.9 0.5,-1 0.7,-2.3 0.9,-4 L 39.4,25 c 0.1,-1.3 0.2,-2.5 0.2,-3.8 0,-2.2 -0.3,-3.9 -0.8,-5.1 -0.5,-1 -1.6,-2.2 -4,-2.2 z\" inkscape:connector-curvature=\"0\" style=\"fill:#ff0000\" /></g></svg>',\n\tfullscreen: '<svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"5 -10 74.074074 100\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\" inkscape:version=\"0.48.4 r9939\" sodipodi:docname=\"noun_2186_cc.svg\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"640\" inkscape:window-height=\"480\" showgrid=\"false\" fit-margin-top=\"0\" fit-margin-left=\"0\" fit-margin-right=\"0\" fit-margin-bottom=\"0\" inkscape:zoom=\"2.36\" inkscape:cx=\"44.101509\" inkscape:cy=\"31.481481\" inkscape:window-x=\"65\" inkscape:window-y=\"24\" inkscape:window-maximized=\"0\" inkscape:current-layer=\"Layer_1\" /><path d=\"m -7.962963,-10 v 38.889 l 16.667,-16.667 16.667,16.667 5.555,-5.555 -16.667,-16.667 16.667,-16.667 h -38.889 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"m 92.037037,-10 v 38.889 l -16.667,-16.667 -16.666,16.667 -5.556,-5.555 16.666,-16.667 -16.666,-16.667 h 38.889 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"M -7.962963,90 V 51.111 l 16.667,16.666 16.667,-16.666 5.555,5.556 -16.667,16.666 16.667,16.667 h -38.889 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"M 92.037037,90 V 51.111 l -16.667,16.666 -16.666,-16.666 -5.556,5.556 16.666,16.666 -16.666,16.667 h 38.889 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /></svg>',\n\tsmallscreen: '<svg xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\" version=\"1.1\" x=\"0px\" y=\"0px\" width=\"100%\" height=\"100%\" viewBox=\"5 -10 74.074074 100\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\" inkscape:version=\"0.48.4 r9939\" sodipodi:docname=\"noun_2186_cc.svg\"><metadata ><rdf:RDF><cc:Work rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /></cc:Work></rdf:RDF></metadata><defs /><sodipodi:namedview pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1\" objecttolerance=\"10\" gridtolerance=\"10\" guidetolerance=\"10\" inkscape:pageopacity=\"0\" inkscape:pageshadow=\"2\" inkscape:window-width=\"1855\" inkscape:window-height=\"1056\" showgrid=\"false\" fit-margin-top=\"0\" fit-margin-left=\"0\" fit-margin-right=\"0\" fit-margin-bottom=\"0\" inkscape:zoom=\"2.36\" inkscape:cx=\"44.101509\" inkscape:cy=\"31.481481\" inkscape:window-x=\"65\" inkscape:window-y=\"24\" inkscape:window-maximized=\"1\" inkscape:current-layer=\"Layer_1\" /><path d=\"m 30.926037,28.889 0,-38.889 -16.667,16.667 -16.667,-16.667 -5.555,5.555 16.667,16.667 -16.667,16.667 38.889,0 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"m 53.148037,28.889 0,-38.889 16.667,16.667 16.666,-16.667 5.556,5.555 -16.666,16.667 16.666,16.667 -38.889,0 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"m 30.926037,51.111 0,38.889 -16.667,-16.666 -16.667,16.666 -5.555,-5.556 16.667,-16.666 -16.667,-16.667 38.889,0 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /><path d=\"m 53.148037,51.111 0,38.889 16.667,-16.666 16.666,16.666 5.556,-5.556 -16.666,-16.666 16.666,-16.667 -38.889,0 z\" inkscape:connector-curvature=\"0\" style=\"fill:#010101\" /></svg>',\n};\n","'use strict';\n//make sure any console statements\nwindow.console = window.console || {\n\t\"log\": function() {}\n};\n\n/**\n * Load libraries\n */\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tCodeMirror = (function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(),\n\tutils = require('./utils.js'),\n\tyutils = require('yasgui-utils'),\n\timgs = require('./imgs.js');\n\nrequire(\"../lib/deparam.js\");\nrequire('codemirror/addon/fold/foldcode.js');\nrequire('codemirror/addon/fold/foldgutter.js');\nrequire('codemirror/addon/fold/xml-fold.js');\nrequire('codemirror/addon/fold/brace-fold.js');\nrequire('./prefixFold.js');\nrequire('codemirror/addon/hint/show-hint.js');\nrequire('codemirror/addon/search/searchcursor.js');\nrequire('codemirror/addon/edit/matchbrackets.js');\nrequire('codemirror/addon/runmode/runmode.js');\nrequire('codemirror/addon/display/fullscreen.js');\nrequire('../lib/grammar/tokenizer.js');\n\n\n\n/**\n * Main YASQE constructor. Pass a DOM element as argument to append the editor to, and (optionally) pass along config settings (see the YASQE.defaults object below, as well as the regular CodeMirror documentation, for more information on configurability)\n *\n * @constructor\n * @param {DOM-Element} parent element to append editor to.\n * @param {object} settings\n * @class YASQE\n * @return {doc} YASQE document\n */\nvar root = module.exports = function(parent, config) {\n\tvar rootEl = $(\"<div>\", {\n\t\tclass: 'yasqe'\n\t}).appendTo($(parent));\n\tconfig = extendConfig(config);\n\tvar yasqe = extendCmInstance(CodeMirror(rootEl[0], config));\n\tpostProcessCmElement(yasqe);\n\treturn yasqe;\n};\n\n/**\n * Extend config object, which we will pass on to the CM constructor later on.\n * Need this, to make sure our own 'onBlur' etc events do not get overwritten by\n * people who add their own onblur events to the config Additionally, need this\n * to include the CM defaults ourselves. CodeMirror has a method for including\n * defaults, but we can't rely on that one: it assumes flat config object, where\n * we have nested objects (e.g. the persistency option)\n *\n * @private\n */\nvar extendConfig = function(config) {\n\tvar extendedConfig = $.extend(true, {}, root.defaults, config);\n\n\t// I know, codemirror deals with default options as well.\n\t//However, it does not do this recursively (i.e. the persistency option)\n\n\n\treturn extendedConfig;\n};\n/**\n * Add extra functions to the CM document (i.e. the codemirror instantiated\n * object)\n *\n * @private\n */\nvar extendCmInstance = function(yasqe) {\n\t//instantiate autocompleters\n\tyasqe.autocompleters = require('./autocompleters/autocompleterBase.js')(root, yasqe);\n\tif (yasqe.options.autocompleters) {\n\t\tyasqe.options.autocompleters.forEach(function(name) {\n\t\t\tif (root.Autocompleters[name]) yasqe.autocompleters.init(name, root.Autocompleters[name]);\n\t\t})\n\t}\n\tyasqe.lastQueryDuration = null;\n\tyasqe.getCompleteToken = function(token, cur) {\n\t\treturn require('./tokenUtils.js').getCompleteToken(yasqe, token, cur);\n\t};\n\tyasqe.getPreviousNonWsToken = function(line, token) {\n\t\treturn require('./tokenUtils.js').getPreviousNonWsToken(yasqe, line, token);\n\t};\n\tyasqe.getNextNonWsToken = function(lineNumber, charNumber) {\n\t\treturn require('./tokenUtils.js').getNextNonWsToken(yasqe, lineNumber, charNumber);\n\t};\n\tyasqe.collapsePrefixes = function(collapse) {\n\t\tif (collapse === undefined) collapse = true;\n\t\tyasqe.foldCode(require('./prefixFold.js').findFirstPrefixLine(yasqe), root.fold.prefix, (collapse ? \"fold\" : \"unfold\"));\n\t};\n\tvar backdrop = null;\n\tvar animateSpeed = null;\n\tyasqe.setBackdrop = function(show) {\n\n\n\t\tif (yasqe.options.backdrop || yasqe.options.backdrop === 0 || yasqe.options.backdrop === '0') {\n\t\t\tif (animateSpeed === null) {\n\t\t\t\tanimateSpeed = +yasqe.options.backdrop;\n\t\t\t\tif (animateSpeed === 1) {\n\t\t\t\t\t//ah, yasqe.options.backdrop was 'true'. Set this to default animate speed 400\n\t\t\t\t\tanimateSpeed = 400;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tif (!backdrop) {\n\t\t\t\tbackdrop = $('<div>', {\n\t\t\t\t\t\tclass: 'backdrop'\n\t\t\t\t\t})\n\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t$(this).hide();\n\t\t\t\t\t})\n\t\t\t\t\t.insertAfter($(yasqe.getWrapperElement()));\n\t\t\t}\n\t\t\tif (show) {\n\t\t\t\tbackdrop.show(animateSpeed);\n\t\t\t} else {\n\t\t\t\tbackdrop.hide(animateSpeed);\n\t\t\t}\n\t\t}\n\t};\n\t/**\n\t * Execute query. Pass a callback function, or a configuration object (see\n\t * default settings below for possible values) I.e., you can change the\n\t * query configuration by either changing the default settings, changing the\n\t * settings of this document, or by passing query settings to this function\n\t *\n\t * @method doc.query\n\t * @param function|object\n\t */\n\tyasqe.query = function(callbackOrConfig) {\n\t\troot.executeQuery(yasqe, callbackOrConfig);\n\t};\n\n\tyasqe.getUrlArguments = function(config) {\n\t\treturn root.getUrlArguments(yasqe, config);\n\t};\n\n\t/**\n\t * Fetch defined prefixes from query string\n\t *\n\t * @method doc.getPrefixesFromQuery\n\t * @return object\n\t */\n\tyasqe.getPrefixesFromQuery = function() {\n\t\treturn require('./prefixUtils.js').getPrefixesFromQuery(yasqe);\n\t};\n\n\tyasqe.addPrefixes = function(prefixes) {\n\t\treturn require('./prefixUtils.js').addPrefixes(yasqe, prefixes);\n\t};\n\tyasqe.removePrefixes = function(prefixes) {\n\t\treturn require('./prefixUtils.js').removePrefixes(yasqe, prefixes);\n\t};\n\n\tyasqe.getValueWithoutComments = function() {\n\t\tvar cleanedQuery = \"\";\n\t\troot.runMode(yasqe.getValue(), \"sparql11\", function(stringVal, className) {\n\t\t\tif (className != \"comment\") {\n\t\t\t\tcleanedQuery += stringVal;\n\t\t\t}\n\t\t});\n\t\treturn cleanedQuery;\n\t};\n\t/**\n\t * Fetch the query type (e.g., SELECT||DESCRIBE||INSERT||DELETE||ASK||CONSTRUCT)\n\t *\n\t * @method doc.getQueryType\n\t * @return string\n\t *\n\t */\n\tyasqe.getQueryType = function() {\n\t\treturn yasqe.queryType;\n\t};\n\t/**\n\t * Fetch the query mode: 'query' or 'update'\n\t *\n\t * @method doc.getQueryMode\n\t * @return string\n\t *\n\t */\n\tyasqe.getQueryMode = function() {\n\t\tvar type = yasqe.getQueryType();\n\t\tif (type == \"INSERT\" || type == \"DELETE\" || type == \"LOAD\" || type == \"CLEAR\" || type == \"CREATE\" || type == \"DROP\" || type == \"COPY\" || type == \"MOVE\" || type == \"ADD\") {\n\t\t\treturn \"update\";\n\t\t} else {\n\t\t\treturn \"query\";\n\t\t}\n\n\t};\n\n\tyasqe.setCheckSyntaxErrors = function(isEnabled) {\n\t\tyasqe.options.syntaxErrorCheck = isEnabled;\n\t\tcheckSyntax(yasqe);\n\t};\n\n\tyasqe.enableCompleter = function(name) {\n\t\taddCompleterToSettings(yasqe.options, name);\n\t\tif (root.Autocompleters[name]) yasqe.autocompleters.init(name, root.Autocompleters[name]);\n\t};\n\tyasqe.disableCompleter = function(name) {\n\t\tremoveCompleterFromSettings(yasqe.options, name);\n\t};\n\treturn yasqe;\n};\n\nvar addCompleterToSettings = function(settings, name) {\n\tif (!settings.autocompleters) settings.autocompleters = [];\n\tsettings.autocompleters.push(name);\n};\nvar removeCompleterFromSettings = function(settings, name) {\n\tif (typeof settings.autocompleters == \"object\") {\n\t\tvar index = $.inArray(name, settings.autocompleters);\n\t\tif (index >= 0) {\n\t\t\tsettings.autocompleters.splice(index, 1);\n\t\t\tremoveCompleterFromSettings(settings, name); //just in case. suppose 1 completer is listed twice\n\t\t}\n\t}\n};\nvar postProcessCmElement = function(yasqe) {\n\t/**\n\t * Set doc value\n\t */\n\tvar storageId = utils.getPersistencyId(yasqe, yasqe.options.persistent);\n\tif (storageId) {\n\t\tvar valueFromStorage = yutils.storage.get(storageId);\n\t\tif (valueFromStorage)\n\t\t\tyasqe.setValue(valueFromStorage);\n\t}\n\n\troot.drawButtons(yasqe);\n\n\t/**\n\t * Add event handlers\n\t */\n\tyasqe.on('blur', function(yasqe, eventInfo) {\n\t\troot.storeQuery(yasqe);\n\t});\n\tyasqe.on('change', function(yasqe, eventInfo) {\n\t\tcheckSyntax(yasqe);\n\t\troot.updateQueryButton(yasqe);\n\t\troot.positionButtons(yasqe);\n\t});\n\tyasqe.on('changes', function() {\n\t\t//e.g. on paste\n\t\tcheckSyntax(yasqe);\n\t\troot.updateQueryButton(yasqe);\n\t\troot.positionButtons(yasqe);\n\t});\n\n\tyasqe.on('cursorActivity', function(yasqe, eventInfo) {\n\t\tupdateButtonsTransparency(yasqe);\n\t});\n\tyasqe.prevQueryValid = false;\n\tcheckSyntax(yasqe); // on first load, check as well (our stored or default query might be incorrect)\n\troot.positionButtons(yasqe);\n\n\t$(yasqe.getWrapperElement()).on('mouseenter', '.cm-atom', function() {\n\t\tvar matchText = $(this).text();\n\t\t$(yasqe.getWrapperElement()).find('.cm-atom').filter(function() {\n\t\t\treturn $(this).text() === matchText;\n\t\t}).addClass('matchingVar');\n\t}).on('mouseleave', '.cm-atom', function() {\n\t\t$(yasqe.getWrapperElement()).find('.matchingVar').removeClass('matchingVar');\n\t});\n\t/**\n\t * check url args and modify yasqe settings if needed\n\t */\n\tif (yasqe.options.consumeShareLink) {\n\t\tyasqe.options.consumeShareLink(yasqe, getUrlParams());\n\t\t//and: add a hash listener!\n\t\twindow.addEventListener(\"hashchange\", function() {\n\t\t\tyasqe.options.consumeShareLink(yasqe, getUrlParams());\n\t\t});\n\t}\n\tif (yasqe.options.collapsePrefixesOnLoad) yasqe.collapsePrefixes(true);\n};\n\n/**\n * get url params. first try fetching using hash. If it fails, try the regular query parameters (for backwards compatability)\n */\nvar getUrlParams = function() {\n\t//first try hash\n\tvar urlParams = null;\n\tif (window.location.hash.length > 1) {\n\t\t//firefox does some decoding if we're using window.location.hash (e.g. the + sign in contentType settings)\n\t\t//Don't want this. So simply get the hash string ourselves\n\t\turlParams = $.deparam(location.href.split(\"#\")[1])\n\t}\n\tif ((!urlParams || !('query' in urlParams)) && window.location.search.length > 1) {\n\t\t//ok, then just try regular url params\n\t\turlParams = $.deparam(window.location.search.substring(1));\n\t}\n\treturn urlParams;\n};\n\n\n\n/**\n * Update transparency of buttons. Increase transparency when cursor is below buttons\n */\n\nvar updateButtonsTransparency = function(yasqe) {\n\tyasqe.cursor = $(\".CodeMirror-cursor\");\n\tif (yasqe.buttons && yasqe.buttons.is(\":visible\") && yasqe.cursor.length > 0) {\n\t\tif (utils.elementsOverlap(yasqe.cursor, yasqe.buttons)) {\n\t\t\tyasqe.buttons.find(\"svg\").attr(\"opacity\", \"0.2\");\n\t\t} else {\n\t\t\tyasqe.buttons.find(\"svg\").attr(\"opacity\", \"1.0\");\n\t\t}\n\t}\n};\n\n\n\n\n\n\n\n\n\nvar clearError = null;\nvar checkSyntax = function(yasqe, deepcheck) {\n\n\tyasqe.queryValid = true;\n\n\tyasqe.clearGutter(\"gutterErrorBar\");\n\n\tvar state = null;\n\tfor (var l = 0; l < yasqe.lineCount(); ++l) {\n\t\tvar precise = false;\n\t\tif (!yasqe.prevQueryValid) {\n\t\t\t// we don't want cached information in this case, otherwise the\n\t\t\t// previous error sign might still show up,\n\t\t\t// even though the syntax error might be gone already\n\t\t\tprecise = true;\n\t\t}\n\n\t\tvar token = yasqe.getTokenAt({\n\t\t\tline: l,\n\t\t\tch: yasqe.getLine(l).length\n\t\t}, precise);\n\t\tvar state = token.state;\n\t\tyasqe.queryType = state.queryType;\n\t\tif (state.OK == false) {\n\t\t\tif (!yasqe.options.syntaxErrorCheck) {\n\t\t\t\t//the library we use already marks everything as being an error. Overwrite this class attribute.\n\t\t\t\t$(yasqe.getWrapperElement).find(\".sp-error\").css(\"color\", \"black\");\n\t\t\t\t//we don't want to gutter error, so return\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar warningEl = yutils.svg.getElement(imgs.warning);\n\t\t\tif (state.errorMsg) {\n\t\t\t\trequire('./tooltip')(yasqe, warningEl, function() {\n\t\t\t\t\treturn $(\"<div/>\").text(token.state.errorMsg).html();\n\t\t\t\t});\n\t\t\t} else if (state.possibleCurrent && state.possibleCurrent.length > 0) {\n\t\t\t\t//\t\t\t\twarningEl.style.zIndex = \"99999999\";\n\t\t\t\trequire('./tooltip')(yasqe, warningEl, function() {\n\t\t\t\t\tvar expectedEncoded = [];\n\t\t\t\t\tstate.possibleCurrent.forEach(function(expected) {\n\t\t\t\t\t\texpectedEncoded.push(\"<strong style='text-decoration:underline'>\" + $(\"<div/>\").text(expected).html() + \"</strong>\");\n\t\t\t\t\t});\n\t\t\t\t\treturn \"This line is invalid. Expected: \" + expectedEncoded.join(\", \");\n\t\t\t\t});\n\t\t\t}\n\t\t\twarningEl.style.marginTop = \"2px\";\n\t\t\twarningEl.style.marginLeft = \"2px\";\n\t\t\twarningEl.className = 'parseErrorIcon';\n\t\t\tyasqe.setGutterMarker(l, \"gutterErrorBar\", warningEl);\n\n\t\t\tyasqe.queryValid = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tyasqe.prevQueryValid = yasqe.queryValid;\n\tif (deepcheck) {\n\t\tif (state != null && state.stack != undefined) {\n\t\t\tvar stack = state.stack,\n\t\t\t\tlen = state.stack.length;\n\t\t\t// Because incremental parser doesn't receive end-of-input\n\t\t\t// it can't clear stack, so we have to check that whatever\n\t\t\t// is left on the stack is nillable\n\t\t\tif (len > 1)\n\t\t\t\tyasqe.queryValid = false;\n\t\t\telse if (len == 1) {\n\t\t\t\tif (stack[0] != \"solutionModifier\" && stack[0] != \"?limitOffsetClauses\" && stack[0] != \"?offsetClause\")\n\t\t\t\t\tyasqe.queryValid = false;\n\t\t\t}\n\t\t}\n\t}\n};\n/**\n * Static Utils\n */\n// first take all CodeMirror references and store them in the YASQE object\n$.extend(root, CodeMirror);\n\n\n//add registrar for autocompleters\nroot.Autocompleters = {};\nroot.registerAutocompleter = function(name, constructor) {\n\troot.Autocompleters[name] = constructor;\n\taddCompleterToSettings(root.defaults, name);\n}\n\nroot.autoComplete = function(yasqe) {\n\t//this function gets called when pressing the keyboard shortcut. I.e., autoShow = false\n\tyasqe.autocompleters.autoComplete(false);\n};\n//include the autocompleters we provide out-of-the-box\nroot.registerAutocompleter(\"prefixes\", require(\"./autocompleters/prefixes.js\"));\nroot.registerAutocompleter(\"properties\", require(\"./autocompleters/properties.js\"));\nroot.registerAutocompleter(\"classes\", require(\"./autocompleters/classes.js\"));\nroot.registerAutocompleter(\"variables\", require(\"./autocompleters/variables.js\"));\n\n\nroot.positionButtons = function(yasqe) {\n\tvar scrollBar = $(yasqe.getWrapperElement()).find(\".CodeMirror-vscrollbar\");\n\tvar offset = 0;\n\tif (scrollBar.is(\":visible\")) {\n\t\toffset = scrollBar.outerWidth();\n\t}\n\tif (yasqe.buttons.is(\":visible\")) yasqe.buttons.css(\"right\", offset + 4);\n};\n\n/**\n * Create a share link\n *\n * @method YASQE.createShareLink\n * @param {doc} YASQE document\n * @default {query: doc.getValue()}\n * @return object\n */\nroot.createShareLink = function(yasqe) {\n\t//extend existing link, so first fetch current arguments\n\tvar urlParams = {};\n\tif (window.location.hash.length > 1) urlParams = $.deparam(window.location.hash.substring(1));\n\turlParams['query'] = yasqe.getValue();\n\treturn urlParams;\n};\nroot.getAsCurl = function(yasqe, ajaxConfig) {\n\tvar curl = require('./curl.js');\n\treturn curl.createCurlString(yasqe, ajaxConfig);\n};\n/**\n * Consume the share link, by parsing the document URL for possible yasqe arguments, and setting the appropriate values in the YASQE doc\n *\n * @method YASQE.consumeShareLink\n * @param {doc} YASQE document\n */\nroot.consumeShareLink = function(yasqe, urlParams) {\n\tif (urlParams && urlParams.query) {\n\t\tyasqe.setValue(urlParams.query);\n\t}\n};\nroot.drawButtons = function(yasqe) {\n\tyasqe.buttons = $(\"<div class='yasqe_buttons'></div>\").appendTo($(yasqe.getWrapperElement()));\n\n\t/**\n\t * draw share link button\n\t */\n\tif (yasqe.options.createShareLink) {\n\n\t\tvar svgShare = $(yutils.svg.getElement(imgs.share));\n\t\tsvgShare.click(function(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tvar popup = $(\"<div class='yasqe_sharePopup'></div>\").appendTo(yasqe.buttons);\n\t\t\t\t$('html').click(function() {\n\t\t\t\t\tif (popup) popup.remove();\n\t\t\t\t});\n\n\t\t\t\tpopup.click(function(event) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t});\n\t\t\t\tvar $input = $(\"<input>\").val(location.protocol + '//' + location.host + location.pathname + location.search + \"#\" + $.param(yasqe.options.createShareLink(yasqe)));\n\n\t\t\t\t$input.focus(function() {\n\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\t$this.select();\n\n\t\t\t\t\t// Work around Chrome's little problem\n\t\t\t\t\t$this.mouseup(function() {\n\t\t\t\t\t\t// Prevent further mouseup intervention\n\t\t\t\t\t\t$this.unbind(\"mouseup\");\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\tpopup.empty().append($('<div>', {class:'inputWrapper'}).append($input));\n\t\t\t\tif (yasqe.options.createShortLink) {\n\t\t\t\t\tpopup.addClass('enableShort');\n\t\t\t\t\t$('<button>Shorten</button>')\n\t\t\t\t\t\t.addClass('yasqe_btn yasqe_btn-sm yasqe_btn-primary')\n\t\t\t\t\t\t.click(function() {\n\t\t\t\t\t\t\t$(this).parent().find('button').attr('disabled', 'disabled');\n\t\t\t\t\t\t\tyasqe.options.createShortLink($input.val(), function(errString, shortLink) {\n\t\t\t\t\t\t\t\tif (errString) {\n\t\t\t\t\t\t\t\t\t$input.remove();\n\t\t\t\t\t\t\t\t\tpopup.find('.inputWrapper').append($('<span>', {class:\"shortlinkErr\"}).text(errString));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$input.val(shortLink).focus();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}).appendTo(popup);\n\t\t\t\t}\n\t\t\t\t$('<button>CURL</button>')\n\t\t\t\t\t.addClass('yasqe_btn yasqe_btn-sm yasqe_btn-primary')\n\t\t\t\t\t.click(function() {\n\n\t\t\t\t\t\t$(this).parent().find('button').attr('disabled', 'disabled');\n\t\t\t\t\t\t$input.val(root.getAsCurl(yasqe)).focus();\n\t\t\t\t\t}).appendTo(popup);\n\t\t\t\tvar positions = svgShare.position();\n\t\t\t\tpopup.css(\"top\", (positions.top + svgShare.outerHeight() + parseInt(popup.css('padding-top')) ) + \"px\").css(\"left\", ((positions.left + svgShare.outerWidth()) - popup.outerWidth()) + \"px\");\n\t\t\t\t$input.focus();\n\t\t\t})\n\t\t\t.addClass(\"yasqe_share\")\n\t\t\t.attr(\"title\", \"Share your query\")\n\t\t\t.appendTo(yasqe.buttons);\n\n\t}\n\n\n\t/**\n\t * draw fullscreen button\n\t */\n\n\tvar toggleFullscreen = $('<div>', {\n\t\t\tclass: 'fullscreenToggleBtns'\n\t\t})\n\t\t.append($(yutils.svg.getElement(imgs.fullscreen))\n\t\t\t.addClass(\"yasqe_fullscreenBtn\")\n\t\t\t.attr(\"title\", \"Set editor full screen\")\n\t\t\t.click(function() {\n\t\t\t\tyasqe.setOption(\"fullScreen\", true);\n\t\t\t}))\n\t\t.append($(yutils.svg.getElement(imgs.smallscreen))\n\t\t\t.addClass(\"yasqe_smallscreenBtn\")\n\t\t\t.attr(\"title\", \"Set editor to normale size\")\n\t\t\t.click(function() {\n\t\t\t\tyasqe.setOption(\"fullScreen\", false);\n\t\t\t}))\n\tyasqe.buttons.append(toggleFullscreen);\n\n\n\tif (yasqe.options.sparql.showQueryButton) {\n\t\t$(\"<div>\", {\n\t\t\t\tclass: 'yasqe_queryButton'\n\t\t\t})\n\t\t\t.click(function() {\n\t\t\t\tif ($(this).hasClass(\"query_busy\")) {\n\t\t\t\t\tif (yasqe.xhr) yasqe.xhr.abort();\n\t\t\t\t\troot.updateQueryButton(yasqe);\n\t\t\t\t} else {\n\t\t\t\t\tyasqe.query();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.appendTo(yasqe.buttons);\n\t\troot.updateQueryButton(yasqe);\n\t}\n\n};\n\n\nvar queryButtonIds = {\n\t\"busy\": \"loader\",\n\t\"valid\": \"query\",\n\t\"error\": \"queryInvalid\"\n};\n\n/**\n * Update the query button depending on current query status. If no query status is passed via the parameter, it auto-detects the current query status\n *\n * @param {doc} YASQE document\n * @param status {string|null, \"busy\"|\"valid\"|\"error\"}\n */\nroot.updateQueryButton = function(yasqe, status) {\n\tvar queryButton = $(yasqe.getWrapperElement()).find(\".yasqe_queryButton\");\n\tif (queryButton.length == 0) return; //no query button drawn\n\n\t//detect status\n\tif (!status) {\n\t\tstatus = \"valid\";\n\t\tif (yasqe.queryValid === false) status = \"error\";\n\t}\n\n\tif (status != yasqe.queryStatus) {\n\t\tqueryButton\n\t\t\t.empty()\n\t\t\t.removeClass(function(index, classNames) {\n\t\t\t\treturn classNames.split(\" \").filter(function(c) {\n\t\t\t\t\t//remove classname from previous status\n\t\t\t\t\treturn c.indexOf(\"query_\") == 0;\n\t\t\t\t}).join(\" \");\n\t\t\t});\n\n\t\tif (status == \"busy\") {\n\t\t\tqueryButton.append($('<div>', {\n\t\t\t\tclass: 'loader',\n\t\t\t}));\n\t\t\tyasqe.queryStatus = status;\n\t\t} else if (status == \"valid\" || status == \"error\") {\n\t\t\tqueryButton.addClass(\"query_\" + status);\n\t\t\tyutils.svg.draw(queryButton, imgs[queryButtonIds[status]]);\n\t\t\tyasqe.queryStatus = status;\n\t\t}\n\t}\n};\n/**\n * Initialize YASQE from an existing text area (see http://codemirror.net/doc/manual.html#fromTextArea for more info)\n *\n * @method YASQE.fromTextArea\n * @param textArea {DOM element}\n * @param config {object}\n * @returns {doc} YASQE document\n */\nroot.fromTextArea = function(textAreaEl, config) {\n\tconfig = extendConfig(config);\n\t//add yasqe div as parent (needed for styles to be manageable and scoped).\n\t//In this case, I -also- put it as parent el of the text area. This is wrapped in a div now\n\tvar rootEl = $(\"<div>\", {\n\t\tclass: 'yasqe'\n\t}).insertBefore($(textAreaEl)).append($(textAreaEl));\n\tvar yasqe = extendCmInstance(CodeMirror.fromTextArea(textAreaEl, config));\n\tpostProcessCmElement(yasqe);\n\treturn yasqe;\n};\n\n\nroot.storeQuery = function(yasqe) {\n\tvar storageId = utils.getPersistencyId(yasqe, yasqe.options.persistent);\n\tif (storageId) {\n\t\tyutils.storage.set(storageId, yasqe.getValue(), \"month\");\n\t}\n};\nroot.commentLines = function(yasqe) {\n\tvar startLine = yasqe.getCursor(true).line;\n\tvar endLine = yasqe.getCursor(false).line;\n\tvar min = Math.min(startLine, endLine);\n\tvar max = Math.max(startLine, endLine);\n\n\t// if all lines start with #, remove this char. Otherwise add this char\n\tvar linesAreCommented = true;\n\tfor (var i = min; i <= max; i++) {\n\t\tvar line = yasqe.getLine(i);\n\t\tif (line.length == 0 || line.substring(0, 1) != \"#\") {\n\t\t\tlinesAreCommented = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor (var i = min; i <= max; i++) {\n\t\tif (linesAreCommented) {\n\t\t\t// lines are commented, so remove comments\n\t\t\tyasqe.replaceRange(\"\", {\n\t\t\t\tline: i,\n\t\t\t\tch: 0\n\t\t\t}, {\n\t\t\t\tline: i,\n\t\t\t\tch: 1\n\t\t\t});\n\t\t} else {\n\t\t\t// Not all lines are commented, so add comments\n\t\t\tyasqe.replaceRange(\"#\", {\n\t\t\t\tline: i,\n\t\t\t\tch: 0\n\t\t\t});\n\t\t}\n\n\t}\n};\n\nroot.copyLineUp = function(yasqe) {\n\tvar cursor = yasqe.getCursor();\n\tvar lineCount = yasqe.lineCount();\n\t// First create new empty line at end of text\n\tyasqe.replaceRange(\"\\n\", {\n\t\tline: lineCount - 1,\n\t\tch: yasqe.getLine(lineCount - 1).length\n\t});\n\t// Copy all lines to their next line\n\tfor (var i = lineCount; i > cursor.line; i--) {\n\t\tvar line = yasqe.getLine(i - 1);\n\t\tyasqe.replaceRange(line, {\n\t\t\tline: i,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: i,\n\t\t\tch: yasqe.getLine(i).length\n\t\t});\n\t}\n};\nroot.copyLineDown = function(yasqe) {\n\troot.copyLineUp(yasqe);\n\t// Make sure cursor goes one down (we are copying downwards)\n\tvar cursor = yasqe.getCursor();\n\tcursor.line++;\n\tyasqe.setCursor(cursor);\n};\nroot.doAutoFormat = function(yasqe) {\n\tif (yasqe.somethingSelected()) {\n\t\tvar to = {\n\t\t\tline: yasqe.getCursor(false).line,\n\t\t\tch: yasqe.getSelection().length\n\t\t};\n\t\tautoFormatRange(yasqe, yasqe.getCursor(true), to);\n\t} else {\n\t\tvar totalLines = yasqe.lineCount();\n\t\tvar totalChars = yasqe.getTextArea().value.length;\n\t\tautoFormatRange(yasqe, {\n\t\t\tline: 0,\n\t\t\tch: 0\n\t\t}, {\n\t\t\tline: totalLines,\n\t\t\tch: totalChars\n\t\t});\n\t}\n\n};\n\n\nvar autoFormatRange = function(yasqe, from, to) {\n\tvar absStart = yasqe.indexFromPos(from);\n\tvar absEnd = yasqe.indexFromPos(to);\n\t// Insert additional line breaks where necessary according to the\n\t// mode's syntax\n\tvar res = autoFormatLineBreaks(yasqe.getValue(), absStart, absEnd);\n\n\t// Replace and auto-indent the range\n\tyasqe.operation(function() {\n\t\tyasqe.replaceRange(res, from, to);\n\t\tvar startLine = yasqe.posFromIndex(absStart).line;\n\t\tvar endLine = yasqe.posFromIndex(absStart + res.length).line;\n\t\tfor (var i = startLine; i <= endLine; i++) {\n\t\t\tyasqe.indentLine(i, \"smart\");\n\t\t}\n\t});\n};\n\nvar autoFormatLineBreaks = function(text, start, end) {\n\ttext = text.substring(start, end);\n\tvar breakAfterArray = [\n\t\t[\"keyword\", \"ws\", \"prefixed\", \"ws\", \"uri\"], // i.e. prefix declaration\n\t\t[\"keyword\", \"ws\", \"uri\"] // i.e. base\n\t];\n\tvar breakAfterCharacters = [\"{\", \".\", \";\"];\n\tvar breakBeforeCharacters = [\"}\"];\n\tvar getBreakType = function(stringVal, type) {\n\t\tfor (var i = 0; i < breakAfterArray.length; i++) {\n\t\t\tif (stackTrace.valueOf().toString() == breakAfterArray[i].valueOf()\n\t\t\t\t.toString()) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < breakAfterCharacters.length; i++) {\n\t\t\tif (stringVal == breakAfterCharacters[i]) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < breakBeforeCharacters.length; i++) {\n\t\t\t// don't want to issue 'breakbefore' AND 'breakafter', so check\n\t\t\t// current line\n\t\t\tif ($.trim(currentLine) != '' && stringVal == breakBeforeCharacters[i]) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t};\n\tvar formattedQuery = \"\";\n\tvar currentLine = \"\";\n\tvar stackTrace = [];\n\tCodeMirror.runMode(text, \"sparql11\", function(stringVal, type) {\n\t\tstackTrace.push(type);\n\t\tvar breakType = getBreakType(stringVal, type);\n\t\tif (breakType != 0) {\n\t\t\tif (breakType == 1) {\n\t\t\t\tformattedQuery += stringVal + \"\\n\";\n\t\t\t\tcurrentLine = \"\";\n\t\t\t} else { // (-1)\n\t\t\t\tformattedQuery += \"\\n\" + stringVal;\n\t\t\t\tcurrentLine = stringVal;\n\t\t\t}\n\t\t\tstackTrace = [];\n\t\t} else {\n\t\t\tcurrentLine += stringVal;\n\t\t\tformattedQuery += stringVal;\n\t\t}\n\t\tif (stackTrace.length == 1 && stackTrace[0] == \"sp-ws\")\n\t\t\tstackTrace = [];\n\t});\n\treturn $.trim(formattedQuery.replace(/\\n\\s*\\n/g, '\\n'));\n};\n\nrequire('./sparql.js'),\n\trequire('./defaults.js');\nroot.$ = $;\nroot.version = {\n\t\"CodeMirror\": CodeMirror.version,\n\t\"YASQE\": require(\"../package.json\").version,\n\t\"jquery\": $.fn.jquery,\n\t\"yasgui-utils\": yutils.version\n};\n","var CodeMirror = (function(){try{return require('codemirror')}catch(e){return window.CodeMirror}})(),\n\ttokenUtils = require('./tokenUtils.js');\n\n\"use strict\";\nvar lookFor = \"PREFIX\";\nmodule.exports = {\n\tfindFirstPrefixLine: function(cm) {\n\t\tvar lastLine = cm.lastLine();\n\t\tfor (var i = 0; i <= lastLine; ++i) {\n\t\t\tif (findFirstPrefix(cm, i) >= 0) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction findFirstPrefix(cm, line, ch, lineText) {\n\tif (!ch) ch = 0;\n\tif (!lineText) lineText = cm.getLine(line);\n\tlineText = lineText.toUpperCase();\n\tfor (var at = ch, pass = 0;;) {\n\t\tvar found = lineText.indexOf(lookFor, at);\n\t\tif (found == -1) {\n\t\t\tif (pass == 1)\n\t\t\t\tbreak;\n\t\t\tpass = 1;\n\t\t\tat = lineText.length;\n\t\t\tcontinue;\n\t\t}\n\t\tif (pass == 1 && found < ch)\n\t\t\tbreak;\n\t\ttokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n\t\tif (!/^(string)/.test(tokenType))\n\t\t\treturn found + 1;\n\t\tat = found - 1;\n\t}\n}\n\nCodeMirror.registerHelper(\"fold\", \"prefix\", function(cm, start) {\n\tvar line = start.line,\n\t\tlineText = cm.getLine(line);\n\n\tvar startCh, tokenType;\n\n\tfunction hasPreviousPrefix() {\n\t\tvar hasPreviousPrefix = false;\n\t\tfor (var i = line - 1; i >= 0; i--) {\n\t\t\tif (cm.getLine(i).toUpperCase().indexOf(lookFor) >= 0) {\n\t\t\t\thasPreviousPrefix = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn hasPreviousPrefix;\n\t}\n\n\n\tfunction findOpening(openCh) {\n\t\tfor (var at = start.ch, pass = 0;;) {\n\t\t\tvar found = at <= 0 ? -1 : lineText.lastIndexOf(openCh, at - 1);\n\t\t\tif (found == -1) {\n\t\t\t\tif (pass == 1)\n\t\t\t\t\tbreak;\n\t\t\t\tpass = 1;\n\t\t\t\tat = lineText.length;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (pass == 1 && found < start.ch)\n\t\t\t\tbreak;\n\t\t\ttokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n\t\t\tif (!/^(comment|string)/.test(tokenType))\n\t\t\t\treturn found + 1;\n\t\t\tat = found - 1;\n\t\t}\n\t}\n\tvar getLastPrefixPos = function(line, ch) {\n\t\tvar prefixKeywordToken = cm.getTokenAt(CodeMirror.Pos(line, ch + 1));\n\t\tif (!prefixKeywordToken || prefixKeywordToken.type != \"keyword\") return -1;\n\t\tvar prefixShortname = tokenUtils.getNextNonWsToken(cm, line, prefixKeywordToken.end + 1);\n\t\tif (!prefixShortname || prefixShortname.type != \"string-2\") return -1; //missing prefix keyword shortname\n\t\tvar prefixUri = tokenUtils.getNextNonWsToken(cm, line, prefixShortname.end + 1);\n\t\tif (!prefixUri || prefixUri.type != \"variable-3\") return -1; //missing prefix uri\n\t\treturn prefixUri.end;\n\t}\n\n\t//only use opening prefix declaration\n\tif (hasPreviousPrefix())\n\t\treturn;\n\tvar prefixStart = findFirstPrefix(cm, line, start.ch, lineText);\n\n\tif (prefixStart == null)\n\t\treturn;\n\tvar stopAt = '{'; //if this char is there, we won't have a chance of finding more prefixes\n\tvar stopAtNextLine = false;\n\tvar count = 1,\n\t\tlastLine = cm.lastLine(),\n\t\tend, endCh;\n\tvar prefixEndChar = getLastPrefixPos(line, prefixStart);\n\tvar prefixEndLine = line;\n\n\touter: for (var i = line; i <= lastLine; ++i) {\n\t\tif (stopAtNextLine)\n\t\t\tbreak;\n\t\tvar text = cm.getLine(i),\n\t\t\tpos = i == line ? prefixStart + 1 : 0;\n\n\t\tfor (;;) {\n\t\t\tif (!stopAtNextLine && text.indexOf(stopAt) >= 0)\n\t\t\t\tstopAtNextLine = true;\n\n\t\t\tvar nextPrefixDeclaration = text.toUpperCase()\n\t\t\t\t.indexOf(lookFor, pos);\n\n\t\t\tif (nextPrefixDeclaration >= 0) {\n\t\t\t\tif ((endCh = getLastPrefixPos(i, nextPrefixDeclaration)) > 0) {\n\t\t\t\t\tprefixEndChar = endCh;\n\t\t\t\t\tprefixEndLine = i;\n\t\t\t\t\tpos = prefixEndChar;\n\t\t\t\t}\n\t\t\t\tpos++;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn {\n\t\tfrom: CodeMirror.Pos(line, prefixStart + lookFor.length),\n\t\tto: CodeMirror.Pos(prefixEndLine, prefixEndChar)\n\t};\n});\n","'use strict';\n/**\n * Append prefix declaration to list of prefixes in query window.\n *\n * @param yasqe\n * @param prefix\n */\nvar addPrefixes = function(yasqe, prefixes) {\n\tvar existingPrefixes = yasqe.getPrefixesFromQuery();\n\t//for backwards compatability, we stil support prefixes value as string (e.g. 'rdf: <http://fbfgfgf>'\n\tif (typeof prefixes == \"string\") {\n\t\taddPrefixAsString(yasqe, prefixes);\n\t} else {\n\t\tfor (var pref in prefixes) {\n\t\t\tif (!(pref in existingPrefixes))\n\t\t\t\taddPrefixAsString(yasqe, pref + \": <\" + prefixes[pref] + \">\");\n\t\t}\n\t}\n\tyasqe.collapsePrefixes(false);\n};\n\nvar addPrefixAsString = function(yasqe, prefixString) {\n\tvar lastPrefix = null;\n\tvar lastPrefixLine = 0;\n\tvar numLines = yasqe.lineCount();\n\tfor (var i = 0; i < numLines; i++) {\n\t\tvar firstToken = yasqe.getNextNonWsToken(i);\n\t\tif (firstToken != null && (firstToken.string == \"PREFIX\" || firstToken.string == \"BASE\")) {\n\t\t\tlastPrefix = firstToken;\n\t\t\tlastPrefixLine = i;\n\t\t}\n\t}\n\n\tif (lastPrefix == null) {\n\t\tyasqe.replaceRange(\"PREFIX \" + prefixString + \"\\n\", {\n\t\t\tline: 0,\n\t\t\tch: 0\n\t\t});\n\t} else {\n\t\tvar previousIndent = getIndentFromLine(yasqe, lastPrefixLine);\n\t\tyasqe.replaceRange(\"\\n\" + previousIndent + \"PREFIX \" + prefixString, {\n\t\t\tline: lastPrefixLine\n\t\t});\n\t}\n\tyasqe.collapsePrefixes(false);\n};\nvar removePrefixes = function(yasqe, prefixes) {\n\tvar escapeRegex = function(string) {\n\t\t//taken from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript/3561711#3561711\n\t\treturn string.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t}\n\tfor (var pref in prefixes) {\n\t\tyasqe.setValue(yasqe.getValue().replace(new RegExp(\"PREFIX\\\\s*\" + pref + \":\\\\s*\" + escapeRegex(\"<\" + prefixes[pref] + \">\") + \"\\\\s*\", \"ig\"), ''));\n\t}\n\tyasqe.collapsePrefixes(false);\n\n};\n\n/**\n * Get defined prefixes from query as array, in format {\"prefix:\" \"uri\"}\n *\n * @param cm\n * @returns {Array}\n */\nvar getPrefixesFromQuery = function(yasqe) {\n\t//Use precise here. We want to be sure we use the most up to date state. If we're\n\t//not, we might get outdated prefixes from the current query (creating loops such\n\t//as https://github.com/OpenTriply/YASGUI/issues/84)\n\treturn yasqe.getTokenAt({line: yasqe.lastLine(), ch:yasqe.getLine(yasqe.lastLine()).length}, true).state.prefixes;\n};\n\n/**\n * Get the used indentation for a certain line\n *\n * @param yasqe\n * @param line\n * @param charNumber\n * @returns\n */\nvar getIndentFromLine = function(yasqe, line, charNumber) {\n\tif (charNumber == undefined)\n\t\tcharNumber = 1;\n\tvar token = yasqe.getTokenAt({\n\t\tline: line,\n\t\tch: charNumber\n\t});\n\tif (token == null || token == undefined || token.type != \"ws\") {\n\t\treturn \"\";\n\t} else {\n\t\treturn token.string + getIndentFromLine(yasqe, line, token.end + 1);\n\t};\n};\n\nmodule.exports = {\n\taddPrefixes: addPrefixes,\n\tgetPrefixesFromQuery: getPrefixesFromQuery,\n\tremovePrefixes: removePrefixes\n};\n","'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('./utils.js'),\n\tYASQE = require('./main.js');\n\nYASQE.getAjaxConfig = function(yasqe, callbackOrConfig) {\n\tvar callback = (typeof callbackOrConfig == \"function\" ? callbackOrConfig : null);\n\tvar config = (typeof callbackOrConfig == \"object\" ? callbackOrConfig : {});\n\n\tif (yasqe.options.sparql)\n\t\tconfig = $.extend({}, yasqe.options.sparql, config);\n\n\t//for backwards compatability, make sure we copy sparql handlers to sparql callbacks\n\tif (config.handlers)\n\t\t$.extend(true, config.callbacks, config.handlers);\n\n\n\tif (!config.endpoint || config.endpoint.length == 0)\n\t\treturn; // nothing to query!\n\n\t/**\n\t * initialize ajax config\n\t */\n\tvar ajaxConfig = {\n\t\turl: (typeof config.endpoint == \"function\" ? config.endpoint(yasqe) : config.endpoint),\n\t\ttype: (typeof config.requestMethod == \"function\" ? config.requestMethod(yasqe) : config.requestMethod),\n\t\theaders: {\n\t\t\tAccept: getAcceptHeader(yasqe, config),\n\t\t}\n\t};\n\tif (config.xhrFields) ajaxConfig.xhrFields = config.xhrFields;\n\t/**\n\t * add complete, beforesend, etc callbacks (if specified)\n\t */\n\tvar handlerDefined = false;\n\tif (config.callbacks) {\n\t\tfor (var handler in config.callbacks) {\n\t\t\tif (config.callbacks[handler]) {\n\t\t\t\thandlerDefined = true;\n\t\t\t\tajaxConfig[handler] = config.callbacks[handler];\n\t\t\t}\n\t\t}\n\t}\n\tif (ajaxConfig.type === 'GET') {\n\t\t//we need to do encoding ourselve, as jquery does not properly encode the url string\n\t\t//https://github.com/OpenTriply/YASGUI/issues/75\n\t\tvar first = true;\n\t\t$.each(yasqe.getUrlArguments(config), function(key, val) {\n\t\t\tajaxConfig.url += (first?'?': '&') + val.name + '=' + encodeURIComponent(val.value);\n\t\t\tfirst = false;\n\t\t});\n\t} else {\n\t\tajaxConfig.data = yasqe.getUrlArguments(config);\n\t}\n\tif (!handlerDefined && !callback)\n\t\treturn; // ok, we can query, but have no callbacks. just stop now\n\n\t// if only callback is passed as arg, add that on as 'onComplete' callback\n\tif (callback)\n\t\tajaxConfig.complete = callback;\n\n\n\n\t/**\n\t * merge additional request headers\n\t */\n\tif (config.headers && !$.isEmptyObject(config.headers))\n\t\t$.extend(ajaxConfig.headers, config.headers);\n\n\n\tvar queryStart = new Date();\n\tvar updateYasqe = function() {\n\t\tyasqe.lastQueryDuration = new Date() - queryStart;\n\t\tYASQE.updateQueryButton(yasqe);\n\t\tyasqe.setBackdrop(false);\n\t};\n\t//Make sure the query button is updated again on complete\n\tvar completeCallbacks = [\n\t\tfunction(){require('./main.js').signal(yasqe, 'queryFinish', arguments)},\n\t\tupdateYasqe\n\t];\n\n\tif (ajaxConfig.complete) {\n\t\tcompleteCallbacks.push(ajaxConfig.complete);\n\t}\n\tajaxConfig.complete = completeCallbacks;\n\treturn ajaxConfig;\n};\n\n\n\nYASQE.executeQuery = function(yasqe, callbackOrConfig) {\n\tYASQE.signal(yasqe, 'query', yasqe, callbackOrConfig);\n\tYASQE.updateQueryButton(yasqe, \"busy\");\n\tyasqe.setBackdrop(true);\n\tyasqe.xhr = $.ajax(YASQE.getAjaxConfig(yasqe, callbackOrConfig));\n};\n\n\nYASQE.getUrlArguments = function(yasqe, config) {\n\tvar queryMode = yasqe.getQueryMode();\n\tvar data = [{\n\t\tname: utils.getString(yasqe, yasqe.options.sparql.queryName),\n\t\tvalue: (config.getQueryForAjax? config.getQueryForAjax(yasqe): yasqe.getValue())\n\t}];\n\n\t/**\n\t * add named graphs to ajax config\n\t */\n\tif (config.namedGraphs && config.namedGraphs.length > 0) {\n\t\tvar argName = (queryMode == \"query\" ? \"named-graph-uri\" : \"using-named-graph-uri \");\n\t\tfor (var i = 0; i < config.namedGraphs.length; i++)\n\t\t\tdata.push({\n\t\t\t\tname: argName,\n\t\t\t\tvalue: config.namedGraphs[i]\n\t\t\t});\n\t}\n\t/**\n\t * add default graphs to ajax config\n\t */\n\tif (config.defaultGraphs && config.defaultGraphs.length > 0) {\n\t\tvar argName = (queryMode == \"query\" ? \"default-graph-uri\" : \"using-graph-uri \");\n\t\tfor (var i = 0; i < config.defaultGraphs.length; i++)\n\t\t\tdata.push({\n\t\t\t\tname: argName,\n\t\t\t\tvalue: config.defaultGraphs[i]\n\t\t\t});\n\t}\n\n\t/**\n\t * add additional request args\n\t */\n\tif (config.args && config.args.length > 0) $.merge(data, config.args);\n\n\treturn data;\n}\nvar getAcceptHeader = function(yasqe, config) {\n\tvar acceptHeader = null;\n\tif (config.acceptHeader && !config.acceptHeaderGraph && !config.acceptHeaderSelect && !config.acceptHeaderUpdate) {\n\t\t//this is the old config. For backwards compatability, keep supporting it\n\t\tif (typeof config.acceptHeader == \"function\") {\n\t\t\tacceptHeader = config.acceptHeader(yasqe);\n\t\t} else {\n\t\t\tacceptHeader = config.acceptHeader;\n\t\t}\n\t} else {\n\t\tif (yasqe.getQueryMode() == \"update\") {\n\t\t\tacceptHeader = (typeof config.acceptHeader == \"function\" ? config.acceptHeaderUpdate(yasqe) : config.acceptHeaderUpdate);\n\t\t} else {\n\t\t\tvar qType = yasqe.getQueryType();\n\t\t\tif (qType == \"DESCRIBE\" || qType == \"CONSTRUCT\") {\n\t\t\t\tacceptHeader = (typeof config.acceptHeaderGraph == \"function\" ? config.acceptHeaderGraph(yasqe) : config.acceptHeaderGraph);\n\t\t\t} else {\n\t\t\t\tacceptHeader = (typeof config.acceptHeaderSelect == \"function\" ? config.acceptHeaderSelect(yasqe) : config.acceptHeaderSelect);\n\t\t\t}\n\t\t}\n\t}\n\treturn acceptHeader;\n};\n\nmodule.exports = {\n\tgetAjaxConfig: YASQE.getAjaxConfig\n}\n","'use strict';\n/**\n * When typing a query, this query is sometimes syntactically invalid, causing\n * the current tokens to be incorrect This causes problem for autocompletion.\n * http://bla might result in two tokens: http:// and bla. We'll want to combine\n * these\n * \n * @param yasqe {doc}\n * @param token {object}\n * @param cursor {object}\n * @return token {object}\n * @method YASQE.getCompleteToken\n */\nvar getCompleteToken = function(yasqe, token, cur) {\n\tif (!cur) {\n\t\tcur = yasqe.getCursor();\n\t}\n\tif (!token) {\n\t\ttoken = yasqe.getTokenAt(cur);\n\t}\n\tvar prevToken = yasqe.getTokenAt({\n\t\tline: cur.line,\n\t\tch: token.start\n\t});\n\t// not start of line, and not whitespace\n\tif (\n\t\tprevToken.type != null && prevToken.type != \"ws\" && token.type != null && token.type != \"ws\"\n\t) {\n\t\ttoken.start = prevToken.start;\n\t\ttoken.string = prevToken.string + token.string;\n\t\treturn getCompleteToken(yasqe, token, {\n\t\t\tline: cur.line,\n\t\t\tch: prevToken.start\n\t\t}); // recursively, might have multiple tokens which it should include\n\t} else if (token.type != null && token.type == \"ws\") {\n\t\t//always keep 1 char of whitespace between tokens. Otherwise, autocompletions might end up next to the previous node, without whitespace between them\n\t\ttoken.start = token.start + 1;\n\t\ttoken.string = token.string.substring(1);\n\t\treturn token;\n\t} else {\n\t\treturn token;\n\t}\n};\nvar getPreviousNonWsToken = function(yasqe, line, token) {\n\tvar previousToken = yasqe.getTokenAt({\n\t\tline: line,\n\t\tch: token.start\n\t});\n\tif (previousToken != null && previousToken.type == \"ws\") {\n\t\tpreviousToken = getPreviousNonWsToken(yasqe, line, previousToken);\n\t}\n\treturn previousToken;\n}\nvar getNextNonWsToken = function(yasqe, lineNumber, charNumber) {\n\tif (charNumber == undefined)\n\t\tcharNumber = 1;\n\tvar token = yasqe.getTokenAt({\n\t\tline: lineNumber,\n\t\tch: charNumber\n\t});\n\tif (token == null || token == undefined || token.end < charNumber) {\n\t\treturn null;\n\t}\n\tif (token.type == \"ws\") {\n\t\treturn getNextNonWsToken(yasqe, lineNumber, token.end + 1);\n\t}\n\treturn token;\n};\n\nmodule.exports = {\n\tgetPreviousNonWsToken: getPreviousNonWsToken,\n\tgetCompleteToken: getCompleteToken,\n\tgetNextNonWsToken: getNextNonWsToken,\n};","'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})(),\n\tutils = require('./utils.js');\n\n/**\n * Write our own tooltip, to avoid loading another library for just this functionality. For now, we only use tooltip for showing parse errors, so this is quite a tailored solution\n * Requirements: \n * \t\tposition tooltip within codemirror frame as much as possible, to avoid z-index issues with external things on page\n * \t\tuse html as content\n */\nmodule.exports = function(yasqe, parent, html) {\n\tvar parent = $(parent);\n\tvar tooltip;\n\tparent.hover(function() {\n\t\t\tif (typeof html == \"function\") html = html();\n\t\t\ttooltip = $(\"<div>\").addClass('yasqe_tooltip').html(html).appendTo(parent);\n\t\t\trepositionTooltip();\n\t\t},\n\t\tfunction() {\n\t\t\t$(\".yasqe_tooltip\").remove();\n\t\t});\n\n\n\n\t/**\n\t * only need to take into account top and bottom offset for this usecase\n\t */\n\tvar repositionTooltip = function() {\n\t\tif ($(yasqe.getWrapperElement()).offset().top >= tooltip.offset().top) {\n\t\t\t//shit, move the tooltip down. The tooltip now hovers over the top edge of the yasqe instance\n\t\t\ttooltip.css('bottom', 'auto');\n\t\t\ttooltip.css('top', '26px');\n\t\t}\n\t};\n};","'use strict';\nvar $ = (function(){try{return require('jquery')}catch(e){return window.jQuery}})();\n\nvar keyExists = function(objectToTest, key) {\n\tvar exists = false;\n\ttry {\n\t\tif (objectToTest[key] !== undefined)\n\t\t\texists = true;\n\t} catch (e) {}\n\treturn exists;\n};\n\nvar getPersistencyId = function(yasqe, persistentIdCreator) {\n\tvar persistencyId = null;\n\n\tif (persistentIdCreator) {\n\t\tif (typeof persistentIdCreator == \"string\") {\n\t\t\tpersistencyId = persistentIdCreator;\n\t\t} else {\n\t\t\tpersistencyId = persistentIdCreator(yasqe);\n\t\t}\n\t}\n\treturn persistencyId;\n};\n\nvar elementsOverlap = (function() {\n\tfunction getPositions(elem) {\n\t\tvar pos, width, height;\n\t\tpos = $(elem).offset();\n\t\twidth = $(elem).width();\n\t\theight = $(elem).height();\n\t\treturn [\n\t\t\t[pos.left, pos.left + width],\n\t\t\t[pos.top, pos.top + height]\n\t\t];\n\t}\n\n\tfunction comparePositions(p1, p2) {\n\t\tvar r1, r2;\n\t\tr1 = p1[0] < p2[0] ? p1 : p2;\n\t\tr2 = p1[0] < p2[0] ? p2 : p1;\n\t\treturn r1[1] > r2[0] || r1[0] === r2[0];\n\t}\n\n\treturn function(a, b) {\n\t\tvar pos1 = getPositions(a),\n\t\t\tpos2 = getPositions(b);\n\t\treturn comparePositions(pos1[0], pos2[0]) && comparePositions(pos1[1], pos2[1]);\n\t};\n})();\n\nvar getString = function(yasqe, item) {\n\tif (typeof item == \"function\") {\n\t\treturn item(yasqe);\n\t} else {\n\t\treturn item;\n\t}\n}\nmodule.exports = {\n\tkeyExists: keyExists,\n\tgetPersistencyId: getPersistencyId,\n\telementsOverlap: elementsOverlap,\n\tgetString:getString\n};\n"],"sourceRoot":"/source/"}
|