From 339d816814885befc91d73ea17a3a6cdd6d2dd7a Mon Sep 17 00:00:00 2001 From: "Bruno P. Kinoshita" Date: Mon, 10 Oct 2016 20:47:28 +1300 Subject: [PATCH 1/2] Bump YASQE up to version 2.11.3 --- .../src/main/webapp/css/yasqe.min.css | 2 +- .../src/main/webapp/js/lib/yasqe.min.js | 16 ++++++++-------- .../src/main/webapp/js/lib/yasqe.min.js.map | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/jena-fuseki2/jena-fuseki-core/src/main/webapp/css/yasqe.min.css b/jena-fuseki2/jena-fuseki-core/src/main/webapp/css/yasqe.min.css index abebf2ca213..d1e5c032132 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/webapp/css/yasqe.min.css +++ b/jena-fuseki2/jena-fuseki-core/src/main/webapp/css/yasqe.min.css @@ -1 +1 @@ -.yasqe{position:relative}.yasqe .CodeMirror{font-family:monospace;height:300px;color:#000}.yasqe .CodeMirror-lines{padding:4px 0}.yasqe .CodeMirror pre{padding:0 4px}.yasqe .CodeMirror-gutter-filler,.yasqe .CodeMirror-scrollbar-filler{background-color:#fff}.yasqe .CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.yasqe .CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.yasqe .CodeMirror-guttermarker{color:#000}.yasqe .CodeMirror-guttermarker-subtle{color:#999}.yasqe .CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.yasqe .CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.yasqe .cm-fat-cursor .CodeMirror-cursor{width:auto;border:0;background:#7e7}.yasqe .cm-fat-cursor div.CodeMirror-cursors{z-index:1}.yasqe .cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:a 1.06s steps(1) infinite;animation:a 1.06s steps(1) infinite;background-color:#7e7}@-webkit-keyframes a{50%{background-color:transparent}}@keyframes a{50%{background-color:transparent}}.yasqe .cm-tab{display:inline-block;text-decoration:inherit}.yasqe .CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.yasqe .cm-s-default .cm-header{color:blue}.yasqe .cm-s-default .cm-quote{color:#090}.yasqe .cm-negative{color:#d44}.yasqe .cm-positive{color:#292}.yasqe .cm-header,.yasqe .cm-strong{font-weight:700}.yasqe .cm-em{font-style:italic}.yasqe .cm-link{text-decoration:underline}.yasqe .cm-strikethrough{text-decoration:line-through}.yasqe .cm-s-default .cm-keyword{color:#708}.yasqe .cm-s-default .cm-atom{color:#219}.yasqe .cm-s-default .cm-number{color:#164}.yasqe .cm-s-default .cm-def{color:#00f}.yasqe .cm-s-default .cm-variable-2{color:#05a}.yasqe .cm-s-default .cm-variable-3{color:#085}.yasqe .cm-s-default .cm-comment{color:#a50}.yasqe .cm-s-default .cm-string{color:#a11}.yasqe .cm-s-default .cm-string-2{color:#f50}.yasqe .cm-s-default .cm-meta,.yasqe .cm-s-default .cm-qualifier{color:#555}.yasqe .cm-s-default .cm-builtin{color:#30a}.yasqe .cm-s-default .cm-bracket{color:#997}.yasqe .cm-s-default .cm-tag{color:#170}.yasqe .cm-s-default .cm-attribute{color:#00c}.yasqe .cm-s-default .cm-hr{color:#999}.yasqe .cm-s-default .cm-link{color:#00c}.yasqe .cm-invalidchar,.yasqe .cm-s-default .cm-error{color:red}.yasqe .CodeMirror-composing{border-bottom:2px solid}.yasqe div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}.yasqe div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.yasqe .CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.yasqe .CodeMirror-activeline-background{background:#e8f2ff}.yasqe .CodeMirror{position:relative;overflow:hidden;background:#fff}.yasqe .CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.yasqe .CodeMirror-sizer{position:relative;border-right:30px solid transparent}.yasqe .CodeMirror-gutter-filler,.yasqe .CodeMirror-hscrollbar,.yasqe .CodeMirror-scrollbar-filler,.yasqe .CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.yasqe .CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.yasqe .CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.yasqe .CodeMirror-scrollbar-filler{right:0;bottom:0}.yasqe .CodeMirror-gutter-filler{left:0;bottom:0}.yasqe .CodeMirror-gutters{position:absolute;left:0;top:0;z-index:3}.yasqe .CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;margin-bottom:-30px;*zoom:1;*display:inline}.yasqe .CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.yasqe .CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.yasqe .CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.yasqe .CodeMirror-gutter-wrapper{-webkit-user-select:none;-ms-user-select:none;user-select:none}.yasqe .CodeMirror-lines{cursor:text;min-height:1px}.yasqe .CodeMirror pre{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent}.yasqe .CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.yasqe .CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.yasqe .CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.yasqe .CodeMirror-code{outline:none}.yasqe .CodeMirror-gutter,.yasqe .CodeMirror-gutters,.yasqe .CodeMirror-linenumber,.yasqe .CodeMirror-scroll,.yasqe .CodeMirror-sizer{box-sizing:content-box}.yasqe .CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.yasqe .CodeMirror-cursor{position:absolute}.yasqe .CodeMirror-measure pre{position:static}.yasqe div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.yasqe .CodeMirror-focused div.CodeMirror-cursors,.yasqe div.CodeMirror-dragcursors{visibility:visible}.yasqe .CodeMirror-selected{background:#d9d9d9}.yasqe .CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.yasqe .CodeMirror-crosshair{cursor:crosshair}.yasqe .CodeMirror-line::selection,.yasqe .CodeMirror-line>span::selection,.yasqe .CodeMirror-line>span>span::selection{background:#d7d4f0}.yasqe .CodeMirror-line::-moz-selection,.yasqe .CodeMirror-line>span::-moz-selection,.yasqe .CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.yasqe .cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.yasqe .CodeMirror span{*vertical-align:text-bottom}.yasqe .cm-force-border{padding-right:.1px}@media print{.yasqe .CodeMirror div.CodeMirror-cursors{visibility:hidden}}.yasqe .cm-tab-wrap-hack:after{content:''}.yasqe span.CodeMirror-selectedtext{background:none}.yasqe .CodeMirror-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:auto;z-index:7}.yasqe .CodeMirror-foldmarker{color:blue;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.yasqe .CodeMirror-foldgutter{width:.7em}.yasqe .CodeMirror-foldgutter-folded,.yasqe .CodeMirror-foldgutter-open{cursor:pointer}.yasqe .CodeMirror-foldgutter-open:after{content:"\25BE"}.yasqe .CodeMirror-foldgutter-folded:after{content:"\25B8"}@-webkit-keyframes b{to{-webkit-transform:rotate(1turn)}}.yasqe .yasqe_btn{color:#333;border:1px solid transparent;background-color:#fff;border-color:#ccc;border-width:1px;display:inline-block;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;padding:6px 12px;border-radius:4px;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:button;overflow:visible;box-sizing:border-box}.yasqe .yasqe_btn.btn_icon{padding:4px 8px}.yasqe .yasqe_btn.disabled,.yasqe .yasqe_btn[disabled]{cursor:default;opacity:.5;filter:alpha(opacity=50);box-shadow:none}.yasqe .yasqe_btn:hover{outline:0;background-color:#ebebeb;border-color:#adadad}.yasqe .yasqe_btn.selected,.yasqe .yasqe_btn:focus{color:#fff;outline:0;background-color:#337ab7;border-color:#337ab7}.yasqe .yasqe_btn.btn_icon:focus{color:#333;border:1px solid transparent;background-color:#fff;border-color:#ccc}.yasqe .yasqe_btn.yasqe_btn-sm{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.yasqe .backdrop{background-color:#000;opacity:.5;position:absolute;top:0;left:0;right:0;bottom:0;z-index:5;display:none}.yasqe .svgImg{display:inline-block}.yasqe .CodeMirror{line-height:1.5em;border:1px solid #d1d1d1}.yasqe pre{font-size:13px}.yasqe span.cm-error{border-bottom:2px dotted red}.yasqe .gutterErrorBar{width:4px}.yasqe .yasqe_buttons{position:absolute;top:5px;right:5px;z-index:5}.yasqe .yasqe_buttons .yasqe_share{cursor:pointer;height:20px;width:20px;margin-top:3px}.yasqe .yasqe_buttons div{vertical-align:top;margin-left:5px}.yasqe .yasqe_buttons div.yasqe_sharePopup{position:absolute;padding:4px;margin-left:0;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05);width:600px;height:auto;display:-webkit-box;display:flex}.yasqe .yasqe_buttons div.yasqe_sharePopup .inputWrapper{-webkit-box-flex:100;flex-grow:100}.yasqe .yasqe_buttons div.yasqe_sharePopup input{float:left;width:100%;border:0;-ms-box-sizing:border-box;-khtml-box-sizing:border-box;box-sizing:border-box}.yasqe .yasqe_buttons div.yasqe_sharePopup button{float:right;margin-left:5px}.yasqe .yasqe_buttons div.yasqe_sharePopup textarea{width:100%}.yasqe .yasqe_buttons .yasqe_queryButton{display:inline-block;cursor:pointer;width:40px;height:40px;margin-left:10px}.yasqe .yasqe_buttons .yasqe_queryButton div{margin-left:0}.yasqe .yasqe_buttons .yasqe_queryButton .svgImg{display:block}.yasqe .yasqe_buttons .yasqe_queryButton .loader{width:36px;height:36px;border-radius:50%;box-sizing:border-box;border:4px solid rgba(0,0,0,.2);border-top-color:#000;-webkit-animation:b 1s infinite linear;animation:b 1s infinite linear}.yasqe span.shortlinkErr{font-size:small;color:red;font-weight:700;float:left}.yasqe .completionNotification{color:#999;background-color:#f7f7f7;position:absolute;padding:0 5px;right:0;bottom:0;font-size:90%}.yasqe .CodeMirror-fullscreen .fullscreenToggleBtns .yasqe_smallscreenBtn{display:inline-block}.yasqe .CodeMirror-fullscreen .fullscreenToggleBtns .yasqe_fullscreenBtn{display:none}.yasqe .fullscreenToggleBtns{display:inline-block;margin-top:3px}.yasqe .fullscreenToggleBtns div{cursor:pointer;width:20px;height:20px}.yasqe .fullscreenToggleBtns .yasqe_smallscreenBtn{display:none}.yasqe .parseErrorIcon{width:15px;height:15px}.yasqe .yasqe_tooltip{display:inline;background:#333;background:rgba(0,0,0,.8);border-radius:5px;bottom:26px;color:#fff;left:20%;padding:5px 15px;position:absolute;width:220px;white-space:-moz-pre-wrap!important;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;white-space:normal}.yasqe .notificationLoader{width:18px;height:18px;vertical-align:middle}.yasqe .CodeMirror-foldmarker{color:#6e2500;text-shadow:#ff935e 1px 1px 2px,#ff935e -1px -1px 2px,#ff935e 1px -1px 2px,#ff935e -1px 1px 2px;font-size:19px}.yasqe .matchingVar{background-color:#dbdeed;border-radius:6px;-webkit-transition:background .5s linear;transition:background .5s linear}.CodeMirror-hints{position:absolute;z-index:8;overflow:hidden;list-style:none;margin:0;padding:2px;box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;max-width:19em;overflow:hidden;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-hint{max-width:30em} \ No newline at end of file +.yasqe{position:relative}.yasqe .CodeMirror{font-family:monospace;height:300px;color:#000}.yasqe .CodeMirror-lines{padding:4px 0}.yasqe .CodeMirror pre{padding:0 4px}.yasqe .CodeMirror-gutter-filler,.yasqe .CodeMirror-scrollbar-filler{background-color:#fff}.yasqe .CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.yasqe .CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.yasqe .CodeMirror-guttermarker{color:#000}.yasqe .CodeMirror-guttermarker-subtle{color:#999}.yasqe .CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.yasqe .CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.yasqe .cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.yasqe .cm-fat-cursor div.CodeMirror-cursors{z-index:1}.yasqe .cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:a 1.06s steps(1) infinite;animation:a 1.06s steps(1) infinite;background-color:#7e7}@-webkit-keyframes a{50%{background-color:transparent}}@keyframes a{50%{background-color:transparent}}.yasqe .cm-tab{display:inline-block;text-decoration:inherit}.yasqe .CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:-20px;overflow:hidden}.yasqe .CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.yasqe .cm-s-default .cm-header{color:blue}.yasqe .cm-s-default .cm-quote{color:#090}.yasqe .cm-negative{color:#d44}.yasqe .cm-positive{color:#292}.yasqe .cm-header,.yasqe .cm-strong{font-weight:700}.yasqe .cm-em{font-style:italic}.yasqe .cm-link{text-decoration:underline}.yasqe .cm-strikethrough{text-decoration:line-through}.yasqe .cm-s-default .cm-keyword{color:#708}.yasqe .cm-s-default .cm-atom{color:#219}.yasqe .cm-s-default .cm-number{color:#164}.yasqe .cm-s-default .cm-def{color:#00f}.yasqe .cm-s-default .cm-variable-2{color:#05a}.yasqe .cm-s-default .cm-variable-3{color:#085}.yasqe .cm-s-default .cm-comment{color:#a50}.yasqe .cm-s-default .cm-string{color:#a11}.yasqe .cm-s-default .cm-string-2{color:#f50}.yasqe .cm-s-default .cm-meta,.yasqe .cm-s-default .cm-qualifier{color:#555}.yasqe .cm-s-default .cm-builtin{color:#30a}.yasqe .cm-s-default .cm-bracket{color:#997}.yasqe .cm-s-default .cm-tag{color:#170}.yasqe .cm-s-default .cm-attribute{color:#00c}.yasqe .cm-s-default .cm-hr{color:#999}.yasqe .cm-s-default .cm-link{color:#00c}.yasqe .cm-invalidchar,.yasqe .cm-s-default .cm-error{color:red}.yasqe .CodeMirror-composing{border-bottom:2px solid}.yasqe div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}.yasqe div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.yasqe .CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.yasqe .CodeMirror-activeline-background{background:#e8f2ff}.yasqe .CodeMirror{position:relative;overflow:hidden;background:#fff}.yasqe .CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.yasqe .CodeMirror-sizer{position:relative;border-right:30px solid transparent}.yasqe .CodeMirror-gutter-filler,.yasqe .CodeMirror-hscrollbar,.yasqe .CodeMirror-scrollbar-filler,.yasqe .CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.yasqe .CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.yasqe .CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.yasqe .CodeMirror-scrollbar-filler{right:0;bottom:0}.yasqe .CodeMirror-gutter-filler{left:0;bottom:0}.yasqe .CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.yasqe .CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px;*zoom:1;*display:inline}.yasqe .CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.yasqe .CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.yasqe .CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.yasqe .CodeMirror-gutter-wrapper{-webkit-user-select:none;user-select:none}.yasqe .CodeMirror-lines{cursor:text;min-height:1px}.yasqe .CodeMirror pre{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:none;font-variant-ligatures:none}.yasqe .CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.yasqe .CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.yasqe .CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.yasqe .CodeMirror-code{outline:none}.yasqe .CodeMirror-gutter,.yasqe .CodeMirror-gutters,.yasqe .CodeMirror-linenumber,.yasqe .CodeMirror-scroll,.yasqe .CodeMirror-sizer{box-sizing:content-box}.yasqe .CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.yasqe .CodeMirror-cursor{position:absolute;pointer-events:none}.yasqe .CodeMirror-measure pre{position:static}.yasqe div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.yasqe .CodeMirror-focused div.CodeMirror-cursors,.yasqe div.CodeMirror-dragcursors{visibility:visible}.yasqe .CodeMirror-selected{background:#d9d9d9}.yasqe .CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.yasqe .CodeMirror-crosshair{cursor:crosshair}.yasqe .CodeMirror-line::selection,.yasqe .CodeMirror-line>span::selection,.yasqe .CodeMirror-line>span>span::selection{background:#d7d4f0}.yasqe .CodeMirror-line::-moz-selection,.yasqe .CodeMirror-line>span::-moz-selection,.yasqe .CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.yasqe .cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.yasqe .CodeMirror span{*vertical-align:text-bottom}.yasqe .cm-force-border{padding-right:.1px}@media print{.yasqe .CodeMirror div.CodeMirror-cursors{visibility:hidden}}.yasqe .cm-tab-wrap-hack:after{content:''}.yasqe span.CodeMirror-selectedtext{background:none}.yasqe .CodeMirror-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;height:auto;z-index:7}.yasqe .CodeMirror-foldmarker{color:blue;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.yasqe .CodeMirror-foldgutter{width:.7em}.yasqe .CodeMirror-foldgutter-folded,.yasqe .CodeMirror-foldgutter-open{cursor:pointer}.yasqe .CodeMirror-foldgutter-open:after{content:"\25BE"}.yasqe .CodeMirror-foldgutter-folded:after{content:"\25B8"}@-webkit-keyframes b{to{-webkit-transform:rotate(1turn)}}.yasqe .yasqe_btn{color:#333;border:1px solid transparent;background-color:#fff;border-color:#ccc;border-width:1px;display:inline-block;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;padding:6px 12px;border-radius:4px;-webkit-user-select:none;user-select:none;-webkit-appearance:button;overflow:visible;box-sizing:border-box}.yasqe .yasqe_btn.btn_icon{padding:4px 8px}.yasqe .yasqe_btn.disabled,.yasqe .yasqe_btn[disabled]{cursor:default;opacity:.5;filter:alpha(opacity=50);box-shadow:none}.yasqe .yasqe_btn:hover{outline:0;background-color:#ebebeb;border-color:#adadad}.yasqe .yasqe_btn.selected,.yasqe .yasqe_btn:focus{color:#fff;outline:0;background-color:#337ab7;border-color:#337ab7}.yasqe .yasqe_btn.btn_icon:focus{color:#333;border:1px solid transparent;background-color:#fff;border-color:#ccc}.yasqe .yasqe_btn.yasqe_btn-sm{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.yasqe .yasqe_buttons{position:absolute;top:5px;right:5px;z-index:5}.yasqe .yasqe_buttons .yasqe_share{cursor:pointer;height:20px;width:20px;margin-top:3px}.yasqe .yasqe_buttons div{vertical-align:top;margin-left:5px}.yasqe .yasqe_buttons div.yasqe_sharePopup{position:absolute;padding:4px;margin-left:0;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05);width:600px;height:auto;display:-webkit-box;display:flex}.yasqe .yasqe_buttons div.yasqe_sharePopup .inputWrapper{-webkit-box-flex:100;flex-grow:100}.yasqe .yasqe_buttons div.yasqe_sharePopup input{float:left;width:100%;border:0;-ms-box-sizing:border-box;-khtml-box-sizing:border-box;box-sizing:border-box}.yasqe .yasqe_buttons div.yasqe_sharePopup button{float:right;margin-left:5px}.yasqe .yasqe_buttons div.yasqe_sharePopup textarea{width:100%}.yasqe .yasqe_buttons .yasqe_queryButton{display:inline-block;cursor:pointer;width:40px;height:40px;margin-left:10px}.yasqe .yasqe_buttons .yasqe_queryButton div{margin-left:0}.yasqe .yasqe_buttons .yasqe_queryButton .svgImg{display:block}.yasqe .yasqe_buttons .yasqe_queryButton .loader{width:36px;height:36px;border-radius:50%;box-sizing:border-box;border:4px solid rgba(0,0,0,.2);border-top-color:#000;-webkit-animation:b 1s infinite linear;animation:b 1s infinite linear}.yasqe .fullscreenToggleBtns{display:inline-block;margin-top:3px}.yasqe .fullscreenToggleBtns div{cursor:pointer;width:20px;height:20px}.yasqe .fullscreenToggleBtns .yasqe_smallscreenBtn{display:none}.yasqe .CodeMirror{line-height:1.5em;border:1px solid #d1d1d1}.yasqe pre{font-size:13px}.yasqe span.cm-error{border-bottom:2px dotted red}.yasqe .gutterErrorBar{width:4px}.yasqe .CodeMirror-fullscreen .fullscreenToggleBtns .yasqe_smallscreenBtn{display:inline-block}.yasqe .CodeMirror-fullscreen .fullscreenToggleBtns .yasqe_fullscreenBtn{display:none}.yasqe .CodeMirror-foldmarker{color:#6e2500;text-shadow:#ff935e 1px 1px 2px,#ff935e -1px -1px 2px,#ff935e 1px -1px 2px,#ff935e -1px 1px 2px;font-size:19px}.yasqe .matchingVar{background-color:#dbdeed;border-radius:6px;-webkit-transition:background .5s linear;transition:background .5s linear}.yasqe .backdrop{background-color:#000;opacity:.5;position:absolute;top:0;left:0;right:0;bottom:0;z-index:5;display:none}.yasqe .svgImg{display:inline-block}.yasqe span.shortlinkErr{font-size:small;color:red;font-weight:700;float:left}.yasqe .completionNotification{color:#999;background-color:#f7f7f7;position:absolute;padding:0 5px;right:0;bottom:0;font-size:90%}.yasqe .parseErrorIcon{width:15px;height:15px}.yasqe .yasqe_tooltip{display:inline;background:#333;background:rgba(0,0,0,.8);border-radius:5px;bottom:26px;color:#fff;left:20%;padding:5px 15px;position:absolute;width:220px;white-space:-moz-pre-wrap!important;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;white-space:normal}.yasqe .notificationLoader{width:18px;height:18px;vertical-align:middle}.CodeMirror-hints{position:absolute;z-index:8;overflow:hidden;list-style:none;margin:0;padding:2px;box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-hint{max-width:30em} \ No newline at end of file diff --git a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js index 0ff0a634465..45c2ba3db8c 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js +++ b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js @@ -1,9 +1,9 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i;"undefined"!=typeof window?i=window:"undefined"!=typeof global?i=global:"undefined"!=typeof self&&(i=self),i.YASQE=e()}}(function(){var e;return function i(e,r,n){function o(s,a){if(!r[s]){if(!e[s]){var p="function"==typeof require&&require;if(!a&&p)return p(s,!0);if(t)return t(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var E=r[s]={exports:{}};e[s][0].call(E.exports,function(i){var r=e[s][1][i];return o(r?r:i)},E,E.exports,i,e,r,n)}return r[s].exports}for(var t="function"==typeof require&&require,s=0;s=E;E++){p=""===u[E]?l.length:u[E];l=l[p]=c>E?l[p]||(u[E+1]&&isNaN(u[E+1])?{}:[]):s}else n.isArray(r[p])?r[p].push(s):void 0!==r[p]?r[p]=[r[p],s]:r[p]=s}else p&&(r[p]=i?void 0:"")});return r}},{jquery:void 0}],3:[function(e,i,r){i.exports={table:{"*[&&,valueLogical]":{"&&":["[&&,valueLogical]","*[&&,valueLogical]"],AS:[],")":[],",":[],"||":[],";":[]},"*[,,expression]":{",":["[,,expression]","*[,,expression]"],")":[]},"*[,,objectPath]":{",":["[,,objectPath]","*[,,objectPath]"],".":[],";":[],"]":[],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"*[,,object]":{",":["[,,object]","*[,,object]"],".":[],";":[],"]":[],"}":[],GRAPH:[],"{":[],OPTIONAL:[],MINUS:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[]},"*[/,pathEltOrInverse]":{"/":["[/,pathEltOrInverse]","*[/,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]]":{";":["[;,?[or([verbPath,verbSimple]),objectList]]","*[;,?[or([verbPath,verbSimple]),objectList]]"],".":[],"]":[],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"*[;,?[verb,objectList]]":{";":["[;,?[verb,objectList]]","*[;,?[verb,objectList]]"],".":[],"]":[],"}":[],GRAPH:[],"{":[],OPTIONAL:[],MINUS:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[]},"*[UNION,groupGraphPattern]":{UNION:["[UNION,groupGraphPattern]","*[UNION,groupGraphPattern]"],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:[],".":[],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"*[graphPatternNotTriples,?.,?triplesBlock]":{"{":["[graphPatternNotTriples,?.,?triplesBlock]","*[graphPatternNotTriples,?.,?triplesBlock]"],OPTIONAL:["[graphPatternNotTriples,?.,?triplesBlock]","*[graphPatternNotTriples,?.,?triplesBlock]"],MINUS:["[graphPatternNotTriples,?.,?triplesBlock]","*[graphPatternNotTriples,?.,?triplesBlock]"],GRAPH:["[graphPatternNotTriples,?.,?triplesBlock]","*[graphPatternNotTriples,?.,?triplesBlock]"],SERVICE:["[graphPatternNotTriples,?.,?triplesBlock]","*[graphPatternNotTriples,?.,?triplesBlock]"],FILTER:["[graphPatternNotTriples,?.,?triplesBlock]","*[graphPatternNotTriples,?.,?triplesBlock]"],BIND:["[graphPatternNotTriples,?.,?triplesBlock]","*[graphPatternNotTriples,?.,?triplesBlock]"],VALUES:["[graphPatternNotTriples,?.,?triplesBlock]","*[graphPatternNotTriples,?.,?triplesBlock]"],"}":[]},"*[quadsNotTriples,?.,?triplesTemplate]":{GRAPH:["[quadsNotTriples,?.,?triplesTemplate]","*[quadsNotTriples,?.,?triplesTemplate]"],"}":[]},"*[|,pathOneInPropertySet]":{"|":["[|,pathOneInPropertySet]","*[|,pathOneInPropertySet]"],")":[]},"*[|,pathSequence]":{"|":["[|,pathSequence]","*[|,pathSequence]"],")":[],"(":[],"[":[],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:[]},"*[||,conditionalAndExpression]":{"||":["[||,conditionalAndExpression]","*[||,conditionalAndExpression]"],AS:[],")":[],",":[],";":[]},"*dataBlockValue":{UNDEF:["dataBlockValue","*dataBlockValue"],IRI_REF:["dataBlockValue","*dataBlockValue"],TRUE:["dataBlockValue","*dataBlockValue"],FALSE:["dataBlockValue","*dataBlockValue"],PNAME_LN:["dataBlockValue","*dataBlockValue"],PNAME_NS:["dataBlockValue","*dataBlockValue"],STRING_LITERAL1:["dataBlockValue","*dataBlockValue"],STRING_LITERAL2:["dataBlockValue","*dataBlockValue"],STRING_LITERAL_LONG1:["dataBlockValue","*dataBlockValue"],STRING_LITERAL_LONG2:["dataBlockValue","*dataBlockValue"],INTEGER:["dataBlockValue","*dataBlockValue"],DECIMAL:["dataBlockValue","*dataBlockValue"],DOUBLE:["dataBlockValue","*dataBlockValue"],INTEGER_POSITIVE:["dataBlockValue","*dataBlockValue"],DECIMAL_POSITIVE:["dataBlockValue","*dataBlockValue"],DOUBLE_POSITIVE:["dataBlockValue","*dataBlockValue"],INTEGER_NEGATIVE:["dataBlockValue","*dataBlockValue"],DECIMAL_NEGATIVE:["dataBlockValue","*dataBlockValue"],DOUBLE_NEGATIVE:["dataBlockValue","*dataBlockValue"],"}":[],")":[]},"*datasetClause":{FROM:["datasetClause","*datasetClause"],WHERE:[],"{":[]},"*describeDatasetClause":{FROM:["describeDatasetClause","*describeDatasetClause"],ORDER:[],HAVING:[],GROUP:[],LIMIT:[],OFFSET:[],WHERE:[],"{":[],VALUES:[],$:[]},"*graphNode":{"(":["graphNode","*graphNode"],"[":["graphNode","*graphNode"],VAR1:["graphNode","*graphNode"],VAR2:["graphNode","*graphNode"],NIL:["graphNode","*graphNode"],IRI_REF:["graphNode","*graphNode"],TRUE:["graphNode","*graphNode"],FALSE:["graphNode","*graphNode"],BLANK_NODE_LABEL:["graphNode","*graphNode"],ANON:["graphNode","*graphNode"],PNAME_LN:["graphNode","*graphNode"],PNAME_NS:["graphNode","*graphNode"],STRING_LITERAL1:["graphNode","*graphNode"],STRING_LITERAL2:["graphNode","*graphNode"],STRING_LITERAL_LONG1:["graphNode","*graphNode"],STRING_LITERAL_LONG2:["graphNode","*graphNode"],INTEGER:["graphNode","*graphNode"],DECIMAL:["graphNode","*graphNode"],DOUBLE:["graphNode","*graphNode"],INTEGER_POSITIVE:["graphNode","*graphNode"],DECIMAL_POSITIVE:["graphNode","*graphNode"],DOUBLE_POSITIVE:["graphNode","*graphNode"],INTEGER_NEGATIVE:["graphNode","*graphNode"],DECIMAL_NEGATIVE:["graphNode","*graphNode"],DOUBLE_NEGATIVE:["graphNode","*graphNode"],")":[]},"*graphNodePath":{"(":["graphNodePath","*graphNodePath"],"[":["graphNodePath","*graphNodePath"],VAR1:["graphNodePath","*graphNodePath"],VAR2:["graphNodePath","*graphNodePath"],NIL:["graphNodePath","*graphNodePath"],IRI_REF:["graphNodePath","*graphNodePath"],TRUE:["graphNodePath","*graphNodePath"],FALSE:["graphNodePath","*graphNodePath"],BLANK_NODE_LABEL:["graphNodePath","*graphNodePath"],ANON:["graphNodePath","*graphNodePath"],PNAME_LN:["graphNodePath","*graphNodePath"],PNAME_NS:["graphNodePath","*graphNodePath"],STRING_LITERAL1:["graphNodePath","*graphNodePath"],STRING_LITERAL2:["graphNodePath","*graphNodePath"],STRING_LITERAL_LONG1:["graphNodePath","*graphNodePath"],STRING_LITERAL_LONG2:["graphNodePath","*graphNodePath"],INTEGER:["graphNodePath","*graphNodePath"],DECIMAL:["graphNodePath","*graphNodePath"],DOUBLE:["graphNodePath","*graphNodePath"],INTEGER_POSITIVE:["graphNodePath","*graphNodePath"],DECIMAL_POSITIVE:["graphNodePath","*graphNodePath"],DOUBLE_POSITIVE:["graphNodePath","*graphNodePath"],INTEGER_NEGATIVE:["graphNodePath","*graphNodePath"],DECIMAL_NEGATIVE:["graphNodePath","*graphNodePath"],DOUBLE_NEGATIVE:["graphNodePath","*graphNodePath"],")":[]},"*groupCondition":{"(":["groupCondition","*groupCondition"],STR:["groupCondition","*groupCondition"],LANG:["groupCondition","*groupCondition"],LANGMATCHES:["groupCondition","*groupCondition"],DATATYPE:["groupCondition","*groupCondition"],BOUND:["groupCondition","*groupCondition"],IRI:["groupCondition","*groupCondition"],URI:["groupCondition","*groupCondition"],BNODE:["groupCondition","*groupCondition"],RAND:["groupCondition","*groupCondition"],ABS:["groupCondition","*groupCondition"],CEIL:["groupCondition","*groupCondition"],FLOOR:["groupCondition","*groupCondition"],ROUND:["groupCondition","*groupCondition"],CONCAT:["groupCondition","*groupCondition"],STRLEN:["groupCondition","*groupCondition"],UCASE:["groupCondition","*groupCondition"],LCASE:["groupCondition","*groupCondition"],ENCODE_FOR_URI:["groupCondition","*groupCondition"],CONTAINS:["groupCondition","*groupCondition"],STRSTARTS:["groupCondition","*groupCondition"],STRENDS:["groupCondition","*groupCondition"],STRBEFORE:["groupCondition","*groupCondition"],STRAFTER:["groupCondition","*groupCondition"],YEAR:["groupCondition","*groupCondition"],MONTH:["groupCondition","*groupCondition"],DAY:["groupCondition","*groupCondition"],HOURS:["groupCondition","*groupCondition"],MINUTES:["groupCondition","*groupCondition"],SECONDS:["groupCondition","*groupCondition"],TIMEZONE:["groupCondition","*groupCondition"],TZ:["groupCondition","*groupCondition"],NOW:["groupCondition","*groupCondition"],UUID:["groupCondition","*groupCondition"],STRUUID:["groupCondition","*groupCondition"],MD5:["groupCondition","*groupCondition"],SHA1:["groupCondition","*groupCondition"],SHA256:["groupCondition","*groupCondition"],SHA384:["groupCondition","*groupCondition"],SHA512:["groupCondition","*groupCondition"],COALESCE:["groupCondition","*groupCondition"],IF:["groupCondition","*groupCondition"],STRLANG:["groupCondition","*groupCondition"],STRDT:["groupCondition","*groupCondition"],SAMETERM:["groupCondition","*groupCondition"],ISIRI:["groupCondition","*groupCondition"],ISURI:["groupCondition","*groupCondition"],ISBLANK:["groupCondition","*groupCondition"],ISLITERAL:["groupCondition","*groupCondition"],ISNUMERIC:["groupCondition","*groupCondition"],VAR1:["groupCondition","*groupCondition"],VAR2:["groupCondition","*groupCondition"],SUBSTR:["groupCondition","*groupCondition"],REPLACE:["groupCondition","*groupCondition"],REGEX:["groupCondition","*groupCondition"],EXISTS:["groupCondition","*groupCondition"],NOT:["groupCondition","*groupCondition"],IRI_REF:["groupCondition","*groupCondition"],PNAME_LN:["groupCondition","*groupCondition"],PNAME_NS:["groupCondition","*groupCondition"],VALUES:[],LIMIT:[],OFFSET:[],ORDER:[],HAVING:[],$:[],"}":[]},"*havingCondition":{"(":["havingCondition","*havingCondition"],STR:["havingCondition","*havingCondition"],LANG:["havingCondition","*havingCondition"],LANGMATCHES:["havingCondition","*havingCondition"],DATATYPE:["havingCondition","*havingCondition"],BOUND:["havingCondition","*havingCondition"],IRI:["havingCondition","*havingCondition"],URI:["havingCondition","*havingCondition"],BNODE:["havingCondition","*havingCondition"],RAND:["havingCondition","*havingCondition"],ABS:["havingCondition","*havingCondition"],CEIL:["havingCondition","*havingCondition"],FLOOR:["havingCondition","*havingCondition"],ROUND:["havingCondition","*havingCondition"],CONCAT:["havingCondition","*havingCondition"],STRLEN:["havingCondition","*havingCondition"],UCASE:["havingCondition","*havingCondition"],LCASE:["havingCondition","*havingCondition"],ENCODE_FOR_URI:["havingCondition","*havingCondition"],CONTAINS:["havingCondition","*havingCondition"],STRSTARTS:["havingCondition","*havingCondition"],STRENDS:["havingCondition","*havingCondition"],STRBEFORE:["havingCondition","*havingCondition"],STRAFTER:["havingCondition","*havingCondition"],YEAR:["havingCondition","*havingCondition"],MONTH:["havingCondition","*havingCondition"],DAY:["havingCondition","*havingCondition"],HOURS:["havingCondition","*havingCondition"],MINUTES:["havingCondition","*havingCondition"],SECONDS:["havingCondition","*havingCondition"],TIMEZONE:["havingCondition","*havingCondition"],TZ:["havingCondition","*havingCondition"],NOW:["havingCondition","*havingCondition"],UUID:["havingCondition","*havingCondition"],STRUUID:["havingCondition","*havingCondition"],MD5:["havingCondition","*havingCondition"],SHA1:["havingCondition","*havingCondition"],SHA256:["havingCondition","*havingCondition"],SHA384:["havingCondition","*havingCondition"],SHA512:["havingCondition","*havingCondition"],COALESCE:["havingCondition","*havingCondition"],IF:["havingCondition","*havingCondition"],STRLANG:["havingCondition","*havingCondition"],STRDT:["havingCondition","*havingCondition"],SAMETERM:["havingCondition","*havingCondition"],ISIRI:["havingCondition","*havingCondition"],ISURI:["havingCondition","*havingCondition"],ISBLANK:["havingCondition","*havingCondition"],ISLITERAL:["havingCondition","*havingCondition"],ISNUMERIC:["havingCondition","*havingCondition"],SUBSTR:["havingCondition","*havingCondition"],REPLACE:["havingCondition","*havingCondition"],REGEX:["havingCondition","*havingCondition"],EXISTS:["havingCondition","*havingCondition"],NOT:["havingCondition","*havingCondition"],IRI_REF:["havingCondition","*havingCondition"],PNAME_LN:["havingCondition","*havingCondition"],PNAME_NS:["havingCondition","*havingCondition"],VALUES:[],LIMIT:[],OFFSET:[],ORDER:[],$:[],"}":[]},"*or([[ (,*dataBlockValue,)],NIL])":{"(":["or([[ (,*dataBlockValue,)],NIL])","*or([[ (,*dataBlockValue,)],NIL])"],NIL:["or([[ (,*dataBlockValue,)],NIL])","*or([[ (,*dataBlockValue,)],NIL])"],"}":[]},"*or([[*,unaryExpression],[/,unaryExpression]])":{"*":["or([[*,unaryExpression],[/,unaryExpression]])","*or([[*,unaryExpression],[/,unaryExpression]])"],"/":["or([[*,unaryExpression],[/,unaryExpression]])","*or([[*,unaryExpression],[/,unaryExpression]])"],AS:[],")":[],",":[],"||":[],"&&":[],"=":[],"!=":[],"<":[],">":[],"<=":[],">=":[],IN:[],NOT:[],"+":[],"-":[],INTEGER_POSITIVE:[],DECIMAL_POSITIVE:[],DOUBLE_POSITIVE:[],INTEGER_NEGATIVE:[],DECIMAL_NEGATIVE:[],DOUBLE_NEGATIVE:[],";":[]},"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])":{"+":["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],"-":["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER_POSITIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_POSITIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_POSITIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER_NEGATIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_NEGATIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_NEGATIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],AS:[],")":[],",":[],"||":[],"&&":[],"=":[],"!=":[],"<":[],">":[],"<=":[],">=":[],IN:[],NOT:[],";":[]},"*or([baseDecl,prefixDecl])":{BASE:["or([baseDecl,prefixDecl])","*or([baseDecl,prefixDecl])"],PREFIX:["or([baseDecl,prefixDecl])","*or([baseDecl,prefixDecl])"],$:[],CONSTRUCT:[],DESCRIBE:[],ASK:[],INSERT:[],DELETE:[],SELECT:[],LOAD:[],CLEAR:[],DROP:[],ADD:[],MOVE:[],COPY:[],CREATE:[],WITH:[]},"*or([var,[ (,expression,AS,var,)]])":{"(":["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],VAR1:["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],VAR2:["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],WHERE:[],"{":[],FROM:[]},"*orderCondition":{ASC:["orderCondition","*orderCondition"],DESC:["orderCondition","*orderCondition"],VAR1:["orderCondition","*orderCondition"],VAR2:["orderCondition","*orderCondition"],"(":["orderCondition","*orderCondition"],STR:["orderCondition","*orderCondition"],LANG:["orderCondition","*orderCondition"],LANGMATCHES:["orderCondition","*orderCondition"],DATATYPE:["orderCondition","*orderCondition"],BOUND:["orderCondition","*orderCondition"],IRI:["orderCondition","*orderCondition"],URI:["orderCondition","*orderCondition"],BNODE:["orderCondition","*orderCondition"],RAND:["orderCondition","*orderCondition"],ABS:["orderCondition","*orderCondition"],CEIL:["orderCondition","*orderCondition"],FLOOR:["orderCondition","*orderCondition"],ROUND:["orderCondition","*orderCondition"],CONCAT:["orderCondition","*orderCondition"],STRLEN:["orderCondition","*orderCondition"],UCASE:["orderCondition","*orderCondition"],LCASE:["orderCondition","*orderCondition"],ENCODE_FOR_URI:["orderCondition","*orderCondition"],CONTAINS:["orderCondition","*orderCondition"],STRSTARTS:["orderCondition","*orderCondition"],STRENDS:["orderCondition","*orderCondition"],STRBEFORE:["orderCondition","*orderCondition"],STRAFTER:["orderCondition","*orderCondition"],YEAR:["orderCondition","*orderCondition"],MONTH:["orderCondition","*orderCondition"],DAY:["orderCondition","*orderCondition"],HOURS:["orderCondition","*orderCondition"],MINUTES:["orderCondition","*orderCondition"],SECONDS:["orderCondition","*orderCondition"],TIMEZONE:["orderCondition","*orderCondition"],TZ:["orderCondition","*orderCondition"],NOW:["orderCondition","*orderCondition"],UUID:["orderCondition","*orderCondition"],STRUUID:["orderCondition","*orderCondition"],MD5:["orderCondition","*orderCondition"],SHA1:["orderCondition","*orderCondition"],SHA256:["orderCondition","*orderCondition"],SHA384:["orderCondition","*orderCondition"],SHA512:["orderCondition","*orderCondition"],COALESCE:["orderCondition","*orderCondition"],IF:["orderCondition","*orderCondition"],STRLANG:["orderCondition","*orderCondition"],STRDT:["orderCondition","*orderCondition"],SAMETERM:["orderCondition","*orderCondition"],ISIRI:["orderCondition","*orderCondition"],ISURI:["orderCondition","*orderCondition"],ISBLANK:["orderCondition","*orderCondition"],ISLITERAL:["orderCondition","*orderCondition"],ISNUMERIC:["orderCondition","*orderCondition"],SUBSTR:["orderCondition","*orderCondition"],REPLACE:["orderCondition","*orderCondition"],REGEX:["orderCondition","*orderCondition"],EXISTS:["orderCondition","*orderCondition"],NOT:["orderCondition","*orderCondition"],IRI_REF:["orderCondition","*orderCondition"],PNAME_LN:["orderCondition","*orderCondition"],PNAME_NS:["orderCondition","*orderCondition"],VALUES:[],LIMIT:[],OFFSET:[],$:[],"}":[]},"*usingClause":{USING:["usingClause","*usingClause"],WHERE:[]},"*var":{VAR1:["var","*var"],VAR2:["var","*var"],")":[]},"*varOrIRIref":{VAR1:["varOrIRIref","*varOrIRIref"],VAR2:["varOrIRIref","*varOrIRIref"],IRI_REF:["varOrIRIref","*varOrIRIref"],PNAME_LN:["varOrIRIref","*varOrIRIref"],PNAME_NS:["varOrIRIref","*varOrIRIref"],ORDER:[],HAVING:[],GROUP:[],LIMIT:[],OFFSET:[],WHERE:[],"{":[],FROM:[],VALUES:[],$:[]},"+graphNode":{"(":["graphNode","*graphNode"],"[":["graphNode","*graphNode"],VAR1:["graphNode","*graphNode"],VAR2:["graphNode","*graphNode"],NIL:["graphNode","*graphNode"],IRI_REF:["graphNode","*graphNode"],TRUE:["graphNode","*graphNode"],FALSE:["graphNode","*graphNode"],BLANK_NODE_LABEL:["graphNode","*graphNode"],ANON:["graphNode","*graphNode"],PNAME_LN:["graphNode","*graphNode"],PNAME_NS:["graphNode","*graphNode"],STRING_LITERAL1:["graphNode","*graphNode"],STRING_LITERAL2:["graphNode","*graphNode"],STRING_LITERAL_LONG1:["graphNode","*graphNode"],STRING_LITERAL_LONG2:["graphNode","*graphNode"],INTEGER:["graphNode","*graphNode"],DECIMAL:["graphNode","*graphNode"],DOUBLE:["graphNode","*graphNode"],INTEGER_POSITIVE:["graphNode","*graphNode"],DECIMAL_POSITIVE:["graphNode","*graphNode"],DOUBLE_POSITIVE:["graphNode","*graphNode"],INTEGER_NEGATIVE:["graphNode","*graphNode"],DECIMAL_NEGATIVE:["graphNode","*graphNode"],DOUBLE_NEGATIVE:["graphNode","*graphNode"]},"+graphNodePath":{"(":["graphNodePath","*graphNodePath"],"[":["graphNodePath","*graphNodePath"],VAR1:["graphNodePath","*graphNodePath"],VAR2:["graphNodePath","*graphNodePath"],NIL:["graphNodePath","*graphNodePath"],IRI_REF:["graphNodePath","*graphNodePath"],TRUE:["graphNodePath","*graphNodePath"],FALSE:["graphNodePath","*graphNodePath"],BLANK_NODE_LABEL:["graphNodePath","*graphNodePath"],ANON:["graphNodePath","*graphNodePath"],PNAME_LN:["graphNodePath","*graphNodePath"],PNAME_NS:["graphNodePath","*graphNodePath"],STRING_LITERAL1:["graphNodePath","*graphNodePath"],STRING_LITERAL2:["graphNodePath","*graphNodePath"],STRING_LITERAL_LONG1:["graphNodePath","*graphNodePath"],STRING_LITERAL_LONG2:["graphNodePath","*graphNodePath"],INTEGER:["graphNodePath","*graphNodePath"],DECIMAL:["graphNodePath","*graphNodePath"],DOUBLE:["graphNodePath","*graphNodePath"],INTEGER_POSITIVE:["graphNodePath","*graphNodePath"],DECIMAL_POSITIVE:["graphNodePath","*graphNodePath"],DOUBLE_POSITIVE:["graphNodePath","*graphNodePath"],INTEGER_NEGATIVE:["graphNodePath","*graphNodePath"],DECIMAL_NEGATIVE:["graphNodePath","*graphNodePath"],DOUBLE_NEGATIVE:["graphNodePath","*graphNodePath"]},"+groupCondition":{"(":["groupCondition","*groupCondition"],STR:["groupCondition","*groupCondition"],LANG:["groupCondition","*groupCondition"],LANGMATCHES:["groupCondition","*groupCondition"],DATATYPE:["groupCondition","*groupCondition"],BOUND:["groupCondition","*groupCondition"],IRI:["groupCondition","*groupCondition"],URI:["groupCondition","*groupCondition"],BNODE:["groupCondition","*groupCondition"],RAND:["groupCondition","*groupCondition"],ABS:["groupCondition","*groupCondition"],CEIL:["groupCondition","*groupCondition"],FLOOR:["groupCondition","*groupCondition"],ROUND:["groupCondition","*groupCondition"],CONCAT:["groupCondition","*groupCondition"],STRLEN:["groupCondition","*groupCondition"],UCASE:["groupCondition","*groupCondition"],LCASE:["groupCondition","*groupCondition"],ENCODE_FOR_URI:["groupCondition","*groupCondition"],CONTAINS:["groupCondition","*groupCondition"],STRSTARTS:["groupCondition","*groupCondition"],STRENDS:["groupCondition","*groupCondition"],STRBEFORE:["groupCondition","*groupCondition"],STRAFTER:["groupCondition","*groupCondition"],YEAR:["groupCondition","*groupCondition"],MONTH:["groupCondition","*groupCondition"],DAY:["groupCondition","*groupCondition"],HOURS:["groupCondition","*groupCondition"],MINUTES:["groupCondition","*groupCondition"],SECONDS:["groupCondition","*groupCondition"],TIMEZONE:["groupCondition","*groupCondition"],TZ:["groupCondition","*groupCondition"],NOW:["groupCondition","*groupCondition"],UUID:["groupCondition","*groupCondition"],STRUUID:["groupCondition","*groupCondition"],MD5:["groupCondition","*groupCondition"],SHA1:["groupCondition","*groupCondition"],SHA256:["groupCondition","*groupCondition"],SHA384:["groupCondition","*groupCondition"],SHA512:["groupCondition","*groupCondition"],COALESCE:["groupCondition","*groupCondition"],IF:["groupCondition","*groupCondition"],STRLANG:["groupCondition","*groupCondition"],STRDT:["groupCondition","*groupCondition"],SAMETERM:["groupCondition","*groupCondition"],ISIRI:["groupCondition","*groupCondition"],ISURI:["groupCondition","*groupCondition"],ISBLANK:["groupCondition","*groupCondition"],ISLITERAL:["groupCondition","*groupCondition"],ISNUMERIC:["groupCondition","*groupCondition"],VAR1:["groupCondition","*groupCondition"],VAR2:["groupCondition","*groupCondition"],SUBSTR:["groupCondition","*groupCondition"],REPLACE:["groupCondition","*groupCondition"],REGEX:["groupCondition","*groupCondition"],EXISTS:["groupCondition","*groupCondition"],NOT:["groupCondition","*groupCondition"],IRI_REF:["groupCondition","*groupCondition"],PNAME_LN:["groupCondition","*groupCondition"],PNAME_NS:["groupCondition","*groupCondition"]},"+havingCondition":{"(":["havingCondition","*havingCondition"],STR:["havingCondition","*havingCondition"],LANG:["havingCondition","*havingCondition"],LANGMATCHES:["havingCondition","*havingCondition"],DATATYPE:["havingCondition","*havingCondition"],BOUND:["havingCondition","*havingCondition"],IRI:["havingCondition","*havingCondition"],URI:["havingCondition","*havingCondition"],BNODE:["havingCondition","*havingCondition"],RAND:["havingCondition","*havingCondition"],ABS:["havingCondition","*havingCondition"],CEIL:["havingCondition","*havingCondition"],FLOOR:["havingCondition","*havingCondition"],ROUND:["havingCondition","*havingCondition"],CONCAT:["havingCondition","*havingCondition"],STRLEN:["havingCondition","*havingCondition"],UCASE:["havingCondition","*havingCondition"],LCASE:["havingCondition","*havingCondition"],ENCODE_FOR_URI:["havingCondition","*havingCondition"],CONTAINS:["havingCondition","*havingCondition"],STRSTARTS:["havingCondition","*havingCondition"],STRENDS:["havingCondition","*havingCondition"],STRBEFORE:["havingCondition","*havingCondition"],STRAFTER:["havingCondition","*havingCondition"],YEAR:["havingCondition","*havingCondition"],MONTH:["havingCondition","*havingCondition"],DAY:["havingCondition","*havingCondition"],HOURS:["havingCondition","*havingCondition"],MINUTES:["havingCondition","*havingCondition"],SECONDS:["havingCondition","*havingCondition"],TIMEZONE:["havingCondition","*havingCondition"],TZ:["havingCondition","*havingCondition"],NOW:["havingCondition","*havingCondition"],UUID:["havingCondition","*havingCondition"],STRUUID:["havingCondition","*havingCondition"],MD5:["havingCondition","*havingCondition"],SHA1:["havingCondition","*havingCondition"],SHA256:["havingCondition","*havingCondition"],SHA384:["havingCondition","*havingCondition"],SHA512:["havingCondition","*havingCondition"],COALESCE:["havingCondition","*havingCondition"],IF:["havingCondition","*havingCondition"],STRLANG:["havingCondition","*havingCondition"],STRDT:["havingCondition","*havingCondition"],SAMETERM:["havingCondition","*havingCondition"],ISIRI:["havingCondition","*havingCondition"],ISURI:["havingCondition","*havingCondition"],ISBLANK:["havingCondition","*havingCondition"],ISLITERAL:["havingCondition","*havingCondition"],ISNUMERIC:["havingCondition","*havingCondition"],SUBSTR:["havingCondition","*havingCondition"],REPLACE:["havingCondition","*havingCondition"],REGEX:["havingCondition","*havingCondition"],EXISTS:["havingCondition","*havingCondition"],NOT:["havingCondition","*havingCondition"],IRI_REF:["havingCondition","*havingCondition"],PNAME_LN:["havingCondition","*havingCondition"],PNAME_NS:["havingCondition","*havingCondition"]},"+or([var,[ (,expression,AS,var,)]])":{"(":["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],VAR1:["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],VAR2:["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"]},"+orderCondition":{ASC:["orderCondition","*orderCondition"],DESC:["orderCondition","*orderCondition"],VAR1:["orderCondition","*orderCondition"],VAR2:["orderCondition","*orderCondition"],"(":["orderCondition","*orderCondition"],STR:["orderCondition","*orderCondition"],LANG:["orderCondition","*orderCondition"],LANGMATCHES:["orderCondition","*orderCondition"],DATATYPE:["orderCondition","*orderCondition"],BOUND:["orderCondition","*orderCondition"],IRI:["orderCondition","*orderCondition"],URI:["orderCondition","*orderCondition"],BNODE:["orderCondition","*orderCondition"],RAND:["orderCondition","*orderCondition"],ABS:["orderCondition","*orderCondition"],CEIL:["orderCondition","*orderCondition"],FLOOR:["orderCondition","*orderCondition"],ROUND:["orderCondition","*orderCondition"],CONCAT:["orderCondition","*orderCondition"],STRLEN:["orderCondition","*orderCondition"],UCASE:["orderCondition","*orderCondition"],LCASE:["orderCondition","*orderCondition"],ENCODE_FOR_URI:["orderCondition","*orderCondition"],CONTAINS:["orderCondition","*orderCondition"],STRSTARTS:["orderCondition","*orderCondition"],STRENDS:["orderCondition","*orderCondition"],STRBEFORE:["orderCondition","*orderCondition"],STRAFTER:["orderCondition","*orderCondition"],YEAR:["orderCondition","*orderCondition"],MONTH:["orderCondition","*orderCondition"],DAY:["orderCondition","*orderCondition"],HOURS:["orderCondition","*orderCondition"],MINUTES:["orderCondition","*orderCondition"],SECONDS:["orderCondition","*orderCondition"],TIMEZONE:["orderCondition","*orderCondition"],TZ:["orderCondition","*orderCondition"],NOW:["orderCondition","*orderCondition"],UUID:["orderCondition","*orderCondition"],STRUUID:["orderCondition","*orderCondition"],MD5:["orderCondition","*orderCondition"],SHA1:["orderCondition","*orderCondition"],SHA256:["orderCondition","*orderCondition"],SHA384:["orderCondition","*orderCondition"],SHA512:["orderCondition","*orderCondition"],COALESCE:["orderCondition","*orderCondition"],IF:["orderCondition","*orderCondition"],STRLANG:["orderCondition","*orderCondition"],STRDT:["orderCondition","*orderCondition"],SAMETERM:["orderCondition","*orderCondition"],ISIRI:["orderCondition","*orderCondition"],ISURI:["orderCondition","*orderCondition"],ISBLANK:["orderCondition","*orderCondition"],ISLITERAL:["orderCondition","*orderCondition"],ISNUMERIC:["orderCondition","*orderCondition"],SUBSTR:["orderCondition","*orderCondition"],REPLACE:["orderCondition","*orderCondition"],REGEX:["orderCondition","*orderCondition"],EXISTS:["orderCondition","*orderCondition"],NOT:["orderCondition","*orderCondition"],IRI_REF:["orderCondition","*orderCondition"],PNAME_LN:["orderCondition","*orderCondition"],PNAME_NS:["orderCondition","*orderCondition"]},"+varOrIRIref":{VAR1:["varOrIRIref","*varOrIRIref"], -VAR2:["varOrIRIref","*varOrIRIref"],IRI_REF:["varOrIRIref","*varOrIRIref"],PNAME_LN:["varOrIRIref","*varOrIRIref"],PNAME_NS:["varOrIRIref","*varOrIRIref"]},"?.":{".":["."],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:[],GRAPH:[],"{":[],OPTIONAL:[],MINUS:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"?DISTINCT":{DISTINCT:["DISTINCT"],"!":[],"+":[],"-":[],VAR1:[],VAR2:[],"(":[],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:[],TRUE:[],FALSE:[],COUNT:[],SUM:[],MIN:[],MAX:[],AVG:[],SAMPLE:[],GROUP_CONCAT:[],SUBSTR:[],REPLACE:[],REGEX:[],EXISTS:[],NOT:[],IRI_REF:[],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:[],PNAME_LN:[],PNAME_NS:[],"*":[]},"?GRAPH":{GRAPH:["GRAPH"],IRI_REF:[],PNAME_LN:[],PNAME_NS:[]},"?SILENT":{SILENT:["SILENT"],VAR1:[],VAR2:[],IRI_REF:[],PNAME_LN:[],PNAME_NS:[]},"?SILENT_1":{SILENT:["SILENT"],IRI_REF:[],PNAME_LN:[],PNAME_NS:[]},"?SILENT_2":{SILENT:["SILENT"],GRAPH:[],DEFAULT:[],NAMED:[],ALL:[]},"?SILENT_3":{SILENT:["SILENT"],GRAPH:[]},"?SILENT_4":{SILENT:["SILENT"],DEFAULT:[],GRAPH:[],IRI_REF:[],PNAME_LN:[],PNAME_NS:[]},"?WHERE":{WHERE:["WHERE"],"{":[]},"?[,,expression]":{",":["[,,expression]"],")":[]},"?[.,?constructTriples]":{".":["[.,?constructTriples]"],"}":[]},"?[.,?triplesBlock]":{".":["[.,?triplesBlock]"],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"?[.,?triplesTemplate]":{".":["[.,?triplesTemplate]"],"}":[],GRAPH:[]},"?[;,SEPARATOR,=,string]":{";":["[;,SEPARATOR,=,string]"],")":[]},"?[;,update]":{";":["[;,update]"],$:[]},"?[AS,var]":{AS:["[AS,var]"],")":[]},"?[INTO,graphRef]":{INTO:["[INTO,graphRef]"],";":[],$:[]},"?[or([verbPath,verbSimple]),objectList]":{VAR1:["[or([verbPath,verbSimple]),objectList]"],VAR2:["[or([verbPath,verbSimple]),objectList]"],"^":["[or([verbPath,verbSimple]),objectList]"],a:["[or([verbPath,verbSimple]),objectList]"],"!":["[or([verbPath,verbSimple]),objectList]"],"(":["[or([verbPath,verbSimple]),objectList]"],IRI_REF:["[or([verbPath,verbSimple]),objectList]"],PNAME_LN:["[or([verbPath,verbSimple]),objectList]"],PNAME_NS:["[or([verbPath,verbSimple]),objectList]"],";":[],".":[],"]":[],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"?[pathOneInPropertySet,*[|,pathOneInPropertySet]]":{a:["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],"^":["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],IRI_REF:["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],PNAME_LN:["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],PNAME_NS:["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],")":[]},"?[update1,?[;,update]]":{INSERT:["[update1,?[;,update]]"],DELETE:["[update1,?[;,update]]"],LOAD:["[update1,?[;,update]]"],CLEAR:["[update1,?[;,update]]"],DROP:["[update1,?[;,update]]"],ADD:["[update1,?[;,update]]"],MOVE:["[update1,?[;,update]]"],COPY:["[update1,?[;,update]]"],CREATE:["[update1,?[;,update]]"],WITH:["[update1,?[;,update]]"],$:[]},"?[verb,objectList]":{a:["[verb,objectList]"],VAR1:["[verb,objectList]"],VAR2:["[verb,objectList]"],IRI_REF:["[verb,objectList]"],PNAME_LN:["[verb,objectList]"],PNAME_NS:["[verb,objectList]"],";":[],".":[],"]":[],"}":[],GRAPH:[],"{":[],OPTIONAL:[],MINUS:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[]},"?argList":{NIL:["argList"],"(":["argList"],AS:[],")":[],",":[],"||":[],"&&":[],"=":[],"!=":[],"<":[],">":[],"<=":[],">=":[],IN:[],NOT:[],"+":[],"-":[],INTEGER_POSITIVE:[],DECIMAL_POSITIVE:[],DOUBLE_POSITIVE:[],INTEGER_NEGATIVE:[],DECIMAL_NEGATIVE:[],DOUBLE_NEGATIVE:[],"*":[],"/":[],";":[]},"?constructTriples":{VAR1:["constructTriples"],VAR2:["constructTriples"],NIL:["constructTriples"],"(":["constructTriples"],"[":["constructTriples"],IRI_REF:["constructTriples"],TRUE:["constructTriples"],FALSE:["constructTriples"],BLANK_NODE_LABEL:["constructTriples"],ANON:["constructTriples"],PNAME_LN:["constructTriples"],PNAME_NS:["constructTriples"],STRING_LITERAL1:["constructTriples"],STRING_LITERAL2:["constructTriples"],STRING_LITERAL_LONG1:["constructTriples"],STRING_LITERAL_LONG2:["constructTriples"],INTEGER:["constructTriples"],DECIMAL:["constructTriples"],DOUBLE:["constructTriples"],INTEGER_POSITIVE:["constructTriples"],DECIMAL_POSITIVE:["constructTriples"],DOUBLE_POSITIVE:["constructTriples"],INTEGER_NEGATIVE:["constructTriples"],DECIMAL_NEGATIVE:["constructTriples"],DOUBLE_NEGATIVE:["constructTriples"],"}":[]},"?groupClause":{GROUP:["groupClause"],VALUES:[],LIMIT:[],OFFSET:[],ORDER:[],HAVING:[],$:[],"}":[]},"?havingClause":{HAVING:["havingClause"],VALUES:[],LIMIT:[],OFFSET:[],ORDER:[],$:[],"}":[]},"?insertClause":{INSERT:["insertClause"],WHERE:[],USING:[]},"?limitClause":{LIMIT:["limitClause"],VALUES:[],$:[],"}":[]},"?limitOffsetClauses":{LIMIT:["limitOffsetClauses"],OFFSET:["limitOffsetClauses"],VALUES:[],$:[],"}":[]},"?offsetClause":{OFFSET:["offsetClause"],VALUES:[],$:[],"}":[]},"?or([DISTINCT,REDUCED])":{DISTINCT:["or([DISTINCT,REDUCED])"],REDUCED:["or([DISTINCT,REDUCED])"],"*":[],"(":[],VAR1:[],VAR2:[]},"?or([LANGTAG,[^^,iriRef]])":{LANGTAG:["or([LANGTAG,[^^,iriRef]])"],"^^":["or([LANGTAG,[^^,iriRef]])"],UNDEF:[],IRI_REF:[],TRUE:[],FALSE:[],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:[],a:[],VAR1:[],VAR2:[],"^":[],"!":[],"(":[],".":[],";":[],",":[],AS:[],")":[],"||":[],"&&":[],"=":[],"!=":[],"<":[],">":[],"<=":[],">=":[],IN:[],NOT:[],"+":[],"-":[],"*":[],"/":[],"}":[],"[":[],NIL:[],BLANK_NODE_LABEL:[],ANON:[],"]":[],GRAPH:[],"{":[],OPTIONAL:[],MINUS:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[]},"?or([[*,unaryExpression],[/,unaryExpression]])":{"*":["or([[*,unaryExpression],[/,unaryExpression]])"],"/":["or([[*,unaryExpression],[/,unaryExpression]])"],"+":[],"-":[],INTEGER_POSITIVE:[],DECIMAL_POSITIVE:[],DOUBLE_POSITIVE:[],INTEGER_NEGATIVE:[],DECIMAL_NEGATIVE:[],DOUBLE_NEGATIVE:[],AS:[],")":[],",":[],"||":[],"&&":[],"=":[],"!=":[],"<":[],">":[],"<=":[],">=":[],IN:[],NOT:[],";":[]},"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])":{"=":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"!=":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"<":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],">":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"<=":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],">=":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IN:["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],NOT:["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],AS:[],")":[],",":[],"||":[],"&&":[],";":[]},"?orderClause":{ORDER:["orderClause"],VALUES:[],LIMIT:[],OFFSET:[],$:[],"}":[]},"?pathMod":{"*":["pathMod"],"?":["pathMod"],"+":["pathMod"],"{":["pathMod"],"|":[],"/":[],")":[],"(":[],"[":[],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:[]},"?triplesBlock":{VAR1:["triplesBlock"],VAR2:["triplesBlock"],NIL:["triplesBlock"],"(":["triplesBlock"],"[":["triplesBlock"],IRI_REF:["triplesBlock"],TRUE:["triplesBlock"],FALSE:["triplesBlock"],BLANK_NODE_LABEL:["triplesBlock"],ANON:["triplesBlock"],PNAME_LN:["triplesBlock"],PNAME_NS:["triplesBlock"],STRING_LITERAL1:["triplesBlock"],STRING_LITERAL2:["triplesBlock"],STRING_LITERAL_LONG1:["triplesBlock"],STRING_LITERAL_LONG2:["triplesBlock"],INTEGER:["triplesBlock"],DECIMAL:["triplesBlock"],DOUBLE:["triplesBlock"],INTEGER_POSITIVE:["triplesBlock"],DECIMAL_POSITIVE:["triplesBlock"],DOUBLE_POSITIVE:["triplesBlock"],INTEGER_NEGATIVE:["triplesBlock"],DECIMAL_NEGATIVE:["triplesBlock"],DOUBLE_NEGATIVE:["triplesBlock"],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"?triplesTemplate":{VAR1:["triplesTemplate"],VAR2:["triplesTemplate"],NIL:["triplesTemplate"],"(":["triplesTemplate"],"[":["triplesTemplate"],IRI_REF:["triplesTemplate"],TRUE:["triplesTemplate"],FALSE:["triplesTemplate"],BLANK_NODE_LABEL:["triplesTemplate"],ANON:["triplesTemplate"],PNAME_LN:["triplesTemplate"],PNAME_NS:["triplesTemplate"],STRING_LITERAL1:["triplesTemplate"],STRING_LITERAL2:["triplesTemplate"],STRING_LITERAL_LONG1:["triplesTemplate"],STRING_LITERAL_LONG2:["triplesTemplate"],INTEGER:["triplesTemplate"],DECIMAL:["triplesTemplate"],DOUBLE:["triplesTemplate"],INTEGER_POSITIVE:["triplesTemplate"],DECIMAL_POSITIVE:["triplesTemplate"],DOUBLE_POSITIVE:["triplesTemplate"],INTEGER_NEGATIVE:["triplesTemplate"],DECIMAL_NEGATIVE:["triplesTemplate"],DOUBLE_NEGATIVE:["triplesTemplate"],"}":[],GRAPH:[]},"?whereClause":{WHERE:["whereClause"],"{":["whereClause"],ORDER:[],HAVING:[],GROUP:[],LIMIT:[],OFFSET:[],VALUES:[],$:[]},"[ (,*dataBlockValue,)]":{"(":["(","*dataBlockValue",")"]},"[ (,*var,)]":{"(":["(","*var",")"]},"[ (,expression,)]":{"(":["(","expression",")"]},"[ (,expression,AS,var,)]":{"(":["(","expression","AS","var",")"]},"[!=,numericExpression]":{"!=":["!=","numericExpression"]},"[&&,valueLogical]":{"&&":["&&","valueLogical"]},"[*,unaryExpression]":{"*":["*","unaryExpression"]},"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]":{WHERE:["*datasetClause","WHERE","{","?triplesTemplate","}","solutionModifier"],FROM:["*datasetClause","WHERE","{","?triplesTemplate","}","solutionModifier"]},"[+,multiplicativeExpression]":{"+":["+","multiplicativeExpression"]},"[,,expression]":{",":[",","expression"]},"[,,integer,}]":{",":[",","integer","}"]},"[,,objectPath]":{",":[",","objectPath"]},"[,,object]":{",":[",","object"]},"[,,or([},[integer,}]])]":{",":[",","or([},[integer,}]])"]},"[-,multiplicativeExpression]":{"-":["-","multiplicativeExpression"]},"[.,?constructTriples]":{".":[".","?constructTriples"]},"[.,?triplesBlock]":{".":[".","?triplesBlock"]},"[.,?triplesTemplate]":{".":[".","?triplesTemplate"]},"[/,pathEltOrInverse]":{"/":["/","pathEltOrInverse"]},"[/,unaryExpression]":{"/":["/","unaryExpression"]},"[;,?[or([verbPath,verbSimple]),objectList]]":{";":[";","?[or([verbPath,verbSimple]),objectList]"]},"[;,?[verb,objectList]]":{";":[";","?[verb,objectList]"]},"[;,SEPARATOR,=,string]":{";":[";","SEPARATOR","=","string"]},"[;,update]":{";":[";","update"]},"[<,numericExpression]":{"<":["<","numericExpression"]},"[<=,numericExpression]":{"<=":["<=","numericExpression"]},"[=,numericExpression]":{"=":["=","numericExpression"]},"[>,numericExpression]":{">":[">","numericExpression"]},"[>=,numericExpression]":{">=":[">=","numericExpression"]},"[AS,var]":{AS:["AS","var"]},"[IN,expressionList]":{IN:["IN","expressionList"]},"[INTO,graphRef]":{INTO:["INTO","graphRef"]},"[NAMED,iriRef]":{NAMED:["NAMED","iriRef"]},"[NOT,IN,expressionList]":{NOT:["NOT","IN","expressionList"]},"[UNION,groupGraphPattern]":{UNION:["UNION","groupGraphPattern"]},"[^^,iriRef]":{"^^":["^^","iriRef"]},"[constructTemplate,*datasetClause,whereClause,solutionModifier]":{"{":["constructTemplate","*datasetClause","whereClause","solutionModifier"]},"[deleteClause,?insertClause]":{DELETE:["deleteClause","?insertClause"]},"[graphPatternNotTriples,?.,?triplesBlock]":{"{":["graphPatternNotTriples","?.","?triplesBlock"],OPTIONAL:["graphPatternNotTriples","?.","?triplesBlock"],MINUS:["graphPatternNotTriples","?.","?triplesBlock"],GRAPH:["graphPatternNotTriples","?.","?triplesBlock"],SERVICE:["graphPatternNotTriples","?.","?triplesBlock"],FILTER:["graphPatternNotTriples","?.","?triplesBlock"],BIND:["graphPatternNotTriples","?.","?triplesBlock"],VALUES:["graphPatternNotTriples","?.","?triplesBlock"]},"[integer,or([[,,or([},[integer,}]])],}])]":{INTEGER:["integer","or([[,,or([},[integer,}]])],}])"]},"[integer,}]":{INTEGER:["integer","}"]},"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]":{INTEGER_POSITIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_POSITIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_POSITIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER_NEGATIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_NEGATIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_NEGATIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"]},"[or([verbPath,verbSimple]),objectList]":{VAR1:["or([verbPath,verbSimple])","objectList"],VAR2:["or([verbPath,verbSimple])","objectList"],"^":["or([verbPath,verbSimple])","objectList"],a:["or([verbPath,verbSimple])","objectList"],"!":["or([verbPath,verbSimple])","objectList"],"(":["or([verbPath,verbSimple])","objectList"],IRI_REF:["or([verbPath,verbSimple])","objectList"],PNAME_LN:["or([verbPath,verbSimple])","objectList"],PNAME_NS:["or([verbPath,verbSimple])","objectList"]},"[pathOneInPropertySet,*[|,pathOneInPropertySet]]":{a:["pathOneInPropertySet","*[|,pathOneInPropertySet]"],"^":["pathOneInPropertySet","*[|,pathOneInPropertySet]"],IRI_REF:["pathOneInPropertySet","*[|,pathOneInPropertySet]"],PNAME_LN:["pathOneInPropertySet","*[|,pathOneInPropertySet]"],PNAME_NS:["pathOneInPropertySet","*[|,pathOneInPropertySet]"]},"[quadsNotTriples,?.,?triplesTemplate]":{GRAPH:["quadsNotTriples","?.","?triplesTemplate"]},"[update1,?[;,update]]":{INSERT:["update1","?[;,update]"],DELETE:["update1","?[;,update]"],LOAD:["update1","?[;,update]"],CLEAR:["update1","?[;,update]"],DROP:["update1","?[;,update]"],ADD:["update1","?[;,update]"],MOVE:["update1","?[;,update]"],COPY:["update1","?[;,update]"],CREATE:["update1","?[;,update]"],WITH:["update1","?[;,update]"]},"[verb,objectList]":{a:["verb","objectList"],VAR1:["verb","objectList"],VAR2:["verb","objectList"],IRI_REF:["verb","objectList"],PNAME_LN:["verb","objectList"],PNAME_NS:["verb","objectList"]},"[|,pathOneInPropertySet]":{"|":["|","pathOneInPropertySet"]},"[|,pathSequence]":{"|":["|","pathSequence"]},"[||,conditionalAndExpression]":{"||":["||","conditionalAndExpression"]},add:{ADD:["ADD","?SILENT_4","graphOrDefault","TO","graphOrDefault"]},additiveExpression:{"!":["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],"+":["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],"-":["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],VAR1:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],VAR2:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],"(":["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STR:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],LANG:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],LANGMATCHES:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DATATYPE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],BOUND:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],IRI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],URI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],BNODE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],RAND:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ABS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],CEIL:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],FLOOR:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ROUND:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],CONCAT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRLEN:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],UCASE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],LCASE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ENCODE_FOR_URI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],CONTAINS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRSTARTS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRENDS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRBEFORE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRAFTER:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],YEAR:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MONTH:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DAY:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],HOURS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MINUTES:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SECONDS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],TIMEZONE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],TZ:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],NOW:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],UUID:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRUUID:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MD5:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SHA1:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SHA256:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SHA384:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SHA512:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],COALESCE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],IF:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRLANG:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRDT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SAMETERM:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISIRI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISURI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISBLANK:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISLITERAL:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISNUMERIC:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],TRUE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],FALSE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],COUNT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SUM:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MIN:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MAX:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],AVG:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SAMPLE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],GROUP_CONCAT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SUBSTR:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],REPLACE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],REGEX:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],EXISTS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],NOT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],IRI_REF:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRING_LITERAL1:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRING_LITERAL2:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRING_LITERAL_LONG1:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRING_LITERAL_LONG2:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"], -DOUBLE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER_POSITIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_POSITIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_POSITIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER_NEGATIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_NEGATIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_NEGATIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],PNAME_LN:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],PNAME_NS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"]},aggregate:{COUNT:["COUNT","(","?DISTINCT","or([*,expression])",")"],SUM:["SUM","(","?DISTINCT","expression",")"],MIN:["MIN","(","?DISTINCT","expression",")"],MAX:["MAX","(","?DISTINCT","expression",")"],AVG:["AVG","(","?DISTINCT","expression",")"],SAMPLE:["SAMPLE","(","?DISTINCT","expression",")"],GROUP_CONCAT:["GROUP_CONCAT","(","?DISTINCT","expression","?[;,SEPARATOR,=,string]",")"]},allowBnodes:{"}":[]},allowVars:{"}":[]},argList:{NIL:["NIL"],"(":["(","?DISTINCT","expression","*[,,expression]",")"]},askQuery:{ASK:["ASK","*datasetClause","whereClause","solutionModifier"]},baseDecl:{BASE:["BASE","IRI_REF"]},bind:{BIND:["BIND","(","expression","AS","var",")"]},blankNode:{BLANK_NODE_LABEL:["BLANK_NODE_LABEL"],ANON:["ANON"]},blankNodePropertyList:{"[":["[","propertyListNotEmpty","]"]},blankNodePropertyListPath:{"[":["[","propertyListPathNotEmpty","]"]},booleanLiteral:{TRUE:["TRUE"],FALSE:["FALSE"]},brackettedExpression:{"(":["(","expression",")"]},builtInCall:{STR:["STR","(","expression",")"],LANG:["LANG","(","expression",")"],LANGMATCHES:["LANGMATCHES","(","expression",",","expression",")"],DATATYPE:["DATATYPE","(","expression",")"],BOUND:["BOUND","(","var",")"],IRI:["IRI","(","expression",")"],URI:["URI","(","expression",")"],BNODE:["BNODE","or([[ (,expression,)],NIL])"],RAND:["RAND","NIL"],ABS:["ABS","(","expression",")"],CEIL:["CEIL","(","expression",")"],FLOOR:["FLOOR","(","expression",")"],ROUND:["ROUND","(","expression",")"],CONCAT:["CONCAT","expressionList"],SUBSTR:["substringExpression"],STRLEN:["STRLEN","(","expression",")"],REPLACE:["strReplaceExpression"],UCASE:["UCASE","(","expression",")"],LCASE:["LCASE","(","expression",")"],ENCODE_FOR_URI:["ENCODE_FOR_URI","(","expression",")"],CONTAINS:["CONTAINS","(","expression",",","expression",")"],STRSTARTS:["STRSTARTS","(","expression",",","expression",")"],STRENDS:["STRENDS","(","expression",",","expression",")"],STRBEFORE:["STRBEFORE","(","expression",",","expression",")"],STRAFTER:["STRAFTER","(","expression",",","expression",")"],YEAR:["YEAR","(","expression",")"],MONTH:["MONTH","(","expression",")"],DAY:["DAY","(","expression",")"],HOURS:["HOURS","(","expression",")"],MINUTES:["MINUTES","(","expression",")"],SECONDS:["SECONDS","(","expression",")"],TIMEZONE:["TIMEZONE","(","expression",")"],TZ:["TZ","(","expression",")"],NOW:["NOW","NIL"],UUID:["UUID","NIL"],STRUUID:["STRUUID","NIL"],MD5:["MD5","(","expression",")"],SHA1:["SHA1","(","expression",")"],SHA256:["SHA256","(","expression",")"],SHA384:["SHA384","(","expression",")"],SHA512:["SHA512","(","expression",")"],COALESCE:["COALESCE","expressionList"],IF:["IF","(","expression",",","expression",",","expression",")"],STRLANG:["STRLANG","(","expression",",","expression",")"],STRDT:["STRDT","(","expression",",","expression",")"],SAMETERM:["SAMETERM","(","expression",",","expression",")"],ISIRI:["ISIRI","(","expression",")"],ISURI:["ISURI","(","expression",")"],ISBLANK:["ISBLANK","(","expression",")"],ISLITERAL:["ISLITERAL","(","expression",")"],ISNUMERIC:["ISNUMERIC","(","expression",")"],REGEX:["regexExpression"],EXISTS:["existsFunc"],NOT:["notExistsFunc"]},clear:{CLEAR:["CLEAR","?SILENT_2","graphRefAll"]},collection:{"(":["(","+graphNode",")"]},collectionPath:{"(":["(","+graphNodePath",")"]},conditionalAndExpression:{"!":["valueLogical","*[&&,valueLogical]"],"+":["valueLogical","*[&&,valueLogical]"],"-":["valueLogical","*[&&,valueLogical]"],VAR1:["valueLogical","*[&&,valueLogical]"],VAR2:["valueLogical","*[&&,valueLogical]"],"(":["valueLogical","*[&&,valueLogical]"],STR:["valueLogical","*[&&,valueLogical]"],LANG:["valueLogical","*[&&,valueLogical]"],LANGMATCHES:["valueLogical","*[&&,valueLogical]"],DATATYPE:["valueLogical","*[&&,valueLogical]"],BOUND:["valueLogical","*[&&,valueLogical]"],IRI:["valueLogical","*[&&,valueLogical]"],URI:["valueLogical","*[&&,valueLogical]"],BNODE:["valueLogical","*[&&,valueLogical]"],RAND:["valueLogical","*[&&,valueLogical]"],ABS:["valueLogical","*[&&,valueLogical]"],CEIL:["valueLogical","*[&&,valueLogical]"],FLOOR:["valueLogical","*[&&,valueLogical]"],ROUND:["valueLogical","*[&&,valueLogical]"],CONCAT:["valueLogical","*[&&,valueLogical]"],STRLEN:["valueLogical","*[&&,valueLogical]"],UCASE:["valueLogical","*[&&,valueLogical]"],LCASE:["valueLogical","*[&&,valueLogical]"],ENCODE_FOR_URI:["valueLogical","*[&&,valueLogical]"],CONTAINS:["valueLogical","*[&&,valueLogical]"],STRSTARTS:["valueLogical","*[&&,valueLogical]"],STRENDS:["valueLogical","*[&&,valueLogical]"],STRBEFORE:["valueLogical","*[&&,valueLogical]"],STRAFTER:["valueLogical","*[&&,valueLogical]"],YEAR:["valueLogical","*[&&,valueLogical]"],MONTH:["valueLogical","*[&&,valueLogical]"],DAY:["valueLogical","*[&&,valueLogical]"],HOURS:["valueLogical","*[&&,valueLogical]"],MINUTES:["valueLogical","*[&&,valueLogical]"],SECONDS:["valueLogical","*[&&,valueLogical]"],TIMEZONE:["valueLogical","*[&&,valueLogical]"],TZ:["valueLogical","*[&&,valueLogical]"],NOW:["valueLogical","*[&&,valueLogical]"],UUID:["valueLogical","*[&&,valueLogical]"],STRUUID:["valueLogical","*[&&,valueLogical]"],MD5:["valueLogical","*[&&,valueLogical]"],SHA1:["valueLogical","*[&&,valueLogical]"],SHA256:["valueLogical","*[&&,valueLogical]"],SHA384:["valueLogical","*[&&,valueLogical]"],SHA512:["valueLogical","*[&&,valueLogical]"],COALESCE:["valueLogical","*[&&,valueLogical]"],IF:["valueLogical","*[&&,valueLogical]"],STRLANG:["valueLogical","*[&&,valueLogical]"],STRDT:["valueLogical","*[&&,valueLogical]"],SAMETERM:["valueLogical","*[&&,valueLogical]"],ISIRI:["valueLogical","*[&&,valueLogical]"],ISURI:["valueLogical","*[&&,valueLogical]"],ISBLANK:["valueLogical","*[&&,valueLogical]"],ISLITERAL:["valueLogical","*[&&,valueLogical]"],ISNUMERIC:["valueLogical","*[&&,valueLogical]"],TRUE:["valueLogical","*[&&,valueLogical]"],FALSE:["valueLogical","*[&&,valueLogical]"],COUNT:["valueLogical","*[&&,valueLogical]"],SUM:["valueLogical","*[&&,valueLogical]"],MIN:["valueLogical","*[&&,valueLogical]"],MAX:["valueLogical","*[&&,valueLogical]"],AVG:["valueLogical","*[&&,valueLogical]"],SAMPLE:["valueLogical","*[&&,valueLogical]"],GROUP_CONCAT:["valueLogical","*[&&,valueLogical]"],SUBSTR:["valueLogical","*[&&,valueLogical]"],REPLACE:["valueLogical","*[&&,valueLogical]"],REGEX:["valueLogical","*[&&,valueLogical]"],EXISTS:["valueLogical","*[&&,valueLogical]"],NOT:["valueLogical","*[&&,valueLogical]"],IRI_REF:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL1:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL2:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL_LONG1:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL_LONG2:["valueLogical","*[&&,valueLogical]"],INTEGER:["valueLogical","*[&&,valueLogical]"],DECIMAL:["valueLogical","*[&&,valueLogical]"],DOUBLE:["valueLogical","*[&&,valueLogical]"],INTEGER_POSITIVE:["valueLogical","*[&&,valueLogical]"],DECIMAL_POSITIVE:["valueLogical","*[&&,valueLogical]"],DOUBLE_POSITIVE:["valueLogical","*[&&,valueLogical]"],INTEGER_NEGATIVE:["valueLogical","*[&&,valueLogical]"],DECIMAL_NEGATIVE:["valueLogical","*[&&,valueLogical]"],DOUBLE_NEGATIVE:["valueLogical","*[&&,valueLogical]"],PNAME_LN:["valueLogical","*[&&,valueLogical]"],PNAME_NS:["valueLogical","*[&&,valueLogical]"]},conditionalOrExpression:{"!":["conditionalAndExpression","*[||,conditionalAndExpression]"],"+":["conditionalAndExpression","*[||,conditionalAndExpression]"],"-":["conditionalAndExpression","*[||,conditionalAndExpression]"],VAR1:["conditionalAndExpression","*[||,conditionalAndExpression]"],VAR2:["conditionalAndExpression","*[||,conditionalAndExpression]"],"(":["conditionalAndExpression","*[||,conditionalAndExpression]"],STR:["conditionalAndExpression","*[||,conditionalAndExpression]"],LANG:["conditionalAndExpression","*[||,conditionalAndExpression]"],LANGMATCHES:["conditionalAndExpression","*[||,conditionalAndExpression]"],DATATYPE:["conditionalAndExpression","*[||,conditionalAndExpression]"],BOUND:["conditionalAndExpression","*[||,conditionalAndExpression]"],IRI:["conditionalAndExpression","*[||,conditionalAndExpression]"],URI:["conditionalAndExpression","*[||,conditionalAndExpression]"],BNODE:["conditionalAndExpression","*[||,conditionalAndExpression]"],RAND:["conditionalAndExpression","*[||,conditionalAndExpression]"],ABS:["conditionalAndExpression","*[||,conditionalAndExpression]"],CEIL:["conditionalAndExpression","*[||,conditionalAndExpression]"],FLOOR:["conditionalAndExpression","*[||,conditionalAndExpression]"],ROUND:["conditionalAndExpression","*[||,conditionalAndExpression]"],CONCAT:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRLEN:["conditionalAndExpression","*[||,conditionalAndExpression]"],UCASE:["conditionalAndExpression","*[||,conditionalAndExpression]"],LCASE:["conditionalAndExpression","*[||,conditionalAndExpression]"],ENCODE_FOR_URI:["conditionalAndExpression","*[||,conditionalAndExpression]"],CONTAINS:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRSTARTS:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRENDS:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRBEFORE:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRAFTER:["conditionalAndExpression","*[||,conditionalAndExpression]"],YEAR:["conditionalAndExpression","*[||,conditionalAndExpression]"],MONTH:["conditionalAndExpression","*[||,conditionalAndExpression]"],DAY:["conditionalAndExpression","*[||,conditionalAndExpression]"],HOURS:["conditionalAndExpression","*[||,conditionalAndExpression]"],MINUTES:["conditionalAndExpression","*[||,conditionalAndExpression]"],SECONDS:["conditionalAndExpression","*[||,conditionalAndExpression]"],TIMEZONE:["conditionalAndExpression","*[||,conditionalAndExpression]"],TZ:["conditionalAndExpression","*[||,conditionalAndExpression]"],NOW:["conditionalAndExpression","*[||,conditionalAndExpression]"],UUID:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRUUID:["conditionalAndExpression","*[||,conditionalAndExpression]"],MD5:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA1:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA256:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA384:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA512:["conditionalAndExpression","*[||,conditionalAndExpression]"],COALESCE:["conditionalAndExpression","*[||,conditionalAndExpression]"],IF:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRLANG:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRDT:["conditionalAndExpression","*[||,conditionalAndExpression]"],SAMETERM:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISIRI:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISURI:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISBLANK:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISLITERAL:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISNUMERIC:["conditionalAndExpression","*[||,conditionalAndExpression]"],TRUE:["conditionalAndExpression","*[||,conditionalAndExpression]"],FALSE:["conditionalAndExpression","*[||,conditionalAndExpression]"],COUNT:["conditionalAndExpression","*[||,conditionalAndExpression]"],SUM:["conditionalAndExpression","*[||,conditionalAndExpression]"],MIN:["conditionalAndExpression","*[||,conditionalAndExpression]"],MAX:["conditionalAndExpression","*[||,conditionalAndExpression]"],AVG:["conditionalAndExpression","*[||,conditionalAndExpression]"],SAMPLE:["conditionalAndExpression","*[||,conditionalAndExpression]"],GROUP_CONCAT:["conditionalAndExpression","*[||,conditionalAndExpression]"],SUBSTR:["conditionalAndExpression","*[||,conditionalAndExpression]"],REPLACE:["conditionalAndExpression","*[||,conditionalAndExpression]"],REGEX:["conditionalAndExpression","*[||,conditionalAndExpression]"],EXISTS:["conditionalAndExpression","*[||,conditionalAndExpression]"],NOT:["conditionalAndExpression","*[||,conditionalAndExpression]"],IRI_REF:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL1:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL2:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL_LONG1:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL_LONG2:["conditionalAndExpression","*[||,conditionalAndExpression]"],INTEGER:["conditionalAndExpression","*[||,conditionalAndExpression]"],DECIMAL:["conditionalAndExpression","*[||,conditionalAndExpression]"],DOUBLE:["conditionalAndExpression","*[||,conditionalAndExpression]"],INTEGER_POSITIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DECIMAL_POSITIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DOUBLE_POSITIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],INTEGER_NEGATIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DECIMAL_NEGATIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DOUBLE_NEGATIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],PNAME_LN:["conditionalAndExpression","*[||,conditionalAndExpression]"],PNAME_NS:["conditionalAndExpression","*[||,conditionalAndExpression]"]},constraint:{"(":["brackettedExpression"],STR:["builtInCall"],LANG:["builtInCall"],LANGMATCHES:["builtInCall"],DATATYPE:["builtInCall"],BOUND:["builtInCall"],IRI:["builtInCall"],URI:["builtInCall"],BNODE:["builtInCall"],RAND:["builtInCall"],ABS:["builtInCall"],CEIL:["builtInCall"],FLOOR:["builtInCall"],ROUND:["builtInCall"],CONCAT:["builtInCall"],STRLEN:["builtInCall"],UCASE:["builtInCall"],LCASE:["builtInCall"],ENCODE_FOR_URI:["builtInCall"],CONTAINS:["builtInCall"],STRSTARTS:["builtInCall"],STRENDS:["builtInCall"],STRBEFORE:["builtInCall"],STRAFTER:["builtInCall"],YEAR:["builtInCall"],MONTH:["builtInCall"],DAY:["builtInCall"],HOURS:["builtInCall"],MINUTES:["builtInCall"],SECONDS:["builtInCall"],TIMEZONE:["builtInCall"],TZ:["builtInCall"],NOW:["builtInCall"],UUID:["builtInCall"],STRUUID:["builtInCall"],MD5:["builtInCall"],SHA1:["builtInCall"],SHA256:["builtInCall"],SHA384:["builtInCall"],SHA512:["builtInCall"],COALESCE:["builtInCall"],IF:["builtInCall"],STRLANG:["builtInCall"],STRDT:["builtInCall"],SAMETERM:["builtInCall"],ISIRI:["builtInCall"],ISURI:["builtInCall"],ISBLANK:["builtInCall"],ISLITERAL:["builtInCall"],ISNUMERIC:["builtInCall"],SUBSTR:["builtInCall"],REPLACE:["builtInCall"],REGEX:["builtInCall"],EXISTS:["builtInCall"],NOT:["builtInCall"],IRI_REF:["functionCall"],PNAME_LN:["functionCall"],PNAME_NS:["functionCall"]},constructQuery:{CONSTRUCT:["CONSTRUCT","or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])"]},constructTemplate:{"{":["{","?constructTriples","}"]},constructTriples:{VAR1:["triplesSameSubject","?[.,?constructTriples]"],VAR2:["triplesSameSubject","?[.,?constructTriples]"],NIL:["triplesSameSubject","?[.,?constructTriples]"],"(":["triplesSameSubject","?[.,?constructTriples]"],"[":["triplesSameSubject","?[.,?constructTriples]"],IRI_REF:["triplesSameSubject","?[.,?constructTriples]"],TRUE:["triplesSameSubject","?[.,?constructTriples]"],FALSE:["triplesSameSubject","?[.,?constructTriples]"],BLANK_NODE_LABEL:["triplesSameSubject","?[.,?constructTriples]"],ANON:["triplesSameSubject","?[.,?constructTriples]"],PNAME_LN:["triplesSameSubject","?[.,?constructTriples]"],PNAME_NS:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL1:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL2:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL_LONG1:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL_LONG2:["triplesSameSubject","?[.,?constructTriples]"],INTEGER:["triplesSameSubject","?[.,?constructTriples]"],DECIMAL:["triplesSameSubject","?[.,?constructTriples]"],DOUBLE:["triplesSameSubject","?[.,?constructTriples]"],INTEGER_POSITIVE:["triplesSameSubject","?[.,?constructTriples]"],DECIMAL_POSITIVE:["triplesSameSubject","?[.,?constructTriples]"],DOUBLE_POSITIVE:["triplesSameSubject","?[.,?constructTriples]"],INTEGER_NEGATIVE:["triplesSameSubject","?[.,?constructTriples]"],DECIMAL_NEGATIVE:["triplesSameSubject","?[.,?constructTriples]"],DOUBLE_NEGATIVE:["triplesSameSubject","?[.,?constructTriples]"]},copy:{COPY:["COPY","?SILENT_4","graphOrDefault","TO","graphOrDefault"]},create:{CREATE:["CREATE","?SILENT_3","graphRef"]},dataBlock:{NIL:["or([inlineDataOneVar,inlineDataFull])"],"(":["or([inlineDataOneVar,inlineDataFull])"],VAR1:["or([inlineDataOneVar,inlineDataFull])"],VAR2:["or([inlineDataOneVar,inlineDataFull])"]},dataBlockValue:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],STRING_LITERAL1:["rdfLiteral"],STRING_LITERAL2:["rdfLiteral"],STRING_LITERAL_LONG1:["rdfLiteral"],STRING_LITERAL_LONG2:["rdfLiteral"],INTEGER:["numericLiteral"],DECIMAL:["numericLiteral"],DOUBLE:["numericLiteral"],INTEGER_POSITIVE:["numericLiteral"],DECIMAL_POSITIVE:["numericLiteral"],DOUBLE_POSITIVE:["numericLiteral"],INTEGER_NEGATIVE:["numericLiteral"],DECIMAL_NEGATIVE:["numericLiteral"],DOUBLE_NEGATIVE:["numericLiteral"],TRUE:["booleanLiteral"],FALSE:["booleanLiteral"],UNDEF:["UNDEF"]},datasetClause:{FROM:["FROM","or([defaultGraphClause,namedGraphClause])"]},defaultGraphClause:{IRI_REF:["sourceSelector"],PNAME_LN:["sourceSelector"],PNAME_NS:["sourceSelector"]},delete1:{DATA:["DATA","quadDataNoBnodes"],WHERE:["WHERE","quadPatternNoBnodes"],"{":["quadPatternNoBnodes","?insertClause","*usingClause","WHERE","groupGraphPattern"]},deleteClause:{DELETE:["DELETE","quadPattern"]},describeDatasetClause:{FROM:["FROM","or([defaultGraphClause,namedGraphClause])"]},describeQuery:{DESCRIBE:["DESCRIBE","or([+varOrIRIref,*])","*describeDatasetClause","?whereClause","solutionModifier"]},disallowBnodes:{"}":[],GRAPH:[],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:[]},disallowVars:{"}":[],GRAPH:[],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:[]},drop:{DROP:["DROP","?SILENT_2","graphRefAll"]},existsFunc:{EXISTS:["EXISTS","groupGraphPattern"]},expression:{"!":["conditionalOrExpression"],"+":["conditionalOrExpression"],"-":["conditionalOrExpression"],VAR1:["conditionalOrExpression"],VAR2:["conditionalOrExpression"],"(":["conditionalOrExpression"],STR:["conditionalOrExpression"],LANG:["conditionalOrExpression"],LANGMATCHES:["conditionalOrExpression"],DATATYPE:["conditionalOrExpression"],BOUND:["conditionalOrExpression"],IRI:["conditionalOrExpression"],URI:["conditionalOrExpression"],BNODE:["conditionalOrExpression"],RAND:["conditionalOrExpression"],ABS:["conditionalOrExpression"],CEIL:["conditionalOrExpression"],FLOOR:["conditionalOrExpression"],ROUND:["conditionalOrExpression"],CONCAT:["conditionalOrExpression"],STRLEN:["conditionalOrExpression"],UCASE:["conditionalOrExpression"],LCASE:["conditionalOrExpression"],ENCODE_FOR_URI:["conditionalOrExpression"],CONTAINS:["conditionalOrExpression"],STRSTARTS:["conditionalOrExpression"],STRENDS:["conditionalOrExpression"],STRBEFORE:["conditionalOrExpression"],STRAFTER:["conditionalOrExpression"],YEAR:["conditionalOrExpression"],MONTH:["conditionalOrExpression"],DAY:["conditionalOrExpression"],HOURS:["conditionalOrExpression"],MINUTES:["conditionalOrExpression"],SECONDS:["conditionalOrExpression"],TIMEZONE:["conditionalOrExpression"],TZ:["conditionalOrExpression"],NOW:["conditionalOrExpression"],UUID:["conditionalOrExpression"],STRUUID:["conditionalOrExpression"],MD5:["conditionalOrExpression"],SHA1:["conditionalOrExpression"],SHA256:["conditionalOrExpression"],SHA384:["conditionalOrExpression"],SHA512:["conditionalOrExpression"],COALESCE:["conditionalOrExpression"],IF:["conditionalOrExpression"],STRLANG:["conditionalOrExpression"],STRDT:["conditionalOrExpression"],SAMETERM:["conditionalOrExpression"],ISIRI:["conditionalOrExpression"],ISURI:["conditionalOrExpression"],ISBLANK:["conditionalOrExpression"],ISLITERAL:["conditionalOrExpression"],ISNUMERIC:["conditionalOrExpression"],TRUE:["conditionalOrExpression"],FALSE:["conditionalOrExpression"],COUNT:["conditionalOrExpression"],SUM:["conditionalOrExpression"],MIN:["conditionalOrExpression"],MAX:["conditionalOrExpression"],AVG:["conditionalOrExpression"],SAMPLE:["conditionalOrExpression"],GROUP_CONCAT:["conditionalOrExpression"],SUBSTR:["conditionalOrExpression"],REPLACE:["conditionalOrExpression"],REGEX:["conditionalOrExpression"],EXISTS:["conditionalOrExpression"],NOT:["conditionalOrExpression"],IRI_REF:["conditionalOrExpression"],STRING_LITERAL1:["conditionalOrExpression"],STRING_LITERAL2:["conditionalOrExpression"],STRING_LITERAL_LONG1:["conditionalOrExpression"],STRING_LITERAL_LONG2:["conditionalOrExpression"],INTEGER:["conditionalOrExpression"],DECIMAL:["conditionalOrExpression"],DOUBLE:["conditionalOrExpression"],INTEGER_POSITIVE:["conditionalOrExpression"],DECIMAL_POSITIVE:["conditionalOrExpression"],DOUBLE_POSITIVE:["conditionalOrExpression"],INTEGER_NEGATIVE:["conditionalOrExpression"],DECIMAL_NEGATIVE:["conditionalOrExpression"],DOUBLE_NEGATIVE:["conditionalOrExpression"],PNAME_LN:["conditionalOrExpression"],PNAME_NS:["conditionalOrExpression"]},expressionList:{NIL:["NIL"],"(":["(","expression","*[,,expression]",")"]},filter:{FILTER:["FILTER","constraint"]},functionCall:{IRI_REF:["iriRef","argList"],PNAME_LN:["iriRef","argList"],PNAME_NS:["iriRef","argList"]},graphGraphPattern:{GRAPH:["GRAPH","varOrIRIref","groupGraphPattern"]},graphNode:{VAR1:["varOrTerm"],VAR2:["varOrTerm"],NIL:["varOrTerm"],IRI_REF:["varOrTerm"],TRUE:["varOrTerm"],FALSE:["varOrTerm"],BLANK_NODE_LABEL:["varOrTerm"],ANON:["varOrTerm"],PNAME_LN:["varOrTerm"],PNAME_NS:["varOrTerm"],STRING_LITERAL1:["varOrTerm"],STRING_LITERAL2:["varOrTerm"],STRING_LITERAL_LONG1:["varOrTerm"],STRING_LITERAL_LONG2:["varOrTerm"],INTEGER:["varOrTerm"],DECIMAL:["varOrTerm"],DOUBLE:["varOrTerm"],INTEGER_POSITIVE:["varOrTerm"],DECIMAL_POSITIVE:["varOrTerm"],DOUBLE_POSITIVE:["varOrTerm"],INTEGER_NEGATIVE:["varOrTerm"],DECIMAL_NEGATIVE:["varOrTerm"],DOUBLE_NEGATIVE:["varOrTerm"],"(":["triplesNode"],"[":["triplesNode"]},graphNodePath:{VAR1:["varOrTerm"],VAR2:["varOrTerm"],NIL:["varOrTerm"],IRI_REF:["varOrTerm"],TRUE:["varOrTerm"],FALSE:["varOrTerm"],BLANK_NODE_LABEL:["varOrTerm"],ANON:["varOrTerm"],PNAME_LN:["varOrTerm"],PNAME_NS:["varOrTerm"],STRING_LITERAL1:["varOrTerm"],STRING_LITERAL2:["varOrTerm"],STRING_LITERAL_LONG1:["varOrTerm"],STRING_LITERAL_LONG2:["varOrTerm"],INTEGER:["varOrTerm"],DECIMAL:["varOrTerm"],DOUBLE:["varOrTerm"],INTEGER_POSITIVE:["varOrTerm"],DECIMAL_POSITIVE:["varOrTerm"],DOUBLE_POSITIVE:["varOrTerm"],INTEGER_NEGATIVE:["varOrTerm"],DECIMAL_NEGATIVE:["varOrTerm"],DOUBLE_NEGATIVE:["varOrTerm"],"(":["triplesNodePath"],"[":["triplesNodePath"]},graphOrDefault:{DEFAULT:["DEFAULT"],IRI_REF:["?GRAPH","iriRef"],PNAME_LN:["?GRAPH","iriRef"],PNAME_NS:["?GRAPH","iriRef"],GRAPH:["?GRAPH","iriRef"]},graphPatternNotTriples:{"{":["groupOrUnionGraphPattern"],OPTIONAL:["optionalGraphPattern"],MINUS:["minusGraphPattern"],GRAPH:["graphGraphPattern"],SERVICE:["serviceGraphPattern"],FILTER:["filter"],BIND:["bind"],VALUES:["inlineData"]},graphRef:{GRAPH:["GRAPH","iriRef"]},graphRefAll:{GRAPH:["graphRef"],DEFAULT:["DEFAULT"],NAMED:["NAMED"],ALL:["ALL"]},graphTerm:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],STRING_LITERAL1:["rdfLiteral"],STRING_LITERAL2:["rdfLiteral"],STRING_LITERAL_LONG1:["rdfLiteral"],STRING_LITERAL_LONG2:["rdfLiteral"],INTEGER:["numericLiteral"],DECIMAL:["numericLiteral"],DOUBLE:["numericLiteral"],INTEGER_POSITIVE:["numericLiteral"],DECIMAL_POSITIVE:["numericLiteral"],DOUBLE_POSITIVE:["numericLiteral"],INTEGER_NEGATIVE:["numericLiteral"],DECIMAL_NEGATIVE:["numericLiteral"],DOUBLE_NEGATIVE:["numericLiteral"],TRUE:["booleanLiteral"],FALSE:["booleanLiteral"],BLANK_NODE_LABEL:["blankNode"],ANON:["blankNode"],NIL:["NIL"]},groupClause:{GROUP:["GROUP","BY","+groupCondition"]},groupCondition:{STR:["builtInCall"],LANG:["builtInCall"],LANGMATCHES:["builtInCall"],DATATYPE:["builtInCall"],BOUND:["builtInCall"],IRI:["builtInCall"],URI:["builtInCall"],BNODE:["builtInCall"],RAND:["builtInCall"],ABS:["builtInCall"],CEIL:["builtInCall"],FLOOR:["builtInCall"],ROUND:["builtInCall"],CONCAT:["builtInCall"],STRLEN:["builtInCall"],UCASE:["builtInCall"],LCASE:["builtInCall"],ENCODE_FOR_URI:["builtInCall"],CONTAINS:["builtInCall"],STRSTARTS:["builtInCall"],STRENDS:["builtInCall"],STRBEFORE:["builtInCall"],STRAFTER:["builtInCall"],YEAR:["builtInCall"],MONTH:["builtInCall"],DAY:["builtInCall"],HOURS:["builtInCall"],MINUTES:["builtInCall"],SECONDS:["builtInCall"],TIMEZONE:["builtInCall"],TZ:["builtInCall"],NOW:["builtInCall"],UUID:["builtInCall"],STRUUID:["builtInCall"],MD5:["builtInCall"],SHA1:["builtInCall"],SHA256:["builtInCall"],SHA384:["builtInCall"],SHA512:["builtInCall"],COALESCE:["builtInCall"],IF:["builtInCall"],STRLANG:["builtInCall"],STRDT:["builtInCall"],SAMETERM:["builtInCall"],ISIRI:["builtInCall"],ISURI:["builtInCall"],ISBLANK:["builtInCall"],ISLITERAL:["builtInCall"],ISNUMERIC:["builtInCall"],SUBSTR:["builtInCall"],REPLACE:["builtInCall"],REGEX:["builtInCall"],EXISTS:["builtInCall"],NOT:["builtInCall"],IRI_REF:["functionCall"],PNAME_LN:["functionCall"],PNAME_NS:["functionCall"],"(":["(","expression","?[AS,var]",")"],VAR1:["var"],VAR2:["var"]},groupGraphPattern:{"{":["{","or([subSelect,groupGraphPatternSub])","}"]},groupGraphPatternSub:{"{":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],OPTIONAL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],MINUS:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],GRAPH:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],SERVICE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],FILTER:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],BIND:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],VALUES:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],VAR1:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],VAR2:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],NIL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],"(":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],"[":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],IRI_REF:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],TRUE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],FALSE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],BLANK_NODE_LABEL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],ANON:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],PNAME_LN:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],PNAME_NS:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL1:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL2:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL_LONG1:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL_LONG2:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],INTEGER:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DECIMAL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DOUBLE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],INTEGER_POSITIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DECIMAL_POSITIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DOUBLE_POSITIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],INTEGER_NEGATIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DECIMAL_NEGATIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DOUBLE_NEGATIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],"}":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"]},groupOrUnionGraphPattern:{"{":["groupGraphPattern","*[UNION,groupGraphPattern]"]},havingClause:{HAVING:["HAVING","+havingCondition"]},havingCondition:{"(":["constraint"],STR:["constraint"],LANG:["constraint"],LANGMATCHES:["constraint"],DATATYPE:["constraint"],BOUND:["constraint"],IRI:["constraint"],URI:["constraint"],BNODE:["constraint"],RAND:["constraint"],ABS:["constraint"],CEIL:["constraint"],FLOOR:["constraint"],ROUND:["constraint"],CONCAT:["constraint"],STRLEN:["constraint"],UCASE:["constraint"],LCASE:["constraint"],ENCODE_FOR_URI:["constraint"],CONTAINS:["constraint"],STRSTARTS:["constraint"],STRENDS:["constraint"],STRBEFORE:["constraint"],STRAFTER:["constraint"],YEAR:["constraint"],MONTH:["constraint"],DAY:["constraint"],HOURS:["constraint"],MINUTES:["constraint"],SECONDS:["constraint"],TIMEZONE:["constraint"],TZ:["constraint"],NOW:["constraint"],UUID:["constraint"],STRUUID:["constraint"],MD5:["constraint"],SHA1:["constraint"],SHA256:["constraint"],SHA384:["constraint"],SHA512:["constraint"],COALESCE:["constraint"],IF:["constraint"],STRLANG:["constraint"],STRDT:["constraint"],SAMETERM:["constraint"],ISIRI:["constraint"],ISURI:["constraint"],ISBLANK:["constraint"],ISLITERAL:["constraint"],ISNUMERIC:["constraint"],SUBSTR:["constraint"],REPLACE:["constraint"],REGEX:["constraint"],EXISTS:["constraint"],NOT:["constraint"],IRI_REF:["constraint"],PNAME_LN:["constraint"],PNAME_NS:["constraint"]},inlineData:{VALUES:["VALUES","dataBlock"]},inlineDataFull:{NIL:["or([NIL,[ (,*var,)]])","{","*or([[ (,*dataBlockValue,)],NIL])","}"],"(":["or([NIL,[ (,*var,)]])","{","*or([[ (,*dataBlockValue,)],NIL])","}"]},inlineDataOneVar:{VAR1:["var","{","*dataBlockValue","}"],VAR2:["var","{","*dataBlockValue","}"]},insert1:{DATA:["DATA","quadData"], -"{":["quadPattern","*usingClause","WHERE","groupGraphPattern"]},insertClause:{INSERT:["INSERT","quadPattern"]},integer:{INTEGER:["INTEGER"]},iriRef:{IRI_REF:["IRI_REF"],PNAME_LN:["prefixedName"],PNAME_NS:["prefixedName"]},iriRefOrFunction:{IRI_REF:["iriRef","?argList"],PNAME_LN:["iriRef","?argList"],PNAME_NS:["iriRef","?argList"]},limitClause:{LIMIT:["LIMIT","INTEGER"]},limitOffsetClauses:{LIMIT:["limitClause","?offsetClause"],OFFSET:["offsetClause","?limitClause"]},load:{LOAD:["LOAD","?SILENT_1","iriRef","?[INTO,graphRef]"]},minusGraphPattern:{MINUS:["MINUS","groupGraphPattern"]},modify:{WITH:["WITH","iriRef","or([[deleteClause,?insertClause],insertClause])","*usingClause","WHERE","groupGraphPattern"]},move:{MOVE:["MOVE","?SILENT_4","graphOrDefault","TO","graphOrDefault"]},multiplicativeExpression:{"!":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],"+":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],"-":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],VAR1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],VAR2:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],"(":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],LANG:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],LANGMATCHES:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DATATYPE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],BOUND:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],IRI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],URI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],BNODE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],RAND:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ABS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],CEIL:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],FLOOR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ROUND:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],CONCAT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRLEN:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],UCASE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],LCASE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ENCODE_FOR_URI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],CONTAINS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRSTARTS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRENDS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRBEFORE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRAFTER:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],YEAR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MONTH:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DAY:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],HOURS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MINUTES:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SECONDS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],TIMEZONE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],TZ:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],NOW:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],UUID:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRUUID:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MD5:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA256:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA384:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA512:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],COALESCE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],IF:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRLANG:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRDT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SAMETERM:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISIRI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISURI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISBLANK:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISLITERAL:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISNUMERIC:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],TRUE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],FALSE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],COUNT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SUM:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MIN:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MAX:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],AVG:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SAMPLE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],GROUP_CONCAT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SUBSTR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],REPLACE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],REGEX:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],EXISTS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],NOT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],IRI_REF:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL2:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL_LONG1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL_LONG2:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER_POSITIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_POSITIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_POSITIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER_NEGATIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_NEGATIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_NEGATIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],PNAME_LN:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],PNAME_NS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"]},namedGraphClause:{NAMED:["NAMED","sourceSelector"]},notExistsFunc:{NOT:["NOT","EXISTS","groupGraphPattern"]},numericExpression:{"!":["additiveExpression"],"+":["additiveExpression"],"-":["additiveExpression"],VAR1:["additiveExpression"],VAR2:["additiveExpression"],"(":["additiveExpression"],STR:["additiveExpression"],LANG:["additiveExpression"],LANGMATCHES:["additiveExpression"],DATATYPE:["additiveExpression"],BOUND:["additiveExpression"],IRI:["additiveExpression"],URI:["additiveExpression"],BNODE:["additiveExpression"],RAND:["additiveExpression"],ABS:["additiveExpression"],CEIL:["additiveExpression"],FLOOR:["additiveExpression"],ROUND:["additiveExpression"],CONCAT:["additiveExpression"],STRLEN:["additiveExpression"],UCASE:["additiveExpression"],LCASE:["additiveExpression"],ENCODE_FOR_URI:["additiveExpression"],CONTAINS:["additiveExpression"],STRSTARTS:["additiveExpression"],STRENDS:["additiveExpression"],STRBEFORE:["additiveExpression"],STRAFTER:["additiveExpression"],YEAR:["additiveExpression"],MONTH:["additiveExpression"],DAY:["additiveExpression"],HOURS:["additiveExpression"],MINUTES:["additiveExpression"],SECONDS:["additiveExpression"],TIMEZONE:["additiveExpression"],TZ:["additiveExpression"],NOW:["additiveExpression"],UUID:["additiveExpression"],STRUUID:["additiveExpression"],MD5:["additiveExpression"],SHA1:["additiveExpression"],SHA256:["additiveExpression"],SHA384:["additiveExpression"],SHA512:["additiveExpression"],COALESCE:["additiveExpression"],IF:["additiveExpression"],STRLANG:["additiveExpression"],STRDT:["additiveExpression"],SAMETERM:["additiveExpression"],ISIRI:["additiveExpression"],ISURI:["additiveExpression"],ISBLANK:["additiveExpression"],ISLITERAL:["additiveExpression"],ISNUMERIC:["additiveExpression"],TRUE:["additiveExpression"],FALSE:["additiveExpression"],COUNT:["additiveExpression"],SUM:["additiveExpression"],MIN:["additiveExpression"],MAX:["additiveExpression"],AVG:["additiveExpression"],SAMPLE:["additiveExpression"],GROUP_CONCAT:["additiveExpression"],SUBSTR:["additiveExpression"],REPLACE:["additiveExpression"],REGEX:["additiveExpression"],EXISTS:["additiveExpression"],NOT:["additiveExpression"],IRI_REF:["additiveExpression"],STRING_LITERAL1:["additiveExpression"],STRING_LITERAL2:["additiveExpression"],STRING_LITERAL_LONG1:["additiveExpression"],STRING_LITERAL_LONG2:["additiveExpression"],INTEGER:["additiveExpression"],DECIMAL:["additiveExpression"],DOUBLE:["additiveExpression"],INTEGER_POSITIVE:["additiveExpression"],DECIMAL_POSITIVE:["additiveExpression"],DOUBLE_POSITIVE:["additiveExpression"],INTEGER_NEGATIVE:["additiveExpression"],DECIMAL_NEGATIVE:["additiveExpression"],DOUBLE_NEGATIVE:["additiveExpression"],PNAME_LN:["additiveExpression"],PNAME_NS:["additiveExpression"]},numericLiteral:{INTEGER:["numericLiteralUnsigned"],DECIMAL:["numericLiteralUnsigned"],DOUBLE:["numericLiteralUnsigned"],INTEGER_POSITIVE:["numericLiteralPositive"],DECIMAL_POSITIVE:["numericLiteralPositive"],DOUBLE_POSITIVE:["numericLiteralPositive"],INTEGER_NEGATIVE:["numericLiteralNegative"],DECIMAL_NEGATIVE:["numericLiteralNegative"],DOUBLE_NEGATIVE:["numericLiteralNegative"]},numericLiteralNegative:{INTEGER_NEGATIVE:["INTEGER_NEGATIVE"],DECIMAL_NEGATIVE:["DECIMAL_NEGATIVE"],DOUBLE_NEGATIVE:["DOUBLE_NEGATIVE"]},numericLiteralPositive:{INTEGER_POSITIVE:["INTEGER_POSITIVE"],DECIMAL_POSITIVE:["DECIMAL_POSITIVE"],DOUBLE_POSITIVE:["DOUBLE_POSITIVE"]},numericLiteralUnsigned:{INTEGER:["INTEGER"],DECIMAL:["DECIMAL"],DOUBLE:["DOUBLE"]},object:{"(":["graphNode"],"[":["graphNode"],VAR1:["graphNode"],VAR2:["graphNode"],NIL:["graphNode"],IRI_REF:["graphNode"],TRUE:["graphNode"],FALSE:["graphNode"],BLANK_NODE_LABEL:["graphNode"],ANON:["graphNode"],PNAME_LN:["graphNode"],PNAME_NS:["graphNode"],STRING_LITERAL1:["graphNode"],STRING_LITERAL2:["graphNode"],STRING_LITERAL_LONG1:["graphNode"],STRING_LITERAL_LONG2:["graphNode"],INTEGER:["graphNode"],DECIMAL:["graphNode"],DOUBLE:["graphNode"],INTEGER_POSITIVE:["graphNode"],DECIMAL_POSITIVE:["graphNode"],DOUBLE_POSITIVE:["graphNode"],INTEGER_NEGATIVE:["graphNode"],DECIMAL_NEGATIVE:["graphNode"],DOUBLE_NEGATIVE:["graphNode"]},objectList:{"(":["object","*[,,object]"],"[":["object","*[,,object]"],VAR1:["object","*[,,object]"],VAR2:["object","*[,,object]"],NIL:["object","*[,,object]"],IRI_REF:["object","*[,,object]"],TRUE:["object","*[,,object]"],FALSE:["object","*[,,object]"],BLANK_NODE_LABEL:["object","*[,,object]"],ANON:["object","*[,,object]"],PNAME_LN:["object","*[,,object]"],PNAME_NS:["object","*[,,object]"],STRING_LITERAL1:["object","*[,,object]"],STRING_LITERAL2:["object","*[,,object]"],STRING_LITERAL_LONG1:["object","*[,,object]"],STRING_LITERAL_LONG2:["object","*[,,object]"],INTEGER:["object","*[,,object]"],DECIMAL:["object","*[,,object]"],DOUBLE:["object","*[,,object]"],INTEGER_POSITIVE:["object","*[,,object]"],DECIMAL_POSITIVE:["object","*[,,object]"],DOUBLE_POSITIVE:["object","*[,,object]"],INTEGER_NEGATIVE:["object","*[,,object]"],DECIMAL_NEGATIVE:["object","*[,,object]"],DOUBLE_NEGATIVE:["object","*[,,object]"]},objectListPath:{"(":["objectPath","*[,,objectPath]"],"[":["objectPath","*[,,objectPath]"],VAR1:["objectPath","*[,,objectPath]"],VAR2:["objectPath","*[,,objectPath]"],NIL:["objectPath","*[,,objectPath]"],IRI_REF:["objectPath","*[,,objectPath]"],TRUE:["objectPath","*[,,objectPath]"],FALSE:["objectPath","*[,,objectPath]"],BLANK_NODE_LABEL:["objectPath","*[,,objectPath]"],ANON:["objectPath","*[,,objectPath]"],PNAME_LN:["objectPath","*[,,objectPath]"],PNAME_NS:["objectPath","*[,,objectPath]"],STRING_LITERAL1:["objectPath","*[,,objectPath]"],STRING_LITERAL2:["objectPath","*[,,objectPath]"],STRING_LITERAL_LONG1:["objectPath","*[,,objectPath]"],STRING_LITERAL_LONG2:["objectPath","*[,,objectPath]"],INTEGER:["objectPath","*[,,objectPath]"],DECIMAL:["objectPath","*[,,objectPath]"],DOUBLE:["objectPath","*[,,objectPath]"],INTEGER_POSITIVE:["objectPath","*[,,objectPath]"],DECIMAL_POSITIVE:["objectPath","*[,,objectPath]"],DOUBLE_POSITIVE:["objectPath","*[,,objectPath]"],INTEGER_NEGATIVE:["objectPath","*[,,objectPath]"],DECIMAL_NEGATIVE:["objectPath","*[,,objectPath]"],DOUBLE_NEGATIVE:["objectPath","*[,,objectPath]"]},objectPath:{"(":["graphNodePath"],"[":["graphNodePath"],VAR1:["graphNodePath"],VAR2:["graphNodePath"],NIL:["graphNodePath"],IRI_REF:["graphNodePath"],TRUE:["graphNodePath"],FALSE:["graphNodePath"],BLANK_NODE_LABEL:["graphNodePath"],ANON:["graphNodePath"],PNAME_LN:["graphNodePath"],PNAME_NS:["graphNodePath"],STRING_LITERAL1:["graphNodePath"],STRING_LITERAL2:["graphNodePath"],STRING_LITERAL_LONG1:["graphNodePath"],STRING_LITERAL_LONG2:["graphNodePath"],INTEGER:["graphNodePath"],DECIMAL:["graphNodePath"],DOUBLE:["graphNodePath"],INTEGER_POSITIVE:["graphNodePath"],DECIMAL_POSITIVE:["graphNodePath"],DOUBLE_POSITIVE:["graphNodePath"],INTEGER_NEGATIVE:["graphNodePath"],DECIMAL_NEGATIVE:["graphNodePath"],DOUBLE_NEGATIVE:["graphNodePath"]},offsetClause:{OFFSET:["OFFSET","INTEGER"]},optionalGraphPattern:{OPTIONAL:["OPTIONAL","groupGraphPattern"]},"or([*,expression])":{"*":["*"],"!":["expression"],"+":["expression"],"-":["expression"],VAR1:["expression"],VAR2:["expression"],"(":["expression"],STR:["expression"],LANG:["expression"],LANGMATCHES:["expression"],DATATYPE:["expression"],BOUND:["expression"],IRI:["expression"],URI:["expression"],BNODE:["expression"],RAND:["expression"],ABS:["expression"],CEIL:["expression"],FLOOR:["expression"],ROUND:["expression"],CONCAT:["expression"],STRLEN:["expression"],UCASE:["expression"],LCASE:["expression"],ENCODE_FOR_URI:["expression"],CONTAINS:["expression"],STRSTARTS:["expression"],STRENDS:["expression"],STRBEFORE:["expression"],STRAFTER:["expression"],YEAR:["expression"],MONTH:["expression"],DAY:["expression"],HOURS:["expression"],MINUTES:["expression"],SECONDS:["expression"],TIMEZONE:["expression"],TZ:["expression"],NOW:["expression"],UUID:["expression"],STRUUID:["expression"],MD5:["expression"],SHA1:["expression"],SHA256:["expression"],SHA384:["expression"],SHA512:["expression"],COALESCE:["expression"],IF:["expression"],STRLANG:["expression"],STRDT:["expression"],SAMETERM:["expression"],ISIRI:["expression"],ISURI:["expression"],ISBLANK:["expression"],ISLITERAL:["expression"],ISNUMERIC:["expression"],TRUE:["expression"],FALSE:["expression"],COUNT:["expression"],SUM:["expression"],MIN:["expression"],MAX:["expression"],AVG:["expression"],SAMPLE:["expression"],GROUP_CONCAT:["expression"],SUBSTR:["expression"],REPLACE:["expression"],REGEX:["expression"],EXISTS:["expression"],NOT:["expression"],IRI_REF:["expression"],STRING_LITERAL1:["expression"],STRING_LITERAL2:["expression"],STRING_LITERAL_LONG1:["expression"],STRING_LITERAL_LONG2:["expression"],INTEGER:["expression"],DECIMAL:["expression"],DOUBLE:["expression"],INTEGER_POSITIVE:["expression"],DECIMAL_POSITIVE:["expression"],DOUBLE_POSITIVE:["expression"],INTEGER_NEGATIVE:["expression"],DECIMAL_NEGATIVE:["expression"],DOUBLE_NEGATIVE:["expression"],PNAME_LN:["expression"],PNAME_NS:["expression"]},"or([+or([var,[ (,expression,AS,var,)]]),*])":{"(":["+or([var,[ (,expression,AS,var,)]])"],VAR1:["+or([var,[ (,expression,AS,var,)]])"],VAR2:["+or([var,[ (,expression,AS,var,)]])"],"*":["*"]},"or([+varOrIRIref,*])":{VAR1:["+varOrIRIref"],VAR2:["+varOrIRIref"],IRI_REF:["+varOrIRIref"],PNAME_LN:["+varOrIRIref"],PNAME_NS:["+varOrIRIref"],"*":["*"]},"or([ASC,DESC])":{ASC:["ASC"],DESC:["DESC"]},"or([DISTINCT,REDUCED])":{DISTINCT:["DISTINCT"],REDUCED:["REDUCED"]},"or([LANGTAG,[^^,iriRef]])":{LANGTAG:["LANGTAG"],"^^":["[^^,iriRef]"]},"or([NIL,[ (,*var,)]])":{NIL:["NIL"],"(":["[ (,*var,)]"]},"or([[ (,*dataBlockValue,)],NIL])":{"(":["[ (,*dataBlockValue,)]"],NIL:["NIL"]},"or([[ (,expression,)],NIL])":{"(":["[ (,expression,)]"],NIL:["NIL"]},"or([[*,unaryExpression],[/,unaryExpression]])":{"*":["[*,unaryExpression]"],"/":["[/,unaryExpression]"]},"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])":{"+":["[+,multiplicativeExpression]"],"-":["[-,multiplicativeExpression]"],INTEGER_POSITIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DECIMAL_POSITIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DOUBLE_POSITIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],INTEGER_NEGATIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DECIMAL_NEGATIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DOUBLE_NEGATIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"]},"or([[,,or([},[integer,}]])],}])":{",":["[,,or([},[integer,}]])]"],"}":["}"]},"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])":{"=":["[=,numericExpression]"],"!=":["[!=,numericExpression]"],"<":["[<,numericExpression]"],">":["[>,numericExpression]"],"<=":["[<=,numericExpression]"],">=":["[>=,numericExpression]"],IN:["[IN,expressionList]"],NOT:["[NOT,IN,expressionList]"]},"or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])":{"{":["[constructTemplate,*datasetClause,whereClause,solutionModifier]"],WHERE:["[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]"],FROM:["[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]"]},"or([[deleteClause,?insertClause],insertClause])":{DELETE:["[deleteClause,?insertClause]"],INSERT:["insertClause"]},"or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])":{INTEGER:["[integer,or([[,,or([},[integer,}]])],}])]"],",":["[,,integer,}]"]},"or([baseDecl,prefixDecl])":{BASE:["baseDecl"],PREFIX:["prefixDecl"]},"or([defaultGraphClause,namedGraphClause])":{IRI_REF:["defaultGraphClause"],PNAME_LN:["defaultGraphClause"],PNAME_NS:["defaultGraphClause"],NAMED:["namedGraphClause"]},"or([inlineDataOneVar,inlineDataFull])":{VAR1:["inlineDataOneVar"],VAR2:["inlineDataOneVar"],NIL:["inlineDataFull"],"(":["inlineDataFull"]},"or([iriRef,[NAMED,iriRef]])":{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],NAMED:["[NAMED,iriRef]"]},"or([iriRef,a])":{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],a:["a"]},"or([numericLiteralPositive,numericLiteralNegative])":{INTEGER_POSITIVE:["numericLiteralPositive"],DECIMAL_POSITIVE:["numericLiteralPositive"],DOUBLE_POSITIVE:["numericLiteralPositive"],INTEGER_NEGATIVE:["numericLiteralNegative"],DECIMAL_NEGATIVE:["numericLiteralNegative"],DOUBLE_NEGATIVE:["numericLiteralNegative"]},"or([queryAll,updateAll])":{CONSTRUCT:["queryAll"],DESCRIBE:["queryAll"],ASK:["queryAll"],SELECT:["queryAll"],INSERT:["updateAll"],DELETE:["updateAll"],LOAD:["updateAll"],CLEAR:["updateAll"],DROP:["updateAll"],ADD:["updateAll"],MOVE:["updateAll"],COPY:["updateAll"],CREATE:["updateAll"],WITH:["updateAll"],$:["updateAll"]},"or([selectQuery,constructQuery,describeQuery,askQuery])":{SELECT:["selectQuery"],CONSTRUCT:["constructQuery"],DESCRIBE:["describeQuery"],ASK:["askQuery"]},"or([subSelect,groupGraphPatternSub])":{SELECT:["subSelect"],"{":["groupGraphPatternSub"],OPTIONAL:["groupGraphPatternSub"],MINUS:["groupGraphPatternSub"],GRAPH:["groupGraphPatternSub"],SERVICE:["groupGraphPatternSub"],FILTER:["groupGraphPatternSub"],BIND:["groupGraphPatternSub"],VALUES:["groupGraphPatternSub"],VAR1:["groupGraphPatternSub"],VAR2:["groupGraphPatternSub"],NIL:["groupGraphPatternSub"],"(":["groupGraphPatternSub"],"[":["groupGraphPatternSub"],IRI_REF:["groupGraphPatternSub"],TRUE:["groupGraphPatternSub"],FALSE:["groupGraphPatternSub"],BLANK_NODE_LABEL:["groupGraphPatternSub"],ANON:["groupGraphPatternSub"],PNAME_LN:["groupGraphPatternSub"],PNAME_NS:["groupGraphPatternSub"],STRING_LITERAL1:["groupGraphPatternSub"],STRING_LITERAL2:["groupGraphPatternSub"],STRING_LITERAL_LONG1:["groupGraphPatternSub"],STRING_LITERAL_LONG2:["groupGraphPatternSub"],INTEGER:["groupGraphPatternSub"],DECIMAL:["groupGraphPatternSub"],DOUBLE:["groupGraphPatternSub"],INTEGER_POSITIVE:["groupGraphPatternSub"],DECIMAL_POSITIVE:["groupGraphPatternSub"],DOUBLE_POSITIVE:["groupGraphPatternSub"],INTEGER_NEGATIVE:["groupGraphPatternSub"],DECIMAL_NEGATIVE:["groupGraphPatternSub"],DOUBLE_NEGATIVE:["groupGraphPatternSub"],"}":["groupGraphPatternSub"]},"or([var,[ (,expression,AS,var,)]])":{VAR1:["var"],VAR2:["var"],"(":["[ (,expression,AS,var,)]"]},"or([verbPath,verbSimple])":{"^":["verbPath"],a:["verbPath"],"!":["verbPath"],"(":["verbPath"],IRI_REF:["verbPath"],PNAME_LN:["verbPath"],PNAME_NS:["verbPath"],VAR1:["verbSimple"],VAR2:["verbSimple"]},"or([},[integer,}]])":{"}":["}"],INTEGER:["[integer,}]"]},orderClause:{ORDER:["ORDER","BY","+orderCondition"]},orderCondition:{ASC:["or([ASC,DESC])","brackettedExpression"],DESC:["or([ASC,DESC])","brackettedExpression"],"(":["constraint"],STR:["constraint"],LANG:["constraint"],LANGMATCHES:["constraint"],DATATYPE:["constraint"],BOUND:["constraint"],IRI:["constraint"],URI:["constraint"],BNODE:["constraint"],RAND:["constraint"],ABS:["constraint"],CEIL:["constraint"],FLOOR:["constraint"],ROUND:["constraint"],CONCAT:["constraint"],STRLEN:["constraint"],UCASE:["constraint"],LCASE:["constraint"],ENCODE_FOR_URI:["constraint"],CONTAINS:["constraint"],STRSTARTS:["constraint"],STRENDS:["constraint"],STRBEFORE:["constraint"],STRAFTER:["constraint"],YEAR:["constraint"],MONTH:["constraint"],DAY:["constraint"],HOURS:["constraint"],MINUTES:["constraint"],SECONDS:["constraint"],TIMEZONE:["constraint"],TZ:["constraint"],NOW:["constraint"],UUID:["constraint"],STRUUID:["constraint"],MD5:["constraint"],SHA1:["constraint"],SHA256:["constraint"],SHA384:["constraint"],SHA512:["constraint"],COALESCE:["constraint"],IF:["constraint"],STRLANG:["constraint"],STRDT:["constraint"],SAMETERM:["constraint"],ISIRI:["constraint"],ISURI:["constraint"],ISBLANK:["constraint"],ISLITERAL:["constraint"],ISNUMERIC:["constraint"],SUBSTR:["constraint"],REPLACE:["constraint"],REGEX:["constraint"],EXISTS:["constraint"],NOT:["constraint"],IRI_REF:["constraint"],PNAME_LN:["constraint"],PNAME_NS:["constraint"],VAR1:["var"],VAR2:["var"]},path:{"^":["pathAlternative"],a:["pathAlternative"],"!":["pathAlternative"],"(":["pathAlternative"],IRI_REF:["pathAlternative"],PNAME_LN:["pathAlternative"],PNAME_NS:["pathAlternative"]},pathAlternative:{"^":["pathSequence","*[|,pathSequence]"],a:["pathSequence","*[|,pathSequence]"],"!":["pathSequence","*[|,pathSequence]"],"(":["pathSequence","*[|,pathSequence]"],IRI_REF:["pathSequence","*[|,pathSequence]"],PNAME_LN:["pathSequence","*[|,pathSequence]"],PNAME_NS:["pathSequence","*[|,pathSequence]"]},pathElt:{a:["pathPrimary","?pathMod"],"!":["pathPrimary","?pathMod"],"(":["pathPrimary","?pathMod"],IRI_REF:["pathPrimary","?pathMod"],PNAME_LN:["pathPrimary","?pathMod"],PNAME_NS:["pathPrimary","?pathMod"]},pathEltOrInverse:{a:["pathElt"],"!":["pathElt"],"(":["pathElt"],IRI_REF:["pathElt"],PNAME_LN:["pathElt"],PNAME_NS:["pathElt"],"^":["^","pathElt"]},pathMod:{"*":["*"],"?":["?"],"+":["+"],"{":["{","or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])"]},pathNegatedPropertySet:{a:["pathOneInPropertySet"],"^":["pathOneInPropertySet"],IRI_REF:["pathOneInPropertySet"],PNAME_LN:["pathOneInPropertySet"],PNAME_NS:["pathOneInPropertySet"],"(":["(","?[pathOneInPropertySet,*[|,pathOneInPropertySet]]",")"]},pathOneInPropertySet:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],a:["a"],"^":["^","or([iriRef,a])"]},pathPrimary:{IRI_REF:["storeProperty","iriRef"],PNAME_LN:["storeProperty","iriRef"],PNAME_NS:["storeProperty","iriRef"],a:["storeProperty","a"],"!":["!","pathNegatedPropertySet"],"(":["(","path",")"]},pathSequence:{"^":["pathEltOrInverse","*[/,pathEltOrInverse]"],a:["pathEltOrInverse","*[/,pathEltOrInverse]"],"!":["pathEltOrInverse","*[/,pathEltOrInverse]"],"(":["pathEltOrInverse","*[/,pathEltOrInverse]"],IRI_REF:["pathEltOrInverse","*[/,pathEltOrInverse]"],PNAME_LN:["pathEltOrInverse","*[/,pathEltOrInverse]"],PNAME_NS:["pathEltOrInverse","*[/,pathEltOrInverse]"]},prefixDecl:{PREFIX:["PREFIX","PNAME_NS","IRI_REF"]},prefixedName:{PNAME_LN:["PNAME_LN"],PNAME_NS:["PNAME_NS"]},primaryExpression:{"(":["brackettedExpression"],STR:["builtInCall"],LANG:["builtInCall"],LANGMATCHES:["builtInCall"],DATATYPE:["builtInCall"],BOUND:["builtInCall"],IRI:["builtInCall"],URI:["builtInCall"],BNODE:["builtInCall"],RAND:["builtInCall"],ABS:["builtInCall"],CEIL:["builtInCall"],FLOOR:["builtInCall"],ROUND:["builtInCall"],CONCAT:["builtInCall"],STRLEN:["builtInCall"],UCASE:["builtInCall"],LCASE:["builtInCall"],ENCODE_FOR_URI:["builtInCall"],CONTAINS:["builtInCall"],STRSTARTS:["builtInCall"],STRENDS:["builtInCall"],STRBEFORE:["builtInCall"],STRAFTER:["builtInCall"],YEAR:["builtInCall"],MONTH:["builtInCall"],DAY:["builtInCall"],HOURS:["builtInCall"],MINUTES:["builtInCall"],SECONDS:["builtInCall"],TIMEZONE:["builtInCall"],TZ:["builtInCall"],NOW:["builtInCall"],UUID:["builtInCall"],STRUUID:["builtInCall"],MD5:["builtInCall"],SHA1:["builtInCall"],SHA256:["builtInCall"],SHA384:["builtInCall"],SHA512:["builtInCall"],COALESCE:["builtInCall"],IF:["builtInCall"],STRLANG:["builtInCall"],STRDT:["builtInCall"],SAMETERM:["builtInCall"],ISIRI:["builtInCall"],ISURI:["builtInCall"],ISBLANK:["builtInCall"],ISLITERAL:["builtInCall"],ISNUMERIC:["builtInCall"],SUBSTR:["builtInCall"],REPLACE:["builtInCall"],REGEX:["builtInCall"],EXISTS:["builtInCall"],NOT:["builtInCall"],IRI_REF:["iriRefOrFunction"],PNAME_LN:["iriRefOrFunction"],PNAME_NS:["iriRefOrFunction"],STRING_LITERAL1:["rdfLiteral"],STRING_LITERAL2:["rdfLiteral"],STRING_LITERAL_LONG1:["rdfLiteral"],STRING_LITERAL_LONG2:["rdfLiteral"],INTEGER:["numericLiteral"],DECIMAL:["numericLiteral"],DOUBLE:["numericLiteral"],INTEGER_POSITIVE:["numericLiteral"],DECIMAL_POSITIVE:["numericLiteral"],DOUBLE_POSITIVE:["numericLiteral"],INTEGER_NEGATIVE:["numericLiteral"],DECIMAL_NEGATIVE:["numericLiteral"],DOUBLE_NEGATIVE:["numericLiteral"],TRUE:["booleanLiteral"],FALSE:["booleanLiteral"],VAR1:["var"],VAR2:["var"],COUNT:["aggregate"],SUM:["aggregate"],MIN:["aggregate"],MAX:["aggregate"],AVG:["aggregate"],SAMPLE:["aggregate"],GROUP_CONCAT:["aggregate"]},prologue:{BASE:["*or([baseDecl,prefixDecl])"],PREFIX:["*or([baseDecl,prefixDecl])"],$:["*or([baseDecl,prefixDecl])"],CONSTRUCT:["*or([baseDecl,prefixDecl])"],DESCRIBE:["*or([baseDecl,prefixDecl])"],ASK:["*or([baseDecl,prefixDecl])"],INSERT:["*or([baseDecl,prefixDecl])"],DELETE:["*or([baseDecl,prefixDecl])"],SELECT:["*or([baseDecl,prefixDecl])"],LOAD:["*or([baseDecl,prefixDecl])"],CLEAR:["*or([baseDecl,prefixDecl])"],DROP:["*or([baseDecl,prefixDecl])"],ADD:["*or([baseDecl,prefixDecl])"],MOVE:["*or([baseDecl,prefixDecl])"],COPY:["*or([baseDecl,prefixDecl])"],CREATE:["*or([baseDecl,prefixDecl])"],WITH:["*or([baseDecl,prefixDecl])"]},propertyList:{a:["propertyListNotEmpty"],VAR1:["propertyListNotEmpty"],VAR2:["propertyListNotEmpty"],IRI_REF:["propertyListNotEmpty"],PNAME_LN:["propertyListNotEmpty"],PNAME_NS:["propertyListNotEmpty"],".":[],"}":[],GRAPH:[]},propertyListNotEmpty:{a:["verb","objectList","*[;,?[verb,objectList]]"],VAR1:["verb","objectList","*[;,?[verb,objectList]]"],VAR2:["verb","objectList","*[;,?[verb,objectList]]"],IRI_REF:["verb","objectList","*[;,?[verb,objectList]]"],PNAME_LN:["verb","objectList","*[;,?[verb,objectList]]"],PNAME_NS:["verb","objectList","*[;,?[verb,objectList]]"]},propertyListPath:{a:["propertyListNotEmpty"],VAR1:["propertyListNotEmpty"],VAR2:["propertyListNotEmpty"],IRI_REF:["propertyListNotEmpty"],PNAME_LN:["propertyListNotEmpty"],PNAME_NS:["propertyListNotEmpty"],".":[],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},propertyListPathNotEmpty:{VAR1:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],VAR2:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],"^":["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],a:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],"!":["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],"(":["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],IRI_REF:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],PNAME_LN:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],PNAME_NS:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"]},quadData:{"{":["{","disallowVars","quads","allowVars","}"]},quadDataNoBnodes:{"{":["{","disallowBnodes","disallowVars","quads","allowVars","allowBnodes","}"]},quadPattern:{"{":["{","quads","}"]},quadPatternNoBnodes:{"{":["{","disallowBnodes","quads","allowBnodes","}"]},quads:{GRAPH:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],VAR1:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],VAR2:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],NIL:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],"(":["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],"[":["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],IRI_REF:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],TRUE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],FALSE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],BLANK_NODE_LABEL:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],ANON:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],PNAME_LN:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],PNAME_NS:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL1:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL2:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL_LONG1:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL_LONG2:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],INTEGER:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DECIMAL:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DOUBLE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],INTEGER_POSITIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DECIMAL_POSITIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"], -DOUBLE_POSITIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],INTEGER_NEGATIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DECIMAL_NEGATIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DOUBLE_NEGATIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],"}":["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"]},quadsNotTriples:{GRAPH:["GRAPH","varOrIRIref","{","?triplesTemplate","}"]},queryAll:{CONSTRUCT:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"],DESCRIBE:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"],ASK:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"],SELECT:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"]},rdfLiteral:{STRING_LITERAL1:["string","?or([LANGTAG,[^^,iriRef]])"],STRING_LITERAL2:["string","?or([LANGTAG,[^^,iriRef]])"],STRING_LITERAL_LONG1:["string","?or([LANGTAG,[^^,iriRef]])"],STRING_LITERAL_LONG2:["string","?or([LANGTAG,[^^,iriRef]])"]},regexExpression:{REGEX:["REGEX","(","expression",",","expression","?[,,expression]",")"]},relationalExpression:{"!":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"+":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"-":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],VAR1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],VAR2:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"(":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],LANG:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],LANGMATCHES:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DATATYPE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],BOUND:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IRI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],URI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],BNODE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],RAND:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ABS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],CEIL:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],FLOOR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ROUND:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],CONCAT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRLEN:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],UCASE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],LCASE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ENCODE_FOR_URI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],CONTAINS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRSTARTS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRENDS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRBEFORE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRAFTER:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],YEAR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MONTH:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DAY:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],HOURS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MINUTES:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SECONDS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],TIMEZONE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],TZ:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],NOW:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],UUID:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRUUID:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MD5:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA256:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA384:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA512:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],COALESCE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IF:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRLANG:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRDT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SAMETERM:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISIRI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISURI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISBLANK:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISLITERAL:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISNUMERIC:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],TRUE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],FALSE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],COUNT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SUM:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MIN:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MAX:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],AVG:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SAMPLE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],GROUP_CONCAT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SUBSTR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],REPLACE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],REGEX:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],EXISTS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],NOT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IRI_REF:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL2:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL_LONG1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL_LONG2:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],INTEGER:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DECIMAL:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DOUBLE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],INTEGER_POSITIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DECIMAL_POSITIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DOUBLE_POSITIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],INTEGER_NEGATIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DECIMAL_NEGATIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DOUBLE_NEGATIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],PNAME_LN:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],PNAME_NS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"]},selectClause:{SELECT:["SELECT","?or([DISTINCT,REDUCED])","or([+or([var,[ (,expression,AS,var,)]]),*])"]},selectQuery:{SELECT:["selectClause","*datasetClause","whereClause","solutionModifier"]},serviceGraphPattern:{SERVICE:["SERVICE","?SILENT","varOrIRIref","groupGraphPattern"]},solutionModifier:{LIMIT:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],OFFSET:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],ORDER:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],HAVING:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],GROUP:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],VALUES:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],$:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],"}":["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"]},sourceSelector:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"]},sparql11:{$:["prologue","or([queryAll,updateAll])","$"],CONSTRUCT:["prologue","or([queryAll,updateAll])","$"],DESCRIBE:["prologue","or([queryAll,updateAll])","$"],ASK:["prologue","or([queryAll,updateAll])","$"],INSERT:["prologue","or([queryAll,updateAll])","$"],DELETE:["prologue","or([queryAll,updateAll])","$"],SELECT:["prologue","or([queryAll,updateAll])","$"],LOAD:["prologue","or([queryAll,updateAll])","$"],CLEAR:["prologue","or([queryAll,updateAll])","$"],DROP:["prologue","or([queryAll,updateAll])","$"],ADD:["prologue","or([queryAll,updateAll])","$"],MOVE:["prologue","or([queryAll,updateAll])","$"],COPY:["prologue","or([queryAll,updateAll])","$"],CREATE:["prologue","or([queryAll,updateAll])","$"],WITH:["prologue","or([queryAll,updateAll])","$"],BASE:["prologue","or([queryAll,updateAll])","$"],PREFIX:["prologue","or([queryAll,updateAll])","$"]},storeProperty:{VAR1:[],VAR2:[],IRI_REF:[],PNAME_LN:[],PNAME_NS:[],a:[]},strReplaceExpression:{REPLACE:["REPLACE","(","expression",",","expression",",","expression","?[,,expression]",")"]},string:{STRING_LITERAL1:["STRING_LITERAL1"],STRING_LITERAL2:["STRING_LITERAL2"],STRING_LITERAL_LONG1:["STRING_LITERAL_LONG1"],STRING_LITERAL_LONG2:["STRING_LITERAL_LONG2"]},subSelect:{SELECT:["selectClause","whereClause","solutionModifier","valuesClause"]},substringExpression:{SUBSTR:["SUBSTR","(","expression",",","expression","?[,,expression]",")"]},triplesBlock:{VAR1:["triplesSameSubjectPath","?[.,?triplesBlock]"],VAR2:["triplesSameSubjectPath","?[.,?triplesBlock]"],NIL:["triplesSameSubjectPath","?[.,?triplesBlock]"],"(":["triplesSameSubjectPath","?[.,?triplesBlock]"],"[":["triplesSameSubjectPath","?[.,?triplesBlock]"],IRI_REF:["triplesSameSubjectPath","?[.,?triplesBlock]"],TRUE:["triplesSameSubjectPath","?[.,?triplesBlock]"],FALSE:["triplesSameSubjectPath","?[.,?triplesBlock]"],BLANK_NODE_LABEL:["triplesSameSubjectPath","?[.,?triplesBlock]"],ANON:["triplesSameSubjectPath","?[.,?triplesBlock]"],PNAME_LN:["triplesSameSubjectPath","?[.,?triplesBlock]"],PNAME_NS:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL1:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL2:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL_LONG1:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL_LONG2:["triplesSameSubjectPath","?[.,?triplesBlock]"],INTEGER:["triplesSameSubjectPath","?[.,?triplesBlock]"],DECIMAL:["triplesSameSubjectPath","?[.,?triplesBlock]"],DOUBLE:["triplesSameSubjectPath","?[.,?triplesBlock]"],INTEGER_POSITIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DECIMAL_POSITIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DOUBLE_POSITIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],INTEGER_NEGATIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DECIMAL_NEGATIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DOUBLE_NEGATIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"]},triplesNode:{"(":["collection"],"[":["blankNodePropertyList"]},triplesNodePath:{"(":["collectionPath"],"[":["blankNodePropertyListPath"]},triplesSameSubject:{VAR1:["varOrTerm","propertyListNotEmpty"],VAR2:["varOrTerm","propertyListNotEmpty"],NIL:["varOrTerm","propertyListNotEmpty"],IRI_REF:["varOrTerm","propertyListNotEmpty"],TRUE:["varOrTerm","propertyListNotEmpty"],FALSE:["varOrTerm","propertyListNotEmpty"],BLANK_NODE_LABEL:["varOrTerm","propertyListNotEmpty"],ANON:["varOrTerm","propertyListNotEmpty"],PNAME_LN:["varOrTerm","propertyListNotEmpty"],PNAME_NS:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL1:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL2:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL_LONG1:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL_LONG2:["varOrTerm","propertyListNotEmpty"],INTEGER:["varOrTerm","propertyListNotEmpty"],DECIMAL:["varOrTerm","propertyListNotEmpty"],DOUBLE:["varOrTerm","propertyListNotEmpty"],INTEGER_POSITIVE:["varOrTerm","propertyListNotEmpty"],DECIMAL_POSITIVE:["varOrTerm","propertyListNotEmpty"],DOUBLE_POSITIVE:["varOrTerm","propertyListNotEmpty"],INTEGER_NEGATIVE:["varOrTerm","propertyListNotEmpty"],DECIMAL_NEGATIVE:["varOrTerm","propertyListNotEmpty"],DOUBLE_NEGATIVE:["varOrTerm","propertyListNotEmpty"],"(":["triplesNode","propertyList"],"[":["triplesNode","propertyList"]},triplesSameSubjectPath:{VAR1:["varOrTerm","propertyListPathNotEmpty"],VAR2:["varOrTerm","propertyListPathNotEmpty"],NIL:["varOrTerm","propertyListPathNotEmpty"],IRI_REF:["varOrTerm","propertyListPathNotEmpty"],TRUE:["varOrTerm","propertyListPathNotEmpty"],FALSE:["varOrTerm","propertyListPathNotEmpty"],BLANK_NODE_LABEL:["varOrTerm","propertyListPathNotEmpty"],ANON:["varOrTerm","propertyListPathNotEmpty"],PNAME_LN:["varOrTerm","propertyListPathNotEmpty"],PNAME_NS:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL1:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL2:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL_LONG1:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL_LONG2:["varOrTerm","propertyListPathNotEmpty"],INTEGER:["varOrTerm","propertyListPathNotEmpty"],DECIMAL:["varOrTerm","propertyListPathNotEmpty"],DOUBLE:["varOrTerm","propertyListPathNotEmpty"],INTEGER_POSITIVE:["varOrTerm","propertyListPathNotEmpty"],DECIMAL_POSITIVE:["varOrTerm","propertyListPathNotEmpty"],DOUBLE_POSITIVE:["varOrTerm","propertyListPathNotEmpty"],INTEGER_NEGATIVE:["varOrTerm","propertyListPathNotEmpty"],DECIMAL_NEGATIVE:["varOrTerm","propertyListPathNotEmpty"],DOUBLE_NEGATIVE:["varOrTerm","propertyListPathNotEmpty"],"(":["triplesNodePath","propertyListPath"],"[":["triplesNodePath","propertyListPath"]},triplesTemplate:{VAR1:["triplesSameSubject","?[.,?triplesTemplate]"],VAR2:["triplesSameSubject","?[.,?triplesTemplate]"],NIL:["triplesSameSubject","?[.,?triplesTemplate]"],"(":["triplesSameSubject","?[.,?triplesTemplate]"],"[":["triplesSameSubject","?[.,?triplesTemplate]"],IRI_REF:["triplesSameSubject","?[.,?triplesTemplate]"],TRUE:["triplesSameSubject","?[.,?triplesTemplate]"],FALSE:["triplesSameSubject","?[.,?triplesTemplate]"],BLANK_NODE_LABEL:["triplesSameSubject","?[.,?triplesTemplate]"],ANON:["triplesSameSubject","?[.,?triplesTemplate]"],PNAME_LN:["triplesSameSubject","?[.,?triplesTemplate]"],PNAME_NS:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL1:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL2:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL_LONG1:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL_LONG2:["triplesSameSubject","?[.,?triplesTemplate]"],INTEGER:["triplesSameSubject","?[.,?triplesTemplate]"],DECIMAL:["triplesSameSubject","?[.,?triplesTemplate]"],DOUBLE:["triplesSameSubject","?[.,?triplesTemplate]"],INTEGER_POSITIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DECIMAL_POSITIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DOUBLE_POSITIVE:["triplesSameSubject","?[.,?triplesTemplate]"],INTEGER_NEGATIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DECIMAL_NEGATIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DOUBLE_NEGATIVE:["triplesSameSubject","?[.,?triplesTemplate]"]},unaryExpression:{"!":["!","primaryExpression"],"+":["+","primaryExpression"],"-":["-","primaryExpression"],VAR1:["primaryExpression"],VAR2:["primaryExpression"],"(":["primaryExpression"],STR:["primaryExpression"],LANG:["primaryExpression"],LANGMATCHES:["primaryExpression"],DATATYPE:["primaryExpression"],BOUND:["primaryExpression"],IRI:["primaryExpression"],URI:["primaryExpression"],BNODE:["primaryExpression"],RAND:["primaryExpression"],ABS:["primaryExpression"],CEIL:["primaryExpression"],FLOOR:["primaryExpression"],ROUND:["primaryExpression"],CONCAT:["primaryExpression"],STRLEN:["primaryExpression"],UCASE:["primaryExpression"],LCASE:["primaryExpression"],ENCODE_FOR_URI:["primaryExpression"],CONTAINS:["primaryExpression"],STRSTARTS:["primaryExpression"],STRENDS:["primaryExpression"],STRBEFORE:["primaryExpression"],STRAFTER:["primaryExpression"],YEAR:["primaryExpression"],MONTH:["primaryExpression"],DAY:["primaryExpression"],HOURS:["primaryExpression"],MINUTES:["primaryExpression"],SECONDS:["primaryExpression"],TIMEZONE:["primaryExpression"],TZ:["primaryExpression"],NOW:["primaryExpression"],UUID:["primaryExpression"],STRUUID:["primaryExpression"],MD5:["primaryExpression"],SHA1:["primaryExpression"],SHA256:["primaryExpression"],SHA384:["primaryExpression"],SHA512:["primaryExpression"],COALESCE:["primaryExpression"],IF:["primaryExpression"],STRLANG:["primaryExpression"],STRDT:["primaryExpression"],SAMETERM:["primaryExpression"],ISIRI:["primaryExpression"],ISURI:["primaryExpression"],ISBLANK:["primaryExpression"],ISLITERAL:["primaryExpression"],ISNUMERIC:["primaryExpression"],TRUE:["primaryExpression"],FALSE:["primaryExpression"],COUNT:["primaryExpression"],SUM:["primaryExpression"],MIN:["primaryExpression"],MAX:["primaryExpression"],AVG:["primaryExpression"],SAMPLE:["primaryExpression"],GROUP_CONCAT:["primaryExpression"],SUBSTR:["primaryExpression"],REPLACE:["primaryExpression"],REGEX:["primaryExpression"],EXISTS:["primaryExpression"],NOT:["primaryExpression"],IRI_REF:["primaryExpression"],STRING_LITERAL1:["primaryExpression"],STRING_LITERAL2:["primaryExpression"],STRING_LITERAL_LONG1:["primaryExpression"],STRING_LITERAL_LONG2:["primaryExpression"],INTEGER:["primaryExpression"],DECIMAL:["primaryExpression"],DOUBLE:["primaryExpression"],INTEGER_POSITIVE:["primaryExpression"],DECIMAL_POSITIVE:["primaryExpression"],DOUBLE_POSITIVE:["primaryExpression"],INTEGER_NEGATIVE:["primaryExpression"],DECIMAL_NEGATIVE:["primaryExpression"],DOUBLE_NEGATIVE:["primaryExpression"],PNAME_LN:["primaryExpression"],PNAME_NS:["primaryExpression"]},update:{INSERT:["prologue","?[update1,?[;,update]]"],DELETE:["prologue","?[update1,?[;,update]]"],LOAD:["prologue","?[update1,?[;,update]]"],CLEAR:["prologue","?[update1,?[;,update]]"],DROP:["prologue","?[update1,?[;,update]]"],ADD:["prologue","?[update1,?[;,update]]"],MOVE:["prologue","?[update1,?[;,update]]"],COPY:["prologue","?[update1,?[;,update]]"],CREATE:["prologue","?[update1,?[;,update]]"],WITH:["prologue","?[update1,?[;,update]]"],BASE:["prologue","?[update1,?[;,update]]"],PREFIX:["prologue","?[update1,?[;,update]]"],$:["prologue","?[update1,?[;,update]]"]},update1:{LOAD:["load"],CLEAR:["clear"],DROP:["drop"],ADD:["add"],MOVE:["move"],COPY:["copy"],CREATE:["create"],INSERT:["INSERT","insert1"],DELETE:["DELETE","delete1"],WITH:["modify"]},updateAll:{INSERT:["?[update1,?[;,update]]"],DELETE:["?[update1,?[;,update]]"],LOAD:["?[update1,?[;,update]]"],CLEAR:["?[update1,?[;,update]]"],DROP:["?[update1,?[;,update]]"],ADD:["?[update1,?[;,update]]"],MOVE:["?[update1,?[;,update]]"],COPY:["?[update1,?[;,update]]"],CREATE:["?[update1,?[;,update]]"],WITH:["?[update1,?[;,update]]"],$:["?[update1,?[;,update]]"]},usingClause:{USING:["USING","or([iriRef,[NAMED,iriRef]])"]},valueLogical:{"!":["relationalExpression"],"+":["relationalExpression"],"-":["relationalExpression"],VAR1:["relationalExpression"],VAR2:["relationalExpression"],"(":["relationalExpression"],STR:["relationalExpression"],LANG:["relationalExpression"],LANGMATCHES:["relationalExpression"],DATATYPE:["relationalExpression"],BOUND:["relationalExpression"],IRI:["relationalExpression"],URI:["relationalExpression"],BNODE:["relationalExpression"],RAND:["relationalExpression"],ABS:["relationalExpression"],CEIL:["relationalExpression"],FLOOR:["relationalExpression"], -ROUND:["relationalExpression"],CONCAT:["relationalExpression"],STRLEN:["relationalExpression"],UCASE:["relationalExpression"],LCASE:["relationalExpression"],ENCODE_FOR_URI:["relationalExpression"],CONTAINS:["relationalExpression"],STRSTARTS:["relationalExpression"],STRENDS:["relationalExpression"],STRBEFORE:["relationalExpression"],STRAFTER:["relationalExpression"],YEAR:["relationalExpression"],MONTH:["relationalExpression"],DAY:["relationalExpression"],HOURS:["relationalExpression"],MINUTES:["relationalExpression"],SECONDS:["relationalExpression"],TIMEZONE:["relationalExpression"],TZ:["relationalExpression"],NOW:["relationalExpression"],UUID:["relationalExpression"],STRUUID:["relationalExpression"],MD5:["relationalExpression"],SHA1:["relationalExpression"],SHA256:["relationalExpression"],SHA384:["relationalExpression"],SHA512:["relationalExpression"],COALESCE:["relationalExpression"],IF:["relationalExpression"],STRLANG:["relationalExpression"],STRDT:["relationalExpression"],SAMETERM:["relationalExpression"],ISIRI:["relationalExpression"],ISURI:["relationalExpression"],ISBLANK:["relationalExpression"],ISLITERAL:["relationalExpression"],ISNUMERIC:["relationalExpression"],TRUE:["relationalExpression"],FALSE:["relationalExpression"],COUNT:["relationalExpression"],SUM:["relationalExpression"],MIN:["relationalExpression"],MAX:["relationalExpression"],AVG:["relationalExpression"],SAMPLE:["relationalExpression"],GROUP_CONCAT:["relationalExpression"],SUBSTR:["relationalExpression"],REPLACE:["relationalExpression"],REGEX:["relationalExpression"],EXISTS:["relationalExpression"],NOT:["relationalExpression"],IRI_REF:["relationalExpression"],STRING_LITERAL1:["relationalExpression"],STRING_LITERAL2:["relationalExpression"],STRING_LITERAL_LONG1:["relationalExpression"],STRING_LITERAL_LONG2:["relationalExpression"],INTEGER:["relationalExpression"],DECIMAL:["relationalExpression"],DOUBLE:["relationalExpression"],INTEGER_POSITIVE:["relationalExpression"],DECIMAL_POSITIVE:["relationalExpression"],DOUBLE_POSITIVE:["relationalExpression"],INTEGER_NEGATIVE:["relationalExpression"],DECIMAL_NEGATIVE:["relationalExpression"],DOUBLE_NEGATIVE:["relationalExpression"],PNAME_LN:["relationalExpression"],PNAME_NS:["relationalExpression"]},valuesClause:{VALUES:["VALUES","dataBlock"],$:[],"}":[]},"var":{VAR1:["VAR1"],VAR2:["VAR2"]},varOrIRIref:{VAR1:["var"],VAR2:["var"],IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"]},varOrTerm:{VAR1:["var"],VAR2:["var"],NIL:["graphTerm"],IRI_REF:["graphTerm"],TRUE:["graphTerm"],FALSE:["graphTerm"],BLANK_NODE_LABEL:["graphTerm"],ANON:["graphTerm"],PNAME_LN:["graphTerm"],PNAME_NS:["graphTerm"],STRING_LITERAL1:["graphTerm"],STRING_LITERAL2:["graphTerm"],STRING_LITERAL_LONG1:["graphTerm"],STRING_LITERAL_LONG2:["graphTerm"],INTEGER:["graphTerm"],DECIMAL:["graphTerm"],DOUBLE:["graphTerm"],INTEGER_POSITIVE:["graphTerm"],DECIMAL_POSITIVE:["graphTerm"],DOUBLE_POSITIVE:["graphTerm"],INTEGER_NEGATIVE:["graphTerm"],DECIMAL_NEGATIVE:["graphTerm"],DOUBLE_NEGATIVE:["graphTerm"]},verb:{VAR1:["storeProperty","varOrIRIref"],VAR2:["storeProperty","varOrIRIref"],IRI_REF:["storeProperty","varOrIRIref"],PNAME_LN:["storeProperty","varOrIRIref"],PNAME_NS:["storeProperty","varOrIRIref"],a:["storeProperty","a"]},verbPath:{"^":["path"],a:["path"],"!":["path"],"(":["path"],IRI_REF:["path"],PNAME_LN:["path"],PNAME_NS:["path"]},verbSimple:{VAR1:["var"],VAR2:["var"]},whereClause:{"{":["?WHERE","groupGraphPattern"],WHERE:["?WHERE","groupGraphPattern"]}},keywords:/^(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,punct:/^(\*|a|\.|\{|\}|,|\(|\)|;|\[|\]|\|\||&&|=|!=|!|<=|>=|<|>|\+|-|\/|\^\^|\?|\||\^)/,startSymbol:"sparql11",acceptEmpty:!0}},{}],4:[function(e,i,r){"use strict";var n=function(){try{return e("codemirror")}catch(i){return window.CodeMirror}}();n.defineMode("sparql11",function(i,r){function n(e){var i=[],r=a[e];if(void 0!=r)for(var n in r)i.push(n.toString());else i.push(e);return i}function o(e,i){function r(){var r=null;if(i.inLiteral){var n=!1;r=e.match(j[i.inLiteral].contents.regex,!0,!1);if(r&&0==r[0].length){r=e.match(j[i.inLiteral].closing.regex,!0,!1);n=!0}if(r&&r[0].length>0){var o={quotePos:n?"end":"content",cat:F[i.inLiteral].CAT,style:j[i.inLiteral].complete.style,text:r[0],start:e.start};n&&(i.inLiteral=!1);return o}}for(var t in j){r=e.match(j[t].quotes.regex,!0,!1);if(r){var a;if(i.inLiteral){i.inLiteral=!1;a="end"}else{i.inLiteral=t;a="start"}return{cat:F[t].CAT,style:j[t].quotes.style,text:r[0],quotePos:a,start:e.start}}}for(var p=0;p",style:"error",text:r[0],start:e.start}}function o(){var r=e.column();i.errorStartPos=r;i.errorEndPos=r+E.text.length}function t(e){null==i.queryType&&("SELECT"==e||"CONSTRUCT"==e||"ASK"==e||"DESCRIBE"==e||"INSERT"==e||"DELETE"==e||"LOAD"==e||"CLEAR"==e||"CREATE"==e||"DROP"==e||"COPY"==e||"MOVE"==e||"ADD"==e)&&(i.queryType=e)}function p(e){"disallowVars"==e?i.allowVars=!1:"allowVars"==e?i.allowVars=!0:"disallowBnodes"==e?i.allowBnodes=!1:"allowBnodes"==e?i.allowBnodes=!0:"storeProperty"==e&&(i.storeProperty=!0)}function l(e){return(i.allowVars||"var"!=e)&&(i.allowBnodes||"blankNode"!=e&&"blankNodePropertyList"!=e&&"blankNodePropertyListPath"!=e)}0==e.pos&&(i.possibleCurrent=i.possibleNext);var E=r();if(""==E.cat){if(1==i.OK){i.OK=!1;o()}i.complete=!1;return E.style}if("WS"==E.cat||"COMMENT"==E.cat||E.quotePos&&"end"!=E.quotePos){i.possibleCurrent=i.possibleNext;return E.style}var u,c=!1,d=E.cat;if(!E.quotePos||"end"==E.quotePos)for(;i.stack.length>0&&d&&i.OK&&!c;){u=i.stack.pop();if(a[u]){var N=a[u][d];if(void 0!=N&&l(u)){for(var x=N.length-1;x>=0;--x)i.stack.push(N[x]);p(u)}else{i.OK=!1;i.complete=!1;o();i.stack.push(u)}}else if(u==d){c=!0;t(u);for(var I=!0,m=i.stack.length;m>0;--m){var L=a[i.stack[m-1]];L&&L.$||(I=!1)}i.complete=I;if(i.storeProperty&&"punc"!=d.cat){i.lastProperty=E.text;i.storeProperty=!1}}else{i.OK=!1;i.complete=!1;o()}}if(!c&&i.OK){i.OK=!1;i.complete=!1;o()}i.possibleCurrent.indexOf("a")>=0&&(i.lastPredicateOffset=E.start);i.possibleCurrent=i.possibleNext;i.possibleNext=n(i.stack[i.stack.length-1]);return E.style}function t(e,r){if(e.inLiteral)return 0;if(e.stack.length&&"?[or([verbPath,verbSimple]),objectList]"==e.stack[e.stack.length-1])return e.lastPredicateOffset;var n=0,o=e.stack.length-1;if(/^[\}\]\)]/.test(r)){for(var t=r.substr(0,1);o>=0;--o)if(e.stack[o]==t){--o;break}}else{var s=K[e.stack[o]];if(s){n+=s;--o}}for(;o>=0;--o){var s=z[e.stack[o]];s&&(n+=s)}return n*i.indentUnit}var s=(i.indentUnit,e("./_tokenizer-table.js")),a=s.table,p="<[^<>\"'|{}^\\\x00- ]*>",l="[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]",E=l+"|_",u="("+E+"|-|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])",c="("+E+"|[0-9])("+E+"|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])*",d="\\?"+c,N="\\$"+c,x="("+l+")((("+u+")|\\.)*("+u+"))?",I="[0-9A-Fa-f]",m="(%"+I+I+")",L="(\\\\[_~\\.\\-!\\$&'\\(\\)\\*\\+,;=/\\?#@%])",T="("+m+"|"+L+")",A="("+E+"|:|[0-9]|"+T+")(("+u+"|\\.|:|"+T+")*("+u+"|:|"+T+"))?",g="_:("+E+"|[0-9])(("+u+"|\\.)*"+u+")?",v="("+x+")?:",S=v+A,R="@[a-zA-Z]+(-[a-zA-Z0-9]+)*",h="[eE][\\+-]?[0-9]+",C="[0-9]+",f="(([0-9]+\\.[0-9]*)|(\\.[0-9]+))",O="(([0-9]+\\.[0-9]*"+h+")|(\\.[0-9]+"+h+")|([0-9]+"+h+"))",y="\\+"+C,P="\\+"+f,_="\\+"+O,D="-"+C,b="-"+f,G="-"+O,M="\\\\[tbnrf\\\\\"']",U=I+"{4}",V="(\\\\u"+U+"|\\\\U00(10|0"+I+")"+U+")",B="'(([^\\x27\\x5C\\x0A\\x0D])|"+M+"|"+V+")*'",k='"(([^\\x22\\x5C\\x0A\\x0D])|'+M+"|"+V+')*"',F={SINGLE:{CAT:"STRING_LITERAL_LONG1",QUOTES:"'''",CONTENTS:"(('|'')?([^'\\\\]|"+M+"|"+V+"))*"},DOUBLE:{CAT:"STRING_LITERAL_LONG2",QUOTES:'"""',CONTENTS:'(("|"")?([^"\\\\]|'+M+"|"+V+"))*"}};for(var w in F)F[w].COMPLETE=F[w].QUOTES+F[w].CONTENTS+F[w].QUOTES;var j={};for(var w in F)j[w]={complete:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].COMPLETE),style:"string"},contents:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].CONTENTS),style:"string"},closing:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].CONTENTS+F[w].QUOTES),style:"string"},quotes:{name:"STRING_LITERAL_LONG_QUOTES_"+w,regex:new RegExp("^"+F[w].QUOTES),style:"string"}};var H="[\\x20\\x09\\x0D\\x0A]",q="#([^\\n\\r]*[\\n\\r]|[^\\n\\r]*$)",W="("+H+"|("+q+"))*",Y="\\("+W+"\\)",X="\\["+W+"\\]",Q=[{name:"WS",regex:new RegExp("^"+H+"+"),style:"ws"},{name:"COMMENT",regex:new RegExp("^"+q),style:"comment"},{name:"IRI_REF",regex:new RegExp("^"+p),style:"variable-3"},{name:"VAR1",regex:new RegExp("^"+d),style:"atom"},{name:"VAR2",regex:new RegExp("^"+N),style:"atom"},{name:"LANGTAG",regex:new RegExp("^"+R),style:"meta"},{name:"DOUBLE",regex:new RegExp("^"+O),style:"number"},{name:"DECIMAL",regex:new RegExp("^"+f),style:"number"},{name:"INTEGER",regex:new RegExp("^"+C),style:"number"},{name:"DOUBLE_POSITIVE",regex:new RegExp("^"+_),style:"number"},{name:"DECIMAL_POSITIVE",regex:new RegExp("^"+P),style:"number"},{name:"INTEGER_POSITIVE",regex:new RegExp("^"+y),style:"number"},{name:"DOUBLE_NEGATIVE",regex:new RegExp("^"+G),style:"number"},{name:"DECIMAL_NEGATIVE",regex:new RegExp("^"+b),style:"number"},{name:"INTEGER_NEGATIVE",regex:new RegExp("^"+D),style:"number"},{name:"STRING_LITERAL1",regex:new RegExp("^"+B),style:"string"},{name:"STRING_LITERAL2",regex:new RegExp("^"+k),style:"string"},{name:"NIL",regex:new RegExp("^"+Y),style:"punc"},{name:"ANON",regex:new RegExp("^"+X),style:"punc"},{name:"PNAME_LN",regex:new RegExp("^"+S),style:"string-2"},{name:"PNAME_NS",regex:new RegExp("^"+v),style:"string-2"},{name:"BLANK_NODE_LABEL",regex:new RegExp("^"+g),style:"string-2"}],K={"*[,, object]":3,"*[(,),object]":3,"*[(,),objectPath]":3,"*[/,pathEltOrInverse]":2,object:2,objectPath:2,objectList:2,objectListPath:2,storeProperty:2,pathMod:2,"?pathMod":2,propertyListNotEmpty:1,propertyList:1,propertyListPath:1,propertyListPathNotEmpty:1,"?[verb,objectList]":1},z={"}":1,"]":0,")":1,"{":-1,"(":-1};return{token:o,startState:function(e){return{tokenize:o,OK:!0,complete:s.acceptEmpty,errorStartPos:null,errorEndPos:null,queryType:null,possibleCurrent:n(s.startSymbol),possibleNext:n(s.startSymbol),allowVars:!0,allowBnodes:!0,storeProperty:!1,lastProperty:"",inLiteral:!1,stack:[s.startSymbol],lastPredicateOffset:i.indentUnit}},indent:t,electricChars:"}])"}});n.defineMIME("application/x-sparql-query","sparql11")},{"./_tokenizer-table.js":3,codemirror:void 0}],5:[function(e,i,r){var n=i.exports=function(){this.words=0;this.prefixes=0;this.children=[]};n.prototype={insert:function(e,i){if(0!=e.length){var r,o,t=this;void 0===i&&(i=0);if(i!==e.length){t.prefixes++;r=e[i];void 0===t.children[r]&&(t.children[r]=new n);o=t.children[r];o.insert(e,i+1)}else t.words++}},remove:function(e,i){if(0!=e.length){var r,n,o=this;void 0===i&&(i=0);if(void 0!==o)if(i!==e.length){o.prefixes--;r=e[i];n=o.children[r];n.remove(e,i+1)}else o.words--}},update:function(e,i){if(0!=e.length&&0!=i.length){this.remove(e);this.insert(i)}},countWord:function(e,i){if(0==e.length)return 0;var r,n,o=this,t=0;void 0===i&&(i=0);if(i===e.length)return o.words;r=e[i];n=o.children[r];void 0!==n&&(t=n.countWord(e,i+1));return t},countPrefix:function(e,i){if(0==e.length)return 0;var r,n,o=this,t=0;void 0===i&&(i=0);if(i===e.length)return o.prefixes;var r=e[i];n=o.children[r];void 0!==n&&(t=n.countPrefix(e,i+1));return t},find:function(e){return 0==e.length?!1:this.countWord(e)>0?!0:!1},getAllWords:function(e){var i,r,n=this,o=[];void 0===e&&(e="");if(void 0===n)return[];n.words>0&&o.push(e);for(i in n.children){r=n.children[i];o=o.concat(r.getAllWords(e+i))}return o},autoComplete:function(e,i){var r,n,o=this;if(0==e.length)return void 0===i?o.getAllWords(e):[];void 0===i&&(i=0);r=e[i];n=o.children[r];return void 0===n?[]:i===e.length-1?n.getAllWords(e):n.autoComplete(e,i+1)}}},{}],6:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(e){var i=e.getWrapperElement();e.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:i.style.width,height:i.style.height};i.style.width="";i.style.height="auto";i.className+=" CodeMirror-fullscreen";document.documentElement.style.overflow="hidden";e.refresh()}function r(e){var i=e.getWrapperElement();i.className=i.className.replace(/\s*CodeMirror-fullscreen\b/,"");document.documentElement.style.overflow="";var r=e.state.fullScreenRestore;i.style.width=r.width;i.style.height=r.height;window.scrollTo(r.scrollLeft,r.scrollTop);e.refresh()}e.defineOption("fullScreen",!1,function(n,o,t){t==e.Init&&(t=!1);!t!=!o&&(o?i(n):r(n))})})},{codemirror:void 0}],7:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){function i(e,i,n,o){var t=e.getLineHandle(i.line),p=i.ch-1,l=p>=0&&a[t.text.charAt(p)]||a[t.text.charAt(++p)];if(!l)return null;var E=">"==l.charAt(1)?1:-1;if(n&&E>0!=(p==i.ch))return null;var u=e.getTokenTypeAt(s(i.line,p+1)),c=r(e,s(i.line,p+(E>0?1:0)),E,u||null,o);return null==c?null:{from:s(i.line,p),to:c&&c.pos,match:c&&c.ch==l.charAt(0),forward:E>0}}function r(e,i,r,n,o){for(var t=o&&o.maxScanLineLength||1e4,p=o&&o.maxScanLines||1e3,l=[],E=o&&o.bracketRegex?o.bracketRegex:/[(){}[\]]/,u=r>0?Math.min(i.line+p,e.lastLine()+1):Math.max(e.firstLine()-1,i.line-p),c=i.line;c!=u;c+=r){var d=e.getLine(c);if(d){var N=r>0?0:d.length-1,x=r>0?d.length:-1;if(!(d.length>t)){c==i.line&&(N=i.ch-(0>r?1:0));for(;N!=x;N+=r){var I=d.charAt(N);if(E.test(I)&&(void 0===n||e.getTokenTypeAt(s(c,N+1))==n)){var m=a[I];if(">"==m.charAt(1)==r>0)l.push(I);else{if(!l.length)return{pos:s(c,N),ch:I};l.pop()}}}}}}return c-r==(r>0?e.lastLine():e.firstLine())?!1:null}function n(e,r,n){for(var o=e.state.matchBrackets.maxHighlightLineLength||1e3,a=[],p=e.listSelections(),l=0;l",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},p=null;e.defineOption("matchBrackets",!1,function(i,r,n){n&&n!=e.Init&&i.off("cursorActivity",o);if(r){i.state.matchBrackets="object"==typeof r?r:{};i.on("cursorActivity",o)}});e.defineExtension("matchBrackets",function(){n(this,!0)});e.defineExtension("findMatchingBracket",function(e,r,n){return i(this,e,r,n)});e.defineExtension("scanForBracket",function(e,i,n,o){return r(this,e,i,n,o)})})},{codemirror:void 0}],8:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";e.registerHelper("fold","brace",function(i,r){function n(n){for(var o=r.ch,p=0;;){var l=0>=o?-1:a.lastIndexOf(n,o-1);if(-1!=l){if(1==p&&l=N;++N)for(var x=i.getLine(N),I=N==s?o:0;;){var m=x.indexOf(p,I),L=x.indexOf(l,I);0>m&&(m=x.length);0>L&&(L=x.length);I=Math.min(m,L);if(I==x.length)break;if(i.getTokenTypeAt(e.Pos(N,I+1))==t)if(I==m)++c;else if(!--c){E=N;u=I;break e}++I}if(null!=E&&(s!=E||u!=o))return{from:e.Pos(s,o),to:e.Pos(E,u)}}});e.registerHelper("fold","import",function(i,r){function n(r){if(ri.lastLine())return null;var n=i.getTokenAt(e.Pos(r,1));/\S/.test(n.string)||(n=i.getTokenAt(e.Pos(r,n.end+1)));if("keyword"!=n.type||"import"!=n.string)return null;for(var o=r,t=Math.min(i.lastLine(),r+10);t>=o;++o){var s=i.getLine(o),a=s.indexOf(";");if(-1!=a)return{startCh:n.end,end:e.Pos(o,a)}}}var o,r=r.line,t=n(r);if(!t||n(r-1)||(o=n(r-2))&&o.end.line==r-1)return null;for(var s=t.end;;){var a=n(s.line+1);if(null==a)break;s=a.end}return{from:i.clipPos(e.Pos(r,t.startCh+1)),to:s}});e.registerHelper("fold","include",function(i,r){function n(r){if(ri.lastLine())return null;var n=i.getTokenAt(e.Pos(r,1));/\S/.test(n.string)||(n=i.getTokenAt(e.Pos(r,n.end+1)));return"meta"==n.type&&"#include"==n.string.slice(0,8)?n.start+8:void 0}var r=r.line,o=n(r);if(null==o||null!=n(r-1))return null;for(var t=r;;){var s=n(t+1);if(null==s)break;++t}return{from:e.Pos(r,o+1),to:i.clipPos(e.Pos(t))}})})},{codemirror:void 0}],9:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(i,o,t,s){function a(e){var r=p(i,o);if(!r||r.to.line-r.from.linei.firstLine();){o=e.Pos(o.line-1,0);E=a(!1)}if(E&&!E.cleared&&"unfold"!==s){var u=r(i,t);e.on(u,"mousedown",function(i){c.clear();e.e_preventDefault(i)});var c=i.markText(E.from,E.to,{replacedWith:u,clearOnEnter:!0,__isFold:!0});c.on("clear",function(r,n){e.signal(i,"unfold",i,r,n)});e.signal(i,"fold",i,E.from,E.to)}}function r(e,i){var r=n(e,i,"widget");if("string"==typeof r){var o=document.createTextNode(r);r=document.createElement("span");r.appendChild(o);r.className="CodeMirror-foldmarker"}return r}function n(e,i,r){if(i&&void 0!==i[r])return i[r];var n=e.options.foldOptions;return n&&void 0!==n[r]?n[r]:o[r]}e.newFoldFunction=function(e,r){return function(n,o){i(n,o,{rangeFinder:e,widget:r})}};e.defineExtension("foldCode",function(e,r,n){i(this,e,r,n)});e.defineExtension("isFolded",function(e){for(var i=this.findMarksAt(e),r=0;r=r;r++)i.foldCode(e.Pos(r,0),null,"fold")})};e.commands.unfoldAll=function(i){i.operation(function(){for(var r=i.firstLine(),n=i.lastLine();n>=r;r++)i.foldCode(e.Pos(r,0),null,"unfold")})};e.registerHelper("fold","combine",function(){var e=Array.prototype.slice.call(arguments,0);return function(i,r){for(var n=0;n=a&&(r=o(t.indicatorOpen))}e.setGutterMarker(i,t.gutter,r);++s})}function s(e){var i=e.getViewport(),r=e.state.foldGutter;if(r){e.operation(function(){t(e,i.from,i.to)});r.from=i.from;r.to=i.to}}function a(e,i,r){var o=e.state.foldGutter;if(o){var t=o.options;if(r==t.gutter){var s=n(e,i);s?s.clear():e.foldCode(u(i,0),t.rangeFinder)}}}function p(e){var i=e.state.foldGutter;if(i){var r=i.options;i.from=i.to=0;clearTimeout(i.changeUpdate);i.changeUpdate=setTimeout(function(){s(e)},r.foldOnChangeTimeSpan||600)}}function l(e){var i=e.state.foldGutter;if(i){var r=i.options;clearTimeout(i.changeUpdate);i.changeUpdate=setTimeout(function(){var r=e.getViewport();i.from==i.to||r.from-i.to>20||i.from-r.to>20?s(e):e.operation(function(){if(r.fromi.to){t(e,i.to,r.to);i.to=r.to}})},r.updateViewportTimeSpan||400)}}function E(e,i){var r=e.state.foldGutter;if(r){var n=i.line;n>=r.from&&n=e.max)){e.ch=0;e.text=e.cm.getLine(++e.line);return!0}}function t(e){if(!(e.line<=e.min)){e.text=e.cm.getLine(--e.line);e.ch=e.text.length;return!0}}function s(e){for(;;){var i=e.text.indexOf(">",e.ch);if(-1==i){if(o(e))continue;return}if(n(e,i+1)){var r=e.text.lastIndexOf("/",i),t=r>-1&&!/\S/.test(e.text.slice(r+1,i));e.ch=i+1;return t?"selfClose":"regular"}e.ch=i+1}}function a(e){for(;;){var i=e.ch?e.text.lastIndexOf("<",e.ch-1):-1;if(-1==i){if(t(e))continue;return}if(n(e,i+1)){x.lastIndex=i;e.ch=i;var r=x.exec(e.text);if(r&&r.index==i)return r}else e.ch=i}}function p(e){for(;;){x.lastIndex=e.ch;var i=x.exec(e.text);if(!i){if(o(e))continue;return}if(n(e,i.index+1)){e.ch=i.index+i[0].length;return i}e.ch=i.index+1}}function l(e){for(;;){var i=e.ch?e.text.lastIndexOf(">",e.ch-1):-1;if(-1==i){if(t(e))continue;return}if(n(e,i+1)){var r=e.text.lastIndexOf("/",i),o=r>-1&&!/\S/.test(e.text.slice(r+1,i));e.ch=i+1;return o?"selfClose":"regular"}e.ch=i}}function E(e,i){for(var r=[];;){var n,o=p(e),t=e.line,a=e.ch-(o?o[0].length:0);if(!o||!(n=s(e)))return;if("selfClose"!=n)if(o[1]){for(var l=r.length-1;l>=0;--l)if(r[l]==o[2]){r.length=l;break}if(0>l&&(!i||i==o[2]))return{tag:o[2],from:c(t,a),to:c(e.line,e.ch)}}else r.push(o[2])}}function u(e,i){for(var r=[];;){var n=l(e);if(!n)return;if("selfClose"!=n){var o=e.line,t=e.ch,s=a(e);if(!s)return;if(s[1])r.push(s[2]);else{for(var p=r.length-1;p>=0;--p)if(r[p]==s[2]){r.length=p;break}if(0>p&&(!i||i==s[2]))return{tag:s[2],from:c(e.line,e.ch),to:c(o,t)}}}else a(e)}}var c=e.Pos,d="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=d+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",x=new RegExp("<(/?)(["+d+"]["+N+"]*)","g");e.registerHelper("fold","xml",function(e,i){for(var n=new r(e,i.line,0);;){var o,t=p(n);if(!t||n.line!=i.line||!(o=s(n)))return;if(!t[1]&&"selfClose"!=o){var i=c(n.line,n.ch),a=E(n,t[2]);return a&&{from:i,to:a.from}}}});e.findMatchingTag=function(e,n,o){var t=new r(e,n.line,n.ch,o);if(-1!=t.text.indexOf(">")||-1!=t.text.indexOf("<")){var p=s(t),l=p&&c(t.line,t.ch),d=p&&a(t);if(p&&d&&!(i(t,n)>0)){var N={from:c(t.line,t.ch),to:l,tag:d[2]};if("selfClose"==p)return{open:N,close:null,at:"open"};if(d[1])return{open:u(t,d[2]),close:N,at:"close"};t=new r(e,l.line,l.ch,o);return{open:N,close:E(t,d[2]),at:"open"}}}};e.findEnclosingTag=function(e,i,n){for(var o=new r(e,i.line,i.ch,n);;){var t=u(o);if(!t)break;var s=new r(e,i.line,i.ch,n),a=E(s,t.tag);if(a)return{open:t,close:a}}};e.scanForClosingTag=function(e,i,n,o){var t=new r(e,i.line,i.ch,o?{from:0,to:o}:null);return E(t,n)}})},{codemirror:void 0}],12:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(e,i){this.cm=e;this.options=i;this.widget=null;this.debounce=0;this.tick=0;this.startPos=this.cm.getCursor("start");this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var r=this;e.on("cursorActivity",this.activityFunc=function(){r.cursorActivity()})}function r(e,i,r){var n=e.options.hintOptions,o={};for(var t in d)o[t]=d[t];if(n)for(var t in n)void 0!==n[t]&&(o[t]=n[t]);if(r)for(var t in r)void 0!==r[t]&&(o[t]=r[t]);o.hint.resolve&&(o.hint=o.hint.resolve(e,i));return o}function n(e){return"string"==typeof e?e:e.text}function o(e,i){function r(e,r){var o;o="string"!=typeof r?function(e){return r(e,i)}:n.hasOwnProperty(r)?n[r]:r;t[e]=o}var n={Up:function(){i.moveFocus(-1)},Down:function(){i.moveFocus(1)},PageUp:function(){i.moveFocus(-i.menuSize()+1,!0)},PageDown:function(){i.moveFocus(i.menuSize()-1,!0)},Home:function(){i.setFocus(0)},End:function(){i.setFocus(i.length-1)},Enter:i.pick,Tab:i.pick,Esc:i.close},o=e.options.customKeys,t=o?{}:n;if(o)for(var s in o)o.hasOwnProperty(s)&&r(s,o[s]);var a=e.options.extraKeys;if(a)for(var s in a)a.hasOwnProperty(s)&&r(s,a[s]);return t}function t(e,i){for(;i&&i!=e;){if("LI"===i.nodeName.toUpperCase()&&i.parentNode==e)return i;i=i.parentNode}}function s(i,r){this.completion=i;this.data=r;this.picked=!1;var s=this,a=i.cm,p=this.hints=document.createElement("ul");p.className="CodeMirror-hints";this.selectedHint=r.selectedHint||0;for(var u=r.list,c=0;c0){var R=v.bottom-v.top,h=I.top-(I.bottom-v.top);if(h-R>0){p.style.top=(L=I.top-R)+"px";T=!1}else if(R>g){p.style.height=g-5+"px";p.style.top=(L=I.bottom-v.top)+"px";var C=a.getCursor();if(r.from.ch!=C.ch){I=a.cursorCoords(C);p.style.left=(m=I.left)+"px";v=p.getBoundingClientRect()}}}var f=v.right-A;if(f>0){if(v.right-v.left>A){p.style.width=A-5+"px";f-=v.right-v.left-A}p.style.left=(m=I.left-f)+"px"}a.addKeyMap(this.keyMap=o(i,{moveFocus:function(e,i){s.changeActive(s.selectedHint+e,i)},setFocus:function(e){s.changeActive(e)},menuSize:function(){return s.screenAmount()},length:u.length,close:function(){i.close()},pick:function(){s.pick()},data:r}));if(i.options.closeOnUnfocus){var O;a.on("blur",this.onBlur=function(){O=setTimeout(function(){i.close()},100)});a.on("focus",this.onFocus=function(){clearTimeout(O)})}var y=a.getScrollInfo();a.on("scroll",this.onScroll=function(){var e=a.getScrollInfo(),r=a.getWrapperElement().getBoundingClientRect(),n=L+y.top-e.top,o=n-(window.pageYOffset||(document.documentElement||document.body).scrollTop);T||(o+=p.offsetHeight);if(o<=r.top||o>=r.bottom)return i.close();p.style.top=n+"px";p.style.left=m+y.left-e.left+"px"});e.on(p,"dblclick",function(e){var i=t(p,e.target||e.srcElement);if(i&&null!=i.hintId){s.changeActive(i.hintId);s.pick()}});e.on(p,"click",function(e){var r=t(p,e.target||e.srcElement);if(r&&null!=r.hintId){s.changeActive(r.hintId);i.options.completeOnSingleClick&&s.pick()}});e.on(p,"mousedown",function(){setTimeout(function(){a.focus()},20)});e.signal(r,"select",u[0],p.firstChild);return!0}function a(e,i){if(!e.somethingSelected())return i;for(var r=[],n=0;n1)){if(this.somethingSelected()){if(!n.hint.supportsSelection)return;for(var t=0;t=this.data.list.length?i=r?this.data.list.length-1:0:0>i&&(i=r?0:this.data.list.length-1);if(this.selectedHint!=i){var n=this.hints.childNodes[this.selectedHint];n.className=n.className.replace(" "+E,"");n=this.hints.childNodes[this.selectedHint=i];n.className+=" "+E;n.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=n.offsetTop+n.offsetHeight-this.hints.clientHeight+3);e.signal(this.data,"select",this.data.list[this.selectedHint],n)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}};e.registerHelper("hint","auto",{resolve:p});e.registerHelper("hint","fromList",function(i,r){var n=i.getCursor(),o=i.getTokenAt(n),t=e.Pos(n.line,o.end);if(o.string&&/\w/.test(o.string[o.string.length-1]))var s=o.string,a=e.Pos(n.line,o.start);else var s="",a=t;for(var p=[],l=0;l,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};e.defineOption("hintOptions",null)})},{codemirror:void 0}],13:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";e.runMode=function(i,r,n,o){var t=e.getMode(e.defaults,r),s=/MSIE \d/.test(navigator.userAgent),a=s&&(null==document.documentMode||document.documentMode<9);if(n.appendChild){var p=o&&o.tabSize||e.defaults.tabSize,l=n,E=0;l.innerHTML="";n=function(e,i){if("\n"!=e){for(var r="",n=0;;){var o=e.indexOf(" ",n);if(-1==o){r+=e.slice(n);E+=e.length-n;break}E+=o-n;r+=e.slice(n,o);var t=p-E%p;E+=t;for(var s=0;t>s;++s)r+=" ";n=o+1}if(i){var u=l.appendChild(document.createElement("span"));u.className="cm-"+i.replace(/ +/g," cm-");u.appendChild(document.createTextNode(r))}else l.appendChild(document.createTextNode(r))}else{l.appendChild(document.createTextNode(a?"\r":e));E=0}}}for(var u=e.splitLines(i),c=o&&o.state||e.startState(t),d=0,N=u.length;N>d;++d){d&&n("\n");var x=new e.StringStream(u[d]);!x.string&&t.blankLine&&t.blankLine(c);for(;!x.eol();){var I=t.token(x,c);n(x.current(),I,d,x.start,c);x.start=x.pos}}}})},{codemirror:void 0}],14:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(e,i,o,t){this.atOccurrence=!1;this.doc=e;null==t&&"string"==typeof i&&(t=!1);o=o?e.clipPos(o):n(0,0);this.pos={from:o,to:o};if("string"!=typeof i){i.global||(i=new RegExp(i.source,i.ignoreCase?"ig":"g"));this.matches=function(r,o){if(r){i.lastIndex=0;for(var t,s,a=e.getLine(o.line).slice(0,o.ch),p=0;;){i.lastIndex=p;var l=i.exec(a);if(!l)break;t=l;s=t.index;p=t.index+(t[0].length||1);if(p==a.length)break}var E=t&&t[0].length||0;E||(0==s&&0==a.length?t=void 0:s!=e.getLine(o.line).length&&E++)}else{i.lastIndex=o.ch;var a=e.getLine(o.line),t=i.exec(a),E=t&&t[0].length||0,s=t&&t.index;s+E==a.length||E||(E=1)}return t&&E?{from:n(o.line,s),to:n(o.line,s+E),match:t}:void 0}}else{var s=i;t&&(i=i.toLowerCase());var a=t?function(e){return e.toLowerCase()}:function(e){return e},p=i.split("\n");if(1==p.length)i.length?this.matches=function(o,t){if(o){var p=e.getLine(t.line).slice(0,t.ch),l=a(p),E=l.lastIndexOf(i);if(E>-1){E=r(p,l,E);return{from:n(t.line,E),to:n(t.line,E+s.length)}}}else{var p=e.getLine(t.line).slice(t.ch),l=a(p),E=l.indexOf(i);if(E>-1){E=r(p,l,E)+t.ch;return{from:n(t.line,E),to:n(t.line,E+s.length)}}}}:this.matches=function(){};else{var l=s.split("\n");this.matches=function(i,r){var o=p.length-1;if(i){if(r.line-(p.length-1)=1;--E,--s)if(p[E]!=a(e.getLine(s)))return;var u=e.getLine(s),c=u.length-l[0].length;if(a(u.slice(c))!=p[0])return;return{from:n(s,c),to:t}}if(!(r.line+(p.length-1)>e.lastLine())){var u=e.getLine(r.line),c=u.length-l[0].length;if(a(u.slice(c))==p[0]){for(var d=n(r.line,c),s=r.line+1,E=1;o>E;++E,++s)if(p[E]!=a(e.getLine(s)))return;if(a(e.getLine(s).slice(0,l[o].length))==p[o])return{from:d,to:n(s,l[o].length)}}}}}}}function r(e,i,r){if(e.length==i.length)return r;for(var n=Math.min(r,e.length);;){var o=e.slice(0,n).toLowerCase().length;if(r>o)++n;else{if(!(o>r))return n;--n}}}var n=e.Pos;i.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(e){function i(e){var i=n(e,0);r.pos={from:i,to:i};r.atOccurrence=!1;return!1}for(var r=this,o=this.doc.clipPos(e?this.pos.from:this.pos.to);;){if(this.pos=this.matches(e,o)){this.atOccurrence=!0;return this.pos.match||!0}if(e){if(!o.line)return i(0);o=n(o.line-1,this.doc.getLine(o.line-1).length)}else{var t=this.doc.lineCount();if(o.line==t-1)return i(t);o=n(o.line+1,0)}}},from:function(){return this.atOccurrence?this.pos.from:void 0},to:function(){return this.atOccurrence?this.pos.to:void 0},replace:function(i,r){if(this.atOccurrence){var o=e.splitLines(i);this.doc.replaceRange(o,this.pos.from,this.pos.to,r);this.pos.to=n(this.pos.from.line+o.length-1,o[o.length-1].length+(1==o.length?this.pos.from.ch:0))}}};e.defineExtension("getSearchCursor",function(e,r,n){return new i(this.doc,e,r,n)});e.defineDocExtension("getSearchCursor",function(e,r,n){return new i(this,e,r,n)});e.defineExtension("selectMatches",function(i,r){for(var n=[],o=this.getSearchCursor(i,this.getCursor("from"),r);o.findNext()&&!(e.cmpPos(o.to(),this.getCursor("to"))>0);)n.push({anchor:o.from(),head:o.to()});n.length&&this.setSelections(n,0)})})},{codemirror:void 0}],15:[function(i,r,n){(function(i){"use strict";(function(i,o){"function"==typeof e&&e.amd?e([],o):"object"==typeof n?r.exports=o():i.store=o()})(this,function(){function e(){try{return s in o&&o[s]}catch(e){return!1}}var r,n={},o="undefined"!=typeof window?window:i,t=o.document,s="localStorage",a="script";n.disabled=!1;n.version="1.3.20";n.set=function(e,i){};n.get=function(e,i){};n.has=function(e){return void 0!==n.get(e)};n.remove=function(e){};n.clear=function(){};n.transact=function(e,i,r){if(null==r){r=i;i=null}null==i&&(i={});var o=n.get(e,i);r(o);n.set(e,o)};n.getAll=function(){};n.forEach=function(){};n.serialize=function(e){return JSON.stringify(e)};n.deserialize=function(e){if("string"==typeof e)try{return JSON.parse(e)}catch(i){return e||void 0}};if(e()){r=o[s];n.set=function(e,i){if(void 0===i)return n.remove(e);r.setItem(e,n.serialize(i));return i};n.get=function(e,i){var o=n.deserialize(r.getItem(e));return void 0===o?i:o};n.remove=function(e){r.removeItem(e)};n.clear=function(){r.clear()};n.getAll=function(){var e={};n.forEach(function(i,r){e[i]=r});return e};n.forEach=function(e){for(var i=0;idocument.w=window');l.close();p=l.w.frames[0].document;r=p.createElement("div")}catch(E){r=t.createElement("div");p=t.body}var u=function(e){return function(){var i=Array.prototype.slice.call(arguments,0);i.unshift(r);p.appendChild(r);r.addBehavior("#default#userData");r.load(s);var o=e.apply(n,i);p.removeChild(r);return o}},c=new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]","g"),d=function(e){return e.replace(/^d/,"___$&").replace(c,"___")};n.set=u(function(e,i,r){i=d(i);if(void 0===r)return n.remove(i);e.setAttribute(i,n.serialize(r));e.save(s);return r});n.get=u(function(e,i,r){i=d(i);var o=n.deserialize(e.getAttribute(i));return void 0===o?r:o});n.remove=u(function(e,i){i=d(i);e.removeAttribute(i);e.save(s)});n.clear=u(function(e){var i=e.XMLDocument.documentElement.attributes;e.load(s);for(var r=i.length-1;r>=0;r--)e.removeAttribute(i[r].name);e.save(s)});n.getAll=function(e){var i={};n.forEach(function(e,r){i[e]=r});return i};n.forEach=u(function(e,i){for(var r,o=e.XMLDocument.documentElement.attributes,t=0;r=o[t];++t)i(r.name,n.deserialize(e.getAttribute(r.name)))})}try{var N="__storejs__";n.set(N,N);n.get(N)!=N&&(n.disabled=!0);n.remove(N)}catch(E){n.disabled=!0}n.enabled=!n.disabled;return n})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],16:[function(e,i,r){i.exports={_args:[["yasgui-utils@^1.4.1","/home/lrd900/yasgui/yasqe"]],_from:"yasgui-utils@>=1.4.1 <2.0.0",_id:"yasgui-utils@1.6.0",_inCache:!0,_installable:!0,_location:"/yasgui-utils",_npmUser:{email:"laurens.rietveld@gmail.com",name:"laurens.rietveld"},_npmVersion:"1.4.3",_phantomChildren:{},_requested:{name:"yasgui-utils",raw:"yasgui-utils@^1.4.1",rawSpec:"^1.4.1",scope:null,spec:">=1.4.1 <2.0.0",type:"range"},_requiredBy:["/"],_shrinkwrap:null,_spec:"yasgui-utils@^1.4.1",_where:"/home/lrd900/yasgui/yasqe",author:{name:"Laurens Rietveld"},bugs:{url:"https://github.com/YASGUI/Utils/issues"},dependencies:{store:"^1.3.14"},description:"Utils for YASGUI libs",devDependencies:{},directories:{},dist:{shasum:"bcb9091109c233e3e82737c94c202e6512389c47",tarball:"http://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz"},homepage:"https://github.com/YASGUI/Utils",licenses:[{type:"MIT",url:"http://yasgui.github.io/license.txt"}],main:"src/main.js",maintainers:[{name:"laurens.rietveld",email:"laurens.rietveld@gmail.com"}],name:"yasgui-utils",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git://github.com/YASGUI/Utils.git"},version:"1.6.0"}},{}],17:[function(e,i,r){window.console=window.console||{log:function(){}};i.exports={storage:e("./storage.js"),svg:e("./svg.js"),version:{"yasgui-utils":e("../package.json").version},nestedExists:function(e){for(var i=Array.prototype.slice.call(arguments,1),r=0;ri.exp?null:i.val:null}return null}}},{store:15}],19:[function(e,i,r){i.exports={draw:function(e,r){if(e){var n=i.exports.getElement(r);n&&(e.append?e.append(n):e.appendChild(n))}},getElement:function(e){if(e&&0==e.indexOf("0){var t=n(i.getWrapperElement()).find(".CodeMirror-vscrollbar"),s=0;t.is(":visible")&&(s=t.outerWidth());e.forEach(function(e){e.css("right",s)})}});var E=function(e,r){l[e.name]=new s;for(var n=0;n0&&E(n,e)};if(n.get instanceof Array)s(n.get);else{var a=null,l=o.getPersistencyId(i,n.persistent);l&&(a=t.storage.get(l));a&&a.length>0?s(a):n.get instanceof Function&&(n.async?n.get(null,s):s(n.get()))}}},c=function(r){if(!i.somethingSelected()){var o=function(n){if(r&&(!n.autoShow||!n.bulk&&n.async))return!1;var o={closeCharacters:/(?=a)b/,completeSingle:!1};!n.bulk&&n.async&&(o.async=!0);var t=function(e,i){return d(n,i)};e.showHint(i,t,o);return!0};for(var t in p)if(-1!=n.inArray(t,i.options.autocompleters)){var s=p[t];if(s.isValidCompletionPosition)if(s.isValidCompletionPosition()){if(!s.callbacks||!s.callbacks.validPosition||s.callbacks.validPosition(i,s)!==!1){var a=o(s);if(a)break}}else s.callbacks&&s.callbacks.invalidPosition&&s.callbacks.invalidPosition(i,s)}}},d=function(e,r){var n=function(i){var r=i.autocompletionString||i.string,n=[];if(l[e.name])n=l[e.name].autoComplete(r);else if("function"==typeof e.get&&0==e.async)n=e.get(r);else if("object"==typeof e.get)for(var o=r.length,t=0;t"));r[i.name].show().text("Press "+(-1!=navigator.userAgent.indexOf("Mac OS X")?"CMD":"CTRL")+" - to autocomplete").appendTo(n(e.getWrapperElement()))}},hide:function(e,i){r[i.name]&&r[i.name].hide()}},autoComplete:c,getTrie:function(e){return"string"==typeof e?l[e]:l[e.name]}}};var a=function(e,i,r){r.text!=e.getTokenAt(e.getCursor()).string&&e.replaceRange(r.text,i.from,i.to)}},{"../../lib/trie.js":5,"../main.js":30,"../utils.js":36,jquery:void 0,"yasgui-utils":17}],22:[function(e,i,r){"use strict";(function(){try{return e("jquery")}catch(i){return window.jQuery}})();i.exports=function(r,n){return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(r)},get:function(i,n){return e("./utils").fetchFromLov(r,this,i,n)},preProcessToken:function(e){return i.exports.preProcessToken(r,e)},postProcessToken:function(e,n){return i.exports.postProcessToken(r,e,n)},async:!0,bulk:!1,autoShow:!1,persistent:n,callbacks:{validPosition:r.autocompleters.notifications.show,invalidPosition:r.autocompleters.notifications.hide}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCompleteToken();if(0==i.string.indexOf("?"))return!1;var r=e.getCursor(),n=e.getPreviousNonWsToken(r.line,i);return"a"==n.string?!0:"rdf:type"==n.string?!0:"rdfs:domain"==n.string?!0:"rdfs:range"==n.string?!0:!1};i.exports.preProcessToken=function(i,r){return e("./utils.js").preprocessResourceTokenForCompletion(i,r)};i.exports.postProcessToken=function(i,r,n){return e("./utils.js").postprocessResourceTokenForCompletion(i,r,n)}},{"./utils":25,"./utils.js":25,jquery:void 0}],23:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o={"string-2":"prefixed",atom:"var"};i.exports=function(e,r){e.on("change",function(){i.exports.appendPrefixIfNeeded(e,r)});return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(e)},get:function(e,i){n.get("//prefix.cc/popular/all.file.json",function(e){var r=[];for(var n in e)if("bif"!=n){var o=n+": <"+e[n]+">";r.push(o)}r.sort();i(r)})},preProcessToken:function(r){return i.exports.preprocessPrefixTokenForCompletion(e,r)},async:!0,bulk:!0,autoShow:!0,persistent:r,callbacks:{pick:function(){e.collapsePrefixes(!1)}}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCursor(),r=e.getTokenAt(i);if(e.getLine(i.line).length>i.ch)return!1;"ws"!=r.type&&(r=e.getCompleteToken());if(0==!r.string.indexOf("a")&&-1==n.inArray("PNAME_NS",r.state.possibleCurrent))return!1;var o=e.getPreviousNonWsToken(i.line,r);return o&&"PREFIX"==o.string.toUpperCase()?!0:!1};i.exports.preprocessPrefixTokenForCompletion=function(e,i){var r=e.getPreviousNonWsToken(e.getCursor().line,i);r&&r.string&&":"==r.string.slice(-1)&&(i={start:r.start,end:i.end,string:r.string+" "+i.string,state:i.state});return i};i.exports.appendPrefixIfNeeded=function(e,i){if(e.autocompleters.getTrie(i)&&e.options.autocompleters&&-1!=e.options.autocompleters.indexOf(i)){var r=e.getCursor(),n=e.getTokenAt(r);if("prefixed"==o[n.type]){var t=n.string.indexOf(":");if(-1!==t){var s=e.getPreviousNonWsToken(r.line,n).string.toUpperCase(),a=e.getTokenAt({line:r.line,ch:n.start});if("PREFIX"!=s&&("ws"==a.type||null==a.type)){var p=n.string.substring(0,t+1),l=e.getPrefixesFromQuery();if(null==l[p.slice(0,-1)]){var E=e.autocompleters.getTrie(i).autoComplete(p);E.length>0&&e.addPrefixes(E[0])}}}}}}},{jquery:void 0}],24:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}();i.exports=function(r,n){return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(r)},get:function(i,n){return e("./utils").fetchFromLov(r,this,i,n)},preProcessToken:function(e){return i.exports.preProcessToken(r,e)},postProcessToken:function(e,n){return i.exports.postProcessToken(r,e,n)},async:!0,bulk:!1,autoShow:!1,persistent:n,callbacks:{validPosition:r.autocompleters.notifications.show,invalidPosition:r.autocompleters.notifications.hide}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCompleteToken();if(0==i.string.length)return!1;if(0==i.string.indexOf("?"))return!1;if(n.inArray("a",i.state.possibleCurrent)>=0)return!0;var r=e.getCursor(),o=e.getPreviousNonWsToken(r.line,i);return"rdfs:subPropertyOf"==o.string?!0:!1};i.exports.preProcessToken=function(i,r){return e("./utils.js").preprocessResourceTokenForCompletion(i,r)};i.exports.postProcessToken=function(i,r,n){return e("./utils.js").postprocessResourceTokenForCompletion(i,r,n)}},{"./utils":25,"./utils.js":25,jquery:void 0}],25:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=(e("./utils.js"),e("yasgui-utils")),t=function(e,i){var r=e.getPrefixesFromQuery();if(0==!i.string.indexOf("<")){i.tokenPrefix=i.string.substring(0,i.string.indexOf(":")+1);null!=r[i.tokenPrefix.slice(0,-1)]&&(i.tokenPrefixUri=r[i.tokenPrefix.slice(0,-1)])}i.autocompletionString=i.string.trim();if(0==!i.string.indexOf("<")&&i.string.indexOf(":")>-1)for(var n in r)if(0==i.string.indexOf(n)){i.autocompletionString=r[n];i.autocompletionString+=i.string.substring(n.length+1);break}0==i.autocompletionString.indexOf("<")&&(i.autocompletionString=i.autocompletionString.substring(1));-1!==i.autocompletionString.indexOf(">",i.length-1)&&(i.autocompletionString=i.autocompletionString.substring(0,i.autocompletionString.length-1));return i},s=function(e,i,r){r=i.tokenPrefix&&i.autocompletionString&&i.tokenPrefixUri?i.tokenPrefix+r.substring(i.tokenPrefixUri.length):"<"+r+">";return r},a=function(i,r,t,s){if(!t||!t.string||0==t.string.trim().length){i.autocompleters.notifications.getEl(r).empty().append("Nothing to autocomplete yet!");return!1}var a=50,p={q:t.autocompletionString,page:1};"classes"==r.name?p.type="class":p.type="property";var l=[],E="",u=function(){E="http://lov.okfn.org/dataset/lov/api/v2/autocomplete/terms?"+n.param(p)};u();var c=function(){p.page++;u()},d=function(){n.get(E,function(e){for(var o=0;o0?l.push(e.results[o].uri[0]):l.push(e.results[o].uri);if(l.length0?i.autocompleters.notifications.hide(i,r):i.autocompleters.notifications.getEl(r).text("0 matches found...");s(l)}}).fail(function(e,n,o){i.autocompleters.notifications.getEl(r).empty().append("Failed fetching suggestions..")})};i.autocompleters.notifications.getEl(r).empty().append(n("Fetchting autocompletions  ")).append(n(o.svg.getElement(e("../imgs.js").loader)).addClass("notificationLoader"));d()};i.exports={fetchFromLov:a,preprocessResourceTokenForCompletion:t,postprocessResourceTokenForCompletion:s}},{"../imgs.js":29,"./utils.js":25,jquery:void 0,"yasgui-utils":17}],26:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}();i.exports=function(e){return{isValidCompletionPosition:function(){var i=e.getTokenAt(e.getCursor());if("ws"!=i.type){i=e.getCompleteToken(i);if(i&&0==i.string.indexOf("?"))return!0}return!1},get:function(i){if(0==i.trim().length)return[];var r={};n(e.getWrapperElement()).find(".cm-atom").each(function(){var e=this.innerHTML;if(0==e.indexOf("?")){var o=n(this).next(),t=o.attr("class");t&&o.attr("class").indexOf("cm-atom")>=0&&(e+=o.text());if(e.length<=1)return;if(0!==e.indexOf(i))return;if(e==i)return;r[e]=!0}});var o=[];for(var t in r)o.push(t);o.sort();return o},async:!1,bulk:!1,autoShow:!0}}},{jquery:void 0}],27:[function(e,i,r){var n=e("./sparql.js"),o=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),t=function(e){return"'"+e+"'"};i.exports={createCurlString:function(e,i){var r=n.getAjaxConfig(e,i),s=e.options.sparql.endpoint;"GET"==e.options.sparql.requestMethod&&(s+="?"+o.param(r.data));var a=["curl",s,"-X",e.options.sparql.requestMethod];"POST"==e.options.sparql.requestMethod&&a.push("--data "+t(o.param(r.data)));for(var p in r.headers)a.push("-H "+t(p+": "+r.headers[p]));return a.join(" ")}}},{"./sparql.js":33,jquery:void 0}],28:[function(e,i,r){var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=e("./main.js");o.defaults=n.extend(!0,{},o.defaults,{mode:"sparql11",value:"PREFIX rdf: \nPREFIX rdfs: \nSELECT * WHERE {\n ?sub ?pred ?obj .\n} \nLIMIT 10",highlightSelectionMatches:{showToken:/\w/},tabMode:"indent",lineNumbers:!0,lineWrapping:!0,backdrop:!1,foldGutter:{rangeFinder:new o.fold.combine(o.fold.brace,o.fold.prefix)},collapsePrefixesOnLoad:!1,gutters:["gutterErrorBar","CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:!0,fixedGutter:!0,syntaxErrorCheck:!0,extraKeys:{"Ctrl-Space":o.autoComplete,"Cmd-Space":o.autoComplete,"Ctrl-D":o.deleteLine,"Ctrl-K":o.deleteLine,"Cmd-D":o.deleteLine,"Cmd-K":o.deleteLine,"Ctrl-/":o.commentLines,"Cmd-/":o.commentLines,"Ctrl-Alt-Down":o.copyLineDown,"Ctrl-Alt-Up":o.copyLineUp,"Cmd-Alt-Down":o.copyLineDown,"Cmd-Alt-Up":o.copyLineUp,"Shift-Ctrl-F":o.doAutoFormat,"Shift-Cmd-F":o.doAutoFormat,"Ctrl-]":o.indentMore,"Cmd-]":o.indentMore,"Ctrl-[":o.indentLess,"Cmd-[":o.indentLess,"Ctrl-S":o.storeQuery,"Cmd-S":o.storeQuery,"Ctrl-Enter":o.executeQuery,"Cmd-Enter":o.executeQuery,F11:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}},cursorHeight:.9,createShareLink:o.createShareLink,createShortLink:null,consumeShareLink:o.consumeShareLink,persistent:function(e){return"yasqe_"+n(e.getWrapperElement()).closest("[id]").attr("id")+"_queryVal"},sparql:{queryName:function(e){return e.getQueryMode()},showQueryButton:!1,endpoint:"http://dbpedia.org/sparql",requestMethod:"POST",acceptHeaderGraph:"text/turtle,*/*;q=0.9",acceptHeaderSelect:"application/sparql-results+json,*/*;q=0.9",acceptHeaderUpdate:"text/plain,*/*;q=0.9",namedGraphs:[],defaultGraphs:[],args:[],headers:{},getQueryForAjax:null,callbacks:{beforeSend:null,complete:null,error:null,success:null},handlers:{}}})},{"./main.js":30,jquery:void 0}],29:[function(e,i,r){"use strict";i.exports={query:' ',queryInvalid:'image/svg+xml',download:' ',share:'', -warning:'',fullscreen:'image/svg+xml',smallscreen:'image/svg+xml'}},{}],30:[function(e,i,r){"use strict";window.console=window.console||{log:function(){}};var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=function(){try{return e("codemirror")}catch(i){return window.CodeMirror}}(),t=e("./utils.js"),s=e("yasgui-utils"),a=e("./imgs.js");e("../lib/deparam.js");e("codemirror/addon/fold/foldcode.js");e("codemirror/addon/fold/foldgutter.js");e("codemirror/addon/fold/xml-fold.js");e("codemirror/addon/fold/brace-fold.js");e("./prefixFold.js");e("codemirror/addon/hint/show-hint.js");e("codemirror/addon/search/searchcursor.js");e("codemirror/addon/edit/matchbrackets.js");e("codemirror/addon/runmode/runmode.js");e("codemirror/addon/display/fullscreen.js");e("../lib/grammar/tokenizer.js");var p=i.exports=function(e,i){var r=n("
",{"class":"yasqe"}).appendTo(n(e));i=l(i);var t=E(o(r[0],i));d(t);return t},l=function(e){var i=n.extend(!0,{},p.defaults,e);return i},E=function(i){i.autocompleters=e("./autocompleters/autocompleterBase.js")(p,i);i.options.autocompleters&&i.options.autocompleters.forEach(function(e){p.Autocompleters[e]&&i.autocompleters.init(e,p.Autocompleters[e])});i.lastQueryDuration=null;i.getCompleteToken=function(r,n){return e("./tokenUtils.js").getCompleteToken(i,r,n)};i.getPreviousNonWsToken=function(r,n){return e("./tokenUtils.js").getPreviousNonWsToken(i,r,n)};i.getNextNonWsToken=function(r,n){return e("./tokenUtils.js").getNextNonWsToken(i,r,n)};i.collapsePrefixes=function(r){void 0===r&&(r=!0);i.foldCode(e("./prefixFold.js").findFirstPrefixLine(i),p.fold.prefix,r?"fold":"unfold")};var r=null,o=null;i.setBackdrop=function(e){if(i.options.backdrop||0===i.options.backdrop||"0"===i.options.backdrop){if(null===o){o=+i.options.backdrop;1===o&&(o=400)}r||(r=n("
",{"class":"backdrop"}).click(function(){n(this).hide()}).insertAfter(n(i.getWrapperElement())));e?r.show(o):r.hide(o)}};i.query=function(e){p.executeQuery(i,e)};i.getUrlArguments=function(e){return p.getUrlArguments(i,e)};i.getPrefixesFromQuery=function(){return e("./prefixUtils.js").getPrefixesFromQuery(i)};i.addPrefixes=function(r){return e("./prefixUtils.js").addPrefixes(i,r)};i.removePrefixes=function(r){return e("./prefixUtils.js").removePrefixes(i,r)};i.getValueWithoutComments=function(){var e="";p.runMode(i.getValue(),"sparql11",function(i,r){"comment"!=r&&(e+=i)});return e};i.getQueryType=function(){return i.queryType};i.getQueryMode=function(){var e=i.getQueryType();return"INSERT"==e||"DELETE"==e||"LOAD"==e||"CLEAR"==e||"CREATE"==e||"DROP"==e||"COPY"==e||"MOVE"==e||"ADD"==e?"update":"query"};i.setCheckSyntaxErrors=function(e){i.options.syntaxErrorCheck=e;I(i)};i.enableCompleter=function(e){u(i.options,e);p.Autocompleters[e]&&i.autocompleters.init(e,p.Autocompleters[e])};i.disableCompleter=function(e){c(i.options,e)};return i},u=function(e,i){e.autocompleters||(e.autocompleters=[]);e.autocompleters.push(i)},c=function(e,i){if("object"==typeof e.autocompleters){var r=n.inArray(i,e.autocompleters);if(r>=0){e.autocompleters.splice(r,1);c(e,i)}}},d=function(e){var i=t.getPersistencyId(e,e.options.persistent);if(i){var r=s.storage.get(i);r&&e.setValue(r)}p.drawButtons(e);e.on("blur",function(e,i){p.storeQuery(e)});e.on("change",function(e,i){I(e);p.updateQueryButton(e);p.positionButtons(e)});e.on("changes",function(){I(e);p.updateQueryButton(e);p.positionButtons(e)});e.on("cursorActivity",function(e,i){x(e)});e.prevQueryValid=!1;I(e);p.positionButtons(e);n(e.getWrapperElement()).on("mouseenter",".cm-atom",function(){var i=n(this).text();n(e.getWrapperElement()).find(".cm-atom").filter(function(){return n(this).text()===i}).addClass("matchingVar")}).on("mouseleave",".cm-atom",function(){n(e.getWrapperElement()).find(".matchingVar").removeClass("matchingVar")});if(e.options.consumeShareLink){e.options.consumeShareLink(e,N());window.addEventListener("hashchange",function(){e.options.consumeShareLink(e,N())})}e.options.collapsePrefixesOnLoad&&e.collapsePrefixes(!0)},N=function(){var e=null;window.location.hash.length>1&&(e=n.deparam(location.href.split("#")[1]));e&&"query"in e||!(window.location.search.length>1)||(e=n.deparam(window.location.search.substring(1)));return e},x=function(e){e.cursor=n(".CodeMirror-cursor");e.buttons&&e.buttons.is(":visible")&&e.cursor.length>0&&(t.elementsOverlap(e.cursor,e.buttons)?e.buttons.find("svg").attr("opacity","0.2"):e.buttons.find("svg").attr("opacity","1.0"))},I=function(i,r){i.queryValid=!0;i.clearGutter("gutterErrorBar");for(var o=null,t=0;t0&&e("./tooltip")(i,E,function(){var e=[];o.possibleCurrent.forEach(function(i){e.push(""+n("
").text(i).html()+"")});return"This line is invalid. Expected: "+e.join(", ")});E.style.marginTop="2px";E.style.marginLeft="2px";E.className="parseErrorIcon";i.setGutterMarker(t,"gutterErrorBar",E);i.queryValid=!1;break}}i.prevQueryValid=i.queryValid;if(r&&null!=o&&void 0!=o.stack){var u=o.stack,c=o.stack.length;c>1?i.queryValid=!1:1==c&&"solutionModifier"!=u[0]&&"?limitOffsetClauses"!=u[0]&&"?offsetClause"!=u[0]&&(i.queryValid=!1)}};n.extend(p,o);p.Autocompleters={};p.registerAutocompleter=function(e,i){p.Autocompleters[e]=i;u(p.defaults,e)};p.autoComplete=function(e){e.autocompleters.autoComplete(!1)};p.registerAutocompleter("prefixes",e("./autocompleters/prefixes.js"));p.registerAutocompleter("properties",e("./autocompleters/properties.js"));p.registerAutocompleter("classes",e("./autocompleters/classes.js"));p.registerAutocompleter("variables",e("./autocompleters/variables.js"));p.positionButtons=function(e){var i=n(e.getWrapperElement()).find(".CodeMirror-vscrollbar"),r=0;i.is(":visible")&&(r=i.outerWidth());e.buttons.is(":visible")&&e.buttons.css("right",r+4)};p.createShareLink=function(e){var i={};window.location.hash.length>1&&(i=n.deparam(window.location.hash.substring(1)));i.query=e.getValue();return i};p.getAsCurl=function(i,r){var n=e("./curl.js");return n.createCurlString(i,r)};p.consumeShareLink=function(e,i){i&&i.query&&e.setValue(i.query)};p.drawButtons=function(e){e.buttons=n("
").appendTo(n(e.getWrapperElement()));if(e.options.createShareLink){var i=n(s.svg.getElement(a.share));i.click(function(r){r.stopPropagation();var o=n("
").appendTo(e.buttons);n("html").click(function(){o&&o.remove()});o.click(function(e){e.stopPropagation()});var t=n("").val(location.protocol+"//"+location.host+location.pathname+location.search+"#"+n.param(e.options.createShareLink(e)));t.focus(function(){var e=n(this);e.select();e.mouseup(function(){e.unbind("mouseup");return!1})});o.empty().append(n("
",{"class":"inputWrapper"}).append(t));if(e.options.createShortLink){o.addClass("enableShort");n("").addClass("yasqe_btn yasqe_btn-sm yasqe_btn-primary").click(function(){n(this).parent().find("button").attr("disabled","disabled");e.options.createShortLink(t.val(),function(e,i){if(e){t.remove();o.find(".inputWrapper").append(n("",{"class":"shortlinkErr"}).text(e))}else t.val(i).focus()})}).appendTo(o)}n("").addClass("yasqe_btn yasqe_btn-sm yasqe_btn-primary").click(function(){n(this).parent().find("button").attr("disabled","disabled");t.val(p.getAsCurl(e)).focus()}).appendTo(o);var s=i.position();o.css("top",s.top+i.outerHeight()+parseInt(o.css("padding-top"))+"px").css("left",s.left+i.outerWidth()-o.outerWidth()+"px");t.focus()}).addClass("yasqe_share").attr("title","Share your query").appendTo(e.buttons)}var r=n("
",{"class":"fullscreenToggleBtns"}).append(n(s.svg.getElement(a.fullscreen)).addClass("yasqe_fullscreenBtn").attr("title","Set editor full screen").click(function(){e.setOption("fullScreen",!0)})).append(n(s.svg.getElement(a.smallscreen)).addClass("yasqe_smallscreenBtn").attr("title","Set editor to normale size").click(function(){e.setOption("fullScreen",!1)}));e.buttons.append(r);if(e.options.sparql.showQueryButton){n("
",{"class":"yasqe_queryButton"}).click(function(){if(n(this).hasClass("query_busy")){e.xhr&&e.xhr.abort();p.updateQueryButton(e)}else e.query()}).appendTo(e.buttons);p.updateQueryButton(e)}};var m={busy:"loader",valid:"query",error:"queryInvalid"};p.updateQueryButton=function(e,i){var r=n(e.getWrapperElement()).find(".yasqe_queryButton");if(0!=r.length){if(!i){i="valid";e.queryValid===!1&&(i="error")}if(i!=e.queryStatus){r.empty().removeClass(function(e,i){return i.split(" ").filter(function(e){return 0==e.indexOf("query_")}).join(" ")});if("busy"==i){r.append(n("
",{"class":"loader"}));e.queryStatus=i}else if("valid"==i||"error"==i){r.addClass("query_"+i);s.svg.draw(r,a[m[i]]);e.queryStatus=i}}}};p.fromTextArea=function(e,i){i=l(i);var r=(n("
",{"class":"yasqe"}).insertBefore(n(e)).append(n(e)),E(o.fromTextArea(e,i)));d(r);return r};p.storeQuery=function(e){var i=t.getPersistencyId(e,e.options.persistent);i&&s.storage.set(i,e.getValue(),"month")};p.commentLines=function(e){for(var i=e.getCursor(!0).line,r=e.getCursor(!1).line,n=Math.min(i,r),o=Math.max(i,r),t=!0,s=n;o>=s;s++){var a=e.getLine(s);if(0==a.length||"#"!=a.substring(0,1)){t=!1;break}}for(var s=n;o>=s;s++)t?e.replaceRange("",{line:s,ch:0},{line:s,ch:1}):e.replaceRange("#",{line:s,ch:0})};p.copyLineUp=function(e){var i=e.getCursor(),r=e.lineCount();e.replaceRange("\n",{line:r-1,ch:e.getLine(r-1).length});for(var n=r;n>i.line;n--){var o=e.getLine(n-1);e.replaceRange(o,{line:n,ch:0},{line:n,ch:e.getLine(n).length})}};p.copyLineDown=function(e){p.copyLineUp(e);var i=e.getCursor();i.line++;e.setCursor(i)};p.doAutoFormat=function(e){if(e.somethingSelected()){var i={line:e.getCursor(!1).line,ch:e.getSelection().length};L(e,e.getCursor(!0),i)}else{var r=e.lineCount(),n=e.getTextArea().value.length;L(e,{line:0,ch:0},{line:r,ch:n})}};var L=function(e,i,r){var n=e.indexFromPos(i),o=e.indexFromPos(r),t=T(e.getValue(),n,o);e.operation(function(){e.replaceRange(t,i,r);for(var o=e.posFromIndex(n).line,s=e.posFromIndex(n+t.length).line,a=o;s>=a;a++)e.indentLine(a,"smart")})},T=function(e,i,r){e=e.substring(i,r);var t=[["keyword","ws","prefixed","ws","uri"],["keyword","ws","uri"]],s=["{",".",";"],a=["}"],p=function(e,i){for(var r=0;rp)break;tokenType=e.getTokenTypeAt(o.Pos(i,p+1));if(!/^(comment|string)/.test(tokenType))return p+1;t=p-1}else{if(1==a)break;a=1;t=n.length}}}var o=function(){try{return e("codemirror")}catch(i){return window.CodeMirror}}(),t=e("./tokenUtils.js"),s="PREFIX";i.exports={findFirstPrefixLine:function(e){for(var i=e.lastLine(),r=0;i>=r;++r)if(n(e,r)>=0)return r}};o.registerHelper("fold","prefix",function(e,i){function r(){for(var i=!1,r=a-1;r>=0;r--)if(e.getLine(r).toUpperCase().indexOf(s)>=0){i=!0;break}return i}var a=i.line,p=e.getLine(a),l=function(i,r){var n=e.getTokenAt(o.Pos(i,r+1));if(!n||"keyword"!=n.type)return-1;var s=t.getNextNonWsToken(e,i,n.end+1);if(!s||"string-2"!=s.type)return-1;var a=t.getNextNonWsToken(e,i,s.end+1);return a&&"variable-3"==a.type?a.end:-1};if(!r()){var E=n(e,a,i.ch,p);if(null!=E){for(var u,c="{",d=!1,N=e.lastLine(),x=l(a,E),I=a,m=a;N>=m&&!d;++m)for(var L=e.getLine(m),T=m==a?E+1:0;;){!d&&L.indexOf(c)>=0&&(d=!0);var A=L.toUpperCase().indexOf(s,T);if(!(A>=0))break;if((u=l(m,A))>0){x=u;I=m;T=x}T++}return{from:o.Pos(a,E+s.length),to:o.Pos(I,x)}}}})},{"./tokenUtils.js":34,codemirror:void 0}],32:[function(e,i,r){"use strict";var n=function(e,i){var r=e.getPrefixesFromQuery();if("string"==typeof i)o(e,i);else for(var n in i)n in r||o(e,n+": <"+i[n]+">");e.collapsePrefixes(!1)},o=function(e,i){for(var r=null,n=0,o=e.lineCount(),t=0;o>t;t++){var s=e.getNextNonWsToken(t);if(null!=s&&("PREFIX"==s.string||"BASE"==s.string)){r=s;n=t}}if(null==r)e.replaceRange("PREFIX "+i+"\n",{line:0,ch:0});else{var p=a(e,n);e.replaceRange("\n"+p+"PREFIX "+i,{line:n})}e.collapsePrefixes(!1)},t=function(e,i){var r=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")};for(var n in i)e.setValue(e.getValue().replace(new RegExp("PREFIX\\s*"+n+":\\s*"+r("<"+i[n]+">")+"\\s*","ig"),""));e.collapsePrefixes(!1)},s=function(e){for(var i={},r=!0,n=function(o,s){if(r){s||(s=1);var a=e.getNextNonWsToken(t,s);if(a){-1==a.state.possibleCurrent.indexOf("PREFIX")&&-1==a.state.possibleNext.indexOf("PREFIX")&&(r=!1);if("PREFIX"==a.string.toUpperCase()){var p=e.getNextNonWsToken(t,a.end+1);if(p){var l=e.getNextNonWsToken(t,p.end+1);if(l){var E=l.string;0==E.indexOf("<")&&(E=E.substring(1));">"==E.slice(-1)&&(E=E.substring(0,E.length-1));i[p.string.slice(0,-1)]=E;n(o,l.end+1)}else n(o,p.end+1)}else n(o,a.end+1)}else n(o,a.end+1)}}},o=e.lineCount(),t=0;o>t&&r;t++)n(t);return i},a=function(e,i,r){void 0==r&&(r=1);var n=e.getTokenAt({line:i,ch:r});return null==n||void 0==n||"ws"!=n.type?"":n.string+a(e,i,n.end+1)};i.exports={addPrefixes:n,getPrefixesFromQuery:s,removePrefixes:t}},{}],33:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=e("./utils.js"),t=e("./main.js");t.getAjaxConfig=function(i,r){var o="function"==typeof r?r:null,a="object"==typeof r?r:{};i.options.sparql&&(a=n.extend({},i.options.sparql,a));a.handlers&&n.extend(!0,a.callbacks,a.handlers);if(a.endpoint&&0!=a.endpoint.length){var p={url:"function"==typeof a.endpoint?a.endpoint(i):a.endpoint,type:"function"==typeof a.requestMethod?a.requestMethod(i):a.requestMethod,headers:{Accept:s(i,a)}};a.xhrFields&&(p.xhrFields=a.xhrFields);var l=!1;if(a.callbacks)for(var E in a.callbacks)if(a.callbacks[E]){l=!0;p[E]=a.callbacks[E]}p.data=i.getUrlArguments(a);if(l||o){o&&(p.complete=o);a.headers&&!n.isEmptyObject(a.headers)&&n.extend(p.headers,a.headers);var u=new Date,c=function(){i.lastQueryDuration=new Date-u;t.updateQueryButton(i);i.setBackdrop(!1)},d=[function(){e("./main.js").signal(i,"queryFinish",arguments)},c];p.complete&&d.push(p.complete);p.complete=d;return p}}};t.executeQuery=function(e,i){t.signal(e,"query",e,i);t.updateQueryButton(e,"busy");e.setBackdrop(!0);e.xhr=n.ajax(t.getAjaxConfig(e,i))};t.getUrlArguments=function(e,i){var r=e.getQueryMode(),t=[{name:o.getString(e,e.options.sparql.queryName),value:i.getQueryForAjax?i.getQueryForAjax(e):e.getValue()}];if(i.namedGraphs&&i.namedGraphs.length>0)for(var s="query"==r?"named-graph-uri":"using-named-graph-uri ",a=0;a0)for(var s="query"==r?"default-graph-uri":"using-graph-uri ",a=0;a0&&n.merge(t,i.args);return t};var s=function(e,i){var r=null;if(!i.acceptHeader||i.acceptHeaderGraph||i.acceptHeaderSelect||i.acceptHeaderUpdate)if("update"==e.getQueryMode())r="function"==typeof i.acceptHeader?i.acceptHeaderUpdate(e):i.acceptHeaderUpdate;else{var n=e.getQueryType();r="DESCRIBE"==n||"CONSTRUCT"==n?"function"==typeof i.acceptHeaderGraph?i.acceptHeaderGraph(e):i.acceptHeaderGraph:"function"==typeof i.acceptHeaderSelect?i.acceptHeaderSelect(e):i.acceptHeaderSelect}else r="function"==typeof i.acceptHeader?i.acceptHeader(e):i.acceptHeader;return r};i.exports={getAjaxConfig:t.getAjaxConfig}},{"./main.js":30,"./utils.js":36,jquery:void 0}],34:[function(e,i,r){"use strict";var n=function(e,i,r){r||(r=e.getCursor());i||(i=e.getTokenAt(r));var o=e.getTokenAt({line:r.line,ch:i.start});if(null!=o.type&&"ws"!=o.type&&null!=i.type&&"ws"!=i.type){i.start=o.start;i.string=o.string+i.string;return n(e,i,{line:r.line,ch:o.start})}if(null!=i.type&&"ws"==i.type){i.start=i.start+1;i.string=i.string.substring(1);return i}return i},o=function(e,i,r){var n=e.getTokenAt({line:i,ch:r.start});null!=n&&"ws"==n.type&&(n=o(e,i,n));return n},t=function(e,i,r){void 0==r&&(r=1);var n=e.getTokenAt({line:i,ch:r});return null==n||void 0==n||n.end").addClass("yasqe_tooltip").html(r).appendTo(i);t()},function(){n(".yasqe_tooltip").remove()});var t=function(){if(n(e.getWrapperElement()).offset().top>=o.offset().top){o.css("bottom","auto");o.css("top","26px")}}}},{"./utils.js":36,jquery:void 0}],36:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=function(e,i){var r=!1;try{void 0!==e[i]&&(r=!0)}catch(n){}return r},t=function(e,i){var r=null;i&&(r="string"==typeof i?i:i(e));return r},s=function(){function e(e){var i,r,o;i=n(e).offset();r=n(e).width();o=n(e).height();return[[i.left,i.left+r],[i.top,i.top+o]]}function i(e,i){var r,n;r=e[0]n[0]||r[0]===n[0]}return function(r,n){var o=e(r),t=e(n);return i(o[0],t[0])&&i(o[1],t[1])}}(),a=function(e,i){return"function"==typeof i?i(e):i};i.exports={keyExists:o,getPersistencyId:t,elementsOverlap:s,getString:a}},{jquery:void 0}]},{},[1])(1)}); +(function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var i;i="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this;i.YASQE=e()}})(function(){var e;return function i(e,r,n){function o(s,a){if(!r[s]){if(!e[s]){var p="function"==typeof require&&require;if(!a&&p)return p(s,!0);if(t)return t(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var E=r[s]={exports:{}};e[s][0].call(E.exports,function(i){var r=e[s][1][i];return o(r?r:i)},E,E.exports,i,e,r,n)}return r[s].exports}for(var t="function"==typeof require&&require,s=0;s":[],"<=":[],">=":[],IN:[],NOT:[],"+":[],"-":[],INTEGER_POSITIVE:[],DECIMAL_POSITIVE:[],DOUBLE_POSITIVE:[],INTEGER_NEGATIVE:[],DECIMAL_NEGATIVE:[],DOUBLE_NEGATIVE:[],";":[]},"*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])":{"+":["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],"-":["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER_POSITIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_POSITIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_POSITIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER_NEGATIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_NEGATIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_NEGATIVE:["or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],AS:[],")":[],",":[],"||":[],"&&":[],"=":[],"!=":[],"<":[],">":[],"<=":[],">=":[],IN:[],NOT:[],";":[]},"*or([baseDecl,prefixDecl])":{BASE:["or([baseDecl,prefixDecl])","*or([baseDecl,prefixDecl])"],PREFIX:["or([baseDecl,prefixDecl])","*or([baseDecl,prefixDecl])"],$:[],CONSTRUCT:[],DESCRIBE:[],ASK:[],INSERT:[],DELETE:[],SELECT:[],LOAD:[],CLEAR:[],DROP:[],ADD:[],MOVE:[],COPY:[],CREATE:[],WITH:[]},"*or([var,[ (,expression,AS,var,)]])":{"(":["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],VAR1:["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],VAR2:["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],WHERE:[],"{":[],FROM:[]},"*orderCondition":{ASC:["orderCondition","*orderCondition"],DESC:["orderCondition","*orderCondition"],VAR1:["orderCondition","*orderCondition"],VAR2:["orderCondition","*orderCondition"],"(":["orderCondition","*orderCondition"],STR:["orderCondition","*orderCondition"],LANG:["orderCondition","*orderCondition"],LANGMATCHES:["orderCondition","*orderCondition"],DATATYPE:["orderCondition","*orderCondition"],BOUND:["orderCondition","*orderCondition"],IRI:["orderCondition","*orderCondition"],URI:["orderCondition","*orderCondition"],BNODE:["orderCondition","*orderCondition"],RAND:["orderCondition","*orderCondition"],ABS:["orderCondition","*orderCondition"],CEIL:["orderCondition","*orderCondition"],FLOOR:["orderCondition","*orderCondition"],ROUND:["orderCondition","*orderCondition"],CONCAT:["orderCondition","*orderCondition"],STRLEN:["orderCondition","*orderCondition"],UCASE:["orderCondition","*orderCondition"],LCASE:["orderCondition","*orderCondition"],ENCODE_FOR_URI:["orderCondition","*orderCondition"],CONTAINS:["orderCondition","*orderCondition"],STRSTARTS:["orderCondition","*orderCondition"],STRENDS:["orderCondition","*orderCondition"],STRBEFORE:["orderCondition","*orderCondition"],STRAFTER:["orderCondition","*orderCondition"],YEAR:["orderCondition","*orderCondition"],MONTH:["orderCondition","*orderCondition"],DAY:["orderCondition","*orderCondition"],HOURS:["orderCondition","*orderCondition"],MINUTES:["orderCondition","*orderCondition"],SECONDS:["orderCondition","*orderCondition"],TIMEZONE:["orderCondition","*orderCondition"],TZ:["orderCondition","*orderCondition"],NOW:["orderCondition","*orderCondition"],UUID:["orderCondition","*orderCondition"],STRUUID:["orderCondition","*orderCondition"],MD5:["orderCondition","*orderCondition"],SHA1:["orderCondition","*orderCondition"],SHA256:["orderCondition","*orderCondition"],SHA384:["orderCondition","*orderCondition"],SHA512:["orderCondition","*orderCondition"],COALESCE:["orderCondition","*orderCondition"],IF:["orderCondition","*orderCondition"],STRLANG:["orderCondition","*orderCondition"],STRDT:["orderCondition","*orderCondition"],SAMETERM:["orderCondition","*orderCondition"],ISIRI:["orderCondition","*orderCondition"],ISURI:["orderCondition","*orderCondition"],ISBLANK:["orderCondition","*orderCondition"],ISLITERAL:["orderCondition","*orderCondition"],ISNUMERIC:["orderCondition","*orderCondition"],SUBSTR:["orderCondition","*orderCondition"],REPLACE:["orderCondition","*orderCondition"],REGEX:["orderCondition","*orderCondition"],EXISTS:["orderCondition","*orderCondition"],NOT:["orderCondition","*orderCondition"],IRI_REF:["orderCondition","*orderCondition"],PNAME_LN:["orderCondition","*orderCondition"],PNAME_NS:["orderCondition","*orderCondition"],VALUES:[],LIMIT:[],OFFSET:[],$:[],"}":[]},"*usingClause":{USING:["usingClause","*usingClause"],WHERE:[]},"*var":{VAR1:["var","*var"],VAR2:["var","*var"],")":[]},"*varOrIRIref":{VAR1:["varOrIRIref","*varOrIRIref"],VAR2:["varOrIRIref","*varOrIRIref"],IRI_REF:["varOrIRIref","*varOrIRIref"],PNAME_LN:["varOrIRIref","*varOrIRIref"],PNAME_NS:["varOrIRIref","*varOrIRIref"],ORDER:[],HAVING:[],GROUP:[],LIMIT:[],OFFSET:[],WHERE:[],"{":[],FROM:[],VALUES:[],$:[]},"+graphNode":{"(":["graphNode","*graphNode"],"[":["graphNode","*graphNode"],VAR1:["graphNode","*graphNode"],VAR2:["graphNode","*graphNode"],NIL:["graphNode","*graphNode"],IRI_REF:["graphNode","*graphNode"],TRUE:["graphNode","*graphNode"],FALSE:["graphNode","*graphNode"],BLANK_NODE_LABEL:["graphNode","*graphNode"],ANON:["graphNode","*graphNode"],PNAME_LN:["graphNode","*graphNode"],PNAME_NS:["graphNode","*graphNode"],STRING_LITERAL1:["graphNode","*graphNode"],STRING_LITERAL2:["graphNode","*graphNode"],STRING_LITERAL_LONG1:["graphNode","*graphNode"],STRING_LITERAL_LONG2:["graphNode","*graphNode"],INTEGER:["graphNode","*graphNode"],DECIMAL:["graphNode","*graphNode"],DOUBLE:["graphNode","*graphNode"],INTEGER_POSITIVE:["graphNode","*graphNode"],DECIMAL_POSITIVE:["graphNode","*graphNode"],DOUBLE_POSITIVE:["graphNode","*graphNode"],INTEGER_NEGATIVE:["graphNode","*graphNode"],DECIMAL_NEGATIVE:["graphNode","*graphNode"],DOUBLE_NEGATIVE:["graphNode","*graphNode"]},"+graphNodePath":{"(":["graphNodePath","*graphNodePath"],"[":["graphNodePath","*graphNodePath"],VAR1:["graphNodePath","*graphNodePath"],VAR2:["graphNodePath","*graphNodePath"],NIL:["graphNodePath","*graphNodePath"],IRI_REF:["graphNodePath","*graphNodePath"],TRUE:["graphNodePath","*graphNodePath"],FALSE:["graphNodePath","*graphNodePath"],BLANK_NODE_LABEL:["graphNodePath","*graphNodePath"],ANON:["graphNodePath","*graphNodePath"],PNAME_LN:["graphNodePath","*graphNodePath"],PNAME_NS:["graphNodePath","*graphNodePath"],STRING_LITERAL1:["graphNodePath","*graphNodePath"],STRING_LITERAL2:["graphNodePath","*graphNodePath"],STRING_LITERAL_LONG1:["graphNodePath","*graphNodePath"],STRING_LITERAL_LONG2:["graphNodePath","*graphNodePath"],INTEGER:["graphNodePath","*graphNodePath"],DECIMAL:["graphNodePath","*graphNodePath"],DOUBLE:["graphNodePath","*graphNodePath"],INTEGER_POSITIVE:["graphNodePath","*graphNodePath"],DECIMAL_POSITIVE:["graphNodePath","*graphNodePath"],DOUBLE_POSITIVE:["graphNodePath","*graphNodePath"],INTEGER_NEGATIVE:["graphNodePath","*graphNodePath"],DECIMAL_NEGATIVE:["graphNodePath","*graphNodePath"],DOUBLE_NEGATIVE:["graphNodePath","*graphNodePath"]},"+groupCondition":{"(":["groupCondition","*groupCondition"],STR:["groupCondition","*groupCondition"],LANG:["groupCondition","*groupCondition"],LANGMATCHES:["groupCondition","*groupCondition"],DATATYPE:["groupCondition","*groupCondition"],BOUND:["groupCondition","*groupCondition"],IRI:["groupCondition","*groupCondition"],URI:["groupCondition","*groupCondition"],BNODE:["groupCondition","*groupCondition"],RAND:["groupCondition","*groupCondition"],ABS:["groupCondition","*groupCondition"],CEIL:["groupCondition","*groupCondition"],FLOOR:["groupCondition","*groupCondition"],ROUND:["groupCondition","*groupCondition"],CONCAT:["groupCondition","*groupCondition"],STRLEN:["groupCondition","*groupCondition"],UCASE:["groupCondition","*groupCondition"],LCASE:["groupCondition","*groupCondition"],ENCODE_FOR_URI:["groupCondition","*groupCondition"],CONTAINS:["groupCondition","*groupCondition"],STRSTARTS:["groupCondition","*groupCondition"],STRENDS:["groupCondition","*groupCondition"],STRBEFORE:["groupCondition","*groupCondition"],STRAFTER:["groupCondition","*groupCondition"],YEAR:["groupCondition","*groupCondition"],MONTH:["groupCondition","*groupCondition"],DAY:["groupCondition","*groupCondition"],HOURS:["groupCondition","*groupCondition"],MINUTES:["groupCondition","*groupCondition"],SECONDS:["groupCondition","*groupCondition"],TIMEZONE:["groupCondition","*groupCondition"],TZ:["groupCondition","*groupCondition"],NOW:["groupCondition","*groupCondition"],UUID:["groupCondition","*groupCondition"],STRUUID:["groupCondition","*groupCondition"],MD5:["groupCondition","*groupCondition"],SHA1:["groupCondition","*groupCondition"],SHA256:["groupCondition","*groupCondition"],SHA384:["groupCondition","*groupCondition"],SHA512:["groupCondition","*groupCondition"],COALESCE:["groupCondition","*groupCondition"],IF:["groupCondition","*groupCondition"],STRLANG:["groupCondition","*groupCondition"],STRDT:["groupCondition","*groupCondition"],SAMETERM:["groupCondition","*groupCondition"],ISIRI:["groupCondition","*groupCondition"],ISURI:["groupCondition","*groupCondition"],ISBLANK:["groupCondition","*groupCondition"],ISLITERAL:["groupCondition","*groupCondition"],ISNUMERIC:["groupCondition","*groupCondition"],VAR1:["groupCondition","*groupCondition"],VAR2:["groupCondition","*groupCondition"],SUBSTR:["groupCondition","*groupCondition"],REPLACE:["groupCondition","*groupCondition"],REGEX:["groupCondition","*groupCondition"],EXISTS:["groupCondition","*groupCondition"],NOT:["groupCondition","*groupCondition"],IRI_REF:["groupCondition","*groupCondition"],PNAME_LN:["groupCondition","*groupCondition"],PNAME_NS:["groupCondition","*groupCondition"]},"+havingCondition":{"(":["havingCondition","*havingCondition"],STR:["havingCondition","*havingCondition"],LANG:["havingCondition","*havingCondition"],LANGMATCHES:["havingCondition","*havingCondition"],DATATYPE:["havingCondition","*havingCondition"],BOUND:["havingCondition","*havingCondition"],IRI:["havingCondition","*havingCondition"],URI:["havingCondition","*havingCondition"],BNODE:["havingCondition","*havingCondition"],RAND:["havingCondition","*havingCondition"],ABS:["havingCondition","*havingCondition"],CEIL:["havingCondition","*havingCondition"],FLOOR:["havingCondition","*havingCondition"],ROUND:["havingCondition","*havingCondition"],CONCAT:["havingCondition","*havingCondition"],STRLEN:["havingCondition","*havingCondition"],UCASE:["havingCondition","*havingCondition"],LCASE:["havingCondition","*havingCondition"],ENCODE_FOR_URI:["havingCondition","*havingCondition"],CONTAINS:["havingCondition","*havingCondition"],STRSTARTS:["havingCondition","*havingCondition"],STRENDS:["havingCondition","*havingCondition"],STRBEFORE:["havingCondition","*havingCondition"],STRAFTER:["havingCondition","*havingCondition"],YEAR:["havingCondition","*havingCondition"],MONTH:["havingCondition","*havingCondition"],DAY:["havingCondition","*havingCondition"],HOURS:["havingCondition","*havingCondition"],MINUTES:["havingCondition","*havingCondition"],SECONDS:["havingCondition","*havingCondition"],TIMEZONE:["havingCondition","*havingCondition"],TZ:["havingCondition","*havingCondition"],NOW:["havingCondition","*havingCondition"],UUID:["havingCondition","*havingCondition"],STRUUID:["havingCondition","*havingCondition"],MD5:["havingCondition","*havingCondition"],SHA1:["havingCondition","*havingCondition"],SHA256:["havingCondition","*havingCondition"],SHA384:["havingCondition","*havingCondition"],SHA512:["havingCondition","*havingCondition"],COALESCE:["havingCondition","*havingCondition"],IF:["havingCondition","*havingCondition"],STRLANG:["havingCondition","*havingCondition"],STRDT:["havingCondition","*havingCondition"],SAMETERM:["havingCondition","*havingCondition"],ISIRI:["havingCondition","*havingCondition"],ISURI:["havingCondition","*havingCondition"],ISBLANK:["havingCondition","*havingCondition"],ISLITERAL:["havingCondition","*havingCondition"],ISNUMERIC:["havingCondition","*havingCondition"],SUBSTR:["havingCondition","*havingCondition"],REPLACE:["havingCondition","*havingCondition"],REGEX:["havingCondition","*havingCondition"],EXISTS:["havingCondition","*havingCondition"],NOT:["havingCondition","*havingCondition"],IRI_REF:["havingCondition","*havingCondition"],PNAME_LN:["havingCondition","*havingCondition"],PNAME_NS:["havingCondition","*havingCondition"]},"+or([var,[ (,expression,AS,var,)]])":{"(":["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],VAR1:["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"],VAR2:["or([var,[ (,expression,AS,var,)]])","*or([var,[ (,expression,AS,var,)]])"]},"+orderCondition":{ASC:["orderCondition","*orderCondition"],DESC:["orderCondition","*orderCondition"],VAR1:["orderCondition","*orderCondition"],VAR2:["orderCondition","*orderCondition"],"(":["orderCondition","*orderCondition"],STR:["orderCondition","*orderCondition"],LANG:["orderCondition","*orderCondition"],LANGMATCHES:["orderCondition","*orderCondition"],DATATYPE:["orderCondition","*orderCondition"],BOUND:["orderCondition","*orderCondition"],IRI:["orderCondition","*orderCondition"],URI:["orderCondition","*orderCondition"],BNODE:["orderCondition","*orderCondition"],RAND:["orderCondition","*orderCondition"],ABS:["orderCondition","*orderCondition"],CEIL:["orderCondition","*orderCondition"],FLOOR:["orderCondition","*orderCondition"],ROUND:["orderCondition","*orderCondition"],CONCAT:["orderCondition","*orderCondition"],STRLEN:["orderCondition","*orderCondition"],UCASE:["orderCondition","*orderCondition"],LCASE:["orderCondition","*orderCondition"],ENCODE_FOR_URI:["orderCondition","*orderCondition"],CONTAINS:["orderCondition","*orderCondition"],STRSTARTS:["orderCondition","*orderCondition"],STRENDS:["orderCondition","*orderCondition"],STRBEFORE:["orderCondition","*orderCondition"],STRAFTER:["orderCondition","*orderCondition"],YEAR:["orderCondition","*orderCondition"],MONTH:["orderCondition","*orderCondition"],DAY:["orderCondition","*orderCondition"],HOURS:["orderCondition","*orderCondition"],MINUTES:["orderCondition","*orderCondition"],SECONDS:["orderCondition","*orderCondition"],TIMEZONE:["orderCondition","*orderCondition"],TZ:["orderCondition","*orderCondition"],NOW:["orderCondition","*orderCondition"],UUID:["orderCondition","*orderCondition"],STRUUID:["orderCondition","*orderCondition"],MD5:["orderCondition","*orderCondition"],SHA1:["orderCondition","*orderCondition"],SHA256:["orderCondition","*orderCondition"],SHA384:["orderCondition","*orderCondition"],SHA512:["orderCondition","*orderCondition"],COALESCE:["orderCondition","*orderCondition"],IF:["orderCondition","*orderCondition"],STRLANG:["orderCondition","*orderCondition"],STRDT:["orderCondition","*orderCondition"],SAMETERM:["orderCondition","*orderCondition"],ISIRI:["orderCondition","*orderCondition"],ISURI:["orderCondition","*orderCondition"],ISBLANK:["orderCondition","*orderCondition"],ISLITERAL:["orderCondition","*orderCondition"],ISNUMERIC:["orderCondition","*orderCondition"],SUBSTR:["orderCondition","*orderCondition"],REPLACE:["orderCondition","*orderCondition"],REGEX:["orderCondition","*orderCondition"],EXISTS:["orderCondition","*orderCondition"],NOT:["orderCondition","*orderCondition"],IRI_REF:["orderCondition","*orderCondition"],PNAME_LN:["orderCondition","*orderCondition"],PNAME_NS:["orderCondition","*orderCondition"]},"+varOrIRIref":{VAR1:["varOrIRIref","*varOrIRIref"],VAR2:["varOrIRIref","*varOrIRIref"],IRI_REF:["varOrIRIref","*varOrIRIref"], +PNAME_LN:["varOrIRIref","*varOrIRIref"],PNAME_NS:["varOrIRIref","*varOrIRIref"]},"?.":{".":["."],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:[],GRAPH:[],"{":[],OPTIONAL:[],MINUS:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"?DISTINCT":{DISTINCT:["DISTINCT"],"!":[],"+":[],"-":[],VAR1:[],VAR2:[],"(":[],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:[],TRUE:[],FALSE:[],COUNT:[],SUM:[],MIN:[],MAX:[],AVG:[],SAMPLE:[],GROUP_CONCAT:[],SUBSTR:[],REPLACE:[],REGEX:[],EXISTS:[],NOT:[],IRI_REF:[],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:[],PNAME_LN:[],PNAME_NS:[],"*":[]},"?GRAPH":{GRAPH:["GRAPH"],IRI_REF:[],PNAME_LN:[],PNAME_NS:[]},"?SILENT":{SILENT:["SILENT"],VAR1:[],VAR2:[],IRI_REF:[],PNAME_LN:[],PNAME_NS:[]},"?SILENT_1":{SILENT:["SILENT"],IRI_REF:[],PNAME_LN:[],PNAME_NS:[]},"?SILENT_2":{SILENT:["SILENT"],GRAPH:[],DEFAULT:[],NAMED:[],ALL:[]},"?SILENT_3":{SILENT:["SILENT"],GRAPH:[]},"?SILENT_4":{SILENT:["SILENT"],DEFAULT:[],GRAPH:[],IRI_REF:[],PNAME_LN:[],PNAME_NS:[]},"?WHERE":{WHERE:["WHERE"],"{":[]},"?[,,expression]":{",":["[,,expression]"],")":[]},"?[.,?constructTriples]":{".":["[.,?constructTriples]"],"}":[]},"?[.,?triplesBlock]":{".":["[.,?triplesBlock]"],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"?[.,?triplesTemplate]":{".":["[.,?triplesTemplate]"],"}":[],GRAPH:[]},"?[;,SEPARATOR,=,string]":{";":["[;,SEPARATOR,=,string]"],")":[]},"?[;,update]":{";":["[;,update]"],$:[]},"?[AS,var]":{AS:["[AS,var]"],")":[]},"?[INTO,graphRef]":{INTO:["[INTO,graphRef]"],";":[],$:[]},"?[or([verbPath,verbSimple]),objectList]":{VAR1:["[or([verbPath,verbSimple]),objectList]"],VAR2:["[or([verbPath,verbSimple]),objectList]"],"^":["[or([verbPath,verbSimple]),objectList]"],a:["[or([verbPath,verbSimple]),objectList]"],"!":["[or([verbPath,verbSimple]),objectList]"],"(":["[or([verbPath,verbSimple]),objectList]"],IRI_REF:["[or([verbPath,verbSimple]),objectList]"],PNAME_LN:["[or([verbPath,verbSimple]),objectList]"],PNAME_NS:["[or([verbPath,verbSimple]),objectList]"],";":[],".":[],"]":[],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"?[pathOneInPropertySet,*[|,pathOneInPropertySet]]":{a:["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],"^":["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],IRI_REF:["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],PNAME_LN:["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],PNAME_NS:["[pathOneInPropertySet,*[|,pathOneInPropertySet]]"],")":[]},"?[update1,?[;,update]]":{INSERT:["[update1,?[;,update]]"],DELETE:["[update1,?[;,update]]"],LOAD:["[update1,?[;,update]]"],CLEAR:["[update1,?[;,update]]"],DROP:["[update1,?[;,update]]"],ADD:["[update1,?[;,update]]"],MOVE:["[update1,?[;,update]]"],COPY:["[update1,?[;,update]]"],CREATE:["[update1,?[;,update]]"],WITH:["[update1,?[;,update]]"],$:[]},"?[verb,objectList]":{a:["[verb,objectList]"],VAR1:["[verb,objectList]"],VAR2:["[verb,objectList]"],IRI_REF:["[verb,objectList]"],PNAME_LN:["[verb,objectList]"],PNAME_NS:["[verb,objectList]"],";":[],".":[],"]":[],"}":[],GRAPH:[],"{":[],OPTIONAL:[],MINUS:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[]},"?argList":{NIL:["argList"],"(":["argList"],AS:[],")":[],",":[],"||":[],"&&":[],"=":[],"!=":[],"<":[],">":[],"<=":[],">=":[],IN:[],NOT:[],"+":[],"-":[],INTEGER_POSITIVE:[],DECIMAL_POSITIVE:[],DOUBLE_POSITIVE:[],INTEGER_NEGATIVE:[],DECIMAL_NEGATIVE:[],DOUBLE_NEGATIVE:[],"*":[],"/":[],";":[]},"?constructTriples":{VAR1:["constructTriples"],VAR2:["constructTriples"],NIL:["constructTriples"],"(":["constructTriples"],"[":["constructTriples"],IRI_REF:["constructTriples"],TRUE:["constructTriples"],FALSE:["constructTriples"],BLANK_NODE_LABEL:["constructTriples"],ANON:["constructTriples"],PNAME_LN:["constructTriples"],PNAME_NS:["constructTriples"],STRING_LITERAL1:["constructTriples"],STRING_LITERAL2:["constructTriples"],STRING_LITERAL_LONG1:["constructTriples"],STRING_LITERAL_LONG2:["constructTriples"],INTEGER:["constructTriples"],DECIMAL:["constructTriples"],DOUBLE:["constructTriples"],INTEGER_POSITIVE:["constructTriples"],DECIMAL_POSITIVE:["constructTriples"],DOUBLE_POSITIVE:["constructTriples"],INTEGER_NEGATIVE:["constructTriples"],DECIMAL_NEGATIVE:["constructTriples"],DOUBLE_NEGATIVE:["constructTriples"],"}":[]},"?groupClause":{GROUP:["groupClause"],VALUES:[],LIMIT:[],OFFSET:[],ORDER:[],HAVING:[],$:[],"}":[]},"?havingClause":{HAVING:["havingClause"],VALUES:[],LIMIT:[],OFFSET:[],ORDER:[],$:[],"}":[]},"?insertClause":{INSERT:["insertClause"],WHERE:[],USING:[]},"?limitClause":{LIMIT:["limitClause"],VALUES:[],$:[],"}":[]},"?limitOffsetClauses":{LIMIT:["limitOffsetClauses"],OFFSET:["limitOffsetClauses"],VALUES:[],$:[],"}":[]},"?offsetClause":{OFFSET:["offsetClause"],VALUES:[],$:[],"}":[]},"?or([DISTINCT,REDUCED])":{DISTINCT:["or([DISTINCT,REDUCED])"],REDUCED:["or([DISTINCT,REDUCED])"],"*":[],"(":[],VAR1:[],VAR2:[]},"?or([LANGTAG,[^^,iriRef]])":{LANGTAG:["or([LANGTAG,[^^,iriRef]])"],"^^":["or([LANGTAG,[^^,iriRef]])"],UNDEF:[],IRI_REF:[],TRUE:[],FALSE:[],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:[],a:[],VAR1:[],VAR2:[],"^":[],"!":[],"(":[],".":[],";":[],",":[],AS:[],")":[],"||":[],"&&":[],"=":[],"!=":[],"<":[],">":[],"<=":[],">=":[],IN:[],NOT:[],"+":[],"-":[],"*":[],"/":[],"}":[],"[":[],NIL:[],BLANK_NODE_LABEL:[],ANON:[],"]":[],GRAPH:[],"{":[],OPTIONAL:[],MINUS:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[]},"?or([[*,unaryExpression],[/,unaryExpression]])":{"*":["or([[*,unaryExpression],[/,unaryExpression]])"],"/":["or([[*,unaryExpression],[/,unaryExpression]])"],"+":[],"-":[],INTEGER_POSITIVE:[],DECIMAL_POSITIVE:[],DOUBLE_POSITIVE:[],INTEGER_NEGATIVE:[],DECIMAL_NEGATIVE:[],DOUBLE_NEGATIVE:[],AS:[],")":[],",":[],"||":[],"&&":[],"=":[],"!=":[],"<":[],">":[],"<=":[],">=":[],IN:[],NOT:[],";":[]},"?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])":{"=":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"!=":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"<":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],">":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"<=":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],">=":["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IN:["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],NOT:["or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],AS:[],")":[],",":[],"||":[],"&&":[],";":[]},"?orderClause":{ORDER:["orderClause"],VALUES:[],LIMIT:[],OFFSET:[],$:[],"}":[]},"?pathMod":{"*":["pathMod"],"?":["pathMod"],"+":["pathMod"],"{":["pathMod"],"|":[],"/":[],")":[],"(":[],"[":[],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:[]},"?triplesBlock":{VAR1:["triplesBlock"],VAR2:["triplesBlock"],NIL:["triplesBlock"],"(":["triplesBlock"],"[":["triplesBlock"],IRI_REF:["triplesBlock"],TRUE:["triplesBlock"],FALSE:["triplesBlock"],BLANK_NODE_LABEL:["triplesBlock"],ANON:["triplesBlock"],PNAME_LN:["triplesBlock"],PNAME_NS:["triplesBlock"],STRING_LITERAL1:["triplesBlock"],STRING_LITERAL2:["triplesBlock"],STRING_LITERAL_LONG1:["triplesBlock"],STRING_LITERAL_LONG2:["triplesBlock"],INTEGER:["triplesBlock"],DECIMAL:["triplesBlock"],DOUBLE:["triplesBlock"],INTEGER_POSITIVE:["triplesBlock"],DECIMAL_POSITIVE:["triplesBlock"],DOUBLE_POSITIVE:["triplesBlock"],INTEGER_NEGATIVE:["triplesBlock"],DECIMAL_NEGATIVE:["triplesBlock"],DOUBLE_NEGATIVE:["triplesBlock"],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},"?triplesTemplate":{VAR1:["triplesTemplate"],VAR2:["triplesTemplate"],NIL:["triplesTemplate"],"(":["triplesTemplate"],"[":["triplesTemplate"],IRI_REF:["triplesTemplate"],TRUE:["triplesTemplate"],FALSE:["triplesTemplate"],BLANK_NODE_LABEL:["triplesTemplate"],ANON:["triplesTemplate"],PNAME_LN:["triplesTemplate"],PNAME_NS:["triplesTemplate"],STRING_LITERAL1:["triplesTemplate"],STRING_LITERAL2:["triplesTemplate"],STRING_LITERAL_LONG1:["triplesTemplate"],STRING_LITERAL_LONG2:["triplesTemplate"],INTEGER:["triplesTemplate"],DECIMAL:["triplesTemplate"],DOUBLE:["triplesTemplate"],INTEGER_POSITIVE:["triplesTemplate"],DECIMAL_POSITIVE:["triplesTemplate"],DOUBLE_POSITIVE:["triplesTemplate"],INTEGER_NEGATIVE:["triplesTemplate"],DECIMAL_NEGATIVE:["triplesTemplate"],DOUBLE_NEGATIVE:["triplesTemplate"],"}":[],GRAPH:[]},"?whereClause":{WHERE:["whereClause"],"{":["whereClause"],ORDER:[],HAVING:[],GROUP:[],LIMIT:[],OFFSET:[],VALUES:[],$:[]},"[ (,*dataBlockValue,)]":{"(":["(","*dataBlockValue",")"]},"[ (,*var,)]":{"(":["(","*var",")"]},"[ (,expression,)]":{"(":["(","expression",")"]},"[ (,expression,AS,var,)]":{"(":["(","expression","AS","var",")"]},"[!=,numericExpression]":{"!=":["!=","numericExpression"]},"[&&,valueLogical]":{"&&":["&&","valueLogical"]},"[*,unaryExpression]":{"*":["*","unaryExpression"]},"[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]":{WHERE:["*datasetClause","WHERE","{","?triplesTemplate","}","solutionModifier"],FROM:["*datasetClause","WHERE","{","?triplesTemplate","}","solutionModifier"]},"[+,multiplicativeExpression]":{"+":["+","multiplicativeExpression"]},"[,,expression]":{",":[",","expression"]},"[,,integer,}]":{",":[",","integer","}"]},"[,,objectPath]":{",":[",","objectPath"]},"[,,object]":{",":[",","object"]},"[,,or([},[integer,}]])]":{",":[",","or([},[integer,}]])"]},"[-,multiplicativeExpression]":{"-":["-","multiplicativeExpression"]},"[.,?constructTriples]":{".":[".","?constructTriples"]},"[.,?triplesBlock]":{".":[".","?triplesBlock"]},"[.,?triplesTemplate]":{".":[".","?triplesTemplate"]},"[/,pathEltOrInverse]":{"/":["/","pathEltOrInverse"]},"[/,unaryExpression]":{"/":["/","unaryExpression"]},"[;,?[or([verbPath,verbSimple]),objectList]]":{";":[";","?[or([verbPath,verbSimple]),objectList]"]},"[;,?[verb,objectList]]":{";":[";","?[verb,objectList]"]},"[;,SEPARATOR,=,string]":{";":[";","SEPARATOR","=","string"]},"[;,update]":{";":[";","update"]},"[<,numericExpression]":{"<":["<","numericExpression"]},"[<=,numericExpression]":{"<=":["<=","numericExpression"]},"[=,numericExpression]":{"=":["=","numericExpression"]},"[>,numericExpression]":{">":[">","numericExpression"]},"[>=,numericExpression]":{">=":[">=","numericExpression"]},"[AS,var]":{AS:["AS","var"]},"[IN,expressionList]":{IN:["IN","expressionList"]},"[INTO,graphRef]":{INTO:["INTO","graphRef"]},"[NAMED,iriRef]":{NAMED:["NAMED","iriRef"]},"[NOT,IN,expressionList]":{NOT:["NOT","IN","expressionList"]},"[UNION,groupGraphPattern]":{UNION:["UNION","groupGraphPattern"]},"[^^,iriRef]":{"^^":["^^","iriRef"]},"[constructTemplate,*datasetClause,whereClause,solutionModifier]":{"{":["constructTemplate","*datasetClause","whereClause","solutionModifier"]},"[deleteClause,?insertClause]":{DELETE:["deleteClause","?insertClause"]},"[graphPatternNotTriples,?.,?triplesBlock]":{"{":["graphPatternNotTriples","?.","?triplesBlock"],OPTIONAL:["graphPatternNotTriples","?.","?triplesBlock"],MINUS:["graphPatternNotTriples","?.","?triplesBlock"],GRAPH:["graphPatternNotTriples","?.","?triplesBlock"],SERVICE:["graphPatternNotTriples","?.","?triplesBlock"],FILTER:["graphPatternNotTriples","?.","?triplesBlock"],BIND:["graphPatternNotTriples","?.","?triplesBlock"],VALUES:["graphPatternNotTriples","?.","?triplesBlock"]},"[integer,or([[,,or([},[integer,}]])],}])]":{INTEGER:["integer","or([[,,or([},[integer,}]])],}])"]},"[integer,}]":{INTEGER:["integer","}"]},"[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]":{INTEGER_POSITIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_POSITIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_POSITIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER_NEGATIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_NEGATIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_NEGATIVE:["or([numericLiteralPositive,numericLiteralNegative])","?or([[*,unaryExpression],[/,unaryExpression]])"]},"[or([verbPath,verbSimple]),objectList]":{VAR1:["or([verbPath,verbSimple])","objectList"],VAR2:["or([verbPath,verbSimple])","objectList"],"^":["or([verbPath,verbSimple])","objectList"],a:["or([verbPath,verbSimple])","objectList"],"!":["or([verbPath,verbSimple])","objectList"],"(":["or([verbPath,verbSimple])","objectList"],IRI_REF:["or([verbPath,verbSimple])","objectList"],PNAME_LN:["or([verbPath,verbSimple])","objectList"],PNAME_NS:["or([verbPath,verbSimple])","objectList"]},"[pathOneInPropertySet,*[|,pathOneInPropertySet]]":{a:["pathOneInPropertySet","*[|,pathOneInPropertySet]"],"^":["pathOneInPropertySet","*[|,pathOneInPropertySet]"],IRI_REF:["pathOneInPropertySet","*[|,pathOneInPropertySet]"],PNAME_LN:["pathOneInPropertySet","*[|,pathOneInPropertySet]"],PNAME_NS:["pathOneInPropertySet","*[|,pathOneInPropertySet]"]},"[quadsNotTriples,?.,?triplesTemplate]":{GRAPH:["quadsNotTriples","?.","?triplesTemplate"]},"[update1,?[;,update]]":{INSERT:["update1","?[;,update]"],DELETE:["update1","?[;,update]"],LOAD:["update1","?[;,update]"],CLEAR:["update1","?[;,update]"],DROP:["update1","?[;,update]"],ADD:["update1","?[;,update]"],MOVE:["update1","?[;,update]"],COPY:["update1","?[;,update]"],CREATE:["update1","?[;,update]"],WITH:["update1","?[;,update]"]},"[verb,objectList]":{a:["verb","objectList"],VAR1:["verb","objectList"],VAR2:["verb","objectList"],IRI_REF:["verb","objectList"],PNAME_LN:["verb","objectList"],PNAME_NS:["verb","objectList"]},"[|,pathOneInPropertySet]":{"|":["|","pathOneInPropertySet"]},"[|,pathSequence]":{"|":["|","pathSequence"]},"[||,conditionalAndExpression]":{"||":["||","conditionalAndExpression"]},add:{ADD:["ADD","?SILENT_4","graphOrDefault","TO","graphOrDefault"]},additiveExpression:{"!":["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],"+":["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],"-":["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],VAR1:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],VAR2:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],"(":["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STR:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],LANG:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],LANGMATCHES:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DATATYPE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],BOUND:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],IRI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],URI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],BNODE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],RAND:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ABS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],CEIL:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],FLOOR:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ROUND:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],CONCAT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRLEN:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],UCASE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],LCASE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ENCODE_FOR_URI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],CONTAINS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRSTARTS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRENDS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRBEFORE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRAFTER:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],YEAR:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MONTH:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DAY:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],HOURS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MINUTES:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SECONDS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],TIMEZONE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],TZ:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],NOW:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],UUID:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRUUID:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MD5:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SHA1:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SHA256:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SHA384:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SHA512:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],COALESCE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],IF:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRLANG:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRDT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SAMETERM:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISIRI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISURI:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISBLANK:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISLITERAL:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],ISNUMERIC:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],TRUE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],FALSE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],COUNT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SUM:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MIN:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],MAX:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],AVG:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SAMPLE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],GROUP_CONCAT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],SUBSTR:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],REPLACE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],REGEX:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],EXISTS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],NOT:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],IRI_REF:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRING_LITERAL1:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRING_LITERAL2:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRING_LITERAL_LONG1:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],STRING_LITERAL_LONG2:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"], +INTEGER_POSITIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_POSITIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_POSITIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER_NEGATIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_NEGATIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_NEGATIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],PNAME_LN:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],PNAME_NS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"]},aggregate:{COUNT:["COUNT","(","?DISTINCT","or([*,expression])",")"],SUM:["SUM","(","?DISTINCT","expression",")"],MIN:["MIN","(","?DISTINCT","expression",")"],MAX:["MAX","(","?DISTINCT","expression",")"],AVG:["AVG","(","?DISTINCT","expression",")"],SAMPLE:["SAMPLE","(","?DISTINCT","expression",")"],GROUP_CONCAT:["GROUP_CONCAT","(","?DISTINCT","expression","?[;,SEPARATOR,=,string]",")"]},allowBnodes:{"}":[]},allowVars:{"}":[]},argList:{NIL:["NIL"],"(":["(","?DISTINCT","expression","*[,,expression]",")"]},askQuery:{ASK:["ASK","*datasetClause","whereClause","solutionModifier"]},baseDecl:{BASE:["BASE","IRI_REF"]},bind:{BIND:["BIND","(","expression","AS","var",")"]},blankNode:{BLANK_NODE_LABEL:["BLANK_NODE_LABEL"],ANON:["ANON"]},blankNodePropertyList:{"[":["[","propertyListNotEmpty","]"]},blankNodePropertyListPath:{"[":["[","propertyListPathNotEmpty","]"]},booleanLiteral:{TRUE:["TRUE"],FALSE:["FALSE"]},brackettedExpression:{"(":["(","expression",")"]},builtInCall:{STR:["STR","(","expression",")"],LANG:["LANG","(","expression",")"],LANGMATCHES:["LANGMATCHES","(","expression",",","expression",")"],DATATYPE:["DATATYPE","(","expression",")"],BOUND:["BOUND","(","var",")"],IRI:["IRI","(","expression",")"],URI:["URI","(","expression",")"],BNODE:["BNODE","or([[ (,expression,)],NIL])"],RAND:["RAND","NIL"],ABS:["ABS","(","expression",")"],CEIL:["CEIL","(","expression",")"],FLOOR:["FLOOR","(","expression",")"],ROUND:["ROUND","(","expression",")"],CONCAT:["CONCAT","expressionList"],SUBSTR:["substringExpression"],STRLEN:["STRLEN","(","expression",")"],REPLACE:["strReplaceExpression"],UCASE:["UCASE","(","expression",")"],LCASE:["LCASE","(","expression",")"],ENCODE_FOR_URI:["ENCODE_FOR_URI","(","expression",")"],CONTAINS:["CONTAINS","(","expression",",","expression",")"],STRSTARTS:["STRSTARTS","(","expression",",","expression",")"],STRENDS:["STRENDS","(","expression",",","expression",")"],STRBEFORE:["STRBEFORE","(","expression",",","expression",")"],STRAFTER:["STRAFTER","(","expression",",","expression",")"],YEAR:["YEAR","(","expression",")"],MONTH:["MONTH","(","expression",")"],DAY:["DAY","(","expression",")"],HOURS:["HOURS","(","expression",")"],MINUTES:["MINUTES","(","expression",")"],SECONDS:["SECONDS","(","expression",")"],TIMEZONE:["TIMEZONE","(","expression",")"],TZ:["TZ","(","expression",")"],NOW:["NOW","NIL"],UUID:["UUID","NIL"],STRUUID:["STRUUID","NIL"],MD5:["MD5","(","expression",")"],SHA1:["SHA1","(","expression",")"],SHA256:["SHA256","(","expression",")"],SHA384:["SHA384","(","expression",")"],SHA512:["SHA512","(","expression",")"],COALESCE:["COALESCE","expressionList"],IF:["IF","(","expression",",","expression",",","expression",")"],STRLANG:["STRLANG","(","expression",",","expression",")"],STRDT:["STRDT","(","expression",",","expression",")"],SAMETERM:["SAMETERM","(","expression",",","expression",")"],ISIRI:["ISIRI","(","expression",")"],ISURI:["ISURI","(","expression",")"],ISBLANK:["ISBLANK","(","expression",")"],ISLITERAL:["ISLITERAL","(","expression",")"],ISNUMERIC:["ISNUMERIC","(","expression",")"],REGEX:["regexExpression"],EXISTS:["existsFunc"],NOT:["notExistsFunc"]},clear:{CLEAR:["CLEAR","?SILENT_2","graphRefAll"]},collection:{"(":["(","+graphNode",")"]},collectionPath:{"(":["(","+graphNodePath",")"]},conditionalAndExpression:{"!":["valueLogical","*[&&,valueLogical]"],"+":["valueLogical","*[&&,valueLogical]"],"-":["valueLogical","*[&&,valueLogical]"],VAR1:["valueLogical","*[&&,valueLogical]"],VAR2:["valueLogical","*[&&,valueLogical]"],"(":["valueLogical","*[&&,valueLogical]"],STR:["valueLogical","*[&&,valueLogical]"],LANG:["valueLogical","*[&&,valueLogical]"],LANGMATCHES:["valueLogical","*[&&,valueLogical]"],DATATYPE:["valueLogical","*[&&,valueLogical]"],BOUND:["valueLogical","*[&&,valueLogical]"],IRI:["valueLogical","*[&&,valueLogical]"],URI:["valueLogical","*[&&,valueLogical]"],BNODE:["valueLogical","*[&&,valueLogical]"],RAND:["valueLogical","*[&&,valueLogical]"],ABS:["valueLogical","*[&&,valueLogical]"],CEIL:["valueLogical","*[&&,valueLogical]"],FLOOR:["valueLogical","*[&&,valueLogical]"],ROUND:["valueLogical","*[&&,valueLogical]"],CONCAT:["valueLogical","*[&&,valueLogical]"],STRLEN:["valueLogical","*[&&,valueLogical]"],UCASE:["valueLogical","*[&&,valueLogical]"],LCASE:["valueLogical","*[&&,valueLogical]"],ENCODE_FOR_URI:["valueLogical","*[&&,valueLogical]"],CONTAINS:["valueLogical","*[&&,valueLogical]"],STRSTARTS:["valueLogical","*[&&,valueLogical]"],STRENDS:["valueLogical","*[&&,valueLogical]"],STRBEFORE:["valueLogical","*[&&,valueLogical]"],STRAFTER:["valueLogical","*[&&,valueLogical]"],YEAR:["valueLogical","*[&&,valueLogical]"],MONTH:["valueLogical","*[&&,valueLogical]"],DAY:["valueLogical","*[&&,valueLogical]"],HOURS:["valueLogical","*[&&,valueLogical]"],MINUTES:["valueLogical","*[&&,valueLogical]"],SECONDS:["valueLogical","*[&&,valueLogical]"],TIMEZONE:["valueLogical","*[&&,valueLogical]"],TZ:["valueLogical","*[&&,valueLogical]"],NOW:["valueLogical","*[&&,valueLogical]"],UUID:["valueLogical","*[&&,valueLogical]"],STRUUID:["valueLogical","*[&&,valueLogical]"],MD5:["valueLogical","*[&&,valueLogical]"],SHA1:["valueLogical","*[&&,valueLogical]"],SHA256:["valueLogical","*[&&,valueLogical]"],SHA384:["valueLogical","*[&&,valueLogical]"],SHA512:["valueLogical","*[&&,valueLogical]"],COALESCE:["valueLogical","*[&&,valueLogical]"],IF:["valueLogical","*[&&,valueLogical]"],STRLANG:["valueLogical","*[&&,valueLogical]"],STRDT:["valueLogical","*[&&,valueLogical]"],SAMETERM:["valueLogical","*[&&,valueLogical]"],ISIRI:["valueLogical","*[&&,valueLogical]"],ISURI:["valueLogical","*[&&,valueLogical]"],ISBLANK:["valueLogical","*[&&,valueLogical]"],ISLITERAL:["valueLogical","*[&&,valueLogical]"],ISNUMERIC:["valueLogical","*[&&,valueLogical]"],TRUE:["valueLogical","*[&&,valueLogical]"],FALSE:["valueLogical","*[&&,valueLogical]"],COUNT:["valueLogical","*[&&,valueLogical]"],SUM:["valueLogical","*[&&,valueLogical]"],MIN:["valueLogical","*[&&,valueLogical]"],MAX:["valueLogical","*[&&,valueLogical]"],AVG:["valueLogical","*[&&,valueLogical]"],SAMPLE:["valueLogical","*[&&,valueLogical]"],GROUP_CONCAT:["valueLogical","*[&&,valueLogical]"],SUBSTR:["valueLogical","*[&&,valueLogical]"],REPLACE:["valueLogical","*[&&,valueLogical]"],REGEX:["valueLogical","*[&&,valueLogical]"],EXISTS:["valueLogical","*[&&,valueLogical]"],NOT:["valueLogical","*[&&,valueLogical]"],IRI_REF:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL1:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL2:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL_LONG1:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL_LONG2:["valueLogical","*[&&,valueLogical]"],INTEGER:["valueLogical","*[&&,valueLogical]"],DECIMAL:["valueLogical","*[&&,valueLogical]"],DOUBLE:["valueLogical","*[&&,valueLogical]"],INTEGER_POSITIVE:["valueLogical","*[&&,valueLogical]"],DECIMAL_POSITIVE:["valueLogical","*[&&,valueLogical]"],DOUBLE_POSITIVE:["valueLogical","*[&&,valueLogical]"],INTEGER_NEGATIVE:["valueLogical","*[&&,valueLogical]"],DECIMAL_NEGATIVE:["valueLogical","*[&&,valueLogical]"],DOUBLE_NEGATIVE:["valueLogical","*[&&,valueLogical]"],PNAME_LN:["valueLogical","*[&&,valueLogical]"],PNAME_NS:["valueLogical","*[&&,valueLogical]"]},conditionalOrExpression:{"!":["conditionalAndExpression","*[||,conditionalAndExpression]"],"+":["conditionalAndExpression","*[||,conditionalAndExpression]"],"-":["conditionalAndExpression","*[||,conditionalAndExpression]"],VAR1:["conditionalAndExpression","*[||,conditionalAndExpression]"],VAR2:["conditionalAndExpression","*[||,conditionalAndExpression]"],"(":["conditionalAndExpression","*[||,conditionalAndExpression]"],STR:["conditionalAndExpression","*[||,conditionalAndExpression]"],LANG:["conditionalAndExpression","*[||,conditionalAndExpression]"],LANGMATCHES:["conditionalAndExpression","*[||,conditionalAndExpression]"],DATATYPE:["conditionalAndExpression","*[||,conditionalAndExpression]"],BOUND:["conditionalAndExpression","*[||,conditionalAndExpression]"],IRI:["conditionalAndExpression","*[||,conditionalAndExpression]"],URI:["conditionalAndExpression","*[||,conditionalAndExpression]"],BNODE:["conditionalAndExpression","*[||,conditionalAndExpression]"],RAND:["conditionalAndExpression","*[||,conditionalAndExpression]"],ABS:["conditionalAndExpression","*[||,conditionalAndExpression]"],CEIL:["conditionalAndExpression","*[||,conditionalAndExpression]"],FLOOR:["conditionalAndExpression","*[||,conditionalAndExpression]"],ROUND:["conditionalAndExpression","*[||,conditionalAndExpression]"],CONCAT:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRLEN:["conditionalAndExpression","*[||,conditionalAndExpression]"],UCASE:["conditionalAndExpression","*[||,conditionalAndExpression]"],LCASE:["conditionalAndExpression","*[||,conditionalAndExpression]"],ENCODE_FOR_URI:["conditionalAndExpression","*[||,conditionalAndExpression]"],CONTAINS:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRSTARTS:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRENDS:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRBEFORE:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRAFTER:["conditionalAndExpression","*[||,conditionalAndExpression]"],YEAR:["conditionalAndExpression","*[||,conditionalAndExpression]"],MONTH:["conditionalAndExpression","*[||,conditionalAndExpression]"],DAY:["conditionalAndExpression","*[||,conditionalAndExpression]"],HOURS:["conditionalAndExpression","*[||,conditionalAndExpression]"],MINUTES:["conditionalAndExpression","*[||,conditionalAndExpression]"],SECONDS:["conditionalAndExpression","*[||,conditionalAndExpression]"],TIMEZONE:["conditionalAndExpression","*[||,conditionalAndExpression]"],TZ:["conditionalAndExpression","*[||,conditionalAndExpression]"],NOW:["conditionalAndExpression","*[||,conditionalAndExpression]"],UUID:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRUUID:["conditionalAndExpression","*[||,conditionalAndExpression]"],MD5:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA1:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA256:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA384:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA512:["conditionalAndExpression","*[||,conditionalAndExpression]"],COALESCE:["conditionalAndExpression","*[||,conditionalAndExpression]"],IF:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRLANG:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRDT:["conditionalAndExpression","*[||,conditionalAndExpression]"],SAMETERM:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISIRI:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISURI:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISBLANK:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISLITERAL:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISNUMERIC:["conditionalAndExpression","*[||,conditionalAndExpression]"],TRUE:["conditionalAndExpression","*[||,conditionalAndExpression]"],FALSE:["conditionalAndExpression","*[||,conditionalAndExpression]"],COUNT:["conditionalAndExpression","*[||,conditionalAndExpression]"],SUM:["conditionalAndExpression","*[||,conditionalAndExpression]"],MIN:["conditionalAndExpression","*[||,conditionalAndExpression]"],MAX:["conditionalAndExpression","*[||,conditionalAndExpression]"],AVG:["conditionalAndExpression","*[||,conditionalAndExpression]"],SAMPLE:["conditionalAndExpression","*[||,conditionalAndExpression]"],GROUP_CONCAT:["conditionalAndExpression","*[||,conditionalAndExpression]"],SUBSTR:["conditionalAndExpression","*[||,conditionalAndExpression]"],REPLACE:["conditionalAndExpression","*[||,conditionalAndExpression]"],REGEX:["conditionalAndExpression","*[||,conditionalAndExpression]"],EXISTS:["conditionalAndExpression","*[||,conditionalAndExpression]"],NOT:["conditionalAndExpression","*[||,conditionalAndExpression]"],IRI_REF:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL1:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL2:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL_LONG1:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL_LONG2:["conditionalAndExpression","*[||,conditionalAndExpression]"],INTEGER:["conditionalAndExpression","*[||,conditionalAndExpression]"],DECIMAL:["conditionalAndExpression","*[||,conditionalAndExpression]"],DOUBLE:["conditionalAndExpression","*[||,conditionalAndExpression]"],INTEGER_POSITIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DECIMAL_POSITIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DOUBLE_POSITIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],INTEGER_NEGATIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DECIMAL_NEGATIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DOUBLE_NEGATIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],PNAME_LN:["conditionalAndExpression","*[||,conditionalAndExpression]"],PNAME_NS:["conditionalAndExpression","*[||,conditionalAndExpression]"]},constraint:{"(":["brackettedExpression"],STR:["builtInCall"],LANG:["builtInCall"],LANGMATCHES:["builtInCall"],DATATYPE:["builtInCall"],BOUND:["builtInCall"],IRI:["builtInCall"],URI:["builtInCall"],BNODE:["builtInCall"],RAND:["builtInCall"],ABS:["builtInCall"],CEIL:["builtInCall"],FLOOR:["builtInCall"],ROUND:["builtInCall"],CONCAT:["builtInCall"],STRLEN:["builtInCall"],UCASE:["builtInCall"],LCASE:["builtInCall"],ENCODE_FOR_URI:["builtInCall"],CONTAINS:["builtInCall"],STRSTARTS:["builtInCall"],STRENDS:["builtInCall"],STRBEFORE:["builtInCall"],STRAFTER:["builtInCall"],YEAR:["builtInCall"],MONTH:["builtInCall"],DAY:["builtInCall"],HOURS:["builtInCall"],MINUTES:["builtInCall"],SECONDS:["builtInCall"],TIMEZONE:["builtInCall"],TZ:["builtInCall"],NOW:["builtInCall"],UUID:["builtInCall"],STRUUID:["builtInCall"],MD5:["builtInCall"],SHA1:["builtInCall"],SHA256:["builtInCall"],SHA384:["builtInCall"],SHA512:["builtInCall"],COALESCE:["builtInCall"],IF:["builtInCall"],STRLANG:["builtInCall"],STRDT:["builtInCall"],SAMETERM:["builtInCall"],ISIRI:["builtInCall"],ISURI:["builtInCall"],ISBLANK:["builtInCall"],ISLITERAL:["builtInCall"],ISNUMERIC:["builtInCall"],SUBSTR:["builtInCall"],REPLACE:["builtInCall"],REGEX:["builtInCall"],EXISTS:["builtInCall"],NOT:["builtInCall"],IRI_REF:["functionCall"],PNAME_LN:["functionCall"],PNAME_NS:["functionCall"]},constructQuery:{CONSTRUCT:["CONSTRUCT","or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])"]},constructTemplate:{"{":["{","?constructTriples","}"]},constructTriples:{VAR1:["triplesSameSubject","?[.,?constructTriples]"],VAR2:["triplesSameSubject","?[.,?constructTriples]"],NIL:["triplesSameSubject","?[.,?constructTriples]"],"(":["triplesSameSubject","?[.,?constructTriples]"],"[":["triplesSameSubject","?[.,?constructTriples]"],IRI_REF:["triplesSameSubject","?[.,?constructTriples]"],TRUE:["triplesSameSubject","?[.,?constructTriples]"],FALSE:["triplesSameSubject","?[.,?constructTriples]"],BLANK_NODE_LABEL:["triplesSameSubject","?[.,?constructTriples]"],ANON:["triplesSameSubject","?[.,?constructTriples]"],PNAME_LN:["triplesSameSubject","?[.,?constructTriples]"],PNAME_NS:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL1:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL2:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL_LONG1:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL_LONG2:["triplesSameSubject","?[.,?constructTriples]"],INTEGER:["triplesSameSubject","?[.,?constructTriples]"],DECIMAL:["triplesSameSubject","?[.,?constructTriples]"],DOUBLE:["triplesSameSubject","?[.,?constructTriples]"],INTEGER_POSITIVE:["triplesSameSubject","?[.,?constructTriples]"],DECIMAL_POSITIVE:["triplesSameSubject","?[.,?constructTriples]"],DOUBLE_POSITIVE:["triplesSameSubject","?[.,?constructTriples]"],INTEGER_NEGATIVE:["triplesSameSubject","?[.,?constructTriples]"],DECIMAL_NEGATIVE:["triplesSameSubject","?[.,?constructTriples]"],DOUBLE_NEGATIVE:["triplesSameSubject","?[.,?constructTriples]"]},copy:{COPY:["COPY","?SILENT_4","graphOrDefault","TO","graphOrDefault"]},create:{CREATE:["CREATE","?SILENT_3","graphRef"]},dataBlock:{NIL:["or([inlineDataOneVar,inlineDataFull])"],"(":["or([inlineDataOneVar,inlineDataFull])"],VAR1:["or([inlineDataOneVar,inlineDataFull])"],VAR2:["or([inlineDataOneVar,inlineDataFull])"]},dataBlockValue:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],STRING_LITERAL1:["rdfLiteral"],STRING_LITERAL2:["rdfLiteral"],STRING_LITERAL_LONG1:["rdfLiteral"],STRING_LITERAL_LONG2:["rdfLiteral"],INTEGER:["numericLiteral"],DECIMAL:["numericLiteral"],DOUBLE:["numericLiteral"],INTEGER_POSITIVE:["numericLiteral"],DECIMAL_POSITIVE:["numericLiteral"],DOUBLE_POSITIVE:["numericLiteral"],INTEGER_NEGATIVE:["numericLiteral"],DECIMAL_NEGATIVE:["numericLiteral"],DOUBLE_NEGATIVE:["numericLiteral"],TRUE:["booleanLiteral"],FALSE:["booleanLiteral"],UNDEF:["UNDEF"]},datasetClause:{FROM:["FROM","or([defaultGraphClause,namedGraphClause])"]},defaultGraphClause:{IRI_REF:["sourceSelector"],PNAME_LN:["sourceSelector"],PNAME_NS:["sourceSelector"]},delete1:{DATA:["DATA","quadDataNoBnodes"],WHERE:["WHERE","quadPatternNoBnodes"],"{":["quadPatternNoBnodes","?insertClause","*usingClause","WHERE","groupGraphPattern"]},deleteClause:{DELETE:["DELETE","quadPattern"]},describeDatasetClause:{FROM:["FROM","or([defaultGraphClause,namedGraphClause])"]},describeQuery:{DESCRIBE:["DESCRIBE","or([+varOrIRIref,*])","*describeDatasetClause","?whereClause","solutionModifier"]},disallowBnodes:{"}":[],GRAPH:[],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:[]},disallowVars:{"}":[],GRAPH:[],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:[]},drop:{DROP:["DROP","?SILENT_2","graphRefAll"]},existsFunc:{EXISTS:["EXISTS","groupGraphPattern"]},expression:{"!":["conditionalOrExpression"],"+":["conditionalOrExpression"],"-":["conditionalOrExpression"],VAR1:["conditionalOrExpression"],VAR2:["conditionalOrExpression"],"(":["conditionalOrExpression"],STR:["conditionalOrExpression"],LANG:["conditionalOrExpression"],LANGMATCHES:["conditionalOrExpression"],DATATYPE:["conditionalOrExpression"],BOUND:["conditionalOrExpression"],IRI:["conditionalOrExpression"],URI:["conditionalOrExpression"],BNODE:["conditionalOrExpression"],RAND:["conditionalOrExpression"],ABS:["conditionalOrExpression"],CEIL:["conditionalOrExpression"],FLOOR:["conditionalOrExpression"],ROUND:["conditionalOrExpression"],CONCAT:["conditionalOrExpression"],STRLEN:["conditionalOrExpression"],UCASE:["conditionalOrExpression"],LCASE:["conditionalOrExpression"],ENCODE_FOR_URI:["conditionalOrExpression"],CONTAINS:["conditionalOrExpression"],STRSTARTS:["conditionalOrExpression"],STRENDS:["conditionalOrExpression"],STRBEFORE:["conditionalOrExpression"],STRAFTER:["conditionalOrExpression"],YEAR:["conditionalOrExpression"],MONTH:["conditionalOrExpression"],DAY:["conditionalOrExpression"],HOURS:["conditionalOrExpression"],MINUTES:["conditionalOrExpression"],SECONDS:["conditionalOrExpression"],TIMEZONE:["conditionalOrExpression"],TZ:["conditionalOrExpression"],NOW:["conditionalOrExpression"],UUID:["conditionalOrExpression"],STRUUID:["conditionalOrExpression"],MD5:["conditionalOrExpression"],SHA1:["conditionalOrExpression"],SHA256:["conditionalOrExpression"],SHA384:["conditionalOrExpression"],SHA512:["conditionalOrExpression"],COALESCE:["conditionalOrExpression"],IF:["conditionalOrExpression"],STRLANG:["conditionalOrExpression"],STRDT:["conditionalOrExpression"],SAMETERM:["conditionalOrExpression"],ISIRI:["conditionalOrExpression"],ISURI:["conditionalOrExpression"],ISBLANK:["conditionalOrExpression"],ISLITERAL:["conditionalOrExpression"],ISNUMERIC:["conditionalOrExpression"],TRUE:["conditionalOrExpression"],FALSE:["conditionalOrExpression"],COUNT:["conditionalOrExpression"],SUM:["conditionalOrExpression"],MIN:["conditionalOrExpression"],MAX:["conditionalOrExpression"],AVG:["conditionalOrExpression"],SAMPLE:["conditionalOrExpression"],GROUP_CONCAT:["conditionalOrExpression"],SUBSTR:["conditionalOrExpression"],REPLACE:["conditionalOrExpression"],REGEX:["conditionalOrExpression"],EXISTS:["conditionalOrExpression"],NOT:["conditionalOrExpression"],IRI_REF:["conditionalOrExpression"],STRING_LITERAL1:["conditionalOrExpression"],STRING_LITERAL2:["conditionalOrExpression"],STRING_LITERAL_LONG1:["conditionalOrExpression"],STRING_LITERAL_LONG2:["conditionalOrExpression"],INTEGER:["conditionalOrExpression"],DECIMAL:["conditionalOrExpression"],DOUBLE:["conditionalOrExpression"],INTEGER_POSITIVE:["conditionalOrExpression"],DECIMAL_POSITIVE:["conditionalOrExpression"],DOUBLE_POSITIVE:["conditionalOrExpression"],INTEGER_NEGATIVE:["conditionalOrExpression"],DECIMAL_NEGATIVE:["conditionalOrExpression"],DOUBLE_NEGATIVE:["conditionalOrExpression"],PNAME_LN:["conditionalOrExpression"],PNAME_NS:["conditionalOrExpression"]},expressionList:{NIL:["NIL"],"(":["(","expression","*[,,expression]",")"]},filter:{FILTER:["FILTER","constraint"]},functionCall:{IRI_REF:["iriRef","argList"],PNAME_LN:["iriRef","argList"],PNAME_NS:["iriRef","argList"]},graphGraphPattern:{GRAPH:["GRAPH","varOrIRIref","groupGraphPattern"]},graphNode:{VAR1:["varOrTerm"],VAR2:["varOrTerm"],NIL:["varOrTerm"],IRI_REF:["varOrTerm"],TRUE:["varOrTerm"],FALSE:["varOrTerm"],BLANK_NODE_LABEL:["varOrTerm"],ANON:["varOrTerm"],PNAME_LN:["varOrTerm"],PNAME_NS:["varOrTerm"],STRING_LITERAL1:["varOrTerm"],STRING_LITERAL2:["varOrTerm"],STRING_LITERAL_LONG1:["varOrTerm"],STRING_LITERAL_LONG2:["varOrTerm"],INTEGER:["varOrTerm"],DECIMAL:["varOrTerm"],DOUBLE:["varOrTerm"],INTEGER_POSITIVE:["varOrTerm"],DECIMAL_POSITIVE:["varOrTerm"],DOUBLE_POSITIVE:["varOrTerm"],INTEGER_NEGATIVE:["varOrTerm"],DECIMAL_NEGATIVE:["varOrTerm"],DOUBLE_NEGATIVE:["varOrTerm"],"(":["triplesNode"],"[":["triplesNode"]},graphNodePath:{VAR1:["varOrTerm"],VAR2:["varOrTerm"],NIL:["varOrTerm"],IRI_REF:["varOrTerm"],TRUE:["varOrTerm"],FALSE:["varOrTerm"],BLANK_NODE_LABEL:["varOrTerm"],ANON:["varOrTerm"],PNAME_LN:["varOrTerm"],PNAME_NS:["varOrTerm"],STRING_LITERAL1:["varOrTerm"],STRING_LITERAL2:["varOrTerm"],STRING_LITERAL_LONG1:["varOrTerm"],STRING_LITERAL_LONG2:["varOrTerm"],INTEGER:["varOrTerm"],DECIMAL:["varOrTerm"],DOUBLE:["varOrTerm"],INTEGER_POSITIVE:["varOrTerm"],DECIMAL_POSITIVE:["varOrTerm"],DOUBLE_POSITIVE:["varOrTerm"],INTEGER_NEGATIVE:["varOrTerm"],DECIMAL_NEGATIVE:["varOrTerm"],DOUBLE_NEGATIVE:["varOrTerm"],"(":["triplesNodePath"],"[":["triplesNodePath"]},graphOrDefault:{DEFAULT:["DEFAULT"],IRI_REF:["?GRAPH","iriRef"],PNAME_LN:["?GRAPH","iriRef"],PNAME_NS:["?GRAPH","iriRef"],GRAPH:["?GRAPH","iriRef"]},graphPatternNotTriples:{"{":["groupOrUnionGraphPattern"],OPTIONAL:["optionalGraphPattern"],MINUS:["minusGraphPattern"],GRAPH:["graphGraphPattern"],SERVICE:["serviceGraphPattern"],FILTER:["filter"],BIND:["bind"],VALUES:["inlineData"]},graphRef:{GRAPH:["GRAPH","iriRef"]},graphRefAll:{GRAPH:["graphRef"],DEFAULT:["DEFAULT"],NAMED:["NAMED"],ALL:["ALL"]},graphTerm:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],STRING_LITERAL1:["rdfLiteral"],STRING_LITERAL2:["rdfLiteral"],STRING_LITERAL_LONG1:["rdfLiteral"],STRING_LITERAL_LONG2:["rdfLiteral"],INTEGER:["numericLiteral"],DECIMAL:["numericLiteral"],DOUBLE:["numericLiteral"],INTEGER_POSITIVE:["numericLiteral"],DECIMAL_POSITIVE:["numericLiteral"],DOUBLE_POSITIVE:["numericLiteral"],INTEGER_NEGATIVE:["numericLiteral"],DECIMAL_NEGATIVE:["numericLiteral"],DOUBLE_NEGATIVE:["numericLiteral"],TRUE:["booleanLiteral"],FALSE:["booleanLiteral"],BLANK_NODE_LABEL:["blankNode"],ANON:["blankNode"],NIL:["NIL"]},groupClause:{GROUP:["GROUP","BY","+groupCondition"]},groupCondition:{STR:["builtInCall"],LANG:["builtInCall"],LANGMATCHES:["builtInCall"],DATATYPE:["builtInCall"],BOUND:["builtInCall"],IRI:["builtInCall"],URI:["builtInCall"],BNODE:["builtInCall"],RAND:["builtInCall"],ABS:["builtInCall"],CEIL:["builtInCall"],FLOOR:["builtInCall"],ROUND:["builtInCall"],CONCAT:["builtInCall"],STRLEN:["builtInCall"],UCASE:["builtInCall"],LCASE:["builtInCall"],ENCODE_FOR_URI:["builtInCall"],CONTAINS:["builtInCall"],STRSTARTS:["builtInCall"],STRENDS:["builtInCall"],STRBEFORE:["builtInCall"],STRAFTER:["builtInCall"],YEAR:["builtInCall"],MONTH:["builtInCall"],DAY:["builtInCall"],HOURS:["builtInCall"],MINUTES:["builtInCall"],SECONDS:["builtInCall"],TIMEZONE:["builtInCall"],TZ:["builtInCall"],NOW:["builtInCall"],UUID:["builtInCall"],STRUUID:["builtInCall"],MD5:["builtInCall"],SHA1:["builtInCall"],SHA256:["builtInCall"],SHA384:["builtInCall"],SHA512:["builtInCall"],COALESCE:["builtInCall"],IF:["builtInCall"],STRLANG:["builtInCall"],STRDT:["builtInCall"],SAMETERM:["builtInCall"],ISIRI:["builtInCall"],ISURI:["builtInCall"],ISBLANK:["builtInCall"],ISLITERAL:["builtInCall"],ISNUMERIC:["builtInCall"],SUBSTR:["builtInCall"],REPLACE:["builtInCall"],REGEX:["builtInCall"],EXISTS:["builtInCall"],NOT:["builtInCall"],IRI_REF:["functionCall"],PNAME_LN:["functionCall"],PNAME_NS:["functionCall"],"(":["(","expression","?[AS,var]",")"],VAR1:["var"],VAR2:["var"]},groupGraphPattern:{"{":["{","or([subSelect,groupGraphPatternSub])","}"]},groupGraphPatternSub:{"{":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],OPTIONAL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],MINUS:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],GRAPH:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],SERVICE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],FILTER:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],BIND:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],VALUES:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],VAR1:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],VAR2:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],NIL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],"(":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],"[":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],IRI_REF:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],TRUE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],FALSE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],BLANK_NODE_LABEL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],ANON:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],PNAME_LN:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],PNAME_NS:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL1:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL2:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL_LONG1:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL_LONG2:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],INTEGER:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DECIMAL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DOUBLE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],INTEGER_POSITIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DECIMAL_POSITIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DOUBLE_POSITIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],INTEGER_NEGATIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DECIMAL_NEGATIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DOUBLE_NEGATIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],"}":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"]},groupOrUnionGraphPattern:{"{":["groupGraphPattern","*[UNION,groupGraphPattern]"]},havingClause:{HAVING:["HAVING","+havingCondition"]},havingCondition:{"(":["constraint"],STR:["constraint"],LANG:["constraint"],LANGMATCHES:["constraint"],DATATYPE:["constraint"],BOUND:["constraint"],IRI:["constraint"],URI:["constraint"],BNODE:["constraint"],RAND:["constraint"],ABS:["constraint"],CEIL:["constraint"],FLOOR:["constraint"],ROUND:["constraint"],CONCAT:["constraint"],STRLEN:["constraint"],UCASE:["constraint"],LCASE:["constraint"],ENCODE_FOR_URI:["constraint"],CONTAINS:["constraint"],STRSTARTS:["constraint"],STRENDS:["constraint"],STRBEFORE:["constraint"],STRAFTER:["constraint"],YEAR:["constraint"],MONTH:["constraint"],DAY:["constraint"],HOURS:["constraint"],MINUTES:["constraint"],SECONDS:["constraint"],TIMEZONE:["constraint"],TZ:["constraint"],NOW:["constraint"],UUID:["constraint"],STRUUID:["constraint"],MD5:["constraint"],SHA1:["constraint"],SHA256:["constraint"],SHA384:["constraint"],SHA512:["constraint"],COALESCE:["constraint"],IF:["constraint"],STRLANG:["constraint"],STRDT:["constraint"],SAMETERM:["constraint"],ISIRI:["constraint"],ISURI:["constraint"],ISBLANK:["constraint"],ISLITERAL:["constraint"],ISNUMERIC:["constraint"],SUBSTR:["constraint"],REPLACE:["constraint"],REGEX:["constraint"],EXISTS:["constraint"],NOT:["constraint"],IRI_REF:["constraint"],PNAME_LN:["constraint"],PNAME_NS:["constraint"]},inlineData:{VALUES:["VALUES","dataBlock"]},inlineDataFull:{NIL:["or([NIL,[ (,*var,)]])","{","*or([[ (,*dataBlockValue,)],NIL])","}"],"(":["or([NIL,[ (,*var,)]])","{","*or([[ (,*dataBlockValue,)],NIL])","}"]},inlineDataOneVar:{VAR1:["var","{","*dataBlockValue","}"],VAR2:["var","{","*dataBlockValue","}"]},insert1:{DATA:["DATA","quadData"],"{":["quadPattern","*usingClause","WHERE","groupGraphPattern"]},insertClause:{INSERT:["INSERT","quadPattern"]},integer:{INTEGER:["INTEGER"]},iriRef:{IRI_REF:["IRI_REF"],PNAME_LN:["prefixedName"],PNAME_NS:["prefixedName"] +},iriRefOrFunction:{IRI_REF:["iriRef","?argList"],PNAME_LN:["iriRef","?argList"],PNAME_NS:["iriRef","?argList"]},limitClause:{LIMIT:["LIMIT","INTEGER"]},limitOffsetClauses:{LIMIT:["limitClause","?offsetClause"],OFFSET:["offsetClause","?limitClause"]},load:{LOAD:["LOAD","?SILENT_1","iriRef","?[INTO,graphRef]"]},minusGraphPattern:{MINUS:["MINUS","groupGraphPattern"]},modify:{WITH:["WITH","iriRef","or([[deleteClause,?insertClause],insertClause])","*usingClause","WHERE","groupGraphPattern"]},move:{MOVE:["MOVE","?SILENT_4","graphOrDefault","TO","graphOrDefault"]},multiplicativeExpression:{"!":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],"+":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],"-":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],VAR1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],VAR2:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],"(":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],LANG:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],LANGMATCHES:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DATATYPE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],BOUND:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],IRI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],URI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],BNODE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],RAND:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ABS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],CEIL:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],FLOOR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ROUND:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],CONCAT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRLEN:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],UCASE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],LCASE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ENCODE_FOR_URI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],CONTAINS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRSTARTS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRENDS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRBEFORE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRAFTER:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],YEAR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MONTH:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DAY:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],HOURS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MINUTES:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SECONDS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],TIMEZONE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],TZ:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],NOW:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],UUID:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRUUID:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MD5:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA256:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA384:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA512:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],COALESCE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],IF:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRLANG:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRDT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SAMETERM:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISIRI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISURI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISBLANK:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISLITERAL:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISNUMERIC:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],TRUE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],FALSE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],COUNT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SUM:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MIN:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MAX:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],AVG:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SAMPLE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],GROUP_CONCAT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SUBSTR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],REPLACE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],REGEX:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],EXISTS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],NOT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],IRI_REF:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL2:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL_LONG1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL_LONG2:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER_POSITIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_POSITIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_POSITIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER_NEGATIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_NEGATIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_NEGATIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],PNAME_LN:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],PNAME_NS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"]},namedGraphClause:{NAMED:["NAMED","sourceSelector"]},notExistsFunc:{NOT:["NOT","EXISTS","groupGraphPattern"]},numericExpression:{"!":["additiveExpression"],"+":["additiveExpression"],"-":["additiveExpression"],VAR1:["additiveExpression"],VAR2:["additiveExpression"],"(":["additiveExpression"],STR:["additiveExpression"],LANG:["additiveExpression"],LANGMATCHES:["additiveExpression"],DATATYPE:["additiveExpression"],BOUND:["additiveExpression"],IRI:["additiveExpression"],URI:["additiveExpression"],BNODE:["additiveExpression"],RAND:["additiveExpression"],ABS:["additiveExpression"],CEIL:["additiveExpression"],FLOOR:["additiveExpression"],ROUND:["additiveExpression"],CONCAT:["additiveExpression"],STRLEN:["additiveExpression"],UCASE:["additiveExpression"],LCASE:["additiveExpression"],ENCODE_FOR_URI:["additiveExpression"],CONTAINS:["additiveExpression"],STRSTARTS:["additiveExpression"],STRENDS:["additiveExpression"],STRBEFORE:["additiveExpression"],STRAFTER:["additiveExpression"],YEAR:["additiveExpression"],MONTH:["additiveExpression"],DAY:["additiveExpression"],HOURS:["additiveExpression"],MINUTES:["additiveExpression"],SECONDS:["additiveExpression"],TIMEZONE:["additiveExpression"],TZ:["additiveExpression"],NOW:["additiveExpression"],UUID:["additiveExpression"],STRUUID:["additiveExpression"],MD5:["additiveExpression"],SHA1:["additiveExpression"],SHA256:["additiveExpression"],SHA384:["additiveExpression"],SHA512:["additiveExpression"],COALESCE:["additiveExpression"],IF:["additiveExpression"],STRLANG:["additiveExpression"],STRDT:["additiveExpression"],SAMETERM:["additiveExpression"],ISIRI:["additiveExpression"],ISURI:["additiveExpression"],ISBLANK:["additiveExpression"],ISLITERAL:["additiveExpression"],ISNUMERIC:["additiveExpression"],TRUE:["additiveExpression"],FALSE:["additiveExpression"],COUNT:["additiveExpression"],SUM:["additiveExpression"],MIN:["additiveExpression"],MAX:["additiveExpression"],AVG:["additiveExpression"],SAMPLE:["additiveExpression"],GROUP_CONCAT:["additiveExpression"],SUBSTR:["additiveExpression"],REPLACE:["additiveExpression"],REGEX:["additiveExpression"],EXISTS:["additiveExpression"],NOT:["additiveExpression"],IRI_REF:["additiveExpression"],STRING_LITERAL1:["additiveExpression"],STRING_LITERAL2:["additiveExpression"],STRING_LITERAL_LONG1:["additiveExpression"],STRING_LITERAL_LONG2:["additiveExpression"],INTEGER:["additiveExpression"],DECIMAL:["additiveExpression"],DOUBLE:["additiveExpression"],INTEGER_POSITIVE:["additiveExpression"],DECIMAL_POSITIVE:["additiveExpression"],DOUBLE_POSITIVE:["additiveExpression"],INTEGER_NEGATIVE:["additiveExpression"],DECIMAL_NEGATIVE:["additiveExpression"],DOUBLE_NEGATIVE:["additiveExpression"],PNAME_LN:["additiveExpression"],PNAME_NS:["additiveExpression"]},numericLiteral:{INTEGER:["numericLiteralUnsigned"],DECIMAL:["numericLiteralUnsigned"],DOUBLE:["numericLiteralUnsigned"],INTEGER_POSITIVE:["numericLiteralPositive"],DECIMAL_POSITIVE:["numericLiteralPositive"],DOUBLE_POSITIVE:["numericLiteralPositive"],INTEGER_NEGATIVE:["numericLiteralNegative"],DECIMAL_NEGATIVE:["numericLiteralNegative"],DOUBLE_NEGATIVE:["numericLiteralNegative"]},numericLiteralNegative:{INTEGER_NEGATIVE:["INTEGER_NEGATIVE"],DECIMAL_NEGATIVE:["DECIMAL_NEGATIVE"],DOUBLE_NEGATIVE:["DOUBLE_NEGATIVE"]},numericLiteralPositive:{INTEGER_POSITIVE:["INTEGER_POSITIVE"],DECIMAL_POSITIVE:["DECIMAL_POSITIVE"],DOUBLE_POSITIVE:["DOUBLE_POSITIVE"]},numericLiteralUnsigned:{INTEGER:["INTEGER"],DECIMAL:["DECIMAL"],DOUBLE:["DOUBLE"]},object:{"(":["graphNode"],"[":["graphNode"],VAR1:["graphNode"],VAR2:["graphNode"],NIL:["graphNode"],IRI_REF:["graphNode"],TRUE:["graphNode"],FALSE:["graphNode"],BLANK_NODE_LABEL:["graphNode"],ANON:["graphNode"],PNAME_LN:["graphNode"],PNAME_NS:["graphNode"],STRING_LITERAL1:["graphNode"],STRING_LITERAL2:["graphNode"],STRING_LITERAL_LONG1:["graphNode"],STRING_LITERAL_LONG2:["graphNode"],INTEGER:["graphNode"],DECIMAL:["graphNode"],DOUBLE:["graphNode"],INTEGER_POSITIVE:["graphNode"],DECIMAL_POSITIVE:["graphNode"],DOUBLE_POSITIVE:["graphNode"],INTEGER_NEGATIVE:["graphNode"],DECIMAL_NEGATIVE:["graphNode"],DOUBLE_NEGATIVE:["graphNode"]},objectList:{"(":["object","*[,,object]"],"[":["object","*[,,object]"],VAR1:["object","*[,,object]"],VAR2:["object","*[,,object]"],NIL:["object","*[,,object]"],IRI_REF:["object","*[,,object]"],TRUE:["object","*[,,object]"],FALSE:["object","*[,,object]"],BLANK_NODE_LABEL:["object","*[,,object]"],ANON:["object","*[,,object]"],PNAME_LN:["object","*[,,object]"],PNAME_NS:["object","*[,,object]"],STRING_LITERAL1:["object","*[,,object]"],STRING_LITERAL2:["object","*[,,object]"],STRING_LITERAL_LONG1:["object","*[,,object]"],STRING_LITERAL_LONG2:["object","*[,,object]"],INTEGER:["object","*[,,object]"],DECIMAL:["object","*[,,object]"],DOUBLE:["object","*[,,object]"],INTEGER_POSITIVE:["object","*[,,object]"],DECIMAL_POSITIVE:["object","*[,,object]"],DOUBLE_POSITIVE:["object","*[,,object]"],INTEGER_NEGATIVE:["object","*[,,object]"],DECIMAL_NEGATIVE:["object","*[,,object]"],DOUBLE_NEGATIVE:["object","*[,,object]"]},objectListPath:{"(":["objectPath","*[,,objectPath]"],"[":["objectPath","*[,,objectPath]"],VAR1:["objectPath","*[,,objectPath]"],VAR2:["objectPath","*[,,objectPath]"],NIL:["objectPath","*[,,objectPath]"],IRI_REF:["objectPath","*[,,objectPath]"],TRUE:["objectPath","*[,,objectPath]"],FALSE:["objectPath","*[,,objectPath]"],BLANK_NODE_LABEL:["objectPath","*[,,objectPath]"],ANON:["objectPath","*[,,objectPath]"],PNAME_LN:["objectPath","*[,,objectPath]"],PNAME_NS:["objectPath","*[,,objectPath]"],STRING_LITERAL1:["objectPath","*[,,objectPath]"],STRING_LITERAL2:["objectPath","*[,,objectPath]"],STRING_LITERAL_LONG1:["objectPath","*[,,objectPath]"],STRING_LITERAL_LONG2:["objectPath","*[,,objectPath]"],INTEGER:["objectPath","*[,,objectPath]"],DECIMAL:["objectPath","*[,,objectPath]"],DOUBLE:["objectPath","*[,,objectPath]"],INTEGER_POSITIVE:["objectPath","*[,,objectPath]"],DECIMAL_POSITIVE:["objectPath","*[,,objectPath]"],DOUBLE_POSITIVE:["objectPath","*[,,objectPath]"],INTEGER_NEGATIVE:["objectPath","*[,,objectPath]"],DECIMAL_NEGATIVE:["objectPath","*[,,objectPath]"],DOUBLE_NEGATIVE:["objectPath","*[,,objectPath]"]},objectPath:{"(":["graphNodePath"],"[":["graphNodePath"],VAR1:["graphNodePath"],VAR2:["graphNodePath"],NIL:["graphNodePath"],IRI_REF:["graphNodePath"],TRUE:["graphNodePath"],FALSE:["graphNodePath"],BLANK_NODE_LABEL:["graphNodePath"],ANON:["graphNodePath"],PNAME_LN:["graphNodePath"],PNAME_NS:["graphNodePath"],STRING_LITERAL1:["graphNodePath"],STRING_LITERAL2:["graphNodePath"],STRING_LITERAL_LONG1:["graphNodePath"],STRING_LITERAL_LONG2:["graphNodePath"],INTEGER:["graphNodePath"],DECIMAL:["graphNodePath"],DOUBLE:["graphNodePath"],INTEGER_POSITIVE:["graphNodePath"],DECIMAL_POSITIVE:["graphNodePath"],DOUBLE_POSITIVE:["graphNodePath"],INTEGER_NEGATIVE:["graphNodePath"],DECIMAL_NEGATIVE:["graphNodePath"],DOUBLE_NEGATIVE:["graphNodePath"]},offsetClause:{OFFSET:["OFFSET","INTEGER"]},optionalGraphPattern:{OPTIONAL:["OPTIONAL","groupGraphPattern"]},"or([*,expression])":{"*":["*"],"!":["expression"],"+":["expression"],"-":["expression"],VAR1:["expression"],VAR2:["expression"],"(":["expression"],STR:["expression"],LANG:["expression"],LANGMATCHES:["expression"],DATATYPE:["expression"],BOUND:["expression"],IRI:["expression"],URI:["expression"],BNODE:["expression"],RAND:["expression"],ABS:["expression"],CEIL:["expression"],FLOOR:["expression"],ROUND:["expression"],CONCAT:["expression"],STRLEN:["expression"],UCASE:["expression"],LCASE:["expression"],ENCODE_FOR_URI:["expression"],CONTAINS:["expression"],STRSTARTS:["expression"],STRENDS:["expression"],STRBEFORE:["expression"],STRAFTER:["expression"],YEAR:["expression"],MONTH:["expression"],DAY:["expression"],HOURS:["expression"],MINUTES:["expression"],SECONDS:["expression"],TIMEZONE:["expression"],TZ:["expression"],NOW:["expression"],UUID:["expression"],STRUUID:["expression"],MD5:["expression"],SHA1:["expression"],SHA256:["expression"],SHA384:["expression"],SHA512:["expression"],COALESCE:["expression"],IF:["expression"],STRLANG:["expression"],STRDT:["expression"],SAMETERM:["expression"],ISIRI:["expression"],ISURI:["expression"],ISBLANK:["expression"],ISLITERAL:["expression"],ISNUMERIC:["expression"],TRUE:["expression"],FALSE:["expression"],COUNT:["expression"],SUM:["expression"],MIN:["expression"],MAX:["expression"],AVG:["expression"],SAMPLE:["expression"],GROUP_CONCAT:["expression"],SUBSTR:["expression"],REPLACE:["expression"],REGEX:["expression"],EXISTS:["expression"],NOT:["expression"],IRI_REF:["expression"],STRING_LITERAL1:["expression"],STRING_LITERAL2:["expression"],STRING_LITERAL_LONG1:["expression"],STRING_LITERAL_LONG2:["expression"],INTEGER:["expression"],DECIMAL:["expression"],DOUBLE:["expression"],INTEGER_POSITIVE:["expression"],DECIMAL_POSITIVE:["expression"],DOUBLE_POSITIVE:["expression"],INTEGER_NEGATIVE:["expression"],DECIMAL_NEGATIVE:["expression"],DOUBLE_NEGATIVE:["expression"],PNAME_LN:["expression"],PNAME_NS:["expression"]},"or([+or([var,[ (,expression,AS,var,)]]),*])":{"(":["+or([var,[ (,expression,AS,var,)]])"],VAR1:["+or([var,[ (,expression,AS,var,)]])"],VAR2:["+or([var,[ (,expression,AS,var,)]])"],"*":["*"]},"or([+varOrIRIref,*])":{VAR1:["+varOrIRIref"],VAR2:["+varOrIRIref"],IRI_REF:["+varOrIRIref"],PNAME_LN:["+varOrIRIref"],PNAME_NS:["+varOrIRIref"],"*":["*"]},"or([ASC,DESC])":{ASC:["ASC"],DESC:["DESC"]},"or([DISTINCT,REDUCED])":{DISTINCT:["DISTINCT"],REDUCED:["REDUCED"]},"or([LANGTAG,[^^,iriRef]])":{LANGTAG:["LANGTAG"],"^^":["[^^,iriRef]"]},"or([NIL,[ (,*var,)]])":{NIL:["NIL"],"(":["[ (,*var,)]"]},"or([[ (,*dataBlockValue,)],NIL])":{"(":["[ (,*dataBlockValue,)]"],NIL:["NIL"]},"or([[ (,expression,)],NIL])":{"(":["[ (,expression,)]"],NIL:["NIL"]},"or([[*,unaryExpression],[/,unaryExpression]])":{"*":["[*,unaryExpression]"],"/":["[/,unaryExpression]"]},"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])":{"+":["[+,multiplicativeExpression]"],"-":["[-,multiplicativeExpression]"],INTEGER_POSITIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DECIMAL_POSITIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DOUBLE_POSITIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],INTEGER_NEGATIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DECIMAL_NEGATIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DOUBLE_NEGATIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"]},"or([[,,or([},[integer,}]])],}])":{",":["[,,or([},[integer,}]])]"],"}":["}"]},"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])":{"=":["[=,numericExpression]"],"!=":["[!=,numericExpression]"],"<":["[<,numericExpression]"],">":["[>,numericExpression]"],"<=":["[<=,numericExpression]"],">=":["[>=,numericExpression]"],IN:["[IN,expressionList]"],NOT:["[NOT,IN,expressionList]"]},"or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])":{"{":["[constructTemplate,*datasetClause,whereClause,solutionModifier]"],WHERE:["[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]"],FROM:["[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]"]},"or([[deleteClause,?insertClause],insertClause])":{DELETE:["[deleteClause,?insertClause]"],INSERT:["insertClause"]},"or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])":{INTEGER:["[integer,or([[,,or([},[integer,}]])],}])]"],",":["[,,integer,}]"]},"or([baseDecl,prefixDecl])":{BASE:["baseDecl"],PREFIX:["prefixDecl"]},"or([defaultGraphClause,namedGraphClause])":{IRI_REF:["defaultGraphClause"],PNAME_LN:["defaultGraphClause"],PNAME_NS:["defaultGraphClause"],NAMED:["namedGraphClause"]},"or([inlineDataOneVar,inlineDataFull])":{VAR1:["inlineDataOneVar"],VAR2:["inlineDataOneVar"],NIL:["inlineDataFull"],"(":["inlineDataFull"]},"or([iriRef,[NAMED,iriRef]])":{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],NAMED:["[NAMED,iriRef]"]},"or([iriRef,a])":{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],a:["a"]},"or([numericLiteralPositive,numericLiteralNegative])":{INTEGER_POSITIVE:["numericLiteralPositive"],DECIMAL_POSITIVE:["numericLiteralPositive"],DOUBLE_POSITIVE:["numericLiteralPositive"],INTEGER_NEGATIVE:["numericLiteralNegative"],DECIMAL_NEGATIVE:["numericLiteralNegative"],DOUBLE_NEGATIVE:["numericLiteralNegative"]},"or([queryAll,updateAll])":{CONSTRUCT:["queryAll"],DESCRIBE:["queryAll"],ASK:["queryAll"],SELECT:["queryAll"],INSERT:["updateAll"],DELETE:["updateAll"],LOAD:["updateAll"],CLEAR:["updateAll"],DROP:["updateAll"],ADD:["updateAll"],MOVE:["updateAll"],COPY:["updateAll"],CREATE:["updateAll"],WITH:["updateAll"],$:["updateAll"]},"or([selectQuery,constructQuery,describeQuery,askQuery])":{SELECT:["selectQuery"],CONSTRUCT:["constructQuery"],DESCRIBE:["describeQuery"],ASK:["askQuery"]},"or([subSelect,groupGraphPatternSub])":{SELECT:["subSelect"],"{":["groupGraphPatternSub"],OPTIONAL:["groupGraphPatternSub"],MINUS:["groupGraphPatternSub"],GRAPH:["groupGraphPatternSub"],SERVICE:["groupGraphPatternSub"],FILTER:["groupGraphPatternSub"],BIND:["groupGraphPatternSub"],VALUES:["groupGraphPatternSub"],VAR1:["groupGraphPatternSub"],VAR2:["groupGraphPatternSub"],NIL:["groupGraphPatternSub"],"(":["groupGraphPatternSub"],"[":["groupGraphPatternSub"],IRI_REF:["groupGraphPatternSub"],TRUE:["groupGraphPatternSub"],FALSE:["groupGraphPatternSub"],BLANK_NODE_LABEL:["groupGraphPatternSub"],ANON:["groupGraphPatternSub"],PNAME_LN:["groupGraphPatternSub"],PNAME_NS:["groupGraphPatternSub"],STRING_LITERAL1:["groupGraphPatternSub"],STRING_LITERAL2:["groupGraphPatternSub"],STRING_LITERAL_LONG1:["groupGraphPatternSub"],STRING_LITERAL_LONG2:["groupGraphPatternSub"],INTEGER:["groupGraphPatternSub"],DECIMAL:["groupGraphPatternSub"],DOUBLE:["groupGraphPatternSub"],INTEGER_POSITIVE:["groupGraphPatternSub"],DECIMAL_POSITIVE:["groupGraphPatternSub"],DOUBLE_POSITIVE:["groupGraphPatternSub"],INTEGER_NEGATIVE:["groupGraphPatternSub"],DECIMAL_NEGATIVE:["groupGraphPatternSub"],DOUBLE_NEGATIVE:["groupGraphPatternSub"],"}":["groupGraphPatternSub"]},"or([var,[ (,expression,AS,var,)]])":{VAR1:["var"],VAR2:["var"],"(":["[ (,expression,AS,var,)]"]},"or([verbPath,verbSimple])":{"^":["verbPath"],a:["verbPath"],"!":["verbPath"],"(":["verbPath"],IRI_REF:["verbPath"],PNAME_LN:["verbPath"],PNAME_NS:["verbPath"],VAR1:["verbSimple"],VAR2:["verbSimple"]},"or([},[integer,}]])":{"}":["}"],INTEGER:["[integer,}]"]},orderClause:{ORDER:["ORDER","BY","+orderCondition"]},orderCondition:{ASC:["or([ASC,DESC])","brackettedExpression"],DESC:["or([ASC,DESC])","brackettedExpression"],"(":["constraint"],STR:["constraint"],LANG:["constraint"],LANGMATCHES:["constraint"],DATATYPE:["constraint"],BOUND:["constraint"],IRI:["constraint"],URI:["constraint"],BNODE:["constraint"],RAND:["constraint"],ABS:["constraint"],CEIL:["constraint"],FLOOR:["constraint"],ROUND:["constraint"],CONCAT:["constraint"],STRLEN:["constraint"],UCASE:["constraint"],LCASE:["constraint"],ENCODE_FOR_URI:["constraint"],CONTAINS:["constraint"],STRSTARTS:["constraint"],STRENDS:["constraint"],STRBEFORE:["constraint"],STRAFTER:["constraint"],YEAR:["constraint"],MONTH:["constraint"],DAY:["constraint"],HOURS:["constraint"],MINUTES:["constraint"],SECONDS:["constraint"],TIMEZONE:["constraint"],TZ:["constraint"],NOW:["constraint"],UUID:["constraint"],STRUUID:["constraint"],MD5:["constraint"],SHA1:["constraint"],SHA256:["constraint"],SHA384:["constraint"],SHA512:["constraint"],COALESCE:["constraint"],IF:["constraint"],STRLANG:["constraint"],STRDT:["constraint"],SAMETERM:["constraint"],ISIRI:["constraint"],ISURI:["constraint"],ISBLANK:["constraint"],ISLITERAL:["constraint"],ISNUMERIC:["constraint"],SUBSTR:["constraint"],REPLACE:["constraint"],REGEX:["constraint"],EXISTS:["constraint"],NOT:["constraint"],IRI_REF:["constraint"],PNAME_LN:["constraint"],PNAME_NS:["constraint"],VAR1:["var"],VAR2:["var"]},path:{"^":["pathAlternative"],a:["pathAlternative"],"!":["pathAlternative"],"(":["pathAlternative"],IRI_REF:["pathAlternative"],PNAME_LN:["pathAlternative"],PNAME_NS:["pathAlternative"]},pathAlternative:{"^":["pathSequence","*[|,pathSequence]"],a:["pathSequence","*[|,pathSequence]"],"!":["pathSequence","*[|,pathSequence]"],"(":["pathSequence","*[|,pathSequence]"],IRI_REF:["pathSequence","*[|,pathSequence]"],PNAME_LN:["pathSequence","*[|,pathSequence]"],PNAME_NS:["pathSequence","*[|,pathSequence]"]},pathElt:{a:["pathPrimary","?pathMod"],"!":["pathPrimary","?pathMod"],"(":["pathPrimary","?pathMod"],IRI_REF:["pathPrimary","?pathMod"],PNAME_LN:["pathPrimary","?pathMod"],PNAME_NS:["pathPrimary","?pathMod"]},pathEltOrInverse:{a:["pathElt"],"!":["pathElt"],"(":["pathElt"],IRI_REF:["pathElt"],PNAME_LN:["pathElt"],PNAME_NS:["pathElt"],"^":["^","pathElt"]},pathMod:{"*":["*"],"?":["?"],"+":["+"],"{":["{","or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])"]},pathNegatedPropertySet:{a:["pathOneInPropertySet"],"^":["pathOneInPropertySet"],IRI_REF:["pathOneInPropertySet"],PNAME_LN:["pathOneInPropertySet"],PNAME_NS:["pathOneInPropertySet"],"(":["(","?[pathOneInPropertySet,*[|,pathOneInPropertySet]]",")"]},pathOneInPropertySet:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],a:["a"],"^":["^","or([iriRef,a])"]},pathPrimary:{IRI_REF:["storeProperty","iriRef"],PNAME_LN:["storeProperty","iriRef"],PNAME_NS:["storeProperty","iriRef"],a:["storeProperty","a"],"!":["!","pathNegatedPropertySet"],"(":["(","path",")"]},pathSequence:{"^":["pathEltOrInverse","*[/,pathEltOrInverse]"],a:["pathEltOrInverse","*[/,pathEltOrInverse]"],"!":["pathEltOrInverse","*[/,pathEltOrInverse]"],"(":["pathEltOrInverse","*[/,pathEltOrInverse]"],IRI_REF:["pathEltOrInverse","*[/,pathEltOrInverse]"],PNAME_LN:["pathEltOrInverse","*[/,pathEltOrInverse]"],PNAME_NS:["pathEltOrInverse","*[/,pathEltOrInverse]"]},prefixDecl:{PREFIX:["PREFIX","PNAME_NS","IRI_REF"]},prefixedName:{PNAME_LN:["PNAME_LN"],PNAME_NS:["PNAME_NS"]},primaryExpression:{"(":["brackettedExpression"],STR:["builtInCall"],LANG:["builtInCall"],LANGMATCHES:["builtInCall"],DATATYPE:["builtInCall"],BOUND:["builtInCall"],IRI:["builtInCall"],URI:["builtInCall"],BNODE:["builtInCall"],RAND:["builtInCall"],ABS:["builtInCall"],CEIL:["builtInCall"],FLOOR:["builtInCall"],ROUND:["builtInCall"],CONCAT:["builtInCall"],STRLEN:["builtInCall"],UCASE:["builtInCall"],LCASE:["builtInCall"],ENCODE_FOR_URI:["builtInCall"],CONTAINS:["builtInCall"],STRSTARTS:["builtInCall"],STRENDS:["builtInCall"],STRBEFORE:["builtInCall"],STRAFTER:["builtInCall"],YEAR:["builtInCall"],MONTH:["builtInCall"],DAY:["builtInCall"],HOURS:["builtInCall"],MINUTES:["builtInCall"],SECONDS:["builtInCall"],TIMEZONE:["builtInCall"],TZ:["builtInCall"],NOW:["builtInCall"],UUID:["builtInCall"],STRUUID:["builtInCall"],MD5:["builtInCall"],SHA1:["builtInCall"],SHA256:["builtInCall"],SHA384:["builtInCall"],SHA512:["builtInCall"],COALESCE:["builtInCall"],IF:["builtInCall"],STRLANG:["builtInCall"],STRDT:["builtInCall"],SAMETERM:["builtInCall"],ISIRI:["builtInCall"],ISURI:["builtInCall"],ISBLANK:["builtInCall"],ISLITERAL:["builtInCall"],ISNUMERIC:["builtInCall"],SUBSTR:["builtInCall"],REPLACE:["builtInCall"],REGEX:["builtInCall"],EXISTS:["builtInCall"],NOT:["builtInCall"],IRI_REF:["iriRefOrFunction"],PNAME_LN:["iriRefOrFunction"],PNAME_NS:["iriRefOrFunction"],STRING_LITERAL1:["rdfLiteral"],STRING_LITERAL2:["rdfLiteral"],STRING_LITERAL_LONG1:["rdfLiteral"],STRING_LITERAL_LONG2:["rdfLiteral"],INTEGER:["numericLiteral"],DECIMAL:["numericLiteral"],DOUBLE:["numericLiteral"],INTEGER_POSITIVE:["numericLiteral"],DECIMAL_POSITIVE:["numericLiteral"],DOUBLE_POSITIVE:["numericLiteral"],INTEGER_NEGATIVE:["numericLiteral"],DECIMAL_NEGATIVE:["numericLiteral"],DOUBLE_NEGATIVE:["numericLiteral"],TRUE:["booleanLiteral"],FALSE:["booleanLiteral"],VAR1:["var"],VAR2:["var"],COUNT:["aggregate"],SUM:["aggregate"],MIN:["aggregate"],MAX:["aggregate"],AVG:["aggregate"],SAMPLE:["aggregate"],GROUP_CONCAT:["aggregate"]},prologue:{BASE:["*or([baseDecl,prefixDecl])"],PREFIX:["*or([baseDecl,prefixDecl])"],$:["*or([baseDecl,prefixDecl])"],CONSTRUCT:["*or([baseDecl,prefixDecl])"],DESCRIBE:["*or([baseDecl,prefixDecl])"],ASK:["*or([baseDecl,prefixDecl])"],INSERT:["*or([baseDecl,prefixDecl])"],DELETE:["*or([baseDecl,prefixDecl])"],SELECT:["*or([baseDecl,prefixDecl])"],LOAD:["*or([baseDecl,prefixDecl])"],CLEAR:["*or([baseDecl,prefixDecl])"],DROP:["*or([baseDecl,prefixDecl])"],ADD:["*or([baseDecl,prefixDecl])"],MOVE:["*or([baseDecl,prefixDecl])"],COPY:["*or([baseDecl,prefixDecl])"],CREATE:["*or([baseDecl,prefixDecl])"],WITH:["*or([baseDecl,prefixDecl])"]},propertyList:{a:["propertyListNotEmpty"],VAR1:["propertyListNotEmpty"],VAR2:["propertyListNotEmpty"],IRI_REF:["propertyListNotEmpty"],PNAME_LN:["propertyListNotEmpty"],PNAME_NS:["propertyListNotEmpty"],".":[],"}":[],GRAPH:[]},propertyListNotEmpty:{a:["verb","objectList","*[;,?[verb,objectList]]"],VAR1:["verb","objectList","*[;,?[verb,objectList]]"],VAR2:["verb","objectList","*[;,?[verb,objectList]]"],IRI_REF:["verb","objectList","*[;,?[verb,objectList]]"],PNAME_LN:["verb","objectList","*[;,?[verb,objectList]]"],PNAME_NS:["verb","objectList","*[;,?[verb,objectList]]"]},propertyListPath:{a:["propertyListNotEmpty"],VAR1:["propertyListNotEmpty"],VAR2:["propertyListNotEmpty"],IRI_REF:["propertyListNotEmpty"],PNAME_LN:["propertyListNotEmpty"],PNAME_NS:["propertyListNotEmpty"],".":[],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},propertyListPathNotEmpty:{VAR1:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],VAR2:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],"^":["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],a:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],"!":["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],"(":["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],IRI_REF:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],PNAME_LN:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],PNAME_NS:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"]},quadData:{"{":["{","disallowVars","quads","allowVars","}"]},quadDataNoBnodes:{"{":["{","disallowBnodes","disallowVars","quads","allowVars","allowBnodes","}"]},quadPattern:{"{":["{","quads","}"]},quadPatternNoBnodes:{"{":["{","disallowBnodes","quads","allowBnodes","}"]},quads:{GRAPH:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],VAR1:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],VAR2:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],NIL:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],"(":["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],"[":["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],IRI_REF:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],TRUE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],FALSE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],BLANK_NODE_LABEL:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],ANON:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],PNAME_LN:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],PNAME_NS:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL1:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL2:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL_LONG1:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL_LONG2:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],INTEGER:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DECIMAL:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DOUBLE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],INTEGER_POSITIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DECIMAL_POSITIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DOUBLE_POSITIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],INTEGER_NEGATIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DECIMAL_NEGATIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"], +DOUBLE_NEGATIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],"}":["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"]},quadsNotTriples:{GRAPH:["GRAPH","varOrIRIref","{","?triplesTemplate","}"]},queryAll:{CONSTRUCT:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"],DESCRIBE:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"],ASK:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"],SELECT:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"]},rdfLiteral:{STRING_LITERAL1:["string","?or([LANGTAG,[^^,iriRef]])"],STRING_LITERAL2:["string","?or([LANGTAG,[^^,iriRef]])"],STRING_LITERAL_LONG1:["string","?or([LANGTAG,[^^,iriRef]])"],STRING_LITERAL_LONG2:["string","?or([LANGTAG,[^^,iriRef]])"]},regexExpression:{REGEX:["REGEX","(","expression",",","expression","?[,,expression]",")"]},relationalExpression:{"!":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"+":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"-":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],VAR1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],VAR2:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"(":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],LANG:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],LANGMATCHES:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DATATYPE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],BOUND:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IRI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],URI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],BNODE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],RAND:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ABS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],CEIL:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],FLOOR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ROUND:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],CONCAT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRLEN:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],UCASE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],LCASE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ENCODE_FOR_URI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],CONTAINS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRSTARTS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRENDS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRBEFORE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRAFTER:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],YEAR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MONTH:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DAY:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],HOURS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MINUTES:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SECONDS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],TIMEZONE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],TZ:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],NOW:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],UUID:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRUUID:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MD5:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA256:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA384:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA512:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],COALESCE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IF:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRLANG:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRDT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SAMETERM:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISIRI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISURI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISBLANK:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISLITERAL:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISNUMERIC:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],TRUE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],FALSE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],COUNT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SUM:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MIN:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MAX:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],AVG:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SAMPLE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],GROUP_CONCAT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SUBSTR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],REPLACE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],REGEX:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],EXISTS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],NOT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IRI_REF:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL2:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL_LONG1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL_LONG2:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],INTEGER:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DECIMAL:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DOUBLE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],INTEGER_POSITIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DECIMAL_POSITIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DOUBLE_POSITIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],INTEGER_NEGATIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DECIMAL_NEGATIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DOUBLE_NEGATIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],PNAME_LN:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],PNAME_NS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"]},selectClause:{SELECT:["SELECT","?or([DISTINCT,REDUCED])","or([+or([var,[ (,expression,AS,var,)]]),*])"]},selectQuery:{SELECT:["selectClause","*datasetClause","whereClause","solutionModifier"]},serviceGraphPattern:{SERVICE:["SERVICE","?SILENT","varOrIRIref","groupGraphPattern"]},solutionModifier:{LIMIT:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],OFFSET:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],ORDER:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],HAVING:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],GROUP:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],VALUES:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],$:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],"}":["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"]},sourceSelector:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"]},sparql11:{$:["prologue","or([queryAll,updateAll])","$"],CONSTRUCT:["prologue","or([queryAll,updateAll])","$"],DESCRIBE:["prologue","or([queryAll,updateAll])","$"],ASK:["prologue","or([queryAll,updateAll])","$"],INSERT:["prologue","or([queryAll,updateAll])","$"],DELETE:["prologue","or([queryAll,updateAll])","$"],SELECT:["prologue","or([queryAll,updateAll])","$"],LOAD:["prologue","or([queryAll,updateAll])","$"],CLEAR:["prologue","or([queryAll,updateAll])","$"],DROP:["prologue","or([queryAll,updateAll])","$"],ADD:["prologue","or([queryAll,updateAll])","$"],MOVE:["prologue","or([queryAll,updateAll])","$"],COPY:["prologue","or([queryAll,updateAll])","$"],CREATE:["prologue","or([queryAll,updateAll])","$"],WITH:["prologue","or([queryAll,updateAll])","$"],BASE:["prologue","or([queryAll,updateAll])","$"],PREFIX:["prologue","or([queryAll,updateAll])","$"]},storeProperty:{VAR1:[],VAR2:[],IRI_REF:[],PNAME_LN:[],PNAME_NS:[],a:[]},strReplaceExpression:{REPLACE:["REPLACE","(","expression",",","expression",",","expression","?[,,expression]",")"]},string:{STRING_LITERAL1:["STRING_LITERAL1"],STRING_LITERAL2:["STRING_LITERAL2"],STRING_LITERAL_LONG1:["STRING_LITERAL_LONG1"],STRING_LITERAL_LONG2:["STRING_LITERAL_LONG2"]},subSelect:{SELECT:["selectClause","whereClause","solutionModifier","valuesClause"]},substringExpression:{SUBSTR:["SUBSTR","(","expression",",","expression","?[,,expression]",")"]},triplesBlock:{VAR1:["triplesSameSubjectPath","?[.,?triplesBlock]"],VAR2:["triplesSameSubjectPath","?[.,?triplesBlock]"],NIL:["triplesSameSubjectPath","?[.,?triplesBlock]"],"(":["triplesSameSubjectPath","?[.,?triplesBlock]"],"[":["triplesSameSubjectPath","?[.,?triplesBlock]"],IRI_REF:["triplesSameSubjectPath","?[.,?triplesBlock]"],TRUE:["triplesSameSubjectPath","?[.,?triplesBlock]"],FALSE:["triplesSameSubjectPath","?[.,?triplesBlock]"],BLANK_NODE_LABEL:["triplesSameSubjectPath","?[.,?triplesBlock]"],ANON:["triplesSameSubjectPath","?[.,?triplesBlock]"],PNAME_LN:["triplesSameSubjectPath","?[.,?triplesBlock]"],PNAME_NS:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL1:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL2:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL_LONG1:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL_LONG2:["triplesSameSubjectPath","?[.,?triplesBlock]"],INTEGER:["triplesSameSubjectPath","?[.,?triplesBlock]"],DECIMAL:["triplesSameSubjectPath","?[.,?triplesBlock]"],DOUBLE:["triplesSameSubjectPath","?[.,?triplesBlock]"],INTEGER_POSITIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DECIMAL_POSITIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DOUBLE_POSITIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],INTEGER_NEGATIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DECIMAL_NEGATIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DOUBLE_NEGATIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"]},triplesNode:{"(":["collection"],"[":["blankNodePropertyList"]},triplesNodePath:{"(":["collectionPath"],"[":["blankNodePropertyListPath"]},triplesSameSubject:{VAR1:["varOrTerm","propertyListNotEmpty"],VAR2:["varOrTerm","propertyListNotEmpty"],NIL:["varOrTerm","propertyListNotEmpty"],IRI_REF:["varOrTerm","propertyListNotEmpty"],TRUE:["varOrTerm","propertyListNotEmpty"],FALSE:["varOrTerm","propertyListNotEmpty"],BLANK_NODE_LABEL:["varOrTerm","propertyListNotEmpty"],ANON:["varOrTerm","propertyListNotEmpty"],PNAME_LN:["varOrTerm","propertyListNotEmpty"],PNAME_NS:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL1:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL2:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL_LONG1:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL_LONG2:["varOrTerm","propertyListNotEmpty"],INTEGER:["varOrTerm","propertyListNotEmpty"],DECIMAL:["varOrTerm","propertyListNotEmpty"],DOUBLE:["varOrTerm","propertyListNotEmpty"],INTEGER_POSITIVE:["varOrTerm","propertyListNotEmpty"],DECIMAL_POSITIVE:["varOrTerm","propertyListNotEmpty"],DOUBLE_POSITIVE:["varOrTerm","propertyListNotEmpty"],INTEGER_NEGATIVE:["varOrTerm","propertyListNotEmpty"],DECIMAL_NEGATIVE:["varOrTerm","propertyListNotEmpty"],DOUBLE_NEGATIVE:["varOrTerm","propertyListNotEmpty"],"(":["triplesNode","propertyList"],"[":["triplesNode","propertyList"]},triplesSameSubjectPath:{VAR1:["varOrTerm","propertyListPathNotEmpty"],VAR2:["varOrTerm","propertyListPathNotEmpty"],NIL:["varOrTerm","propertyListPathNotEmpty"],IRI_REF:["varOrTerm","propertyListPathNotEmpty"],TRUE:["varOrTerm","propertyListPathNotEmpty"],FALSE:["varOrTerm","propertyListPathNotEmpty"],BLANK_NODE_LABEL:["varOrTerm","propertyListPathNotEmpty"],ANON:["varOrTerm","propertyListPathNotEmpty"],PNAME_LN:["varOrTerm","propertyListPathNotEmpty"],PNAME_NS:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL1:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL2:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL_LONG1:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL_LONG2:["varOrTerm","propertyListPathNotEmpty"],INTEGER:["varOrTerm","propertyListPathNotEmpty"],DECIMAL:["varOrTerm","propertyListPathNotEmpty"],DOUBLE:["varOrTerm","propertyListPathNotEmpty"],INTEGER_POSITIVE:["varOrTerm","propertyListPathNotEmpty"],DECIMAL_POSITIVE:["varOrTerm","propertyListPathNotEmpty"],DOUBLE_POSITIVE:["varOrTerm","propertyListPathNotEmpty"],INTEGER_NEGATIVE:["varOrTerm","propertyListPathNotEmpty"],DECIMAL_NEGATIVE:["varOrTerm","propertyListPathNotEmpty"],DOUBLE_NEGATIVE:["varOrTerm","propertyListPathNotEmpty"],"(":["triplesNodePath","propertyListPath"],"[":["triplesNodePath","propertyListPath"]},triplesTemplate:{VAR1:["triplesSameSubject","?[.,?triplesTemplate]"],VAR2:["triplesSameSubject","?[.,?triplesTemplate]"],NIL:["triplesSameSubject","?[.,?triplesTemplate]"],"(":["triplesSameSubject","?[.,?triplesTemplate]"],"[":["triplesSameSubject","?[.,?triplesTemplate]"],IRI_REF:["triplesSameSubject","?[.,?triplesTemplate]"],TRUE:["triplesSameSubject","?[.,?triplesTemplate]"],FALSE:["triplesSameSubject","?[.,?triplesTemplate]"],BLANK_NODE_LABEL:["triplesSameSubject","?[.,?triplesTemplate]"],ANON:["triplesSameSubject","?[.,?triplesTemplate]"],PNAME_LN:["triplesSameSubject","?[.,?triplesTemplate]"],PNAME_NS:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL1:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL2:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL_LONG1:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL_LONG2:["triplesSameSubject","?[.,?triplesTemplate]"],INTEGER:["triplesSameSubject","?[.,?triplesTemplate]"],DECIMAL:["triplesSameSubject","?[.,?triplesTemplate]"],DOUBLE:["triplesSameSubject","?[.,?triplesTemplate]"],INTEGER_POSITIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DECIMAL_POSITIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DOUBLE_POSITIVE:["triplesSameSubject","?[.,?triplesTemplate]"],INTEGER_NEGATIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DECIMAL_NEGATIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DOUBLE_NEGATIVE:["triplesSameSubject","?[.,?triplesTemplate]"]},unaryExpression:{"!":["!","primaryExpression"],"+":["+","primaryExpression"],"-":["-","primaryExpression"],VAR1:["primaryExpression"],VAR2:["primaryExpression"],"(":["primaryExpression"],STR:["primaryExpression"],LANG:["primaryExpression"],LANGMATCHES:["primaryExpression"],DATATYPE:["primaryExpression"],BOUND:["primaryExpression"],IRI:["primaryExpression"],URI:["primaryExpression"],BNODE:["primaryExpression"],RAND:["primaryExpression"],ABS:["primaryExpression"],CEIL:["primaryExpression"],FLOOR:["primaryExpression"],ROUND:["primaryExpression"],CONCAT:["primaryExpression"],STRLEN:["primaryExpression"],UCASE:["primaryExpression"],LCASE:["primaryExpression"],ENCODE_FOR_URI:["primaryExpression"],CONTAINS:["primaryExpression"],STRSTARTS:["primaryExpression"],STRENDS:["primaryExpression"],STRBEFORE:["primaryExpression"],STRAFTER:["primaryExpression"],YEAR:["primaryExpression"],MONTH:["primaryExpression"],DAY:["primaryExpression"],HOURS:["primaryExpression"],MINUTES:["primaryExpression"],SECONDS:["primaryExpression"],TIMEZONE:["primaryExpression"],TZ:["primaryExpression"],NOW:["primaryExpression"],UUID:["primaryExpression"],STRUUID:["primaryExpression"],MD5:["primaryExpression"],SHA1:["primaryExpression"],SHA256:["primaryExpression"],SHA384:["primaryExpression"],SHA512:["primaryExpression"],COALESCE:["primaryExpression"],IF:["primaryExpression"],STRLANG:["primaryExpression"],STRDT:["primaryExpression"],SAMETERM:["primaryExpression"],ISIRI:["primaryExpression"],ISURI:["primaryExpression"],ISBLANK:["primaryExpression"],ISLITERAL:["primaryExpression"],ISNUMERIC:["primaryExpression"],TRUE:["primaryExpression"],FALSE:["primaryExpression"],COUNT:["primaryExpression"],SUM:["primaryExpression"],MIN:["primaryExpression"],MAX:["primaryExpression"],AVG:["primaryExpression"],SAMPLE:["primaryExpression"],GROUP_CONCAT:["primaryExpression"],SUBSTR:["primaryExpression"],REPLACE:["primaryExpression"],REGEX:["primaryExpression"],EXISTS:["primaryExpression"],NOT:["primaryExpression"],IRI_REF:["primaryExpression"],STRING_LITERAL1:["primaryExpression"],STRING_LITERAL2:["primaryExpression"],STRING_LITERAL_LONG1:["primaryExpression"],STRING_LITERAL_LONG2:["primaryExpression"],INTEGER:["primaryExpression"],DECIMAL:["primaryExpression"],DOUBLE:["primaryExpression"],INTEGER_POSITIVE:["primaryExpression"],DECIMAL_POSITIVE:["primaryExpression"],DOUBLE_POSITIVE:["primaryExpression"],INTEGER_NEGATIVE:["primaryExpression"],DECIMAL_NEGATIVE:["primaryExpression"],DOUBLE_NEGATIVE:["primaryExpression"],PNAME_LN:["primaryExpression"],PNAME_NS:["primaryExpression"]},update:{INSERT:["prologue","?[update1,?[;,update]]"],DELETE:["prologue","?[update1,?[;,update]]"],LOAD:["prologue","?[update1,?[;,update]]"],CLEAR:["prologue","?[update1,?[;,update]]"],DROP:["prologue","?[update1,?[;,update]]"],ADD:["prologue","?[update1,?[;,update]]"],MOVE:["prologue","?[update1,?[;,update]]"],COPY:["prologue","?[update1,?[;,update]]"],CREATE:["prologue","?[update1,?[;,update]]"],WITH:["prologue","?[update1,?[;,update]]"],BASE:["prologue","?[update1,?[;,update]]"],PREFIX:["prologue","?[update1,?[;,update]]"],$:["prologue","?[update1,?[;,update]]"]},update1:{LOAD:["load"],CLEAR:["clear"],DROP:["drop"],ADD:["add"],MOVE:["move"],COPY:["copy"],CREATE:["create"],INSERT:["INSERT","insert1"],DELETE:["DELETE","delete1"],WITH:["modify"]},updateAll:{INSERT:["?[update1,?[;,update]]"],DELETE:["?[update1,?[;,update]]"],LOAD:["?[update1,?[;,update]]"],CLEAR:["?[update1,?[;,update]]"],DROP:["?[update1,?[;,update]]"],ADD:["?[update1,?[;,update]]"],MOVE:["?[update1,?[;,update]]"],COPY:["?[update1,?[;,update]]"],CREATE:["?[update1,?[;,update]]"],WITH:["?[update1,?[;,update]]"],$:["?[update1,?[;,update]]"]},usingClause:{USING:["USING","or([iriRef,[NAMED,iriRef]])"]},valueLogical:{"!":["relationalExpression"],"+":["relationalExpression"],"-":["relationalExpression"],VAR1:["relationalExpression"],VAR2:["relationalExpression"],"(":["relationalExpression"],STR:["relationalExpression"],LANG:["relationalExpression"],LANGMATCHES:["relationalExpression"],DATATYPE:["relationalExpression"],BOUND:["relationalExpression"],IRI:["relationalExpression"],URI:["relationalExpression"],BNODE:["relationalExpression"],RAND:["relationalExpression"],ABS:["relationalExpression"],CEIL:["relationalExpression"],FLOOR:["relationalExpression"],ROUND:["relationalExpression"],CONCAT:["relationalExpression"],STRLEN:["relationalExpression"],UCASE:["relationalExpression"],LCASE:["relationalExpression"],ENCODE_FOR_URI:["relationalExpression"],CONTAINS:["relationalExpression"],STRSTARTS:["relationalExpression"], +STRENDS:["relationalExpression"],STRBEFORE:["relationalExpression"],STRAFTER:["relationalExpression"],YEAR:["relationalExpression"],MONTH:["relationalExpression"],DAY:["relationalExpression"],HOURS:["relationalExpression"],MINUTES:["relationalExpression"],SECONDS:["relationalExpression"],TIMEZONE:["relationalExpression"],TZ:["relationalExpression"],NOW:["relationalExpression"],UUID:["relationalExpression"],STRUUID:["relationalExpression"],MD5:["relationalExpression"],SHA1:["relationalExpression"],SHA256:["relationalExpression"],SHA384:["relationalExpression"],SHA512:["relationalExpression"],COALESCE:["relationalExpression"],IF:["relationalExpression"],STRLANG:["relationalExpression"],STRDT:["relationalExpression"],SAMETERM:["relationalExpression"],ISIRI:["relationalExpression"],ISURI:["relationalExpression"],ISBLANK:["relationalExpression"],ISLITERAL:["relationalExpression"],ISNUMERIC:["relationalExpression"],TRUE:["relationalExpression"],FALSE:["relationalExpression"],COUNT:["relationalExpression"],SUM:["relationalExpression"],MIN:["relationalExpression"],MAX:["relationalExpression"],AVG:["relationalExpression"],SAMPLE:["relationalExpression"],GROUP_CONCAT:["relationalExpression"],SUBSTR:["relationalExpression"],REPLACE:["relationalExpression"],REGEX:["relationalExpression"],EXISTS:["relationalExpression"],NOT:["relationalExpression"],IRI_REF:["relationalExpression"],STRING_LITERAL1:["relationalExpression"],STRING_LITERAL2:["relationalExpression"],STRING_LITERAL_LONG1:["relationalExpression"],STRING_LITERAL_LONG2:["relationalExpression"],INTEGER:["relationalExpression"],DECIMAL:["relationalExpression"],DOUBLE:["relationalExpression"],INTEGER_POSITIVE:["relationalExpression"],DECIMAL_POSITIVE:["relationalExpression"],DOUBLE_POSITIVE:["relationalExpression"],INTEGER_NEGATIVE:["relationalExpression"],DECIMAL_NEGATIVE:["relationalExpression"],DOUBLE_NEGATIVE:["relationalExpression"],PNAME_LN:["relationalExpression"],PNAME_NS:["relationalExpression"]},valuesClause:{VALUES:["VALUES","dataBlock"],$:[],"}":[]},"var":{VAR1:["VAR1"],VAR2:["VAR2"]},varOrIRIref:{VAR1:["var"],VAR2:["var"],IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"]},varOrTerm:{VAR1:["var"],VAR2:["var"],NIL:["graphTerm"],IRI_REF:["graphTerm"],TRUE:["graphTerm"],FALSE:["graphTerm"],BLANK_NODE_LABEL:["graphTerm"],ANON:["graphTerm"],PNAME_LN:["graphTerm"],PNAME_NS:["graphTerm"],STRING_LITERAL1:["graphTerm"],STRING_LITERAL2:["graphTerm"],STRING_LITERAL_LONG1:["graphTerm"],STRING_LITERAL_LONG2:["graphTerm"],INTEGER:["graphTerm"],DECIMAL:["graphTerm"],DOUBLE:["graphTerm"],INTEGER_POSITIVE:["graphTerm"],DECIMAL_POSITIVE:["graphTerm"],DOUBLE_POSITIVE:["graphTerm"],INTEGER_NEGATIVE:["graphTerm"],DECIMAL_NEGATIVE:["graphTerm"],DOUBLE_NEGATIVE:["graphTerm"]},verb:{VAR1:["storeProperty","varOrIRIref"],VAR2:["storeProperty","varOrIRIref"],IRI_REF:["storeProperty","varOrIRIref"],PNAME_LN:["storeProperty","varOrIRIref"],PNAME_NS:["storeProperty","varOrIRIref"],a:["storeProperty","a"]},verbPath:{"^":["path"],a:["path"],"!":["path"],"(":["path"],IRI_REF:["path"],PNAME_LN:["path"],PNAME_NS:["path"]},verbSimple:{VAR1:["var"],VAR2:["var"]},whereClause:{"{":["?WHERE","groupGraphPattern"],WHERE:["?WHERE","groupGraphPattern"]}},keywords:/^(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,punct:/^(\*|a|\.|\{|\}|,|\(|\)|;|\[|\]|\|\||&&|=|!=|!|<=|>=|<|>|\+|-|\/|\^\^|\?|\||\^)/,startSymbol:"sparql11",acceptEmpty:!0}},{}],3:[function(e,i,r){"use strict";var n=function(){try{return e("codemirror")}catch(i){return window.CodeMirror}}();n.defineMode("sparql11",function(i,r){function n(e){var i=[],r=a[e];if(void 0!=r)for(var n in r)i.push(n.toString());else i.push(e);return i}function o(e,i){function r(){var r=null;if(i.inLiteral){var n=!1;r=e.match(j[i.inLiteral].contents.regex,!0,!1);if(r&&0==r[0].length){r=e.match(j[i.inLiteral].closing.regex,!0,!1);n=!0}if(r&&r[0].length>0){var o={quotePos:n?"end":"content",cat:F[i.inLiteral].CAT,style:j[i.inLiteral].complete.style,text:r[0],start:e.start};n&&(i.inLiteral=!1);return o}}for(var t in j){r=e.match(j[t].quotes.regex,!0,!1);if(r){var a;if(i.inLiteral){i.inLiteral=!1;a="end"}else{i.inLiteral=t;a="start"}return{cat:F[t].CAT,style:j[t].quotes.style,text:r[0],quotePos:a,start:e.start}}}for(var p=0;p",style:"error",text:r[0],start:e.start}}function o(){var r=e.column();i.errorStartPos=r;i.errorEndPos=r+E.text.length}function t(e){null==i.queryType&&("SELECT"!=e&&"CONSTRUCT"!=e&&"ASK"!=e&&"DESCRIBE"!=e&&"INSERT"!=e&&"DELETE"!=e&&"LOAD"!=e&&"CLEAR"!=e&&"CREATE"!=e&&"DROP"!=e&&"COPY"!=e&&"MOVE"!=e&&"ADD"!=e||(i.queryType=e))}function p(e){"prefixDecl"===e?i.inPrefixDecl=!0:i.inPrefixDecl=!1;switch(e){case"disallowVars":i.allowVars=!1;break;case"allowVars":i.allowVars=!0;break;case"disallowBnodes":i.allowBnodes=!1;break;case"allowBnodes":i.allowBnodes=!0;break;case"storeProperty":i.storeProperty=!0}}function l(e){return(i.allowVars||"var"!=e)&&(i.allowBnodes||"blankNode"!=e&&"blankNodePropertyList"!=e&&"blankNodePropertyListPath"!=e)}0==e.pos&&(i.possibleCurrent=i.possibleNext);var E=r();if(""==E.cat){if(1==i.OK){i.OK=!1;o()}i.complete=!1;return E.style}if("WS"==E.cat||"COMMENT"==E.cat||E.quotePos&&"end"!=E.quotePos){i.possibleCurrent=i.possibleNext;return E.style}var u,c=!1,d=E.cat;if(!E.quotePos||"end"==E.quotePos)for(;i.stack.length>0&&d&&i.OK&&!c;){u=i.stack.pop();if(a[u]){var N=a[u][d];if(void 0!=N&&l(u)){for(var x=N.length-1;x>=0;--x)i.stack.push(N[x]);p(u)}else{i.OK=!1;i.complete=!1;o();i.stack.push(u)}}else if(u==d){if(i.inPrefixDecl)if("PNAME_NS"===u&&E.text.length>0)i.currentPnameNs=E.text.slice(0,-1);else if(void 0!==i.currentPnameNs&&E.text.length>2){i.prefixes[i.currentPnameNs]=E.text.slice(1,-1);i.currentPnameNs=void 0}c=!0;t(u);for(var I=!0,m=i.stack.length;m>0;--m){var L=a[i.stack[m-1]];L&&L.$||(I=!1)}i.complete=I;if(i.storeProperty&&"punc"!=d.cat){i.lastProperty=E.text;i.storeProperty=!1}if(!i.inPrefixDecl&&("PNAME_NS"===d||"PNAME_LN"===d)){var T=E.text.indexOf(":");if(T>=0){var g=E.text.slice(0,T);if(!i.prefixes[g]&&"bif"!==g){i.OK=!1;o();i.errorMsg="Prefix '"+g+"' is not defined"}}}}else{i.OK=!1;i.complete=!1;o()}}if(!c&&i.OK){i.OK=!1;i.complete=!1;o()}i.possibleCurrent.indexOf("a")>=0&&(i.lastPredicateOffset=E.start);i.possibleCurrent=i.possibleNext;i.possibleNext=n(i.stack[i.stack.length-1]);return E.style}function t(e,r){if(e.inLiteral)return 0;if(e.stack.length&&"?[or([verbPath,verbSimple]),objectList]"==e.stack[e.stack.length-1])return e.lastPredicateOffset;var n=0,o=e.stack.length-1;if(/^[\}\]\)]/.test(r)){for(var t=r.substr(0,1);o>=0;--o)if(e.stack[o]==t){--o;break}}else{var s=K[e.stack[o]];if(s){n+=s;--o}}for(;o>=0;--o){var s=z[e.stack[o]];s&&(n+=s)}return n*i.indentUnit}var s=(i.indentUnit,e("./_tokenizer-table.js")),a=s.table,p='<[^<>"`|{}^\\\0- ]*>',l="[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]",E=l+"|_",u="("+E+"|-|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])",c="("+E+"|[0-9])("+E+"|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])*",d="\\?"+c,N="\\$"+c,x="("+l+")((("+u+")|\\.)*("+u+"))?",I="[0-9A-Fa-f]",m="(%"+I+I+")",L="(\\\\[_~\\.\\-!\\$&'\\(\\)\\*\\+,;=/\\?#@%])",T="("+m+"|"+L+")",g="("+E+"|:|[0-9]|"+T+")(("+u+"|\\.|:|"+T+")*("+u+"|:|"+T+"))?",A="_:("+E+"|[0-9])(("+u+"|\\.)*"+u+")?",v="("+x+")?:",S=v+g,h="@[a-zA-Z]+(-[a-zA-Z0-9]+)*",R="[eE][\\+-]?[0-9]+",C="[0-9]+",f="(([0-9]+\\.[0-9]*)|(\\.[0-9]+))",O="(([0-9]+\\.[0-9]*"+R+")|(\\.[0-9]+"+R+")|([0-9]+"+R+"))",y="\\+"+C,P="\\+"+f,_="\\+"+O,D="-"+C,b="-"+f,G="-"+O,M="\\\\[tbnrf\\\\\"']",U=I+"{4}",B="(\\\\u"+U+"|\\\\U00(10|0"+I+")"+U+")",V="'(([^\\x27\\x5C\\x0A\\x0D])|"+M+"|"+B+")*'",k='"(([^\\x22\\x5C\\x0A\\x0D])|'+M+"|"+B+')*"',F={SINGLE:{CAT:"STRING_LITERAL_LONG1",QUOTES:"'''",CONTENTS:"(('|'')?([^'\\\\]|"+M+"|"+B+"))*"},DOUBLE:{CAT:"STRING_LITERAL_LONG2",QUOTES:'"""',CONTENTS:'(("|"")?([^"\\\\]|'+M+"|"+B+"))*"}};for(var w in F)F[w].COMPLETE=F[w].QUOTES+F[w].CONTENTS+F[w].QUOTES;var j={};for(var w in F)j[w]={complete:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].COMPLETE),style:"string"},contents:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].CONTENTS),style:"string"},closing:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].CONTENTS+F[w].QUOTES),style:"string"},quotes:{name:"STRING_LITERAL_LONG_QUOTES_"+w,regex:new RegExp("^"+F[w].QUOTES),style:"string"}};var H="[\\x20\\x09\\x0D\\x0A]",q="#([^\\n\\r]*[\\n\\r]|[^\\n\\r]*$)",W="("+H+"|("+q+"))*",Y="\\("+W+"\\)",Q="\\["+W+"\\]",X=[{name:"WS",regex:new RegExp("^"+H+"+"),style:"ws"},{name:"COMMENT",regex:new RegExp("^"+q),style:"comment"},{name:"IRI_REF",regex:new RegExp("^"+p),style:"variable-3"},{name:"VAR1",regex:new RegExp("^"+d),style:"atom"},{name:"VAR2",regex:new RegExp("^"+N),style:"atom"},{name:"LANGTAG",regex:new RegExp("^"+h),style:"meta"},{name:"DOUBLE",regex:new RegExp("^"+O),style:"number"},{name:"DECIMAL",regex:new RegExp("^"+f),style:"number"},{name:"INTEGER",regex:new RegExp("^"+C),style:"number"},{name:"DOUBLE_POSITIVE",regex:new RegExp("^"+_),style:"number"},{name:"DECIMAL_POSITIVE",regex:new RegExp("^"+P),style:"number"},{name:"INTEGER_POSITIVE",regex:new RegExp("^"+y),style:"number"},{name:"DOUBLE_NEGATIVE",regex:new RegExp("^"+G),style:"number"},{name:"DECIMAL_NEGATIVE",regex:new RegExp("^"+b),style:"number"},{name:"INTEGER_NEGATIVE",regex:new RegExp("^"+D),style:"number"},{name:"STRING_LITERAL1",regex:new RegExp("^"+V),style:"string"},{name:"STRING_LITERAL2",regex:new RegExp("^"+k),style:"string"},{name:"NIL",regex:new RegExp("^"+Y),style:"punc"},{name:"ANON",regex:new RegExp("^"+Q),style:"punc"},{name:"PNAME_LN",regex:new RegExp("^"+S),style:"string-2"},{name:"PNAME_NS",regex:new RegExp("^"+v),style:"string-2"},{name:"BLANK_NODE_LABEL",regex:new RegExp("^"+A),style:"string-2"}],K={"*[,, object]":3,"*[(,),object]":3,"*[(,),objectPath]":3,"*[/,pathEltOrInverse]":2,object:2,objectPath:2,objectList:2,objectListPath:2,storeProperty:2,pathMod:2,"?pathMod":2,propertyListNotEmpty:1,propertyList:1,propertyListPath:1,propertyListPathNotEmpty:1,"?[verb,objectList]":1},z={"}":1,"]":0,")":1,"{":-1,"(":-1};return{token:o,startState:function(e){return{tokenize:o,OK:!0,complete:s.acceptEmpty,errorStartPos:null,errorEndPos:null,queryType:null,possibleCurrent:n(s.startSymbol),possibleNext:n(s.startSymbol),allowVars:!0,allowBnodes:!0,storeProperty:!1,lastProperty:"",inLiteral:!1,stack:[s.startSymbol],lastPredicateOffset:i.indentUnit,prefixes:{}}},indent:t,electricChars:"}])"}});n.defineMIME("application/x-sparql-query","sparql11")},{"./_tokenizer-table.js":2,codemirror:void 0}],4:[function(e,i,r){var n=i.exports=function(){this.words=0;this.prefixes=0;this.children=[]};n.prototype={insert:function(e,i){if(0!=e.length){var r,o,t=this;void 0===i&&(i=0);if(i!==e.length){t.prefixes++;r=e[i];void 0===t.children[r]&&(t.children[r]=new n);o=t.children[r];o.insert(e,i+1)}else t.words++}},remove:function(e,i){if(0!=e.length){var r,n,o=this;void 0===i&&(i=0);if(void 0!==o)if(i!==e.length){o.prefixes--;r=e[i];n=o.children[r];n.remove(e,i+1)}else o.words--}},update:function(e,i){if(0!=e.length&&0!=i.length){this.remove(e);this.insert(i)}},countWord:function(e,i){if(0==e.length)return 0;var r,n,o=this,t=0;void 0===i&&(i=0);if(i===e.length)return o.words;r=e[i];n=o.children[r];void 0!==n&&(t=n.countWord(e,i+1));return t},countPrefix:function(e,i){if(0==e.length)return 0;var r,n,o=this,t=0;void 0===i&&(i=0);if(i===e.length)return o.prefixes;var r=e[i];n=o.children[r];void 0!==n&&(t=n.countPrefix(e,i+1));return t},find:function(e){return 0!=e.length&&this.countWord(e)>0},getAllWords:function(e){var i,r,n=this,o=[];void 0===e&&(e="");if(void 0===n)return[];n.words>0&&o.push(e);for(i in n.children){r=n.children[i];o=o.concat(r.getAllWords(e+i))}return o},autoComplete:function(e,i){var r,n,o=this;if(0==e.length)return void 0===i?o.getAllWords(e):[];void 0===i&&(i=0);r=e[i];n=o.children[r];return void 0===n?[]:i===e.length-1?n.getAllWords(e):n.autoComplete(e,i+1)}}},{}],5:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(e){var i=e.getWrapperElement();e.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:i.style.width,height:i.style.height};i.style.width="";i.style.height="auto";i.className+=" CodeMirror-fullscreen";document.documentElement.style.overflow="hidden";e.refresh()}function r(e){var i=e.getWrapperElement();i.className=i.className.replace(/\s*CodeMirror-fullscreen\b/,"");document.documentElement.style.overflow="";var r=e.state.fullScreenRestore;i.style.width=r.width;i.style.height=r.height;window.scrollTo(r.scrollLeft,r.scrollTop);e.refresh()}e.defineOption("fullScreen",!1,function(n,o,t){t==e.Init&&(t=!1);!t!=!o&&(o?i(n):r(n))})})},{codemirror:void 0}],6:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){function i(e,i,n,o){var t=e.getLineHandle(i.line),p=i.ch-1,l=p>=0&&a[t.text.charAt(p)]||a[t.text.charAt(++p)];if(!l)return null;var E=">"==l.charAt(1)?1:-1;if(n&&E>0!=(p==i.ch))return null;var u=e.getTokenTypeAt(s(i.line,p+1)),c=r(e,s(i.line,p+(E>0?1:0)),E,u||null,o);return null==c?null:{from:s(i.line,p),to:c&&c.pos,match:c&&c.ch==l.charAt(0),forward:E>0}}function r(e,i,r,n,o){for(var t=o&&o.maxScanLineLength||1e4,p=o&&o.maxScanLines||1e3,l=[],E=o&&o.bracketRegex?o.bracketRegex:/[(){}[\]]/,u=r>0?Math.min(i.line+p,e.lastLine()+1):Math.max(e.firstLine()-1,i.line-p),c=i.line;c!=u;c+=r){var d=e.getLine(c);if(d){var N=r>0?0:d.length-1,x=r>0?d.length:-1;if(!(d.length>t)){c==i.line&&(N=i.ch-(r<0?1:0));for(;N!=x;N+=r){var I=d.charAt(N);if(E.test(I)&&(void 0===n||e.getTokenTypeAt(s(c,N+1))==n)){var m=a[I];if(">"==m.charAt(1)==r>0)l.push(I);else{if(!l.length)return{pos:s(c,N),ch:I};l.pop()}}}}}}return c-r!=(r>0?e.lastLine():e.firstLine())&&null}function n(e,r,n){for(var o=e.state.matchBrackets.maxHighlightLineLength||1e3,a=[],p=e.listSelections(),l=0;l",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},p=null;e.defineOption("matchBrackets",!1,function(i,r,n){n&&n!=e.Init&&i.off("cursorActivity",o);if(r){i.state.matchBrackets="object"==typeof r?r:{};i.on("cursorActivity",o)}});e.defineExtension("matchBrackets",function(){n(this,!0)});e.defineExtension("findMatchingBracket",function(e,r,n){return i(this,e,r,n)});e.defineExtension("scanForBracket",function(e,i,n,o){return r(this,e,i,n,o)})})},{codemirror:void 0}],7:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";e.registerHelper("fold","brace",function(i,r){function n(n){for(var a=r.ch,p=0;;){var l=a<=0?-1:s.lastIndexOf(n,a-1);if(l!=-1){if(1==p&&li.lastLine())return null;var n=i.getTokenAt(e.Pos(r,1));/\S/.test(n.string)||(n=i.getTokenAt(e.Pos(r,n.end+1)));if("keyword"!=n.type||"import"!=n.string)return null;for(var o=r,t=Math.min(i.lastLine(),r+10);o<=t;++o){var s=i.getLine(o),a=s.indexOf(";");if(a!=-1)return{startCh:n.end,end:e.Pos(o,a)}}}var o,t=r.line,s=n(t);if(!s||n(t-1)||(o=n(t-2))&&o.end.line==t-1)return null;for(var a=s.end;;){var p=n(a.line+1);if(null==p)break;a=p.end}return{from:i.clipPos(e.Pos(t,s.startCh+1)),to:a}});e.registerHelper("fold","include",function(i,r){function n(r){if(ri.lastLine())return null;var n=i.getTokenAt(e.Pos(r,1));/\S/.test(n.string)||(n=i.getTokenAt(e.Pos(r,n.end+1)));return"meta"==n.type&&"#include"==n.string.slice(0,8)?n.start+8:void 0}var o=r.line,t=n(o);if(null==t||null!=n(o-1))return null;for(var s=o;;){var a=n(s+1);if(null==a)break;++s}return{from:e.Pos(o,t+1),to:i.clipPos(e.Pos(s))}})})},{codemirror:void 0}],8:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(i,o,t,s){function a(e){var r=p(i,o);if(!r||r.to.line-r.from.linei.firstLine();){o=e.Pos(o.line-1,0);E=a(!1)}if(E&&!E.cleared&&"unfold"!==s){var u=r(i,t);e.on(u,"mousedown",function(i){c.clear();e.e_preventDefault(i)});var c=i.markText(E.from,E.to,{replacedWith:u,clearOnEnter:n(i,t,"clearOnEnter"),__isFold:!0});c.on("clear",function(r,n){e.signal(i,"unfold",i,r,n)});e.signal(i,"fold",i,E.from,E.to)}}function r(e,i){var r=n(e,i,"widget");if("string"==typeof r){var o=document.createTextNode(r);r=document.createElement("span");r.appendChild(o);r.className="CodeMirror-foldmarker"}return r}function n(e,i,r){if(i&&void 0!==i[r])return i[r];var n=e.options.foldOptions;return n&&void 0!==n[r]?n[r]:o[r]}e.newFoldFunction=function(e,r){return function(n,o){i(n,o,{rangeFinder:e,widget:r})}};e.defineExtension("foldCode",function(e,r,n){i(this,e,r,n)});e.defineExtension("isFolded",function(e){for(var i=this.findMarksAt(e),r=0;r=a&&(r=o(t.indicatorOpen))}e.setGutterMarker(i,t.gutter,r);++s})}function s(e){var i=e.getViewport(),r=e.state.foldGutter;if(r){e.operation(function(){t(e,i.from,i.to)});r.from=i.from;r.to=i.to}}function a(e,i,r){var o=e.state.foldGutter;if(o){var t=o.options;if(r==t.gutter){var s=n(e,i);s?s.clear():e.foldCode(u(i,0),t.rangeFinder)}}}function p(e){var i=e.state.foldGutter;if(i){var r=i.options;i.from=i.to=0;clearTimeout(i.changeUpdate);i.changeUpdate=setTimeout(function(){s(e)},r.foldOnChangeTimeSpan||600)}}function l(e){var i=e.state.foldGutter;if(i){var r=i.options;clearTimeout(i.changeUpdate);i.changeUpdate=setTimeout(function(){var r=e.getViewport();i.from==i.to||r.from-i.to>20||i.from-r.to>20?s(e):e.operation(function(){if(r.fromi.to){t(e,i.to,r.to);i.to=r.to}})},r.updateViewportTimeSpan||400)}}function E(e,i){var r=e.state.foldGutter;if(r){var n=i.line;n>=r.from&&n=e.max)){e.ch=0;e.text=e.cm.getLine(++e.line);return!0}}function t(e){if(!(e.line<=e.min)){e.text=e.cm.getLine(--e.line);e.ch=e.text.length;return!0}}function s(e){for(;;){var i=e.text.indexOf(">",e.ch);if(i==-1){if(o(e))continue;return}if(n(e,i+1)){var r=e.text.lastIndexOf("/",i),t=r>-1&&!/\S/.test(e.text.slice(r+1,i));e.ch=i+1;return t?"selfClose":"regular"}e.ch=i+1}}function a(e){for(;;){var i=e.ch?e.text.lastIndexOf("<",e.ch-1):-1;if(i==-1){if(t(e))continue;return}if(n(e,i+1)){x.lastIndex=i;e.ch=i;var r=x.exec(e.text);if(r&&r.index==i)return r}else e.ch=i}}function p(e){for(;;){x.lastIndex=e.ch;var i=x.exec(e.text);if(!i){if(o(e))continue;return}if(n(e,i.index+1)){e.ch=i.index+i[0].length;return i}e.ch=i.index+1}}function l(e){for(;;){var i=e.ch?e.text.lastIndexOf(">",e.ch-1):-1;if(i==-1){if(t(e))continue;return}if(n(e,i+1)){var r=e.text.lastIndexOf("/",i),o=r>-1&&!/\S/.test(e.text.slice(r+1,i));e.ch=i+1;return o?"selfClose":"regular"}e.ch=i}}function E(e,i){for(var r=[];;){var n,o=p(e),t=e.line,a=e.ch-(o?o[0].length:0);if(!o||!(n=s(e)))return;if("selfClose"!=n)if(o[1]){for(var l=r.length-1;l>=0;--l)if(r[l]==o[2]){r.length=l;break}if(l<0&&(!i||i==o[2]))return{tag:o[2],from:c(t,a),to:c(e.line,e.ch)}}else r.push(o[2])}}function u(e,i){for(var r=[];;){var n=l(e);if(!n)return;if("selfClose"!=n){var o=e.line,t=e.ch,s=a(e);if(!s)return;if(s[1])r.push(s[2]);else{for(var p=r.length-1;p>=0;--p)if(r[p]==s[2]){r.length=p;break}if(p<0&&(!i||i==s[2]))return{tag:s[2],from:c(e.line,e.ch),to:c(o,t)}}}else a(e)}}var c=e.Pos,d="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=d+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",x=new RegExp("<(/?)(["+d+"]["+N+"]*)","g");e.registerHelper("fold","xml",function(e,i){for(var n=new r(e,i.line,0);;){var o,t=p(n);if(!t||n.line!=i.line||!(o=s(n)))return;if(!t[1]&&"selfClose"!=o){var a=c(n.line,n.ch),l=E(n,t[2]);return l&&{from:a,to:l.from}}}});e.findMatchingTag=function(e,n,o){var t=new r(e,n.line,n.ch,o);if(t.text.indexOf(">")!=-1||t.text.indexOf("<")!=-1){var p=s(t),l=p&&c(t.line,t.ch),d=p&&a(t);if(p&&d&&!(i(t,n)>0)){var N={from:c(t.line,t.ch),to:l,tag:d[2]};if("selfClose"==p)return{open:N,close:null,at:"open"};if(d[1])return{open:u(t,d[2]),close:N,at:"close"};t=new r(e,l.line,l.ch,o);return{open:N,close:E(t,d[2]),at:"open"}}}};e.findEnclosingTag=function(e,i,n){for(var o=new r(e,i.line,i.ch,n);;){var t=u(o);if(!t)break;var s=new r(e,i.line,i.ch,n),a=E(s,t.tag);if(a)return{open:t,close:a}}};e.scanForClosingTag=function(e,i,n,o){var t=new r(e,i.line,i.ch,o?{from:0,to:o}:null);return E(t,n)}})},{codemirror:void 0}],11:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(e,i){this.cm=e;this.options=i;this.widget=null;this.debounce=0;this.tick=0;this.startPos=this.cm.getCursor("start");this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var r=this;e.on("cursorActivity",this.activityFunc=function(){r.cursorActivity()})}function r(i,r){var n=e.cmpPos(r.from,i.from);return n>0&&i.to.ch-i.from.ch!=r.to.ch-r.from.ch}function n(e,i,r){var n=e.options.hintOptions,o={};for(var t in x)o[t]=x[t];if(n)for(var t in n)void 0!==n[t]&&(o[t]=n[t]);if(r)for(var t in r)void 0!==r[t]&&(o[t]=r[t]);o.hint.resolve&&(o.hint=o.hint.resolve(e,i));return o}function o(e){return"string"==typeof e?e:e.text}function t(e,i){function r(e,r){var o;o="string"!=typeof r?function(e){return r(e,i)}:n.hasOwnProperty(r)?n[r]:r;t[e]=o}var n={Up:function(){i.moveFocus(-1)},Down:function(){i.moveFocus(1)},PageUp:function(){i.moveFocus(-i.menuSize()+1,!0)},PageDown:function(){i.moveFocus(i.menuSize()-1,!0)},Home:function(){i.setFocus(0)},End:function(){i.setFocus(i.length-1)},Enter:i.pick,Tab:i.pick,Esc:i.close},o=e.options.customKeys,t=o?{}:n;if(o)for(var s in o)o.hasOwnProperty(s)&&r(s,o[s]);var a=e.options.extraKeys;if(a)for(var s in a)a.hasOwnProperty(s)&&r(s,a[s]);return t}function s(e,i){for(;i&&i!=e;){if("LI"===i.nodeName.toUpperCase()&&i.parentNode==e)return i;i=i.parentNode}}function a(i,r){this.completion=i;this.data=r;this.picked=!1;var n=this,a=i.cm,p=this.hints=document.createElement("ul");p.className="CodeMirror-hints";this.selectedHint=r.selectedHint||0;for(var l=r.list,E=0;Ep.clientHeight+1,R=a.getScrollInfo();if(S>0){var C=v.bottom-v.top,f=I.top-(I.bottom-v.top);if(f-C>0){p.style.top=(L=I.top-C)+"px";T=!1}else if(C>A){p.style.height=A-5+"px";p.style.top=(L=I.bottom-v.top)+"px";var O=a.getCursor();if(r.from.ch!=O.ch){I=a.cursorCoords(O);p.style.left=(m=I.left)+"px";v=p.getBoundingClientRect()}}}var y=v.right-g;if(y>0){if(v.right-v.left>g){p.style.width=g-5+"px";y-=v.right-v.left-g}p.style.left=(m=I.left-y)+"px"}if(h)for(var P=p.firstChild;P;P=P.nextSibling)P.style.paddingRight=a.display.nativeBarWidth+"px";a.addKeyMap(this.keyMap=t(i,{moveFocus:function(e,i){n.changeActive(n.selectedHint+e,i)},setFocus:function(e){n.changeActive(e)},menuSize:function(){return n.screenAmount()},length:l.length,close:function(){i.close()},pick:function(){n.pick()},data:r}));if(i.options.closeOnUnfocus){var _;a.on("blur",this.onBlur=function(){_=setTimeout(function(){i.close()},100)});a.on("focus",this.onFocus=function(){clearTimeout(_)})}a.on("scroll",this.onScroll=function(){var e=a.getScrollInfo(),r=a.getWrapperElement().getBoundingClientRect(),n=L+R.top-e.top,o=n-(window.pageYOffset||(document.documentElement||document.body).scrollTop);T||(o+=p.offsetHeight);if(o<=r.top||o>=r.bottom)return i.close();p.style.top=n+"px";p.style.left=m+R.left-e.left+"px"});e.on(p,"dblclick",function(e){var i=s(p,e.target||e.srcElement);if(i&&null!=i.hintId){n.changeActive(i.hintId);n.pick()}});e.on(p,"click",function(e){var r=s(p,e.target||e.srcElement);if(r&&null!=r.hintId){n.changeActive(r.hintId);i.options.completeOnSingleClick&&n.pick()}});e.on(p,"mousedown",function(){setTimeout(function(){a.focus()},20)});e.signal(r,"select",l[0],p.firstChild);return!0}function p(e,i){if(!e.somethingSelected())return i;for(var r=[],n=0;n0?i(e):n(o+1)})}var t=p(e,o);n(0)};t.async=!0;t.supportsSelection=!0;return t}return(n=i.getHelper(i.getCursor(),"hintWords"))?function(i){return e.hint.fromList(i,{words:n})}:e.hint.anyword?function(i,r){return e.hint.anyword(i,r)}:function(){}}var u="CodeMirror-hint",c="CodeMirror-hint-active";e.showHint=function(e,i,r){if(!i)return e.showHint(r);r&&r.async&&(i.async=!0);var n={hint:i};if(r)for(var o in r)n[o]=r[o];return e.showHint(n)};e.defineExtension("showHint",function(r){r=n(this,this.getCursor("start"),r);var o=this.listSelections();if(!(o.length>1)){if(this.somethingSelected()){if(!r.hint.supportsSelection)return;for(var t=0;t=this.data.list.length?i=r?this.data.list.length-1:0:i<0&&(i=r?0:this.data.list.length-1);if(this.selectedHint!=i){var n=this.hints.childNodes[this.selectedHint];n.className=n.className.replace(" "+c,"");n=this.hints.childNodes[this.selectedHint=i];n.className+=" "+c;n.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=n.offsetTop+n.offsetHeight-this.hints.clientHeight+3);e.signal(this.data,"select",this.data.list[this.selectedHint],n)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}};e.registerHelper("hint","auto",{resolve:E});e.registerHelper("hint","fromList",function(i,r){var n=i.getCursor(),o=i.getTokenAt(n),t=e.Pos(n.line,o.end);if(o.string&&/\w/.test(o.string[o.string.length-1]))var s=o.string,a=e.Pos(n.line,o.start);else var s="",a=t;for(var p=[],l=0;l,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};e.defineOption("hintOptions",null)})},{codemirror:void 0}],12:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";e.runMode=function(i,r,n,o){var t=e.getMode(e.defaults,r),s=/MSIE \d/.test(navigator.userAgent),a=s&&(null==document.documentMode||document.documentMode<9);if(n.appendChild){var p=o&&o.tabSize||e.defaults.tabSize,l=n,E=0;l.innerHTML="";n=function(e,i){if("\n"!=e){for(var r="",n=0;;){var o=e.indexOf("\t",n);if(o==-1){r+=e.slice(n);E+=e.length-n;break}E+=o-n;r+=e.slice(n,o);var t=p-E%p;E+=t;for(var s=0;s-1){E=r(p,l,E);return{from:n(t.line,E),to:n(t.line,E+s.length)}}}else{var p=e.getLine(t.line).slice(t.ch),l=a(p),E=l.indexOf(i);if(E>-1){E=r(p,l,E)+t.ch;return{from:n(t.line,E),to:n(t.line,E+s.length)}}}}:this.matches=function(){};else{var l=s.split("\n");this.matches=function(i,r){var o=p.length-1;if(i){if(r.line-(p.length-1)=1;--E,--s)if(p[E]!=a(e.getLine(s)))return;var u=e.getLine(s),c=u.length-l[0].length;if(a(u.slice(c))!=p[0])return;return{from:n(s,c),to:t}}if(!(r.line+(p.length-1)>e.lastLine())){var u=e.getLine(r.line),c=u.length-l[0].length;if(a(u.slice(c))==p[0]){for(var d=n(r.line,c),s=r.line+1,E=1;Er))return n;--n}}}var n=e.Pos;i.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(e){function i(e){var i=n(e,0);r.pos={from:i,to:i};r.atOccurrence=!1;return!1}for(var r=this,o=this.doc.clipPos(e?this.pos.from:this.pos.to);;){if(this.pos=this.matches(e,o)){this.atOccurrence=!0;return this.pos.match||!0}if(e){if(!o.line)return i(0);o=n(o.line-1,this.doc.getLine(o.line-1).length)}else{var t=this.doc.lineCount();if(o.line==t-1)return i(t);o=n(o.line+1,0)}}},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(i,r){if(this.atOccurrence){var o=e.splitLines(i);this.doc.replaceRange(o,this.pos.from,this.pos.to,r);this.pos.to=n(this.pos.from.line+o.length-1,o[o.length-1].length+(1==o.length?this.pos.from.ch:0))}}};e.defineExtension("getSearchCursor",function(e,r,n){return new i(this.doc,e,r,n)});e.defineDocExtension("getSearchCursor",function(e,r,n){return new i(this,e,r,n)});e.defineExtension("selectMatches",function(i,r){for(var n=[],o=this.getSearchCursor(i,this.getCursor("from"),r);o.findNext()&&!(e.cmpPos(o.to(),this.getCursor("to"))>0);)n.push({anchor:o.from(),head:o.to()});n.length&&this.setSelections(n,0)})})},{codemirror:void 0}],14:[function(i,r,n){(function(i){"use strict";(function(i,o){"function"==typeof e&&e.amd?e([],o):"object"==typeof n?r.exports=o():i.store=o()})(this,function(){function e(){try{return s in o&&o[s]}catch(e){return!1}}var r,n={},o="undefined"!=typeof window?window:i,t=o.document,s="localStorage",a="script";n.disabled=!1;n.version="1.3.20";n.set=function(e,i){};n.get=function(e,i){};n.has=function(e){return void 0!==n.get(e)};n.remove=function(e){};n.clear=function(){};n.transact=function(e,i,r){if(null==r){r=i;i=null}null==i&&(i={});var o=n.get(e,i);r(o);n.set(e,o)};n.getAll=function(){};n.forEach=function(){};n.serialize=function(e){return JSON.stringify(e)};n.deserialize=function(e){if("string"==typeof e)try{return JSON.parse(e)}catch(i){return e||void 0}};if(e()){r=o[s];n.set=function(e,i){if(void 0===i)return n.remove(e);r.setItem(e,n.serialize(i));return i};n.get=function(e,i){var o=n.deserialize(r.getItem(e));return void 0===o?i:o};n.remove=function(e){r.removeItem(e)};n.clear=function(){r.clear()};n.getAll=function(){var e={};n.forEach(function(i,r){e[i]=r});return e};n.forEach=function(e){for(var i=0;idocument.w=window');l.close();p=l.w.frames[0].document;r=p.createElement("div")}catch(E){r=t.createElement("div");p=t.body}var u=function(e){return function(){var i=Array.prototype.slice.call(arguments,0);i.unshift(r);p.appendChild(r);r.addBehavior("#default#userData");r.load(s);var o=e.apply(n,i);p.removeChild(r);return o}},c=new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]","g"),d=function(e){return e.replace(/^d/,"___$&").replace(c,"___")};n.set=u(function(e,i,r){i=d(i);if(void 0===r)return n.remove(i);e.setAttribute(i,n.serialize(r));e.save(s);return r});n.get=u(function(e,i,r){i=d(i);var o=n.deserialize(e.getAttribute(i));return void 0===o?r:o});n.remove=u(function(e,i){i=d(i);e.removeAttribute(i);e.save(s)});n.clear=u(function(e){var i=e.XMLDocument.documentElement.attributes;e.load(s);for(var r=i.length-1;r>=0;r--)e.removeAttribute(i[r].name);e.save(s)});n.getAll=function(e){var i={};n.forEach(function(e,r){i[e]=r});return i};n.forEach=u(function(e,i){for(var r,o=e.XMLDocument.documentElement.attributes,t=0;r=o[t];++t)i(r.name,n.deserialize(e.getAttribute(r.name)))})}try{var N="__storejs__";n.set(N,N);n.get(N)!=N&&(n.disabled=!0);n.remove(N)}catch(E){n.disabled=!0}n.enabled=!n.disabled;return n})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],15:[function(e,i,r){i.exports={_args:[[{raw:"yasgui-utils@^1.6.0",scope:null,escapedName:"yasgui-utils",name:"yasgui-utils",rawSpec:"^1.6.0",spec:">=1.6.0 <2.0.0",type:"range"},"/home/lrd900/yasgui/yasqe"]],_from:"yasgui-utils@>=1.6.0 <2.0.0",_id:"yasgui-utils@1.6.0",_inCache:!0,_installable:!0,_location:"/yasgui-utils",_npmUser:{name:"laurens.rietveld",email:"laurens.rietveld@gmail.com"},_npmVersion:"1.4.3",_phantomChildren:{},_requested:{raw:"yasgui-utils@^1.6.0",scope:null,escapedName:"yasgui-utils",name:"yasgui-utils",rawSpec:"^1.6.0",spec:">=1.6.0 <2.0.0",type:"range"},_requiredBy:["/"],_resolved:"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz",_shasum:"bcb9091109c233e3e82737c94c202e6512389c47",_shrinkwrap:null,_spec:"yasgui-utils@^1.6.0",_where:"/home/lrd900/yasgui/yasqe",author:{name:"Laurens Rietveld"},bugs:{url:"https://github.com/YASGUI/Utils/issues"},dependencies:{store:"^1.3.14"},description:"Utils for YASGUI libs",devDependencies:{},directories:{},dist:{shasum:"bcb9091109c233e3e82737c94c202e6512389c47",tarball:"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz"},homepage:"https://github.com/YASGUI/Utils",licenses:[{type:"MIT",url:"http://yasgui.github.io/license.txt"}],main:"src/main.js",maintainers:[{name:"laurens.rietveld",email:"laurens.rietveld@gmail.com"}],name:"yasgui-utils",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git://github.com/YASGUI/Utils.git"},version:"1.6.0"}},{}],16:[function(e,i,r){window.console=window.console||{log:function(){}};i.exports={storage:e("./storage.js"),svg:e("./svg.js"),version:{"yasgui-utils":e("../package.json").version},nestedExists:function(e){for(var i=Array.prototype.slice.call(arguments,1),r=0;ri.exp?null:i.val:null}return null}}},{store:14}],18:[function(e,i,r){i.exports={draw:function(e,r){if(e){var n=i.exports.getElement(r);n&&(e.append?e.append(n):e.appendChild(n))}},getElement:function(e){if(e&&0==e.indexOf("0){var t=n(i.getWrapperElement()).find(".CodeMirror-vscrollbar"),s=0;t.is(":visible")&&(s=t.outerWidth());e.forEach(function(e){e.css("right",s)})}});var E=function(e,r){l[e.name]=new s;for(var n=0;n0&&E(n,e)};if(n.get instanceof Array)s(n.get);else{var a=null,l=o.getPersistencyId(i,n.persistent);l&&(a=t.storage.get(l));a&&a.length>0?s(a):n.get instanceof Function&&(n.async?n.get(null,s):s(n.get()))}}},c=function(r){if(!i.somethingSelected()){var o=function(n){if(r&&(!n.autoShow||!n.bulk&&n.async))return!1;var o={closeCharacters:/(?=a)b/,completeSingle:!1};!n.bulk&&n.async&&(o.async=!0);var t=function(e,i){return d(n,i)};e.showHint(i,t,o);return!0};for(var t in p)if(n.inArray(t,i.options.autocompleters)!=-1){var s=p[t];if(s.isValidCompletionPosition)if(s.isValidCompletionPosition()){if(!s.callbacks||!s.callbacks.validPosition||s.callbacks.validPosition(i,s)!==!1){var a=o(s);if(a)break}}else s.callbacks&&s.callbacks.invalidPosition&&s.callbacks.invalidPosition(i,s)}}},d=function(e,r){var n=function(i){var r=i.autocompletionString||i.string,n=[];if(l[e.name])n=l[e.name].autoComplete(r);else if("function"==typeof e.get&&0==e.async)n=e.get(r);else if("object"==typeof e.get)for(var o=r.length,t=0;t
"));r[i.name].show().text("Press "+(navigator.userAgent.indexOf("Mac OS X")!=-1?"CMD":"CTRL")+" - to autocomplete").appendTo(n(e.getWrapperElement()))}},hide:function(e,i){r[i.name]&&r[i.name].hide()}},autoComplete:c,getTrie:function(e){return"string"==typeof e?l[e]:l[e.name]}}};var a=function(e,i,r){r.text!=e.getTokenAt(e.getCursor()).string&&e.replaceRange(r.text,i.from,i.to)}},{"../../lib/trie.js":4,"../main.js":30,"../utils.js":36,jquery:void 0,"yasgui-utils":16}],21:[function(e,i,r){"use strict";(function(){try{return e("jquery")}catch(i){return window.jQuery}})();i.exports=function(r,n){return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(r)},get:function(i,n){return e("./utils").fetchFromLov(r,this,i,n)},preProcessToken:function(e){return i.exports.preProcessToken(r,e)},postProcessToken:function(e,n){return i.exports.postProcessToken(r,e,n)},async:!0,bulk:!1,autoShow:!1,persistent:n,callbacks:{validPosition:r.autocompleters.notifications.show,invalidPosition:r.autocompleters.notifications.hide}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCompleteToken();if(0==i.string.indexOf("?"))return!1;var r=e.getCursor(),n=e.getPreviousNonWsToken(r.line,i);return"a"==n.string||("rdf:type"==n.string||("rdfs:domain"==n.string||"rdfs:range"==n.string))};i.exports.preProcessToken=function(i,r){return e("./utils.js").preprocessResourceTokenForCompletion(i,r)};i.exports.postProcessToken=function(i,r,n){return e("./utils.js").postprocessResourceTokenForCompletion(i,r,n)}},{"./utils":24,"./utils.js":24,jquery:void 0}],22:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o={"string-2":"prefixed",atom:"var"};i.exports=function(e,r){e.on("change",function(){i.exports.appendPrefixIfNeeded(e,r)});return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(e)},get:function(e,r){n.get(i.exports.fetchFrom,function(e){var i=[];for(var n in e)if("bif"!=n){var o=n+": <"+e[n]+">";i.push(o)}i.sort();r(i)})},preProcessToken:function(r){return i.exports.preprocessPrefixTokenForCompletion(e,r)},async:!0,bulk:!0,autoShow:!0,persistent:r,callbacks:{pick:function(){e.collapsePrefixes(!1)}}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCursor(),r=e.getTokenAt(i);if(e.getLine(i.line).length>i.ch)return!1;"ws"!=r.type&&(r=e.getCompleteToken());if(0==!r.string.indexOf("a")&&n.inArray("PNAME_NS",r.state.possibleCurrent)==-1)return!1;var o=e.getPreviousNonWsToken(i.line,r);return!(!o||"PREFIX"!=o.string.toUpperCase())};i.exports.preprocessPrefixTokenForCompletion=function(e,i){var r=e.getPreviousNonWsToken(e.getCursor().line,i);r&&r.string&&":"==r.string.slice(-1)&&(i={start:r.start,end:i.end,string:r.string+" "+i.string,state:i.state});return i};i.exports.appendPrefixIfNeeded=function(e,i){if(e.autocompleters.getTrie(i)&&e.options.autocompleters&&e.options.autocompleters.indexOf(i)!=-1){var r=e.getCursor(),n=e.getTokenAt(r);if("prefixed"==o[n.type]){var t=n.string.indexOf(":");if(t!==-1){var s=e.getPreviousNonWsToken(r.line,n).string.toUpperCase(),a=e.getTokenAt({line:r.line,ch:n.start});if("PREFIX"!=s&&("ws"==a.type||null==a.type)){var p=n.string.substring(0,t+1),l=e.getPrefixesFromQuery();if(null==l[p.slice(0,-1)]){var E=e.autocompleters.getTrie(i).autoComplete(p);E.length>0&&e.addPrefixes(E[0])}}}}}};i.exports.fetchFrom=(0===window.location.protocol.indexOf("http")?"//":"http://")+"prefix.cc/popular/all.file.json"},{jquery:void 0}],23:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}();i.exports=function(r,n){return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(r)},get:function(i,n){return e("./utils").fetchFromLov(r,this,i,n)},preProcessToken:function(e){return i.exports.preProcessToken(r,e)},postProcessToken:function(e,n){return i.exports.postProcessToken(r,e,n)},async:!0,bulk:!1,autoShow:!1,persistent:n,callbacks:{validPosition:r.autocompleters.notifications.show,invalidPosition:r.autocompleters.notifications.hide}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCompleteToken();if(0==i.string.length)return!1;if(0==i.string.indexOf("?"))return!1;if(n.inArray("a",i.state.possibleCurrent)>=0)return!0;var r=e.getCursor(),o=e.getPreviousNonWsToken(r.line,i);return"rdfs:subPropertyOf"==o.string};i.exports.preProcessToken=function(i,r){return e("./utils.js").preprocessResourceTokenForCompletion(i,r)};i.exports.postProcessToken=function(i,r,n){return e("./utils.js").postprocessResourceTokenForCompletion(i,r,n)}},{"./utils":24,"./utils.js":24,jquery:void 0}],24:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=(e("./utils.js"),e("yasgui-utils")),t=function(e,i){var r=e.getPrefixesFromQuery();if(0==!i.string.indexOf("<")){i.tokenPrefix=i.string.substring(0,i.string.indexOf(":")+1);null!=r[i.tokenPrefix.slice(0,-1)]&&(i.tokenPrefixUri=r[i.tokenPrefix.slice(0,-1)])}i.autocompletionString=i.string.trim();if(0==!i.string.indexOf("<")&&i.string.indexOf(":")>-1)for(var n in r)if(i.tokenPrefix===n+":"){i.autocompletionString=r[n];i.autocompletionString+=i.string.substring(n.length+1);break}0==i.autocompletionString.indexOf("<")&&(i.autocompletionString=i.autocompletionString.substring(1));i.autocompletionString.indexOf(">",i.length-1)!==-1&&(i.autocompletionString=i.autocompletionString.substring(0,i.autocompletionString.length-1));return i},s=function(e,i,r){r=i.tokenPrefix&&i.autocompletionString&&i.tokenPrefixUri?i.tokenPrefix+r.substring(i.tokenPrefixUri.length):"<"+r+">";return r},a=0===window.location.protocol.indexOf("http")?"//":"http://",p=function(i,r,t,s){if(!t||!t.string||0==t.string.trim().length){i.autocompleters.notifications.getEl(r).empty().append("Nothing to autocomplete yet!");return!1}var p=50,l={q:t.autocompletionString,page:1};"classes"==r.name?l.type="class":l.type="property";var E=[],u="",c=function(){u=a+"lov.okfn.org/dataset/lov/api/v2/autocomplete/terms?"+n.param(l)};c();var d=function(){l.page++;c()},N=function(){n.get(u,function(e){for(var o=0;o0?E.push(e.results[o].uri[0]):E.push(e.results[o].uri);if(E.length0?i.autocompleters.notifications.hide(i,r):i.autocompleters.notifications.getEl(r).text("0 matches found...");s(E)}}).fail(function(e,n,o){i.autocompleters.notifications.getEl(r).empty().append("Failed fetching suggestions..")})};i.autocompleters.notifications.getEl(r).empty().append(n("Fetchting autocompletions  ")).append(n(o.svg.getElement(e("../imgs.js").loader)).addClass("notificationLoader"));N()};i.exports={fetchFromLov:p,preprocessResourceTokenForCompletion:t,postprocessResourceTokenForCompletion:s}},{"../imgs.js":29,"./utils.js":24,jquery:void 0,"yasgui-utils":16}],25:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}();i.exports=function(e){return{isValidCompletionPosition:function(){var i=e.getTokenAt(e.getCursor());if("ws"!=i.type){i=e.getCompleteToken(i);if(i&&0==i.string.indexOf("?"))return!0}return!1},get:function(i){if(0==i.trim().length)return[];var r={};n(e.getWrapperElement()).find(".cm-atom").each(function(){var e=this.innerHTML;if(0==e.indexOf("?")){var o=n(this).next(),t=o.attr("class");t&&o.attr("class").indexOf("cm-atom")>=0&&(e+=o.text());if(e.length<=1)return;if(0!==e.indexOf(i))return;if(e==i)return;r[e]=!0}});var o=[];for(var t in r)o.push(t);o.sort();return o},async:!1,bulk:!1,autoShow:!0}}},{jquery:void 0}],26:[function(e,i,r){var n=e("./sparql.js"),o=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),t=function(e){return"'"+e+"'"};i.exports={createCurlString:function(e,i){var r=n.getAjaxConfig(e,i),s=r.url;if(0!==r.url.indexOf("http")){var s=window.location.protocol+"//"+window.location.host;s+=0===r.url.indexOf("/")?r.url:window.location.pathname+r.url}var a=["curl",s,"-X",e.options.sparql.requestMethod];"POST"==e.options.sparql.requestMethod&&a.push("--data "+t(o.param(r.data)));for(var p in r.headers)a.push("-H "+t(p+": "+r.headers[p]));return a.join(" ")}}},{"./sparql.js":33,jquery:void 0}],27:[function(e,i,r){var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=e("./main.js");o.defaults=n.extend(!0,{},o.defaults,{mode:"sparql11",value:"PREFIX rdf: \nPREFIX rdfs: \nSELECT * WHERE {\n ?sub ?pred ?obj .\n} \nLIMIT 10",highlightSelectionMatches:{showToken:/\w/},tabMode:"indent",lineNumbers:!0,lineWrapping:!0,backdrop:!1,foldGutter:{rangeFinder:new o.fold.combine(o.fold.brace,o.fold.prefix)},collapsePrefixesOnLoad:!1,gutters:["gutterErrorBar","CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:!0,fixedGutter:!0,syntaxErrorCheck:!0,extraKeys:{"Ctrl-Space":o.autoComplete,"Cmd-Space":o.autoComplete,"Ctrl-D":o.deleteLine,"Ctrl-K":o.deleteLine,"Shift-Ctrl-K":o.deleteLine,"Cmd-D":o.deleteLine,"Cmd-K":o.deleteLine,"Ctrl-/":o.commentLines,"Cmd-/":o.commentLines,"Ctrl-Alt-Down":o.copyLineDown,"Ctrl-Alt-Up":o.copyLineUp,"Cmd-Alt-Down":o.copyLineDown,"Cmd-Alt-Up":o.copyLineUp,"Shift-Ctrl-F":o.doAutoFormat,"Shift-Cmd-F":o.doAutoFormat,"Ctrl-]":o.indentMore,"Cmd-]":o.indentMore,"Ctrl-[":o.indentLess,"Cmd-[":o.indentLess,"Ctrl-S":o.storeQuery,"Cmd-S":o.storeQuery,"Ctrl-Enter":o.executeQuery,"Cmd-Enter":o.executeQuery,F11:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}},cursorHeight:.9,createShareLink:o.createShareLink,createShortLink:null,consumeShareLink:o.consumeShareLink,persistent:function(e){return"yasqe_"+n(e.getWrapperElement()).closest("[id]").attr("id")+"_queryVal"},sparql:{queryName:function(e){return e.getQueryMode()},showQueryButton:!1,endpoint:"http://dbpedia.org/sparql",requestMethod:"POST",acceptHeaderGraph:"text/turtle,*/*;q=0.9",acceptHeaderSelect:"application/sparql-results+json,*/*;q=0.9",acceptHeaderUpdate:"text/plain,*/*;q=0.9",namedGraphs:[],defaultGraphs:[],args:[],headers:{},getQueryForAjax:null,callbacks:{beforeSend:null,complete:null,error:null,success:null},handlers:{}}})},{"./main.js":30,jquery:void 0}],28:[function(e,i,r){i.exports=e("./main.js")},{"./main.js":30}],29:[function(e,i,r){"use strict";i.exports={query:'\t',queryInvalid:'image/svg+xml',download:'\t', +share:'',warning:'',fullscreen:'image/svg+xml',smallscreen:'image/svg+xml'}},{}],30:[function(e,i,r){"use strict";window.console=window.console||{log:function(){}};var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=function(){try{return e("codemirror")}catch(i){return window.CodeMirror}}(),t=e("./utils.js"),s=e("yasgui-utils"),a=e("./imgs.js");e("../lib/deparam.js");e("codemirror/addon/fold/foldcode.js");e("codemirror/addon/fold/foldgutter.js");e("codemirror/addon/fold/xml-fold.js");e("codemirror/addon/fold/brace-fold.js");e("./prefixFold.js");e("codemirror/addon/hint/show-hint.js");e("codemirror/addon/search/searchcursor.js");e("codemirror/addon/edit/matchbrackets.js");e("codemirror/addon/runmode/runmode.js");e("codemirror/addon/display/fullscreen.js");e("../lib/grammar/tokenizer.js");var p=i.exports=function(e,i){var r=n("
",{"class":"yasqe"}).appendTo(n(e));i=l(i);var t=E(o(r[0],i));d(t);return t},l=function(e){var i=n.extend(!0,{},p.defaults,e);return i},E=function(i){i.autocompleters=e("./autocompleters/autocompleterBase.js")(p,i);i.options.autocompleters&&i.options.autocompleters.forEach(function(e){p.Autocompleters[e]&&i.autocompleters.init(e,p.Autocompleters[e])});i.lastQueryDuration=null;i.getCompleteToken=function(r,n){return e("./tokenUtils.js").getCompleteToken(i,r,n)};i.getPreviousNonWsToken=function(r,n){return e("./tokenUtils.js").getPreviousNonWsToken(i,r,n)};i.getNextNonWsToken=function(r,n){return e("./tokenUtils.js").getNextNonWsToken(i,r,n)};i.collapsePrefixes=function(r){void 0===r&&(r=!0);i.foldCode(e("./prefixFold.js").findFirstPrefixLine(i),p.fold.prefix,r?"fold":"unfold")};var r=null,o=null;i.setBackdrop=function(e){if(i.options.backdrop||0===i.options.backdrop||"0"===i.options.backdrop){if(null===o){o=+i.options.backdrop;1===o&&(o=400)}r||(r=n("
",{"class":"backdrop"}).click(function(){n(this).hide()}).insertAfter(n(i.getWrapperElement())));e?r.show(o):r.hide(o)}};i.query=function(e){p.executeQuery(i,e)};i.getUrlArguments=function(e){return p.getUrlArguments(i,e)};i.getPrefixesFromQuery=function(){return e("./prefixUtils.js").getPrefixesFromQuery(i)};i.addPrefixes=function(r){return e("./prefixUtils.js").addPrefixes(i,r)};i.removePrefixes=function(r){return e("./prefixUtils.js").removePrefixes(i,r)};i.getValueWithoutComments=function(){var e="";p.runMode(i.getValue(),"sparql11",function(i,r){"comment"!=r&&(e+=i)});return e};i.getQueryType=function(){return i.queryType};i.getQueryMode=function(){var e=i.getQueryType();return"INSERT"==e||"DELETE"==e||"LOAD"==e||"CLEAR"==e||"CREATE"==e||"DROP"==e||"COPY"==e||"MOVE"==e||"ADD"==e?"update":"query"};i.setCheckSyntaxErrors=function(e){i.options.syntaxErrorCheck=e;I(i)};i.enableCompleter=function(e){u(i.options,e);p.Autocompleters[e]&&i.autocompleters.init(e,p.Autocompleters[e])};i.disableCompleter=function(e){c(i.options,e)};return i},u=function(e,i){e.autocompleters||(e.autocompleters=[]);e.autocompleters.push(i)},c=function(e,i){if("object"==typeof e.autocompleters){var r=n.inArray(i,e.autocompleters);if(r>=0){e.autocompleters.splice(r,1);c(e,i)}}},d=function(e){var i=t.getPersistencyId(e,e.options.persistent);if(i){var r=s.storage.get(i);r&&e.setValue(r)}p.drawButtons(e);e.on("blur",function(e,i){p.storeQuery(e)});e.on("change",function(e,i){I(e);p.updateQueryButton(e);p.positionButtons(e)});e.on("changes",function(){I(e);p.updateQueryButton(e);p.positionButtons(e)});e.on("cursorActivity",function(e,i){x(e)});e.prevQueryValid=!1;I(e);p.positionButtons(e);n(e.getWrapperElement()).on("mouseenter",".cm-atom",function(){var i=n(this).text();n(e.getWrapperElement()).find(".cm-atom").filter(function(){return n(this).text()===i}).addClass("matchingVar")}).on("mouseleave",".cm-atom",function(){n(e.getWrapperElement()).find(".matchingVar").removeClass("matchingVar")});if(e.options.consumeShareLink){e.options.consumeShareLink(e,N());window.addEventListener("hashchange",function(){e.options.consumeShareLink(e,N())})}e.options.collapsePrefixesOnLoad&&e.collapsePrefixes(!0)},N=function(){var e=null;window.location.hash.length>1&&(e=n.deparam(location.href.split("#")[1]));e&&"query"in e||!(window.location.search.length>1)||(e=n.deparam(window.location.search.substring(1)));return e},x=function(e){e.cursor=n(".CodeMirror-cursor");e.buttons&&e.buttons.is(":visible")&&e.cursor.length>0&&(t.elementsOverlap(e.cursor,e.buttons)?e.buttons.find("svg").attr("opacity","0.2"):e.buttons.find("svg").attr("opacity","1.0"))},I=function(i,r){i.queryValid=!0;i.clearGutter("gutterErrorBar");for(var o=null,t=0;t").text(l.state.errorMsg).html()}):o.possibleCurrent&&o.possibleCurrent.length>0&&e("./tooltip")(i,E,function(){var e=[];o.possibleCurrent.forEach(function(i){e.push(""+n("
").text(i).html()+"")});return"This line is invalid. Expected: "+e.join(", ")});E.style.marginTop="2px";E.style.marginLeft="2px";E.className="parseErrorIcon";i.setGutterMarker(t,"gutterErrorBar",E);i.queryValid=!1;break}}i.prevQueryValid=i.queryValid;if(r&&null!=o&&void 0!=o.stack){var u=o.stack,c=o.stack.length;c>1?i.queryValid=!1:1==c&&"solutionModifier"!=u[0]&&"?limitOffsetClauses"!=u[0]&&"?offsetClause"!=u[0]&&(i.queryValid=!1)}};n.extend(p,o);p.Autocompleters={};p.registerAutocompleter=function(e,i){p.Autocompleters[e]=i;u(p.defaults,e)};p.autoComplete=function(e){e.autocompleters.autoComplete(!1)};p.registerAutocompleter("prefixes",e("./autocompleters/prefixes.js"));p.registerAutocompleter("properties",e("./autocompleters/properties.js"));p.registerAutocompleter("classes",e("./autocompleters/classes.js"));p.registerAutocompleter("variables",e("./autocompleters/variables.js"));p.positionButtons=function(e){var i=n(e.getWrapperElement()).find(".CodeMirror-vscrollbar"),r=0;i.is(":visible")&&(r=i.outerWidth());e.buttons.is(":visible")&&e.buttons.css("right",r+4)};p.createShareLink=function(e){var i={};window.location.hash.length>1&&(i=n.deparam(window.location.hash.substring(1)));i.query=e.getValue();return i};p.getAsCurl=function(i,r){var n=e("./curl.js");return n.createCurlString(i,r)};p.consumeShareLink=function(e,i){i&&i.query&&e.setValue(i.query)};p.drawButtons=function(e){e.buttons=n("
").appendTo(n(e.getWrapperElement()));if(e.options.createShareLink){var i=n(s.svg.getElement(a.share));i.click(function(r){r.stopPropagation();var o=n("
").appendTo(e.buttons);n("html").click(function(){o&&o.remove()});o.click(function(e){e.stopPropagation()});var t=n("").val(location.protocol+"//"+location.host+location.pathname+location.search+"#"+n.param(e.options.createShareLink(e)));t.focus(function(){var e=n(this);e.select();e.mouseup(function(){e.unbind("mouseup");return!1})});o.empty().append(n("
",{"class":"inputWrapper"}).append(t));if(e.options.createShortLink){o.addClass("enableShort");n("").addClass("yasqe_btn yasqe_btn-sm yasqe_btn-primary").click(function(){n(this).parent().find("button").attr("disabled","disabled");e.options.createShortLink(t.val(),function(e,i){if(e){t.remove();o.find(".inputWrapper").append(n("",{"class":"shortlinkErr"}).text(e))}else t.val(i).focus()})}).appendTo(o)}n("").addClass("yasqe_btn yasqe_btn-sm yasqe_btn-primary").click(function(){n(this).parent().find("button").attr("disabled","disabled");t.val(p.getAsCurl(e)).focus()}).appendTo(o);var s=i.position();o.css("top",s.top+i.outerHeight()+parseInt(o.css("padding-top"))+"px").css("left",s.left+i.outerWidth()-o.outerWidth()+"px");t.focus()}).addClass("yasqe_share").attr("title","Share your query").appendTo(e.buttons)}var r=n("
",{"class":"fullscreenToggleBtns"}).append(n(s.svg.getElement(a.fullscreen)).addClass("yasqe_fullscreenBtn").attr("title","Set editor full screen").click(function(){e.setOption("fullScreen",!0)})).append(n(s.svg.getElement(a.smallscreen)).addClass("yasqe_smallscreenBtn").attr("title","Set editor to normale size").click(function(){e.setOption("fullScreen",!1)}));e.buttons.append(r);if(e.options.sparql.showQueryButton){n("
",{"class":"yasqe_queryButton"}).click(function(){if(n(this).hasClass("query_busy")){e.xhr&&e.xhr.abort();p.updateQueryButton(e)}else e.query()}).appendTo(e.buttons);p.updateQueryButton(e)}};var m={busy:"loader",valid:"query",error:"queryInvalid"};p.updateQueryButton=function(e,i){var r=n(e.getWrapperElement()).find(".yasqe_queryButton");if(0!=r.length){if(!i){i="valid";e.queryValid===!1&&(i="error")}if(i!=e.queryStatus){r.empty().removeClass(function(e,i){return i.split(" ").filter(function(e){return 0==e.indexOf("query_")}).join(" ")});if("busy"==i){r.append(n("
",{"class":"loader"}));e.queryStatus=i}else if("valid"==i||"error"==i){r.addClass("query_"+i);s.svg.draw(r,a[m[i]]);e.queryStatus=i}}}};p.fromTextArea=function(e,i){i=l(i);var r=(n("
",{"class":"yasqe"}).insertBefore(n(e)).append(n(e)),E(o.fromTextArea(e,i)));d(r);return r};p.storeQuery=function(e){var i=t.getPersistencyId(e,e.options.persistent);i&&s.storage.set(i,e.getValue(),"month")};p.commentLines=function(e){for(var i=e.getCursor(!0).line,r=e.getCursor(!1).line,n=Math.min(i,r),o=Math.max(i,r),t=!0,s=n;s<=o;s++){var a=e.getLine(s);if(0==a.length||"#"!=a.substring(0,1)){t=!1;break}}for(var s=n;s<=o;s++)t?e.replaceRange("",{line:s,ch:0},{line:s,ch:1}):e.replaceRange("#",{line:s,ch:0})};p.copyLineUp=function(e){var i=e.getCursor(),r=e.lineCount();e.replaceRange("\n",{line:r-1,ch:e.getLine(r-1).length});for(var n=r;n>i.line;n--){var o=e.getLine(n-1);e.replaceRange(o,{line:n,ch:0},{line:n,ch:e.getLine(n).length})}};p.copyLineDown=function(e){p.copyLineUp(e);var i=e.getCursor();i.line++;e.setCursor(i)};p.doAutoFormat=function(e){if(e.somethingSelected()){var i={line:e.getCursor(!1).line,ch:e.getSelection().length};L(e,e.getCursor(!0),i)}else{var r=e.lineCount(),n=e.getTextArea().value.length;L(e,{line:0,ch:0},{line:r,ch:n})}};var L=function(e,i,r){var n=e.indexFromPos(i),o=e.indexFromPos(r),t=T(e.getValue(),n,o);e.operation(function(){e.replaceRange(t,i,r);for(var o=e.posFromIndex(n).line,s=e.posFromIndex(n+t.length).line,a=o;a<=s;a++)e.indentLine(a,"smart")})},T=function(e,i,r){e=e.substring(i,r);var t=[["keyword","ws","prefixed","ws","uri"],["keyword","ws","uri"]],s=["{",".",";"],a=["}"],p=function(e,i){for(var r=0;r=0)return r}};o.registerHelper("fold","prefix",function(e,i){function r(){for(var i=!1,r=a-1;r>=0;r--)if(e.getLine(r).toUpperCase().indexOf(s)>=0){i=!0;break}return i}var a=i.line,p=e.getLine(a),l=function(i,r){var n=e.getTokenAt(o.Pos(i,r+1));if(!n||"keyword"!=n.type)return-1;var s=t.getNextNonWsToken(e,i,n.end+1);if(!s||"string-2"!=s.type)return-1;var a=t.getNextNonWsToken(e,i,s.end+1);return a&&"variable-3"==a.type?a.end:-1};if(!r()){var E=n(e,a,i.ch,p);if(null!=E){for(var u,c="{",d=!1,N=e.lastLine(),x=l(a,E),I=a,m=a;m<=N&&!d;++m)for(var L=e.getLine(m),T=m==a?E+1:0;;){!d&&L.indexOf(c)>=0&&(d=!0);var g=L.toUpperCase().indexOf(s,T);if(!(g>=0))break;if((u=l(m,g))>0){x=u;I=m;T=x}T++}return{from:o.Pos(a,E+s.length),to:o.Pos(I,x)}}}})},{"./tokenUtils.js":34,codemirror:void 0}],32:[function(e,i,r){"use strict";var n=function(e,i){var r=e.getPrefixesFromQuery();if("string"==typeof i)o(e,i);else for(var n in i)n in r||o(e,n+": <"+i[n]+">");e.collapsePrefixes(!1)},o=function(e,i){for(var r=null,n=0,o=e.lineCount(),t=0;t")+"\\s*","ig"),""));e.collapsePrefixes(!1)},s=function(e){return e.getTokenAt({line:e.lastLine(),ch:e.getLine(e.lastLine()).length}).state.prefixes},a=function(e,i,r){void 0==r&&(r=1);var n=e.getTokenAt({line:i,ch:r});return null==n||void 0==n||"ws"!=n.type?"":n.string+a(e,i,n.end+1)};i.exports={addPrefixes:n,getPrefixesFromQuery:s,removePrefixes:t}},{}],33:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=e("./utils.js"),t=e("./main.js");t.getAjaxConfig=function(i,r){var o="function"==typeof r?r:null,a="object"==typeof r?r:{};i.options.sparql&&(a=n.extend({},i.options.sparql,a));a.handlers&&n.extend(!0,a.callbacks,a.handlers);if(a.endpoint&&0!=a.endpoint.length){var p={url:"function"==typeof a.endpoint?a.endpoint(i):a.endpoint,type:"function"==typeof a.requestMethod?a.requestMethod(i):a.requestMethod,headers:{Accept:s(i,a)}};a.xhrFields&&(p.xhrFields=a.xhrFields);var l=!1;if(a.callbacks)for(var E in a.callbacks)if(a.callbacks[E]){l=!0;p[E]=a.callbacks[E]}if("GET"===p.type){var u=!0;n.each(i.getUrlArguments(a),function(e,i){p.url+=(u?"?":"&")+i.name+"="+encodeURIComponent(i.value);u=!1})}else p.data=i.getUrlArguments(a);if(l||o){o&&(p.complete=o);a.headers&&!n.isEmptyObject(a.headers)&&n.extend(p.headers,a.headers);var c=new Date,d=function(){i.lastQueryDuration=new Date-c;t.updateQueryButton(i);i.setBackdrop(!1)},N=[function(){e("./main.js").signal(i,"queryFinish",arguments)},d];p.complete&&N.push(p.complete);p.complete=N;return p}}};t.executeQuery=function(e,i){t.signal(e,"query",e,i);t.updateQueryButton(e,"busy");e.setBackdrop(!0);e.xhr=n.ajax(t.getAjaxConfig(e,i))};t.getUrlArguments=function(e,i){var r=e.getQueryMode(),t=[{name:o.getString(e,e.options.sparql.queryName),value:i.getQueryForAjax?i.getQueryForAjax(e):e.getValue()}];if(i.namedGraphs&&i.namedGraphs.length>0)for(var s="query"==r?"named-graph-uri":"using-named-graph-uri ",a=0;a0)for(var s="query"==r?"default-graph-uri":"using-graph-uri ",a=0;a0&&n.merge(t,i.args);return t};var s=function(e,i){var r=null;if(!i.acceptHeader||i.acceptHeaderGraph||i.acceptHeaderSelect||i.acceptHeaderUpdate)if("update"==e.getQueryMode())r="function"==typeof i.acceptHeader?i.acceptHeaderUpdate(e):i.acceptHeaderUpdate;else{var n=e.getQueryType();r="DESCRIBE"==n||"CONSTRUCT"==n?"function"==typeof i.acceptHeaderGraph?i.acceptHeaderGraph(e):i.acceptHeaderGraph:"function"==typeof i.acceptHeaderSelect?i.acceptHeaderSelect(e):i.acceptHeaderSelect}else r="function"==typeof i.acceptHeader?i.acceptHeader(e):i.acceptHeader;return r};i.exports={getAjaxConfig:t.getAjaxConfig}},{"./main.js":30,"./utils.js":36,jquery:void 0}],34:[function(e,i,r){"use strict";var n=function(e,i,r){r||(r=e.getCursor());i||(i=e.getTokenAt(r));var o=e.getTokenAt({line:r.line,ch:i.start});if(null!=o.type&&"ws"!=o.type&&null!=i.type&&"ws"!=i.type){i.start=o.start;i.string=o.string+i.string;return n(e,i,{line:r.line,ch:o.start})}if(null!=i.type&&"ws"==i.type){i.start=i.start+1;i.string=i.string.substring(1);return i}return i},o=function(e,i,r){var n=e.getTokenAt({line:i,ch:r.start});null!=n&&"ws"==n.type&&(n=o(e,i,n));return n},t=function(e,i,r){void 0==r&&(r=1);var n=e.getTokenAt({line:i,ch:r});return null==n||void 0==n||n.end").addClass("yasqe_tooltip").html(r).appendTo(i);t()},function(){n(".yasqe_tooltip").remove()});var t=function(){if(n(e.getWrapperElement()).offset().top>=o.offset().top){o.css("bottom","auto");o.css("top","26px")}}}},{"./utils.js":36,jquery:void 0}],36:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=function(e,i){var r=!1;try{void 0!==e[i]&&(r=!0)}catch(n){}return r},t=function(e,i){var r=null;i&&(r="string"==typeof i?i:i(e));return r},s=function(){function e(e){var i,r,o;i=n(e).offset();r=n(e).width();o=n(e).height();return[[i.left,i.left+r],[i.top,i.top+o]]}function i(e,i){var r,n;r=e[0]n[0]||r[0]===n[0]}return function(r,n){var o=e(r),t=e(n);return i(o[0],t[0])&&i(o[1],t[1])}}(),a=function(e,i){return"function"==typeof i?i(e):i};i.exports={keyExists:o,getPersistencyId:t,elementsOverlap:s,getString:a}},{jquery:void 0}]},{},[28])(28)}); //# sourceMappingURL=yasqe.min.js.map diff --git a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js.map b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js.map index 6e8a15a3881..25e39289562 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js.map +++ b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["yasqe.min.js","node_modules/store/store.js"],"names":["e","exports","module","define","amd","f","window","global","self","YASQE","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"./main.js",2,"$","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",3,"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",4,"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","checkSideConditions","pos","possibleCurrent","possibleNext","OK","finished","token","stack","pop","nextSymbols","allNillable","sp","item","lastProperty","indexOf","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",5,"Trie","this","words","prefixes","children","prototype","insert","str","k","child","T","remove","strOld","strNew","countWord","ret","countPrefix","find","getAllWords","autoComplete",6,"mod","setFullscreen","cm","wrap","getWrapperElement","fullScreenRestore","scrollTop","pageYOffset","scrollLeft","pageXOffset","width","height","className","document","documentElement","overflow","refresh","setNormal","info","scrollTo","defineOption","old","Init",7,"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",8,"registerHelper","findOpening","openCh","at","pass","lineText","lastIndexOf","tokenType","startCh","startToken","endToken","endCh","count","outer","nextOpen","nextClose","hasImport","getTokenAt","type","semi","prev","has","next","clipPos","hasInclude","slice",9,"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",10,"State","parseOptions","opts","gutter","indicatorOpen","indicatorFolded","isFolded","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",11,"cmp","b","Iter","tagAt","iter","nextLine","prevLine","toTagEnd","gt","lastSlash","selfClose","toTagStart","lt","xmlTagStart","lastIndex","exec","index","toNextTag","toPrevTag","findMatchingClose","tag","startLine","findMatchingOpen","endLine","nameStartChar","nameChar","openTag","close","findMatchingTag","here","open","findEnclosingTag","scanForClosingTag",12,"Completion","debounce","tick","startPos","startLen","getSelection","activityFunc","cursorActivity","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","curTop","cursor","overlapX","right","addKeyMap","keyMap","avoidWrap","changeActive","screenAmount","closeOnUnfocus","closingOnBlur","onBlur","onFocus","startScroll","getScrollInfo","onScroll","curScroll","newTop","point","target","srcElement","completeOnSingleClick","firstChild","applicableHelpers","somethingSelected","result","supportsSelection","resolveAutoHints","resolved","async","callback","run","app","helper","getHelper","fromList","anyword","showHint","getHints","newOpts","selections","anchor","completionActive","requestAnimationFrame","fn","cancelAnimationFrame","active","replaceRange","closeCharacters","disable","first","myTick","finishUpdate","cmpPos","completeSingle","removeChild","removeKeyMap","node","childNodes","offsetTop","clientHeight","floor","term","word","autocomplete",13,"runMode","modespec","mode","getMode","defaults","ie","ie_lt9","tabSize","innerHTML","content","idx","size","lines","splitLines","StringStream","blankLine","eol",14,"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",15,"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",16,"_args","_from","_id","_inCache","_installable","_location","_npmUser","email","_npmVersion","_phantomChildren","_requested","raw","rawSpec","scope","_requiredBy","_shrinkwrap","_spec","_where","author","bugs","url","dependencies","description","devDependencies","directories","dist","shasum","tarball","homepage","licenses","main","maintainers","optionalDependencies","readme","repository",17,"console","log","svg","yasgui-utils","nestedExists","../package.json","./storage.js","./svg.js",18,"times","day","month","year","exp","XMLSerializer","serializeToString","time","Date","getTime","removeAll",19,"draw","parent","svgString","getElement","append","parser","DOMParser","dom","parseFromString","svgContainer",20,"license","bootstrap-sass","browserify","browserify-transform-tools","exorcist","gulp","gulp-autoprefixer","gulp-bump","gulp-concat","gulp-connect","gulp-cssimport","gulp-cssnano","gulp-embedlr","gulp-filter","gulp-git","gulp-jsvalidate","gulp-livereload","gulp-minify-css","gulp-notify","gulp-rename","gulp-sass","gulp-sourcemaps","gulp-streamify","gulp-tag-version","gulp-uglify","node-sass","require-dir","run-sequence","vinyl-buffer","vinyl-source-stream","vinyl-transform","watchify","web","optionalShim","../../lib/codemirror",21,"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",22,"fetchFromLov","previousToken","getPreviousNonWsToken","preprocessResourceTokenForCompletion","postprocessResourceTokenForCompletion","./utils","./utils.js",23,"tokenTypes","string-2","atom","appendPrefixIfNeeded","prefixArray","prefix","completeString","sort","preprocessPrefixTokenForCompletion","collapsePrefixes","colonIndex","lastNonWsTokenString","currentPrefix","substring","queryPrefixes","getPrefixesFromQuery","addPrefixes",24,25,"tokenPrefix","tokenPrefixUri","trim","maxResults","q","page","results","updateUrl","increasePage","doRequests","uri","total_results","fail","jqXHR","textStatus","errorThrown","loader","addClass","../imgs.js",26,"distinctVars","variable","nextEl","nextElClass","variables",27,"sparql","quote","createCurlString","ajaxConfig","getAjaxConfig","endpoint","requestMethod","cmds","header","headers","join","./sparql.js",28,"extend","highlightSelectionMatches","showToken","tabMode","lineNumbers","lineWrapping","backdrop","combine","brace","collapsePrefixesOnLoad","gutters","fixedGutter","syntaxErrorCheck","Ctrl-Space","Cmd-Space","Ctrl-D","deleteLine","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","acceptHeaderGraph","acceptHeaderSelect","acceptHeaderUpdate","namedGraphs","defaultGraphs","getQueryForAjax","beforeSend","error","handlers",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","location","hash","href","search","buttons","elementsOverlap","deepcheck","queryValid","precise","warningEl","expectedEncoded","expected","html","marginTop","marginLeft","len","registerAutocompleter","constructor","getAsCurl","curl","svgShare","event","stopPropagation","popup","$input","protocol","host","pathname","$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","shouldContinue","getPrefixesFromLine","lineOffset","colOffset","uriString",33,"Accept","getAcceptHeader","xhrFields","handlerDefined","handler","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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BACAC,WACAC,WACAC,UACAC,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,oBACAC,gDACA3C,KAAA,8CAAA,gDACAG,OACAC,OACAC,OACAC,YACAC,SACAC,SACAC,WACAC,UACAC,QACAC,UACAC,QACA+B,2BACA5C,KAAA,yBAAA,2BACAG,OACAC,OACAS,OACAL,SDEKH,OACAC,YACAC,SACAE,WACAC,UACAC,QACAC,WACHiC,8BACGC,OAAU,4BAA4B,8BACtC1B,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,QACHkC,8CACG1C,KAAM,4CAA4C,8CAClDC,UAAa,4CAA4C,8CACzDC,OAAU,4CAA4C,8CACtDC,OAAU,4CAA4C,8CACtDC,SAAY,4CAA4C,8CACxDC,QAAW,4CAA4C,8CACvDC,MAAS,4CAA4C,8CACrDC,QAAW,4CAA4C,8CACvDC,QACHmC,0CACGxC,OAAU,wCAAwC,0CAClDK,QACHoC,6BACGhC,KAAM,2BAA2B,6BACjCpB,QACHqD,qBACGjC,KAAM,mBAAmB,qBACzBpB,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,oBACHS,kCACGpD,MAAO,gCAAgC,kCACvCH,MACAC,OACAC,OACAE,QACHoD,mBACGC,OAAU,iBAAiB,mBAC3B9B,SAAY,iBAAiB,mBAC7BC,MAAS,iBAAiB,mBAC1BC,OAAU,iBAAiB,mBAC3BG,UAAa,iBAAiB,mBAC9BC,UAAa,iBAAiB,mBAC9BC,iBAAoB,iBAAiB,mBACrCC,iBAAoB,iBAAiB,mBACrCC,sBAAyB,iBAAiB,mBAC1CC,sBAAyB,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CGjJ,MAAS,cAAc;AACvBC,MAAS,cAAc,gBACvBE,SAAY,cAAc,gBAC1BK,UAAa,cAAc,gBAC3BC,UAAa,cAAc,iBAC9ByI,MACGnK,KAAM,KACNiB,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,QACH0J,aACGC,UAAa,YACbC,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,QACHsD,UACGzK,OAAU,SACVe,WACAK,YACAC,aACHqJ,WACGC,QAAW,UACX/J,QACAC,QACAE,WACAK,YACAC,aACHuJ,aACGD,QAAW,UACX5J,WACAK,YACAC,aACHwJ,aACGF,QAAW,UACX3K,SACA8K,WACAC,SACAC,QACHC,aACGN,QAAW,UACX3K,UACHkL,aACGP,QAAW,UACXG,WACA9K,SACAe,WACAK,YACAC,aACH8J,UACGnI,OAAU,SACVnD,QACHuL,mBACG9L,KAAM,kBACND,QACHgM,0BACG1L,KAAM,yBACNU,QACHiL,sBACG3L,KAAM,qBACNE,OACAC,YACAC,SACAC,SACAC,WACAC,UACAC,QACAC,UACAC,QACHkL,yBACG5L,KAAM,wBACNU,OACAL,UACHwL,2BACGhM,KAAM,0BACNH,QACHoM,eACGjM,KAAM,cACNtC,MACHwO,aACGtM,IAAO,YACPC,QACHsM,oBACGC,MAAS,mBACTpM,OACAtC,MACH2O,2CACGjL,MAAS,0CACTC,MAAS,0CACTiL,KAAM,0CACNvP,GAAM,0CACN0N,KAAM,0CACNvJ,KAAM,0CACNK,SAAY,0CACZK,UAAa,0CACbC,UAAa,0CACb7B,OACAG,OACAC,OACAC,OACAC,YACAC,SACAC,SACAC,WACAC,UACAC,QACAC,UACAC,QACH0L,qDACGxP,GAAM,oDACNuP,KAAM,oDACN/K,SAAY,oDACZK,UAAa,oDACbC,UAAa,oDACbhC,QACH2M,0BACG5D,QAAW,yBACXC,QAAW,yBACXE,MAAS,yBACTC,OAAU,yBACVC,MAAS,yBACTC,KAAQ,yBACRC,MAAS,yBACTC,MAAS,yBACTC,QAAW,yBACXC,MAAS,yBACT5L,MACH+O,sBACG1P,GAAM,qBACNqE,MAAS,qBACTC,MAAS,qBACTE,SAAY,qBACZK,UAAa,qBACbC,UAAa,qBACb7B,OACAG,OACAC,OACAS,OACAL,SACAH,OACAC,YACAC,SACAE,WACAC,UACAC,QACAC,WACH8L,YACGpL,KAAQ,WACRJ,KAAM,WACNtB,MACAC,OACAC,OACAC,QACAJ,QACAiI,OACAC,QACAC,OACAC,OACAC,QACAC,QACAC,MACAX,OACAY,OACAC,OACA/F,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACAiF,OACA3G,OACAhB,QACH2M,qBACGvL,MAAS,oBACTC,MAAS,oBACTC,KAAQ,oBACRJ,KAAM,oBACNC,KAAM,oBACNI,SAAY,oBACZC,MAAS,oBACTC,OAAU,oBACVC,kBAAqB,oBACrBC,MAAS,oBACTC,UAAa,oBACbC,UAAa,oBACbC,iBAAoB,oBACpBC,iBAAoB,oBACpBC,sBAAyB,oBACzBC,sBAAyB,oBACzBC,SAAY,oBACZC,SAAY,oBACZC,QAAW,oBACXC,kBAAqB,oBACrBC,kBAAqB,oBACrBC,iBAAoB,oBACpBC,kBAAqB,oBACrBC,kBAAqB,oBACrBC,iBAAoB,oBACpB7B,QACH+L,gBACGhJ,OAAU,eACVhD,UACAiD,SACAC,UACAJ,SACAC,UACAjG,KACAmD,QACHgM,iBACGlJ,QAAW,gBACX/C,UACAiD,SACAC,UACAJ,SACAhG,KACAmD,QACHiM,iBACGlE,QAAW,gBACXpF,SACAoG,UACHmD,gBACGlJ,OAAU,eACVjD,UACAlD,KACAmD,QACHmM,uBACGnJ,OAAU,sBACVC,QAAW,sBACXlD,UACAlD,KACAmD,QACHoM,iBACGnJ,QAAW,gBACXlD,UACAlD,KACAmD,QACHqM,2BACG1C,UAAa,0BACb2C,SAAY,0BACZxF,OACAzG,OACAE,QACAC,SACH+L,8BACGC,SAAY,6BACZC,MAAO,6BACPjK,SACA9B,WACAC,QACAC,SACAG,YACAC,YACAC,mBACAC,mBACAC,wBACAC,wBACAC,WACAC,WACAC,UACAC,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACA3F,KACAqE,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,WACH2M,kDACG5F,KAAM,iDACN3G,KAAM,iDACNmH,OACAC,OACA/F,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACA9C,MACAC,OACAC,OACAC,QACAJ,QACAiI,OACAC,QACAC,OACAC,OACAC,QACAC,QACAC,MACAX,OACAvH,QACHwN,6LACG5F,KAAM,4LACNC,MAAO,4LACPC,KAAM,4LACNC,KAAM,4LACNC,MAAO,4LACPC,MAAO,4LACPC,IAAO,4LACPX,KAAQ,4LACR3H,MACAC,OACAC,OACAC,QACAJ,QACAK,QACHyN,gBACG/J,OAAU,eACV9C,UACAiD,SACAC,UACApG,KACAmD,QACH6M,YACG/F,KAAM,WACNgG,KAAM,WACNxF,KAAM,WACN9H,KAAM,WACNY,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,oBACHkL,iBACGxM,MAAS,gBACTC,MAAS,gBACTC,KAAQ,gBACRJ,KAAM,gBACNC,KAAM,gBACNI,SAAY,gBACZC,MAAS,gBACTC,OAAU,gBACVC,kBAAqB,gBACrBC,MAAS,gBACTC,UAAa,gBACbC,UAAa,gBACbC,iBAAoB,gBACpBC,iBAAoB,gBACpBC,sBAAyB,gBACzBC,sBAAyB,gBACzBC,SAAY,gBACZC,SAAY,gBACZC,QAAW,gBACXC,kBAAqB,gBACrBC,kBAAqB,gBACrBC,iBAAoB,gBACpBC,kBAAqB,gBACrBC,kBAAqB,gBACrBC,iBAAoB,gBACpBrC,OACAC,YACAC,SACAC,SACAC,WACAC,UACAC,QACAC,UACAC,QACHgN,oBACGzM,MAAS,mBACTC,MAAS,mBACTC,KAAQ,mBACRJ,KAAM,mBACNC,KAAM,mBACNI,SAAY,mBACZC,MAAS,mBACTC,OAAU,mBACVC,kBAAqB,mBACrBC,MAAS,mBACTC,UAAa,mBACbC,UAAa,mBACbC,iBAAoB,mBACpBC,iBAAoB,mBACpBC,sBAAyB,mBACzBC,sBAAyB,mBACzBC,SAAY,mBACZC,SAAY,mBACZC,QAAW,mBACXC,kBAAqB,mBACrBC,kBAAqB,mBACrBC,iBAAoB,mBACpBC,kBAAqB,mBACrBC,kBAAqB,mBACrBC,iBAAoB,mBACpB7B,OACAL,UACHsN,gBACGtK,OAAU,eACVnD,KAAM,eACNqD,SACAC,UACAC,SACAC,SACAC,UACAlD,UACAlD,MACHqQ,0BACG7M,KAAM,IAAI,kBAAkB,MAC/B8M,eACG9M,KAAM,IAAI,OAAO,MACpB+M,qBACG/M,KAAM,IAA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","file":"yasqe.min.js","sourcesContent":["!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.YASQE=e()}}(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\": [], \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},{}],4:[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\t\n\t\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\t\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\t\t\t\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\t\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\t\t\n\t\t}\n\t}\n\t\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\t\t\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\t\t\t\t\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\t\t\t\t\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\t\t\t\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\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t// Tokens defined by individual regular expressions\n\t\t\tfor (var i=0; i\",\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\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==\"disallowVars\") state.allowVars=false;\n\t\t\telse if (topSymbol==\"allowVars\") state.allowVars=true;\n\t\t\telse if (topSymbol==\"disallowBnodes\") state.allowBnodes=false;\n\t\t\telse if (topSymbol==\"allowBnodes\") state.allowBnodes=true;\n\t\t\telse if (topSymbol==\"storeProperty\") state.storeProperty=true;\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==\"\") {\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\t\t\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\t\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\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\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\t\t\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\t\t\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\t\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}; \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\":3,\"codemirror\":undefined}],5:[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},{}],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 \"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}],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 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 (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}],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\nCodeMirror.registerHelper(\"fold\", \"brace\", function(cm, start) {\n var line = start.line, lineText = cm.getLine(line);\n var startCh, 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 start = start.line, has = hasImport(start), prev;\n if (!has || hasImport(start - 1) || ((prev = hasImport(start - 2)) && prev.end.line == start - 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(start, 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 start = start.line, has = hasInclude(start);\n if (has == null || hasInclude(start - 1) != null) return null;\n for (var end = start;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n return {from: CodeMirror.Pos(start, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))};\n});\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}})());\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: true,\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 };\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}],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}})(), 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\", updateInViewport);\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\", updateInViewport);\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.findMarksAt(Pos(line));\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\":9,\"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 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 ? range.from : cm.firstLine();\n this.max = range ? range.to - 1 : 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 start = Pos(iter.line, iter.ch);\n var close = findMatchingClose(iter, openTag[2]);\n return close && {from: start, to: close.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}],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\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 if (!this.options.hint.async) {\n this.finishUpdate(this.options.hint(this.cm, this.options), first);\n } else {\n var myTick = ++this.tick, self = this;\n this.options.hint(this.cm, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first);\n }, this.options);\n }\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n if (data && this.data && CodeMirror.cmpPos(data.from, this.data.from)) data = null;\n this.data = data;\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\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 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 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\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 var startScroll = cm.getScrollInfo();\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 resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var async = false, resolved\n for (var i = 0; i < helpers.length; i++) if (helpers[i].async) async = true\n if (async) {\n resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers)\n function run(i, result) {\n if (i == app.length) return callback(null)\n var helper = app[i]\n if (helper.async) {\n helper(cm, function(result) {\n if (result) callback(result)\n else run(i + 1)\n }, options)\n } else {\n var result = helper(cm, options)\n if (result) callback(result)\n else run(i + 1)\n }\n }\n run(0)\n }\n resolved.async = true\n } else {\n resolved = function(cm, options) {\n var app = applicableHelpers(cm, helpers)\n for (var i = 0; i < app.length; i++) {\n var cur = app[i](cm, options)\n if (cur && cur.list.length) return cur\n }\n }\n }\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}],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\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}],14:[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}],15:[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; idocument.w=window')\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},{}],16:[function(require,module,exports){\nmodule.exports={\n \"_args\": [\n [\n \"yasgui-utils@^1.4.1\",\n \"/home/lrd900/yasgui/yasqe\"\n ]\n ],\n \"_from\": \"yasgui-utils@>=1.4.1 <2.0.0\",\n \"_id\": \"yasgui-utils@1.6.0\",\n \"_inCache\": true,\n \"_installable\": true,\n \"_location\": \"/yasgui-utils\",\n \"_npmUser\": {\n \"email\": \"laurens.rietveld@gmail.com\",\n \"name\": \"laurens.rietveld\"\n },\n \"_npmVersion\": \"1.4.3\",\n \"_phantomChildren\": {},\n \"_requested\": {\n \"name\": \"yasgui-utils\",\n \"raw\": \"yasgui-utils@^1.4.1\",\n \"rawSpec\": \"^1.4.1\",\n \"scope\": null,\n \"spec\": \">=1.4.1 <2.0.0\",\n \"type\": \"range\"\n },\n \"_requiredBy\": [\n \"/\"\n ],\n \"_shrinkwrap\": null,\n \"_spec\": \"yasgui-utils@^1.4.1\",\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\": \"http://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},{}],17:[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\":16,\"./storage.js\":18,\"./svg.js\":19}],18:[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\":15}],19:[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(\" 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] = $(\"
\");\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\") + \" - 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\":5,\"../main.js\":30,\"../utils.js\":36,\"jquery\":undefined,\"yasgui-utils\":17}],22:[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\":25,\"./utils.js\":25,\"jquery\":undefined}],23:[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(\"//prefix.cc/popular/all.file.json\", 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\n},{\"jquery\":undefined}],24:[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\":25,\"./utils.js\":25,\"jquery\":undefined}],25:[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 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.string.indexOf(prefix) == 0) {\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\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 = \"http://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($(\"Fetchting autocompletions  \"))\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},{\"../imgs.js\":29,\"./utils.js\":25,\"jquery\":undefined,\"yasgui-utils\":17}],26:[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}],27:[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 \n var url = yasqe.options.sparql.endpoint;\n if (yasqe.options.sparql.requestMethod == 'GET') {\n url += '?' + $.param(ajaxConfig.data);\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\n }\n}\n\n},{\"./sparql.js\":33,\"jquery\":undefined}],28:[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: \\nPREFIX rdfs: \\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\"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}],29:[function(require,module,exports){\n'use strict';\nmodule.exports = {\n\tquery: '\t',\n\tqueryInvalid: 'image/svg+xml',\n\tdownload: '\t',\n\tshare: '',\n\twarning: '',\n\tfullscreen: 'image/svg+xml',\n\tsmallscreen: 'image/svg+xml',\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 = $(\"
\", {\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 = $('
', {\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.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(\"\" + $(\"
\").text(expected).html() + \"\");\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 = $(\"
\").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 = $(\"
\").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 = $(\"\").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($('
', {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$('')\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($('', {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$('')\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 = $('
', {\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$(\"
\", {\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($('
', {\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 = $(\"
\", {\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\":2,\"../lib/grammar/tokenizer.js\":4,\"../package.json\":20,\"./autocompleters/autocompleterBase.js\":21,\"./autocompleters/classes.js\":22,\"./autocompleters/prefixes.js\":23,\"./autocompleters/properties.js\":24,\"./autocompleters/variables.js\":26,\"./curl.js\":27,\"./defaults.js\":28,\"./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\":6,\"codemirror/addon/edit/matchbrackets.js\":7,\"codemirror/addon/fold/brace-fold.js\":8,\"codemirror/addon/fold/foldcode.js\":9,\"codemirror/addon/fold/foldgutter.js\":10,\"codemirror/addon/fold/xml-fold.js\":11,\"codemirror/addon/hint/show-hint.js\":12,\"codemirror/addon/runmode/runmode.js\":13,\"codemirror/addon/search/searchcursor.js\":14,\"jquery\":undefined,\"yasgui-utils\":17}],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 (!/^(comment|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},{\"./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: '\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\tvar queryPrefixes = {};\n\tvar shouldContinue = true;\n\tvar getPrefixesFromLine = function(lineOffset, colOffset) {\n\t\tif (!shouldContinue) return;\n\t\tif (!colOffset) colOffset = 1;\n\t\tvar token = yasqe.getNextNonWsToken(i, colOffset);\n\t\tif (token) {\n\t\t\tif (token.state.possibleCurrent.indexOf(\"PREFIX\") == -1 && token.state.possibleNext.indexOf(\"PREFIX\") == -1) shouldContinue = false; //we are beyond the place in the query where we can enter prefixes\n\t\t\tif (token.string.toUpperCase() == \"PREFIX\") {\n\t\t\t\tvar prefix = yasqe.getNextNonWsToken(i, token.end + 1);\n\t\t\t\tif (prefix) {\n\t\t\t\t\tvar uri = yasqe.getNextNonWsToken(i, prefix.end + 1);\n\t\t\t\t\tif (uri) {\n\t\t\t\t\t\tvar uriString = uri.string;\n\t\t\t\t\t\tif (uriString.indexOf(\"<\") == 0)\n\t\t\t\t\t\t\turiString = uriString.substring(1);\n\t\t\t\t\t\tif (uriString.slice(-1) == \">\")\n\t\t\t\t\t\t\turiString = uriString\n\t\t\t\t\t\t\t.substring(0, uriString.length - 1);\n\t\t\t\t\t\tqueryPrefixes[prefix.string.slice(0, -1)] = uriString;\n\n\t\t\t\t\t\tgetPrefixesFromLine(lineOffset, uri.end + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgetPrefixesFromLine(lineOffset, prefix.end + 1);\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tgetPrefixesFromLine(lineOffset, token.end + 1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tgetPrefixesFromLine(lineOffset, token.end + 1);\n\t\t\t}\n\t\t}\n\t};\n\n\n\tvar numLines = yasqe.lineCount();\n\tfor (var i = 0; i < numLines; i++) {\n\t\tif (!shouldContinue) break;\n\t\tgetPrefixesFromLine(i);\n\n\t}\n\treturn queryPrefixes;\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},{}],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\tajaxConfig.data = yasqe.getUrlArguments(config);\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 = $(\"
\").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}]},{},[1])(1)\n});\n\n\n//# sourceMappingURL=yasqe.js.map","\"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; idocument.w=window')\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"],"sourceRoot":"/source/"} \ No newline at end of file +{"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\": [], \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\",\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==\"\") {\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 (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 ? range.from : cm.firstLine();\n this.max = range ? range.to - 1 : 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; idocument.w=window')\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(\" 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] = $(\"
\");\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\") + \" - 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 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($(\"Fetchting autocompletions  \"))\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: \\nPREFIX rdfs: \\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: '\t',\n\tqueryInvalid: 'image/svg+xml',\n\tdownload: '\t',\n\tshare: '',\n\twarning: '',\n\tfullscreen: 'image/svg+xml',\n\tsmallscreen: 'image/svg+xml',\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 = $(\"
\", {\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 = $('
', {\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 $(\"
\").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(\"\" + $(\"
\").text(expected).html() + \"\");\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 = $(\"
\").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 = $(\"
\").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 = $(\"\").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($('
', {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$('')\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($('', {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$('')\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 = $('
', {\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$(\"
\", {\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($('
', {\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 = $(\"
\", {\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: '\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//just get last token, and return prefixes from the state\n\treturn yasqe.getTokenAt({line: yasqe.lastLine(), ch:yasqe.getLine(yasqe.lastLine()).length}).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 = $(\"
\").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\",\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==\"\") {\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 (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 ? range.from : cm.firstLine();\n this.max = range ? range.to - 1 : 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; idocument.w=window')\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(\" 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] = $(\"
\");\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\") + \" - 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 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($(\"Fetchting autocompletions  \"))\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: \\nPREFIX rdfs: \\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: '\t',\n\tqueryInvalid: 'image/svg+xml',\n\tdownload: '\t',\n\tshare: '',\n\twarning: '',\n\tfullscreen: 'image/svg+xml',\n\tsmallscreen: 'image/svg+xml',\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 = $(\"
\", {\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 = $('
', {\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 $(\"
\").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(\"\" + $(\"
\").text(expected).html() + \"\");\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 = $(\"
\").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 = $(\"
\").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 = $(\"\").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($('
', {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$('')\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($('', {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$('')\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 = $('
', {\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$(\"
\", {\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($('
', {\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 = $(\"
\", {\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: '\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//just get last token, and return prefixes from the state\n\treturn yasqe.getTokenAt({line: yasqe.lastLine(), ch:yasqe.getLine(yasqe.lastLine()).length}).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 = $(\"
\").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/"} \ No newline at end of file From 154774b88f22a445f14c67b4ca363dc3e7135ba4 Mon Sep 17 00:00:00 2001 From: "Bruno P. Kinoshita" Date: Fri, 14 Oct 2016 17:36:24 +1300 Subject: [PATCH 2/2] Update to 2.11.4 to prevent an issue in 2.11.3 --- .../jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js | 6 +++--- .../src/main/webapp/js/lib/yasqe.min.js.map | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js index 45c2ba3db8c..b6ed883128b 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js +++ b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js @@ -3,7 +3,7 @@ PNAME_LN:["varOrIRIref","*varOrIRIref"],PNAME_NS:["varOrIRIref","*varOrIRIref"]} INTEGER_POSITIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_POSITIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_POSITIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],INTEGER_NEGATIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DECIMAL_NEGATIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],DOUBLE_NEGATIVE:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],PNAME_LN:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"],PNAME_NS:["multiplicativeExpression","*or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])"]},aggregate:{COUNT:["COUNT","(","?DISTINCT","or([*,expression])",")"],SUM:["SUM","(","?DISTINCT","expression",")"],MIN:["MIN","(","?DISTINCT","expression",")"],MAX:["MAX","(","?DISTINCT","expression",")"],AVG:["AVG","(","?DISTINCT","expression",")"],SAMPLE:["SAMPLE","(","?DISTINCT","expression",")"],GROUP_CONCAT:["GROUP_CONCAT","(","?DISTINCT","expression","?[;,SEPARATOR,=,string]",")"]},allowBnodes:{"}":[]},allowVars:{"}":[]},argList:{NIL:["NIL"],"(":["(","?DISTINCT","expression","*[,,expression]",")"]},askQuery:{ASK:["ASK","*datasetClause","whereClause","solutionModifier"]},baseDecl:{BASE:["BASE","IRI_REF"]},bind:{BIND:["BIND","(","expression","AS","var",")"]},blankNode:{BLANK_NODE_LABEL:["BLANK_NODE_LABEL"],ANON:["ANON"]},blankNodePropertyList:{"[":["[","propertyListNotEmpty","]"]},blankNodePropertyListPath:{"[":["[","propertyListPathNotEmpty","]"]},booleanLiteral:{TRUE:["TRUE"],FALSE:["FALSE"]},brackettedExpression:{"(":["(","expression",")"]},builtInCall:{STR:["STR","(","expression",")"],LANG:["LANG","(","expression",")"],LANGMATCHES:["LANGMATCHES","(","expression",",","expression",")"],DATATYPE:["DATATYPE","(","expression",")"],BOUND:["BOUND","(","var",")"],IRI:["IRI","(","expression",")"],URI:["URI","(","expression",")"],BNODE:["BNODE","or([[ (,expression,)],NIL])"],RAND:["RAND","NIL"],ABS:["ABS","(","expression",")"],CEIL:["CEIL","(","expression",")"],FLOOR:["FLOOR","(","expression",")"],ROUND:["ROUND","(","expression",")"],CONCAT:["CONCAT","expressionList"],SUBSTR:["substringExpression"],STRLEN:["STRLEN","(","expression",")"],REPLACE:["strReplaceExpression"],UCASE:["UCASE","(","expression",")"],LCASE:["LCASE","(","expression",")"],ENCODE_FOR_URI:["ENCODE_FOR_URI","(","expression",")"],CONTAINS:["CONTAINS","(","expression",",","expression",")"],STRSTARTS:["STRSTARTS","(","expression",",","expression",")"],STRENDS:["STRENDS","(","expression",",","expression",")"],STRBEFORE:["STRBEFORE","(","expression",",","expression",")"],STRAFTER:["STRAFTER","(","expression",",","expression",")"],YEAR:["YEAR","(","expression",")"],MONTH:["MONTH","(","expression",")"],DAY:["DAY","(","expression",")"],HOURS:["HOURS","(","expression",")"],MINUTES:["MINUTES","(","expression",")"],SECONDS:["SECONDS","(","expression",")"],TIMEZONE:["TIMEZONE","(","expression",")"],TZ:["TZ","(","expression",")"],NOW:["NOW","NIL"],UUID:["UUID","NIL"],STRUUID:["STRUUID","NIL"],MD5:["MD5","(","expression",")"],SHA1:["SHA1","(","expression",")"],SHA256:["SHA256","(","expression",")"],SHA384:["SHA384","(","expression",")"],SHA512:["SHA512","(","expression",")"],COALESCE:["COALESCE","expressionList"],IF:["IF","(","expression",",","expression",",","expression",")"],STRLANG:["STRLANG","(","expression",",","expression",")"],STRDT:["STRDT","(","expression",",","expression",")"],SAMETERM:["SAMETERM","(","expression",",","expression",")"],ISIRI:["ISIRI","(","expression",")"],ISURI:["ISURI","(","expression",")"],ISBLANK:["ISBLANK","(","expression",")"],ISLITERAL:["ISLITERAL","(","expression",")"],ISNUMERIC:["ISNUMERIC","(","expression",")"],REGEX:["regexExpression"],EXISTS:["existsFunc"],NOT:["notExistsFunc"]},clear:{CLEAR:["CLEAR","?SILENT_2","graphRefAll"]},collection:{"(":["(","+graphNode",")"]},collectionPath:{"(":["(","+graphNodePath",")"]},conditionalAndExpression:{"!":["valueLogical","*[&&,valueLogical]"],"+":["valueLogical","*[&&,valueLogical]"],"-":["valueLogical","*[&&,valueLogical]"],VAR1:["valueLogical","*[&&,valueLogical]"],VAR2:["valueLogical","*[&&,valueLogical]"],"(":["valueLogical","*[&&,valueLogical]"],STR:["valueLogical","*[&&,valueLogical]"],LANG:["valueLogical","*[&&,valueLogical]"],LANGMATCHES:["valueLogical","*[&&,valueLogical]"],DATATYPE:["valueLogical","*[&&,valueLogical]"],BOUND:["valueLogical","*[&&,valueLogical]"],IRI:["valueLogical","*[&&,valueLogical]"],URI:["valueLogical","*[&&,valueLogical]"],BNODE:["valueLogical","*[&&,valueLogical]"],RAND:["valueLogical","*[&&,valueLogical]"],ABS:["valueLogical","*[&&,valueLogical]"],CEIL:["valueLogical","*[&&,valueLogical]"],FLOOR:["valueLogical","*[&&,valueLogical]"],ROUND:["valueLogical","*[&&,valueLogical]"],CONCAT:["valueLogical","*[&&,valueLogical]"],STRLEN:["valueLogical","*[&&,valueLogical]"],UCASE:["valueLogical","*[&&,valueLogical]"],LCASE:["valueLogical","*[&&,valueLogical]"],ENCODE_FOR_URI:["valueLogical","*[&&,valueLogical]"],CONTAINS:["valueLogical","*[&&,valueLogical]"],STRSTARTS:["valueLogical","*[&&,valueLogical]"],STRENDS:["valueLogical","*[&&,valueLogical]"],STRBEFORE:["valueLogical","*[&&,valueLogical]"],STRAFTER:["valueLogical","*[&&,valueLogical]"],YEAR:["valueLogical","*[&&,valueLogical]"],MONTH:["valueLogical","*[&&,valueLogical]"],DAY:["valueLogical","*[&&,valueLogical]"],HOURS:["valueLogical","*[&&,valueLogical]"],MINUTES:["valueLogical","*[&&,valueLogical]"],SECONDS:["valueLogical","*[&&,valueLogical]"],TIMEZONE:["valueLogical","*[&&,valueLogical]"],TZ:["valueLogical","*[&&,valueLogical]"],NOW:["valueLogical","*[&&,valueLogical]"],UUID:["valueLogical","*[&&,valueLogical]"],STRUUID:["valueLogical","*[&&,valueLogical]"],MD5:["valueLogical","*[&&,valueLogical]"],SHA1:["valueLogical","*[&&,valueLogical]"],SHA256:["valueLogical","*[&&,valueLogical]"],SHA384:["valueLogical","*[&&,valueLogical]"],SHA512:["valueLogical","*[&&,valueLogical]"],COALESCE:["valueLogical","*[&&,valueLogical]"],IF:["valueLogical","*[&&,valueLogical]"],STRLANG:["valueLogical","*[&&,valueLogical]"],STRDT:["valueLogical","*[&&,valueLogical]"],SAMETERM:["valueLogical","*[&&,valueLogical]"],ISIRI:["valueLogical","*[&&,valueLogical]"],ISURI:["valueLogical","*[&&,valueLogical]"],ISBLANK:["valueLogical","*[&&,valueLogical]"],ISLITERAL:["valueLogical","*[&&,valueLogical]"],ISNUMERIC:["valueLogical","*[&&,valueLogical]"],TRUE:["valueLogical","*[&&,valueLogical]"],FALSE:["valueLogical","*[&&,valueLogical]"],COUNT:["valueLogical","*[&&,valueLogical]"],SUM:["valueLogical","*[&&,valueLogical]"],MIN:["valueLogical","*[&&,valueLogical]"],MAX:["valueLogical","*[&&,valueLogical]"],AVG:["valueLogical","*[&&,valueLogical]"],SAMPLE:["valueLogical","*[&&,valueLogical]"],GROUP_CONCAT:["valueLogical","*[&&,valueLogical]"],SUBSTR:["valueLogical","*[&&,valueLogical]"],REPLACE:["valueLogical","*[&&,valueLogical]"],REGEX:["valueLogical","*[&&,valueLogical]"],EXISTS:["valueLogical","*[&&,valueLogical]"],NOT:["valueLogical","*[&&,valueLogical]"],IRI_REF:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL1:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL2:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL_LONG1:["valueLogical","*[&&,valueLogical]"],STRING_LITERAL_LONG2:["valueLogical","*[&&,valueLogical]"],INTEGER:["valueLogical","*[&&,valueLogical]"],DECIMAL:["valueLogical","*[&&,valueLogical]"],DOUBLE:["valueLogical","*[&&,valueLogical]"],INTEGER_POSITIVE:["valueLogical","*[&&,valueLogical]"],DECIMAL_POSITIVE:["valueLogical","*[&&,valueLogical]"],DOUBLE_POSITIVE:["valueLogical","*[&&,valueLogical]"],INTEGER_NEGATIVE:["valueLogical","*[&&,valueLogical]"],DECIMAL_NEGATIVE:["valueLogical","*[&&,valueLogical]"],DOUBLE_NEGATIVE:["valueLogical","*[&&,valueLogical]"],PNAME_LN:["valueLogical","*[&&,valueLogical]"],PNAME_NS:["valueLogical","*[&&,valueLogical]"]},conditionalOrExpression:{"!":["conditionalAndExpression","*[||,conditionalAndExpression]"],"+":["conditionalAndExpression","*[||,conditionalAndExpression]"],"-":["conditionalAndExpression","*[||,conditionalAndExpression]"],VAR1:["conditionalAndExpression","*[||,conditionalAndExpression]"],VAR2:["conditionalAndExpression","*[||,conditionalAndExpression]"],"(":["conditionalAndExpression","*[||,conditionalAndExpression]"],STR:["conditionalAndExpression","*[||,conditionalAndExpression]"],LANG:["conditionalAndExpression","*[||,conditionalAndExpression]"],LANGMATCHES:["conditionalAndExpression","*[||,conditionalAndExpression]"],DATATYPE:["conditionalAndExpression","*[||,conditionalAndExpression]"],BOUND:["conditionalAndExpression","*[||,conditionalAndExpression]"],IRI:["conditionalAndExpression","*[||,conditionalAndExpression]"],URI:["conditionalAndExpression","*[||,conditionalAndExpression]"],BNODE:["conditionalAndExpression","*[||,conditionalAndExpression]"],RAND:["conditionalAndExpression","*[||,conditionalAndExpression]"],ABS:["conditionalAndExpression","*[||,conditionalAndExpression]"],CEIL:["conditionalAndExpression","*[||,conditionalAndExpression]"],FLOOR:["conditionalAndExpression","*[||,conditionalAndExpression]"],ROUND:["conditionalAndExpression","*[||,conditionalAndExpression]"],CONCAT:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRLEN:["conditionalAndExpression","*[||,conditionalAndExpression]"],UCASE:["conditionalAndExpression","*[||,conditionalAndExpression]"],LCASE:["conditionalAndExpression","*[||,conditionalAndExpression]"],ENCODE_FOR_URI:["conditionalAndExpression","*[||,conditionalAndExpression]"],CONTAINS:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRSTARTS:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRENDS:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRBEFORE:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRAFTER:["conditionalAndExpression","*[||,conditionalAndExpression]"],YEAR:["conditionalAndExpression","*[||,conditionalAndExpression]"],MONTH:["conditionalAndExpression","*[||,conditionalAndExpression]"],DAY:["conditionalAndExpression","*[||,conditionalAndExpression]"],HOURS:["conditionalAndExpression","*[||,conditionalAndExpression]"],MINUTES:["conditionalAndExpression","*[||,conditionalAndExpression]"],SECONDS:["conditionalAndExpression","*[||,conditionalAndExpression]"],TIMEZONE:["conditionalAndExpression","*[||,conditionalAndExpression]"],TZ:["conditionalAndExpression","*[||,conditionalAndExpression]"],NOW:["conditionalAndExpression","*[||,conditionalAndExpression]"],UUID:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRUUID:["conditionalAndExpression","*[||,conditionalAndExpression]"],MD5:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA1:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA256:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA384:["conditionalAndExpression","*[||,conditionalAndExpression]"],SHA512:["conditionalAndExpression","*[||,conditionalAndExpression]"],COALESCE:["conditionalAndExpression","*[||,conditionalAndExpression]"],IF:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRLANG:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRDT:["conditionalAndExpression","*[||,conditionalAndExpression]"],SAMETERM:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISIRI:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISURI:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISBLANK:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISLITERAL:["conditionalAndExpression","*[||,conditionalAndExpression]"],ISNUMERIC:["conditionalAndExpression","*[||,conditionalAndExpression]"],TRUE:["conditionalAndExpression","*[||,conditionalAndExpression]"],FALSE:["conditionalAndExpression","*[||,conditionalAndExpression]"],COUNT:["conditionalAndExpression","*[||,conditionalAndExpression]"],SUM:["conditionalAndExpression","*[||,conditionalAndExpression]"],MIN:["conditionalAndExpression","*[||,conditionalAndExpression]"],MAX:["conditionalAndExpression","*[||,conditionalAndExpression]"],AVG:["conditionalAndExpression","*[||,conditionalAndExpression]"],SAMPLE:["conditionalAndExpression","*[||,conditionalAndExpression]"],GROUP_CONCAT:["conditionalAndExpression","*[||,conditionalAndExpression]"],SUBSTR:["conditionalAndExpression","*[||,conditionalAndExpression]"],REPLACE:["conditionalAndExpression","*[||,conditionalAndExpression]"],REGEX:["conditionalAndExpression","*[||,conditionalAndExpression]"],EXISTS:["conditionalAndExpression","*[||,conditionalAndExpression]"],NOT:["conditionalAndExpression","*[||,conditionalAndExpression]"],IRI_REF:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL1:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL2:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL_LONG1:["conditionalAndExpression","*[||,conditionalAndExpression]"],STRING_LITERAL_LONG2:["conditionalAndExpression","*[||,conditionalAndExpression]"],INTEGER:["conditionalAndExpression","*[||,conditionalAndExpression]"],DECIMAL:["conditionalAndExpression","*[||,conditionalAndExpression]"],DOUBLE:["conditionalAndExpression","*[||,conditionalAndExpression]"],INTEGER_POSITIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DECIMAL_POSITIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DOUBLE_POSITIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],INTEGER_NEGATIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DECIMAL_NEGATIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],DOUBLE_NEGATIVE:["conditionalAndExpression","*[||,conditionalAndExpression]"],PNAME_LN:["conditionalAndExpression","*[||,conditionalAndExpression]"],PNAME_NS:["conditionalAndExpression","*[||,conditionalAndExpression]"]},constraint:{"(":["brackettedExpression"],STR:["builtInCall"],LANG:["builtInCall"],LANGMATCHES:["builtInCall"],DATATYPE:["builtInCall"],BOUND:["builtInCall"],IRI:["builtInCall"],URI:["builtInCall"],BNODE:["builtInCall"],RAND:["builtInCall"],ABS:["builtInCall"],CEIL:["builtInCall"],FLOOR:["builtInCall"],ROUND:["builtInCall"],CONCAT:["builtInCall"],STRLEN:["builtInCall"],UCASE:["builtInCall"],LCASE:["builtInCall"],ENCODE_FOR_URI:["builtInCall"],CONTAINS:["builtInCall"],STRSTARTS:["builtInCall"],STRENDS:["builtInCall"],STRBEFORE:["builtInCall"],STRAFTER:["builtInCall"],YEAR:["builtInCall"],MONTH:["builtInCall"],DAY:["builtInCall"],HOURS:["builtInCall"],MINUTES:["builtInCall"],SECONDS:["builtInCall"],TIMEZONE:["builtInCall"],TZ:["builtInCall"],NOW:["builtInCall"],UUID:["builtInCall"],STRUUID:["builtInCall"],MD5:["builtInCall"],SHA1:["builtInCall"],SHA256:["builtInCall"],SHA384:["builtInCall"],SHA512:["builtInCall"],COALESCE:["builtInCall"],IF:["builtInCall"],STRLANG:["builtInCall"],STRDT:["builtInCall"],SAMETERM:["builtInCall"],ISIRI:["builtInCall"],ISURI:["builtInCall"],ISBLANK:["builtInCall"],ISLITERAL:["builtInCall"],ISNUMERIC:["builtInCall"],SUBSTR:["builtInCall"],REPLACE:["builtInCall"],REGEX:["builtInCall"],EXISTS:["builtInCall"],NOT:["builtInCall"],IRI_REF:["functionCall"],PNAME_LN:["functionCall"],PNAME_NS:["functionCall"]},constructQuery:{CONSTRUCT:["CONSTRUCT","or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])"]},constructTemplate:{"{":["{","?constructTriples","}"]},constructTriples:{VAR1:["triplesSameSubject","?[.,?constructTriples]"],VAR2:["triplesSameSubject","?[.,?constructTriples]"],NIL:["triplesSameSubject","?[.,?constructTriples]"],"(":["triplesSameSubject","?[.,?constructTriples]"],"[":["triplesSameSubject","?[.,?constructTriples]"],IRI_REF:["triplesSameSubject","?[.,?constructTriples]"],TRUE:["triplesSameSubject","?[.,?constructTriples]"],FALSE:["triplesSameSubject","?[.,?constructTriples]"],BLANK_NODE_LABEL:["triplesSameSubject","?[.,?constructTriples]"],ANON:["triplesSameSubject","?[.,?constructTriples]"],PNAME_LN:["triplesSameSubject","?[.,?constructTriples]"],PNAME_NS:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL1:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL2:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL_LONG1:["triplesSameSubject","?[.,?constructTriples]"],STRING_LITERAL_LONG2:["triplesSameSubject","?[.,?constructTriples]"],INTEGER:["triplesSameSubject","?[.,?constructTriples]"],DECIMAL:["triplesSameSubject","?[.,?constructTriples]"],DOUBLE:["triplesSameSubject","?[.,?constructTriples]"],INTEGER_POSITIVE:["triplesSameSubject","?[.,?constructTriples]"],DECIMAL_POSITIVE:["triplesSameSubject","?[.,?constructTriples]"],DOUBLE_POSITIVE:["triplesSameSubject","?[.,?constructTriples]"],INTEGER_NEGATIVE:["triplesSameSubject","?[.,?constructTriples]"],DECIMAL_NEGATIVE:["triplesSameSubject","?[.,?constructTriples]"],DOUBLE_NEGATIVE:["triplesSameSubject","?[.,?constructTriples]"]},copy:{COPY:["COPY","?SILENT_4","graphOrDefault","TO","graphOrDefault"]},create:{CREATE:["CREATE","?SILENT_3","graphRef"]},dataBlock:{NIL:["or([inlineDataOneVar,inlineDataFull])"],"(":["or([inlineDataOneVar,inlineDataFull])"],VAR1:["or([inlineDataOneVar,inlineDataFull])"],VAR2:["or([inlineDataOneVar,inlineDataFull])"]},dataBlockValue:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],STRING_LITERAL1:["rdfLiteral"],STRING_LITERAL2:["rdfLiteral"],STRING_LITERAL_LONG1:["rdfLiteral"],STRING_LITERAL_LONG2:["rdfLiteral"],INTEGER:["numericLiteral"],DECIMAL:["numericLiteral"],DOUBLE:["numericLiteral"],INTEGER_POSITIVE:["numericLiteral"],DECIMAL_POSITIVE:["numericLiteral"],DOUBLE_POSITIVE:["numericLiteral"],INTEGER_NEGATIVE:["numericLiteral"],DECIMAL_NEGATIVE:["numericLiteral"],DOUBLE_NEGATIVE:["numericLiteral"],TRUE:["booleanLiteral"],FALSE:["booleanLiteral"],UNDEF:["UNDEF"]},datasetClause:{FROM:["FROM","or([defaultGraphClause,namedGraphClause])"]},defaultGraphClause:{IRI_REF:["sourceSelector"],PNAME_LN:["sourceSelector"],PNAME_NS:["sourceSelector"]},delete1:{DATA:["DATA","quadDataNoBnodes"],WHERE:["WHERE","quadPatternNoBnodes"],"{":["quadPatternNoBnodes","?insertClause","*usingClause","WHERE","groupGraphPattern"]},deleteClause:{DELETE:["DELETE","quadPattern"]},describeDatasetClause:{FROM:["FROM","or([defaultGraphClause,namedGraphClause])"]},describeQuery:{DESCRIBE:["DESCRIBE","or([+varOrIRIref,*])","*describeDatasetClause","?whereClause","solutionModifier"]},disallowBnodes:{"}":[],GRAPH:[],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:[]},disallowVars:{"}":[],GRAPH:[],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:[]},drop:{DROP:["DROP","?SILENT_2","graphRefAll"]},existsFunc:{EXISTS:["EXISTS","groupGraphPattern"]},expression:{"!":["conditionalOrExpression"],"+":["conditionalOrExpression"],"-":["conditionalOrExpression"],VAR1:["conditionalOrExpression"],VAR2:["conditionalOrExpression"],"(":["conditionalOrExpression"],STR:["conditionalOrExpression"],LANG:["conditionalOrExpression"],LANGMATCHES:["conditionalOrExpression"],DATATYPE:["conditionalOrExpression"],BOUND:["conditionalOrExpression"],IRI:["conditionalOrExpression"],URI:["conditionalOrExpression"],BNODE:["conditionalOrExpression"],RAND:["conditionalOrExpression"],ABS:["conditionalOrExpression"],CEIL:["conditionalOrExpression"],FLOOR:["conditionalOrExpression"],ROUND:["conditionalOrExpression"],CONCAT:["conditionalOrExpression"],STRLEN:["conditionalOrExpression"],UCASE:["conditionalOrExpression"],LCASE:["conditionalOrExpression"],ENCODE_FOR_URI:["conditionalOrExpression"],CONTAINS:["conditionalOrExpression"],STRSTARTS:["conditionalOrExpression"],STRENDS:["conditionalOrExpression"],STRBEFORE:["conditionalOrExpression"],STRAFTER:["conditionalOrExpression"],YEAR:["conditionalOrExpression"],MONTH:["conditionalOrExpression"],DAY:["conditionalOrExpression"],HOURS:["conditionalOrExpression"],MINUTES:["conditionalOrExpression"],SECONDS:["conditionalOrExpression"],TIMEZONE:["conditionalOrExpression"],TZ:["conditionalOrExpression"],NOW:["conditionalOrExpression"],UUID:["conditionalOrExpression"],STRUUID:["conditionalOrExpression"],MD5:["conditionalOrExpression"],SHA1:["conditionalOrExpression"],SHA256:["conditionalOrExpression"],SHA384:["conditionalOrExpression"],SHA512:["conditionalOrExpression"],COALESCE:["conditionalOrExpression"],IF:["conditionalOrExpression"],STRLANG:["conditionalOrExpression"],STRDT:["conditionalOrExpression"],SAMETERM:["conditionalOrExpression"],ISIRI:["conditionalOrExpression"],ISURI:["conditionalOrExpression"],ISBLANK:["conditionalOrExpression"],ISLITERAL:["conditionalOrExpression"],ISNUMERIC:["conditionalOrExpression"],TRUE:["conditionalOrExpression"],FALSE:["conditionalOrExpression"],COUNT:["conditionalOrExpression"],SUM:["conditionalOrExpression"],MIN:["conditionalOrExpression"],MAX:["conditionalOrExpression"],AVG:["conditionalOrExpression"],SAMPLE:["conditionalOrExpression"],GROUP_CONCAT:["conditionalOrExpression"],SUBSTR:["conditionalOrExpression"],REPLACE:["conditionalOrExpression"],REGEX:["conditionalOrExpression"],EXISTS:["conditionalOrExpression"],NOT:["conditionalOrExpression"],IRI_REF:["conditionalOrExpression"],STRING_LITERAL1:["conditionalOrExpression"],STRING_LITERAL2:["conditionalOrExpression"],STRING_LITERAL_LONG1:["conditionalOrExpression"],STRING_LITERAL_LONG2:["conditionalOrExpression"],INTEGER:["conditionalOrExpression"],DECIMAL:["conditionalOrExpression"],DOUBLE:["conditionalOrExpression"],INTEGER_POSITIVE:["conditionalOrExpression"],DECIMAL_POSITIVE:["conditionalOrExpression"],DOUBLE_POSITIVE:["conditionalOrExpression"],INTEGER_NEGATIVE:["conditionalOrExpression"],DECIMAL_NEGATIVE:["conditionalOrExpression"],DOUBLE_NEGATIVE:["conditionalOrExpression"],PNAME_LN:["conditionalOrExpression"],PNAME_NS:["conditionalOrExpression"]},expressionList:{NIL:["NIL"],"(":["(","expression","*[,,expression]",")"]},filter:{FILTER:["FILTER","constraint"]},functionCall:{IRI_REF:["iriRef","argList"],PNAME_LN:["iriRef","argList"],PNAME_NS:["iriRef","argList"]},graphGraphPattern:{GRAPH:["GRAPH","varOrIRIref","groupGraphPattern"]},graphNode:{VAR1:["varOrTerm"],VAR2:["varOrTerm"],NIL:["varOrTerm"],IRI_REF:["varOrTerm"],TRUE:["varOrTerm"],FALSE:["varOrTerm"],BLANK_NODE_LABEL:["varOrTerm"],ANON:["varOrTerm"],PNAME_LN:["varOrTerm"],PNAME_NS:["varOrTerm"],STRING_LITERAL1:["varOrTerm"],STRING_LITERAL2:["varOrTerm"],STRING_LITERAL_LONG1:["varOrTerm"],STRING_LITERAL_LONG2:["varOrTerm"],INTEGER:["varOrTerm"],DECIMAL:["varOrTerm"],DOUBLE:["varOrTerm"],INTEGER_POSITIVE:["varOrTerm"],DECIMAL_POSITIVE:["varOrTerm"],DOUBLE_POSITIVE:["varOrTerm"],INTEGER_NEGATIVE:["varOrTerm"],DECIMAL_NEGATIVE:["varOrTerm"],DOUBLE_NEGATIVE:["varOrTerm"],"(":["triplesNode"],"[":["triplesNode"]},graphNodePath:{VAR1:["varOrTerm"],VAR2:["varOrTerm"],NIL:["varOrTerm"],IRI_REF:["varOrTerm"],TRUE:["varOrTerm"],FALSE:["varOrTerm"],BLANK_NODE_LABEL:["varOrTerm"],ANON:["varOrTerm"],PNAME_LN:["varOrTerm"],PNAME_NS:["varOrTerm"],STRING_LITERAL1:["varOrTerm"],STRING_LITERAL2:["varOrTerm"],STRING_LITERAL_LONG1:["varOrTerm"],STRING_LITERAL_LONG2:["varOrTerm"],INTEGER:["varOrTerm"],DECIMAL:["varOrTerm"],DOUBLE:["varOrTerm"],INTEGER_POSITIVE:["varOrTerm"],DECIMAL_POSITIVE:["varOrTerm"],DOUBLE_POSITIVE:["varOrTerm"],INTEGER_NEGATIVE:["varOrTerm"],DECIMAL_NEGATIVE:["varOrTerm"],DOUBLE_NEGATIVE:["varOrTerm"],"(":["triplesNodePath"],"[":["triplesNodePath"]},graphOrDefault:{DEFAULT:["DEFAULT"],IRI_REF:["?GRAPH","iriRef"],PNAME_LN:["?GRAPH","iriRef"],PNAME_NS:["?GRAPH","iriRef"],GRAPH:["?GRAPH","iriRef"]},graphPatternNotTriples:{"{":["groupOrUnionGraphPattern"],OPTIONAL:["optionalGraphPattern"],MINUS:["minusGraphPattern"],GRAPH:["graphGraphPattern"],SERVICE:["serviceGraphPattern"],FILTER:["filter"],BIND:["bind"],VALUES:["inlineData"]},graphRef:{GRAPH:["GRAPH","iriRef"]},graphRefAll:{GRAPH:["graphRef"],DEFAULT:["DEFAULT"],NAMED:["NAMED"],ALL:["ALL"]},graphTerm:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],STRING_LITERAL1:["rdfLiteral"],STRING_LITERAL2:["rdfLiteral"],STRING_LITERAL_LONG1:["rdfLiteral"],STRING_LITERAL_LONG2:["rdfLiteral"],INTEGER:["numericLiteral"],DECIMAL:["numericLiteral"],DOUBLE:["numericLiteral"],INTEGER_POSITIVE:["numericLiteral"],DECIMAL_POSITIVE:["numericLiteral"],DOUBLE_POSITIVE:["numericLiteral"],INTEGER_NEGATIVE:["numericLiteral"],DECIMAL_NEGATIVE:["numericLiteral"],DOUBLE_NEGATIVE:["numericLiteral"],TRUE:["booleanLiteral"],FALSE:["booleanLiteral"],BLANK_NODE_LABEL:["blankNode"],ANON:["blankNode"],NIL:["NIL"]},groupClause:{GROUP:["GROUP","BY","+groupCondition"]},groupCondition:{STR:["builtInCall"],LANG:["builtInCall"],LANGMATCHES:["builtInCall"],DATATYPE:["builtInCall"],BOUND:["builtInCall"],IRI:["builtInCall"],URI:["builtInCall"],BNODE:["builtInCall"],RAND:["builtInCall"],ABS:["builtInCall"],CEIL:["builtInCall"],FLOOR:["builtInCall"],ROUND:["builtInCall"],CONCAT:["builtInCall"],STRLEN:["builtInCall"],UCASE:["builtInCall"],LCASE:["builtInCall"],ENCODE_FOR_URI:["builtInCall"],CONTAINS:["builtInCall"],STRSTARTS:["builtInCall"],STRENDS:["builtInCall"],STRBEFORE:["builtInCall"],STRAFTER:["builtInCall"],YEAR:["builtInCall"],MONTH:["builtInCall"],DAY:["builtInCall"],HOURS:["builtInCall"],MINUTES:["builtInCall"],SECONDS:["builtInCall"],TIMEZONE:["builtInCall"],TZ:["builtInCall"],NOW:["builtInCall"],UUID:["builtInCall"],STRUUID:["builtInCall"],MD5:["builtInCall"],SHA1:["builtInCall"],SHA256:["builtInCall"],SHA384:["builtInCall"],SHA512:["builtInCall"],COALESCE:["builtInCall"],IF:["builtInCall"],STRLANG:["builtInCall"],STRDT:["builtInCall"],SAMETERM:["builtInCall"],ISIRI:["builtInCall"],ISURI:["builtInCall"],ISBLANK:["builtInCall"],ISLITERAL:["builtInCall"],ISNUMERIC:["builtInCall"],SUBSTR:["builtInCall"],REPLACE:["builtInCall"],REGEX:["builtInCall"],EXISTS:["builtInCall"],NOT:["builtInCall"],IRI_REF:["functionCall"],PNAME_LN:["functionCall"],PNAME_NS:["functionCall"],"(":["(","expression","?[AS,var]",")"],VAR1:["var"],VAR2:["var"]},groupGraphPattern:{"{":["{","or([subSelect,groupGraphPatternSub])","}"]},groupGraphPatternSub:{"{":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],OPTIONAL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],MINUS:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],GRAPH:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],SERVICE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],FILTER:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],BIND:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],VALUES:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],VAR1:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],VAR2:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],NIL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],"(":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],"[":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],IRI_REF:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],TRUE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],FALSE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],BLANK_NODE_LABEL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],ANON:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],PNAME_LN:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],PNAME_NS:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL1:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL2:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL_LONG1:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],STRING_LITERAL_LONG2:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],INTEGER:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DECIMAL:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DOUBLE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],INTEGER_POSITIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DECIMAL_POSITIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DOUBLE_POSITIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],INTEGER_NEGATIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DECIMAL_NEGATIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],DOUBLE_NEGATIVE:["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"],"}":["?triplesBlock","*[graphPatternNotTriples,?.,?triplesBlock]"]},groupOrUnionGraphPattern:{"{":["groupGraphPattern","*[UNION,groupGraphPattern]"]},havingClause:{HAVING:["HAVING","+havingCondition"]},havingCondition:{"(":["constraint"],STR:["constraint"],LANG:["constraint"],LANGMATCHES:["constraint"],DATATYPE:["constraint"],BOUND:["constraint"],IRI:["constraint"],URI:["constraint"],BNODE:["constraint"],RAND:["constraint"],ABS:["constraint"],CEIL:["constraint"],FLOOR:["constraint"],ROUND:["constraint"],CONCAT:["constraint"],STRLEN:["constraint"],UCASE:["constraint"],LCASE:["constraint"],ENCODE_FOR_URI:["constraint"],CONTAINS:["constraint"],STRSTARTS:["constraint"],STRENDS:["constraint"],STRBEFORE:["constraint"],STRAFTER:["constraint"],YEAR:["constraint"],MONTH:["constraint"],DAY:["constraint"],HOURS:["constraint"],MINUTES:["constraint"],SECONDS:["constraint"],TIMEZONE:["constraint"],TZ:["constraint"],NOW:["constraint"],UUID:["constraint"],STRUUID:["constraint"],MD5:["constraint"],SHA1:["constraint"],SHA256:["constraint"],SHA384:["constraint"],SHA512:["constraint"],COALESCE:["constraint"],IF:["constraint"],STRLANG:["constraint"],STRDT:["constraint"],SAMETERM:["constraint"],ISIRI:["constraint"],ISURI:["constraint"],ISBLANK:["constraint"],ISLITERAL:["constraint"],ISNUMERIC:["constraint"],SUBSTR:["constraint"],REPLACE:["constraint"],REGEX:["constraint"],EXISTS:["constraint"],NOT:["constraint"],IRI_REF:["constraint"],PNAME_LN:["constraint"],PNAME_NS:["constraint"]},inlineData:{VALUES:["VALUES","dataBlock"]},inlineDataFull:{NIL:["or([NIL,[ (,*var,)]])","{","*or([[ (,*dataBlockValue,)],NIL])","}"],"(":["or([NIL,[ (,*var,)]])","{","*or([[ (,*dataBlockValue,)],NIL])","}"]},inlineDataOneVar:{VAR1:["var","{","*dataBlockValue","}"],VAR2:["var","{","*dataBlockValue","}"]},insert1:{DATA:["DATA","quadData"],"{":["quadPattern","*usingClause","WHERE","groupGraphPattern"]},insertClause:{INSERT:["INSERT","quadPattern"]},integer:{INTEGER:["INTEGER"]},iriRef:{IRI_REF:["IRI_REF"],PNAME_LN:["prefixedName"],PNAME_NS:["prefixedName"] },iriRefOrFunction:{IRI_REF:["iriRef","?argList"],PNAME_LN:["iriRef","?argList"],PNAME_NS:["iriRef","?argList"]},limitClause:{LIMIT:["LIMIT","INTEGER"]},limitOffsetClauses:{LIMIT:["limitClause","?offsetClause"],OFFSET:["offsetClause","?limitClause"]},load:{LOAD:["LOAD","?SILENT_1","iriRef","?[INTO,graphRef]"]},minusGraphPattern:{MINUS:["MINUS","groupGraphPattern"]},modify:{WITH:["WITH","iriRef","or([[deleteClause,?insertClause],insertClause])","*usingClause","WHERE","groupGraphPattern"]},move:{MOVE:["MOVE","?SILENT_4","graphOrDefault","TO","graphOrDefault"]},multiplicativeExpression:{"!":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],"+":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],"-":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],VAR1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],VAR2:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],"(":["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],LANG:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],LANGMATCHES:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DATATYPE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],BOUND:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],IRI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],URI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],BNODE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],RAND:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ABS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],CEIL:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],FLOOR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ROUND:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],CONCAT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRLEN:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],UCASE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],LCASE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ENCODE_FOR_URI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],CONTAINS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRSTARTS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRENDS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRBEFORE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRAFTER:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],YEAR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MONTH:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DAY:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],HOURS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MINUTES:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SECONDS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],TIMEZONE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],TZ:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],NOW:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],UUID:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRUUID:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MD5:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA256:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA384:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SHA512:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],COALESCE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],IF:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRLANG:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRDT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SAMETERM:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISIRI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISURI:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISBLANK:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISLITERAL:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],ISNUMERIC:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],TRUE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],FALSE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],COUNT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SUM:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MIN:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],MAX:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],AVG:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SAMPLE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],GROUP_CONCAT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],SUBSTR:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],REPLACE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],REGEX:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],EXISTS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],NOT:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],IRI_REF:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL2:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL_LONG1:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],STRING_LITERAL_LONG2:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER_POSITIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_POSITIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_POSITIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],INTEGER_NEGATIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DECIMAL_NEGATIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],DOUBLE_NEGATIVE:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],PNAME_LN:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"],PNAME_NS:["unaryExpression","*or([[*,unaryExpression],[/,unaryExpression]])"]},namedGraphClause:{NAMED:["NAMED","sourceSelector"]},notExistsFunc:{NOT:["NOT","EXISTS","groupGraphPattern"]},numericExpression:{"!":["additiveExpression"],"+":["additiveExpression"],"-":["additiveExpression"],VAR1:["additiveExpression"],VAR2:["additiveExpression"],"(":["additiveExpression"],STR:["additiveExpression"],LANG:["additiveExpression"],LANGMATCHES:["additiveExpression"],DATATYPE:["additiveExpression"],BOUND:["additiveExpression"],IRI:["additiveExpression"],URI:["additiveExpression"],BNODE:["additiveExpression"],RAND:["additiveExpression"],ABS:["additiveExpression"],CEIL:["additiveExpression"],FLOOR:["additiveExpression"],ROUND:["additiveExpression"],CONCAT:["additiveExpression"],STRLEN:["additiveExpression"],UCASE:["additiveExpression"],LCASE:["additiveExpression"],ENCODE_FOR_URI:["additiveExpression"],CONTAINS:["additiveExpression"],STRSTARTS:["additiveExpression"],STRENDS:["additiveExpression"],STRBEFORE:["additiveExpression"],STRAFTER:["additiveExpression"],YEAR:["additiveExpression"],MONTH:["additiveExpression"],DAY:["additiveExpression"],HOURS:["additiveExpression"],MINUTES:["additiveExpression"],SECONDS:["additiveExpression"],TIMEZONE:["additiveExpression"],TZ:["additiveExpression"],NOW:["additiveExpression"],UUID:["additiveExpression"],STRUUID:["additiveExpression"],MD5:["additiveExpression"],SHA1:["additiveExpression"],SHA256:["additiveExpression"],SHA384:["additiveExpression"],SHA512:["additiveExpression"],COALESCE:["additiveExpression"],IF:["additiveExpression"],STRLANG:["additiveExpression"],STRDT:["additiveExpression"],SAMETERM:["additiveExpression"],ISIRI:["additiveExpression"],ISURI:["additiveExpression"],ISBLANK:["additiveExpression"],ISLITERAL:["additiveExpression"],ISNUMERIC:["additiveExpression"],TRUE:["additiveExpression"],FALSE:["additiveExpression"],COUNT:["additiveExpression"],SUM:["additiveExpression"],MIN:["additiveExpression"],MAX:["additiveExpression"],AVG:["additiveExpression"],SAMPLE:["additiveExpression"],GROUP_CONCAT:["additiveExpression"],SUBSTR:["additiveExpression"],REPLACE:["additiveExpression"],REGEX:["additiveExpression"],EXISTS:["additiveExpression"],NOT:["additiveExpression"],IRI_REF:["additiveExpression"],STRING_LITERAL1:["additiveExpression"],STRING_LITERAL2:["additiveExpression"],STRING_LITERAL_LONG1:["additiveExpression"],STRING_LITERAL_LONG2:["additiveExpression"],INTEGER:["additiveExpression"],DECIMAL:["additiveExpression"],DOUBLE:["additiveExpression"],INTEGER_POSITIVE:["additiveExpression"],DECIMAL_POSITIVE:["additiveExpression"],DOUBLE_POSITIVE:["additiveExpression"],INTEGER_NEGATIVE:["additiveExpression"],DECIMAL_NEGATIVE:["additiveExpression"],DOUBLE_NEGATIVE:["additiveExpression"],PNAME_LN:["additiveExpression"],PNAME_NS:["additiveExpression"]},numericLiteral:{INTEGER:["numericLiteralUnsigned"],DECIMAL:["numericLiteralUnsigned"],DOUBLE:["numericLiteralUnsigned"],INTEGER_POSITIVE:["numericLiteralPositive"],DECIMAL_POSITIVE:["numericLiteralPositive"],DOUBLE_POSITIVE:["numericLiteralPositive"],INTEGER_NEGATIVE:["numericLiteralNegative"],DECIMAL_NEGATIVE:["numericLiteralNegative"],DOUBLE_NEGATIVE:["numericLiteralNegative"]},numericLiteralNegative:{INTEGER_NEGATIVE:["INTEGER_NEGATIVE"],DECIMAL_NEGATIVE:["DECIMAL_NEGATIVE"],DOUBLE_NEGATIVE:["DOUBLE_NEGATIVE"]},numericLiteralPositive:{INTEGER_POSITIVE:["INTEGER_POSITIVE"],DECIMAL_POSITIVE:["DECIMAL_POSITIVE"],DOUBLE_POSITIVE:["DOUBLE_POSITIVE"]},numericLiteralUnsigned:{INTEGER:["INTEGER"],DECIMAL:["DECIMAL"],DOUBLE:["DOUBLE"]},object:{"(":["graphNode"],"[":["graphNode"],VAR1:["graphNode"],VAR2:["graphNode"],NIL:["graphNode"],IRI_REF:["graphNode"],TRUE:["graphNode"],FALSE:["graphNode"],BLANK_NODE_LABEL:["graphNode"],ANON:["graphNode"],PNAME_LN:["graphNode"],PNAME_NS:["graphNode"],STRING_LITERAL1:["graphNode"],STRING_LITERAL2:["graphNode"],STRING_LITERAL_LONG1:["graphNode"],STRING_LITERAL_LONG2:["graphNode"],INTEGER:["graphNode"],DECIMAL:["graphNode"],DOUBLE:["graphNode"],INTEGER_POSITIVE:["graphNode"],DECIMAL_POSITIVE:["graphNode"],DOUBLE_POSITIVE:["graphNode"],INTEGER_NEGATIVE:["graphNode"],DECIMAL_NEGATIVE:["graphNode"],DOUBLE_NEGATIVE:["graphNode"]},objectList:{"(":["object","*[,,object]"],"[":["object","*[,,object]"],VAR1:["object","*[,,object]"],VAR2:["object","*[,,object]"],NIL:["object","*[,,object]"],IRI_REF:["object","*[,,object]"],TRUE:["object","*[,,object]"],FALSE:["object","*[,,object]"],BLANK_NODE_LABEL:["object","*[,,object]"],ANON:["object","*[,,object]"],PNAME_LN:["object","*[,,object]"],PNAME_NS:["object","*[,,object]"],STRING_LITERAL1:["object","*[,,object]"],STRING_LITERAL2:["object","*[,,object]"],STRING_LITERAL_LONG1:["object","*[,,object]"],STRING_LITERAL_LONG2:["object","*[,,object]"],INTEGER:["object","*[,,object]"],DECIMAL:["object","*[,,object]"],DOUBLE:["object","*[,,object]"],INTEGER_POSITIVE:["object","*[,,object]"],DECIMAL_POSITIVE:["object","*[,,object]"],DOUBLE_POSITIVE:["object","*[,,object]"],INTEGER_NEGATIVE:["object","*[,,object]"],DECIMAL_NEGATIVE:["object","*[,,object]"],DOUBLE_NEGATIVE:["object","*[,,object]"]},objectListPath:{"(":["objectPath","*[,,objectPath]"],"[":["objectPath","*[,,objectPath]"],VAR1:["objectPath","*[,,objectPath]"],VAR2:["objectPath","*[,,objectPath]"],NIL:["objectPath","*[,,objectPath]"],IRI_REF:["objectPath","*[,,objectPath]"],TRUE:["objectPath","*[,,objectPath]"],FALSE:["objectPath","*[,,objectPath]"],BLANK_NODE_LABEL:["objectPath","*[,,objectPath]"],ANON:["objectPath","*[,,objectPath]"],PNAME_LN:["objectPath","*[,,objectPath]"],PNAME_NS:["objectPath","*[,,objectPath]"],STRING_LITERAL1:["objectPath","*[,,objectPath]"],STRING_LITERAL2:["objectPath","*[,,objectPath]"],STRING_LITERAL_LONG1:["objectPath","*[,,objectPath]"],STRING_LITERAL_LONG2:["objectPath","*[,,objectPath]"],INTEGER:["objectPath","*[,,objectPath]"],DECIMAL:["objectPath","*[,,objectPath]"],DOUBLE:["objectPath","*[,,objectPath]"],INTEGER_POSITIVE:["objectPath","*[,,objectPath]"],DECIMAL_POSITIVE:["objectPath","*[,,objectPath]"],DOUBLE_POSITIVE:["objectPath","*[,,objectPath]"],INTEGER_NEGATIVE:["objectPath","*[,,objectPath]"],DECIMAL_NEGATIVE:["objectPath","*[,,objectPath]"],DOUBLE_NEGATIVE:["objectPath","*[,,objectPath]"]},objectPath:{"(":["graphNodePath"],"[":["graphNodePath"],VAR1:["graphNodePath"],VAR2:["graphNodePath"],NIL:["graphNodePath"],IRI_REF:["graphNodePath"],TRUE:["graphNodePath"],FALSE:["graphNodePath"],BLANK_NODE_LABEL:["graphNodePath"],ANON:["graphNodePath"],PNAME_LN:["graphNodePath"],PNAME_NS:["graphNodePath"],STRING_LITERAL1:["graphNodePath"],STRING_LITERAL2:["graphNodePath"],STRING_LITERAL_LONG1:["graphNodePath"],STRING_LITERAL_LONG2:["graphNodePath"],INTEGER:["graphNodePath"],DECIMAL:["graphNodePath"],DOUBLE:["graphNodePath"],INTEGER_POSITIVE:["graphNodePath"],DECIMAL_POSITIVE:["graphNodePath"],DOUBLE_POSITIVE:["graphNodePath"],INTEGER_NEGATIVE:["graphNodePath"],DECIMAL_NEGATIVE:["graphNodePath"],DOUBLE_NEGATIVE:["graphNodePath"]},offsetClause:{OFFSET:["OFFSET","INTEGER"]},optionalGraphPattern:{OPTIONAL:["OPTIONAL","groupGraphPattern"]},"or([*,expression])":{"*":["*"],"!":["expression"],"+":["expression"],"-":["expression"],VAR1:["expression"],VAR2:["expression"],"(":["expression"],STR:["expression"],LANG:["expression"],LANGMATCHES:["expression"],DATATYPE:["expression"],BOUND:["expression"],IRI:["expression"],URI:["expression"],BNODE:["expression"],RAND:["expression"],ABS:["expression"],CEIL:["expression"],FLOOR:["expression"],ROUND:["expression"],CONCAT:["expression"],STRLEN:["expression"],UCASE:["expression"],LCASE:["expression"],ENCODE_FOR_URI:["expression"],CONTAINS:["expression"],STRSTARTS:["expression"],STRENDS:["expression"],STRBEFORE:["expression"],STRAFTER:["expression"],YEAR:["expression"],MONTH:["expression"],DAY:["expression"],HOURS:["expression"],MINUTES:["expression"],SECONDS:["expression"],TIMEZONE:["expression"],TZ:["expression"],NOW:["expression"],UUID:["expression"],STRUUID:["expression"],MD5:["expression"],SHA1:["expression"],SHA256:["expression"],SHA384:["expression"],SHA512:["expression"],COALESCE:["expression"],IF:["expression"],STRLANG:["expression"],STRDT:["expression"],SAMETERM:["expression"],ISIRI:["expression"],ISURI:["expression"],ISBLANK:["expression"],ISLITERAL:["expression"],ISNUMERIC:["expression"],TRUE:["expression"],FALSE:["expression"],COUNT:["expression"],SUM:["expression"],MIN:["expression"],MAX:["expression"],AVG:["expression"],SAMPLE:["expression"],GROUP_CONCAT:["expression"],SUBSTR:["expression"],REPLACE:["expression"],REGEX:["expression"],EXISTS:["expression"],NOT:["expression"],IRI_REF:["expression"],STRING_LITERAL1:["expression"],STRING_LITERAL2:["expression"],STRING_LITERAL_LONG1:["expression"],STRING_LITERAL_LONG2:["expression"],INTEGER:["expression"],DECIMAL:["expression"],DOUBLE:["expression"],INTEGER_POSITIVE:["expression"],DECIMAL_POSITIVE:["expression"],DOUBLE_POSITIVE:["expression"],INTEGER_NEGATIVE:["expression"],DECIMAL_NEGATIVE:["expression"],DOUBLE_NEGATIVE:["expression"],PNAME_LN:["expression"],PNAME_NS:["expression"]},"or([+or([var,[ (,expression,AS,var,)]]),*])":{"(":["+or([var,[ (,expression,AS,var,)]])"],VAR1:["+or([var,[ (,expression,AS,var,)]])"],VAR2:["+or([var,[ (,expression,AS,var,)]])"],"*":["*"]},"or([+varOrIRIref,*])":{VAR1:["+varOrIRIref"],VAR2:["+varOrIRIref"],IRI_REF:["+varOrIRIref"],PNAME_LN:["+varOrIRIref"],PNAME_NS:["+varOrIRIref"],"*":["*"]},"or([ASC,DESC])":{ASC:["ASC"],DESC:["DESC"]},"or([DISTINCT,REDUCED])":{DISTINCT:["DISTINCT"],REDUCED:["REDUCED"]},"or([LANGTAG,[^^,iriRef]])":{LANGTAG:["LANGTAG"],"^^":["[^^,iriRef]"]},"or([NIL,[ (,*var,)]])":{NIL:["NIL"],"(":["[ (,*var,)]"]},"or([[ (,*dataBlockValue,)],NIL])":{"(":["[ (,*dataBlockValue,)]"],NIL:["NIL"]},"or([[ (,expression,)],NIL])":{"(":["[ (,expression,)]"],NIL:["NIL"]},"or([[*,unaryExpression],[/,unaryExpression]])":{"*":["[*,unaryExpression]"],"/":["[/,unaryExpression]"]},"or([[+,multiplicativeExpression],[-,multiplicativeExpression],[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]])":{"+":["[+,multiplicativeExpression]"],"-":["[-,multiplicativeExpression]"],INTEGER_POSITIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DECIMAL_POSITIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DOUBLE_POSITIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],INTEGER_NEGATIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DECIMAL_NEGATIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"],DOUBLE_NEGATIVE:["[or([numericLiteralPositive,numericLiteralNegative]),?or([[*,unaryExpression],[/,unaryExpression]])]"]},"or([[,,or([},[integer,}]])],}])":{",":["[,,or([},[integer,}]])]"],"}":["}"]},"or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])":{"=":["[=,numericExpression]"],"!=":["[!=,numericExpression]"],"<":["[<,numericExpression]"],">":["[>,numericExpression]"],"<=":["[<=,numericExpression]"],">=":["[>=,numericExpression]"],IN:["[IN,expressionList]"],NOT:["[NOT,IN,expressionList]"]},"or([[constructTemplate,*datasetClause,whereClause,solutionModifier],[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]])":{"{":["[constructTemplate,*datasetClause,whereClause,solutionModifier]"],WHERE:["[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]"],FROM:["[*datasetClause,WHERE,{,?triplesTemplate,},solutionModifier]"]},"or([[deleteClause,?insertClause],insertClause])":{DELETE:["[deleteClause,?insertClause]"],INSERT:["insertClause"]},"or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])":{INTEGER:["[integer,or([[,,or([},[integer,}]])],}])]"],",":["[,,integer,}]"]},"or([baseDecl,prefixDecl])":{BASE:["baseDecl"],PREFIX:["prefixDecl"]},"or([defaultGraphClause,namedGraphClause])":{IRI_REF:["defaultGraphClause"],PNAME_LN:["defaultGraphClause"],PNAME_NS:["defaultGraphClause"],NAMED:["namedGraphClause"]},"or([inlineDataOneVar,inlineDataFull])":{VAR1:["inlineDataOneVar"],VAR2:["inlineDataOneVar"],NIL:["inlineDataFull"],"(":["inlineDataFull"]},"or([iriRef,[NAMED,iriRef]])":{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],NAMED:["[NAMED,iriRef]"]},"or([iriRef,a])":{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],a:["a"]},"or([numericLiteralPositive,numericLiteralNegative])":{INTEGER_POSITIVE:["numericLiteralPositive"],DECIMAL_POSITIVE:["numericLiteralPositive"],DOUBLE_POSITIVE:["numericLiteralPositive"],INTEGER_NEGATIVE:["numericLiteralNegative"],DECIMAL_NEGATIVE:["numericLiteralNegative"],DOUBLE_NEGATIVE:["numericLiteralNegative"]},"or([queryAll,updateAll])":{CONSTRUCT:["queryAll"],DESCRIBE:["queryAll"],ASK:["queryAll"],SELECT:["queryAll"],INSERT:["updateAll"],DELETE:["updateAll"],LOAD:["updateAll"],CLEAR:["updateAll"],DROP:["updateAll"],ADD:["updateAll"],MOVE:["updateAll"],COPY:["updateAll"],CREATE:["updateAll"],WITH:["updateAll"],$:["updateAll"]},"or([selectQuery,constructQuery,describeQuery,askQuery])":{SELECT:["selectQuery"],CONSTRUCT:["constructQuery"],DESCRIBE:["describeQuery"],ASK:["askQuery"]},"or([subSelect,groupGraphPatternSub])":{SELECT:["subSelect"],"{":["groupGraphPatternSub"],OPTIONAL:["groupGraphPatternSub"],MINUS:["groupGraphPatternSub"],GRAPH:["groupGraphPatternSub"],SERVICE:["groupGraphPatternSub"],FILTER:["groupGraphPatternSub"],BIND:["groupGraphPatternSub"],VALUES:["groupGraphPatternSub"],VAR1:["groupGraphPatternSub"],VAR2:["groupGraphPatternSub"],NIL:["groupGraphPatternSub"],"(":["groupGraphPatternSub"],"[":["groupGraphPatternSub"],IRI_REF:["groupGraphPatternSub"],TRUE:["groupGraphPatternSub"],FALSE:["groupGraphPatternSub"],BLANK_NODE_LABEL:["groupGraphPatternSub"],ANON:["groupGraphPatternSub"],PNAME_LN:["groupGraphPatternSub"],PNAME_NS:["groupGraphPatternSub"],STRING_LITERAL1:["groupGraphPatternSub"],STRING_LITERAL2:["groupGraphPatternSub"],STRING_LITERAL_LONG1:["groupGraphPatternSub"],STRING_LITERAL_LONG2:["groupGraphPatternSub"],INTEGER:["groupGraphPatternSub"],DECIMAL:["groupGraphPatternSub"],DOUBLE:["groupGraphPatternSub"],INTEGER_POSITIVE:["groupGraphPatternSub"],DECIMAL_POSITIVE:["groupGraphPatternSub"],DOUBLE_POSITIVE:["groupGraphPatternSub"],INTEGER_NEGATIVE:["groupGraphPatternSub"],DECIMAL_NEGATIVE:["groupGraphPatternSub"],DOUBLE_NEGATIVE:["groupGraphPatternSub"],"}":["groupGraphPatternSub"]},"or([var,[ (,expression,AS,var,)]])":{VAR1:["var"],VAR2:["var"],"(":["[ (,expression,AS,var,)]"]},"or([verbPath,verbSimple])":{"^":["verbPath"],a:["verbPath"],"!":["verbPath"],"(":["verbPath"],IRI_REF:["verbPath"],PNAME_LN:["verbPath"],PNAME_NS:["verbPath"],VAR1:["verbSimple"],VAR2:["verbSimple"]},"or([},[integer,}]])":{"}":["}"],INTEGER:["[integer,}]"]},orderClause:{ORDER:["ORDER","BY","+orderCondition"]},orderCondition:{ASC:["or([ASC,DESC])","brackettedExpression"],DESC:["or([ASC,DESC])","brackettedExpression"],"(":["constraint"],STR:["constraint"],LANG:["constraint"],LANGMATCHES:["constraint"],DATATYPE:["constraint"],BOUND:["constraint"],IRI:["constraint"],URI:["constraint"],BNODE:["constraint"],RAND:["constraint"],ABS:["constraint"],CEIL:["constraint"],FLOOR:["constraint"],ROUND:["constraint"],CONCAT:["constraint"],STRLEN:["constraint"],UCASE:["constraint"],LCASE:["constraint"],ENCODE_FOR_URI:["constraint"],CONTAINS:["constraint"],STRSTARTS:["constraint"],STRENDS:["constraint"],STRBEFORE:["constraint"],STRAFTER:["constraint"],YEAR:["constraint"],MONTH:["constraint"],DAY:["constraint"],HOURS:["constraint"],MINUTES:["constraint"],SECONDS:["constraint"],TIMEZONE:["constraint"],TZ:["constraint"],NOW:["constraint"],UUID:["constraint"],STRUUID:["constraint"],MD5:["constraint"],SHA1:["constraint"],SHA256:["constraint"],SHA384:["constraint"],SHA512:["constraint"],COALESCE:["constraint"],IF:["constraint"],STRLANG:["constraint"],STRDT:["constraint"],SAMETERM:["constraint"],ISIRI:["constraint"],ISURI:["constraint"],ISBLANK:["constraint"],ISLITERAL:["constraint"],ISNUMERIC:["constraint"],SUBSTR:["constraint"],REPLACE:["constraint"],REGEX:["constraint"],EXISTS:["constraint"],NOT:["constraint"],IRI_REF:["constraint"],PNAME_LN:["constraint"],PNAME_NS:["constraint"],VAR1:["var"],VAR2:["var"]},path:{"^":["pathAlternative"],a:["pathAlternative"],"!":["pathAlternative"],"(":["pathAlternative"],IRI_REF:["pathAlternative"],PNAME_LN:["pathAlternative"],PNAME_NS:["pathAlternative"]},pathAlternative:{"^":["pathSequence","*[|,pathSequence]"],a:["pathSequence","*[|,pathSequence]"],"!":["pathSequence","*[|,pathSequence]"],"(":["pathSequence","*[|,pathSequence]"],IRI_REF:["pathSequence","*[|,pathSequence]"],PNAME_LN:["pathSequence","*[|,pathSequence]"],PNAME_NS:["pathSequence","*[|,pathSequence]"]},pathElt:{a:["pathPrimary","?pathMod"],"!":["pathPrimary","?pathMod"],"(":["pathPrimary","?pathMod"],IRI_REF:["pathPrimary","?pathMod"],PNAME_LN:["pathPrimary","?pathMod"],PNAME_NS:["pathPrimary","?pathMod"]},pathEltOrInverse:{a:["pathElt"],"!":["pathElt"],"(":["pathElt"],IRI_REF:["pathElt"],PNAME_LN:["pathElt"],PNAME_NS:["pathElt"],"^":["^","pathElt"]},pathMod:{"*":["*"],"?":["?"],"+":["+"],"{":["{","or([[integer,or([[,,or([},[integer,}]])],}])],[,,integer,}]])"]},pathNegatedPropertySet:{a:["pathOneInPropertySet"],"^":["pathOneInPropertySet"],IRI_REF:["pathOneInPropertySet"],PNAME_LN:["pathOneInPropertySet"],PNAME_NS:["pathOneInPropertySet"],"(":["(","?[pathOneInPropertySet,*[|,pathOneInPropertySet]]",")"]},pathOneInPropertySet:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"],a:["a"],"^":["^","or([iriRef,a])"]},pathPrimary:{IRI_REF:["storeProperty","iriRef"],PNAME_LN:["storeProperty","iriRef"],PNAME_NS:["storeProperty","iriRef"],a:["storeProperty","a"],"!":["!","pathNegatedPropertySet"],"(":["(","path",")"]},pathSequence:{"^":["pathEltOrInverse","*[/,pathEltOrInverse]"],a:["pathEltOrInverse","*[/,pathEltOrInverse]"],"!":["pathEltOrInverse","*[/,pathEltOrInverse]"],"(":["pathEltOrInverse","*[/,pathEltOrInverse]"],IRI_REF:["pathEltOrInverse","*[/,pathEltOrInverse]"],PNAME_LN:["pathEltOrInverse","*[/,pathEltOrInverse]"],PNAME_NS:["pathEltOrInverse","*[/,pathEltOrInverse]"]},prefixDecl:{PREFIX:["PREFIX","PNAME_NS","IRI_REF"]},prefixedName:{PNAME_LN:["PNAME_LN"],PNAME_NS:["PNAME_NS"]},primaryExpression:{"(":["brackettedExpression"],STR:["builtInCall"],LANG:["builtInCall"],LANGMATCHES:["builtInCall"],DATATYPE:["builtInCall"],BOUND:["builtInCall"],IRI:["builtInCall"],URI:["builtInCall"],BNODE:["builtInCall"],RAND:["builtInCall"],ABS:["builtInCall"],CEIL:["builtInCall"],FLOOR:["builtInCall"],ROUND:["builtInCall"],CONCAT:["builtInCall"],STRLEN:["builtInCall"],UCASE:["builtInCall"],LCASE:["builtInCall"],ENCODE_FOR_URI:["builtInCall"],CONTAINS:["builtInCall"],STRSTARTS:["builtInCall"],STRENDS:["builtInCall"],STRBEFORE:["builtInCall"],STRAFTER:["builtInCall"],YEAR:["builtInCall"],MONTH:["builtInCall"],DAY:["builtInCall"],HOURS:["builtInCall"],MINUTES:["builtInCall"],SECONDS:["builtInCall"],TIMEZONE:["builtInCall"],TZ:["builtInCall"],NOW:["builtInCall"],UUID:["builtInCall"],STRUUID:["builtInCall"],MD5:["builtInCall"],SHA1:["builtInCall"],SHA256:["builtInCall"],SHA384:["builtInCall"],SHA512:["builtInCall"],COALESCE:["builtInCall"],IF:["builtInCall"],STRLANG:["builtInCall"],STRDT:["builtInCall"],SAMETERM:["builtInCall"],ISIRI:["builtInCall"],ISURI:["builtInCall"],ISBLANK:["builtInCall"],ISLITERAL:["builtInCall"],ISNUMERIC:["builtInCall"],SUBSTR:["builtInCall"],REPLACE:["builtInCall"],REGEX:["builtInCall"],EXISTS:["builtInCall"],NOT:["builtInCall"],IRI_REF:["iriRefOrFunction"],PNAME_LN:["iriRefOrFunction"],PNAME_NS:["iriRefOrFunction"],STRING_LITERAL1:["rdfLiteral"],STRING_LITERAL2:["rdfLiteral"],STRING_LITERAL_LONG1:["rdfLiteral"],STRING_LITERAL_LONG2:["rdfLiteral"],INTEGER:["numericLiteral"],DECIMAL:["numericLiteral"],DOUBLE:["numericLiteral"],INTEGER_POSITIVE:["numericLiteral"],DECIMAL_POSITIVE:["numericLiteral"],DOUBLE_POSITIVE:["numericLiteral"],INTEGER_NEGATIVE:["numericLiteral"],DECIMAL_NEGATIVE:["numericLiteral"],DOUBLE_NEGATIVE:["numericLiteral"],TRUE:["booleanLiteral"],FALSE:["booleanLiteral"],VAR1:["var"],VAR2:["var"],COUNT:["aggregate"],SUM:["aggregate"],MIN:["aggregate"],MAX:["aggregate"],AVG:["aggregate"],SAMPLE:["aggregate"],GROUP_CONCAT:["aggregate"]},prologue:{BASE:["*or([baseDecl,prefixDecl])"],PREFIX:["*or([baseDecl,prefixDecl])"],$:["*or([baseDecl,prefixDecl])"],CONSTRUCT:["*or([baseDecl,prefixDecl])"],DESCRIBE:["*or([baseDecl,prefixDecl])"],ASK:["*or([baseDecl,prefixDecl])"],INSERT:["*or([baseDecl,prefixDecl])"],DELETE:["*or([baseDecl,prefixDecl])"],SELECT:["*or([baseDecl,prefixDecl])"],LOAD:["*or([baseDecl,prefixDecl])"],CLEAR:["*or([baseDecl,prefixDecl])"],DROP:["*or([baseDecl,prefixDecl])"],ADD:["*or([baseDecl,prefixDecl])"],MOVE:["*or([baseDecl,prefixDecl])"],COPY:["*or([baseDecl,prefixDecl])"],CREATE:["*or([baseDecl,prefixDecl])"],WITH:["*or([baseDecl,prefixDecl])"]},propertyList:{a:["propertyListNotEmpty"],VAR1:["propertyListNotEmpty"],VAR2:["propertyListNotEmpty"],IRI_REF:["propertyListNotEmpty"],PNAME_LN:["propertyListNotEmpty"],PNAME_NS:["propertyListNotEmpty"],".":[],"}":[],GRAPH:[]},propertyListNotEmpty:{a:["verb","objectList","*[;,?[verb,objectList]]"],VAR1:["verb","objectList","*[;,?[verb,objectList]]"],VAR2:["verb","objectList","*[;,?[verb,objectList]]"],IRI_REF:["verb","objectList","*[;,?[verb,objectList]]"],PNAME_LN:["verb","objectList","*[;,?[verb,objectList]]"],PNAME_NS:["verb","objectList","*[;,?[verb,objectList]]"]},propertyListPath:{a:["propertyListNotEmpty"],VAR1:["propertyListNotEmpty"],VAR2:["propertyListNotEmpty"],IRI_REF:["propertyListNotEmpty"],PNAME_LN:["propertyListNotEmpty"],PNAME_NS:["propertyListNotEmpty"],".":[],"{":[],OPTIONAL:[],MINUS:[],GRAPH:[],SERVICE:[],FILTER:[],BIND:[],VALUES:[],"}":[]},propertyListPathNotEmpty:{VAR1:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],VAR2:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],"^":["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],a:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],"!":["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],"(":["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],IRI_REF:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],PNAME_LN:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"],PNAME_NS:["or([verbPath,verbSimple])","objectListPath","*[;,?[or([verbPath,verbSimple]),objectList]]"]},quadData:{"{":["{","disallowVars","quads","allowVars","}"]},quadDataNoBnodes:{"{":["{","disallowBnodes","disallowVars","quads","allowVars","allowBnodes","}"]},quadPattern:{"{":["{","quads","}"]},quadPatternNoBnodes:{"{":["{","disallowBnodes","quads","allowBnodes","}"]},quads:{GRAPH:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],VAR1:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],VAR2:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],NIL:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],"(":["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],"[":["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],IRI_REF:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],TRUE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],FALSE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],BLANK_NODE_LABEL:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],ANON:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],PNAME_LN:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],PNAME_NS:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL1:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL2:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL_LONG1:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],STRING_LITERAL_LONG2:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],INTEGER:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DECIMAL:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DOUBLE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],INTEGER_POSITIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DECIMAL_POSITIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DOUBLE_POSITIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],INTEGER_NEGATIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],DECIMAL_NEGATIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"], DOUBLE_NEGATIVE:["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"],"}":["?triplesTemplate","*[quadsNotTriples,?.,?triplesTemplate]"]},quadsNotTriples:{GRAPH:["GRAPH","varOrIRIref","{","?triplesTemplate","}"]},queryAll:{CONSTRUCT:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"],DESCRIBE:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"],ASK:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"],SELECT:["or([selectQuery,constructQuery,describeQuery,askQuery])","valuesClause"]},rdfLiteral:{STRING_LITERAL1:["string","?or([LANGTAG,[^^,iriRef]])"],STRING_LITERAL2:["string","?or([LANGTAG,[^^,iriRef]])"],STRING_LITERAL_LONG1:["string","?or([LANGTAG,[^^,iriRef]])"],STRING_LITERAL_LONG2:["string","?or([LANGTAG,[^^,iriRef]])"]},regexExpression:{REGEX:["REGEX","(","expression",",","expression","?[,,expression]",")"]},relationalExpression:{"!":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"+":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"-":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],VAR1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],VAR2:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],"(":["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],LANG:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],LANGMATCHES:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DATATYPE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],BOUND:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IRI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],URI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],BNODE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],RAND:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ABS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],CEIL:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],FLOOR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ROUND:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],CONCAT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRLEN:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],UCASE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],LCASE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ENCODE_FOR_URI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],CONTAINS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRSTARTS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRENDS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRBEFORE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRAFTER:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],YEAR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MONTH:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DAY:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],HOURS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MINUTES:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SECONDS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],TIMEZONE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],TZ:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],NOW:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],UUID:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRUUID:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MD5:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA256:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA384:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SHA512:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],COALESCE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IF:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRLANG:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRDT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SAMETERM:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISIRI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISURI:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISBLANK:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISLITERAL:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],ISNUMERIC:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],TRUE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],FALSE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],COUNT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SUM:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MIN:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],MAX:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],AVG:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SAMPLE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],GROUP_CONCAT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],SUBSTR:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],REPLACE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],REGEX:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],EXISTS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],NOT:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],IRI_REF:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL2:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL_LONG1:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],STRING_LITERAL_LONG2:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],INTEGER:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DECIMAL:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DOUBLE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],INTEGER_POSITIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DECIMAL_POSITIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DOUBLE_POSITIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],INTEGER_NEGATIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DECIMAL_NEGATIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],DOUBLE_NEGATIVE:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],PNAME_LN:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"],PNAME_NS:["numericExpression","?or([[=,numericExpression],[!=,numericExpression],[<,numericExpression],[>,numericExpression],[<=,numericExpression],[>=,numericExpression],[IN,expressionList],[NOT,IN,expressionList]])"]},selectClause:{SELECT:["SELECT","?or([DISTINCT,REDUCED])","or([+or([var,[ (,expression,AS,var,)]]),*])"]},selectQuery:{SELECT:["selectClause","*datasetClause","whereClause","solutionModifier"]},serviceGraphPattern:{SERVICE:["SERVICE","?SILENT","varOrIRIref","groupGraphPattern"]},solutionModifier:{LIMIT:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],OFFSET:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],ORDER:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],HAVING:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],GROUP:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],VALUES:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],$:["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"],"}":["?groupClause","?havingClause","?orderClause","?limitOffsetClauses"]},sourceSelector:{IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"]},sparql11:{$:["prologue","or([queryAll,updateAll])","$"],CONSTRUCT:["prologue","or([queryAll,updateAll])","$"],DESCRIBE:["prologue","or([queryAll,updateAll])","$"],ASK:["prologue","or([queryAll,updateAll])","$"],INSERT:["prologue","or([queryAll,updateAll])","$"],DELETE:["prologue","or([queryAll,updateAll])","$"],SELECT:["prologue","or([queryAll,updateAll])","$"],LOAD:["prologue","or([queryAll,updateAll])","$"],CLEAR:["prologue","or([queryAll,updateAll])","$"],DROP:["prologue","or([queryAll,updateAll])","$"],ADD:["prologue","or([queryAll,updateAll])","$"],MOVE:["prologue","or([queryAll,updateAll])","$"],COPY:["prologue","or([queryAll,updateAll])","$"],CREATE:["prologue","or([queryAll,updateAll])","$"],WITH:["prologue","or([queryAll,updateAll])","$"],BASE:["prologue","or([queryAll,updateAll])","$"],PREFIX:["prologue","or([queryAll,updateAll])","$"]},storeProperty:{VAR1:[],VAR2:[],IRI_REF:[],PNAME_LN:[],PNAME_NS:[],a:[]},strReplaceExpression:{REPLACE:["REPLACE","(","expression",",","expression",",","expression","?[,,expression]",")"]},string:{STRING_LITERAL1:["STRING_LITERAL1"],STRING_LITERAL2:["STRING_LITERAL2"],STRING_LITERAL_LONG1:["STRING_LITERAL_LONG1"],STRING_LITERAL_LONG2:["STRING_LITERAL_LONG2"]},subSelect:{SELECT:["selectClause","whereClause","solutionModifier","valuesClause"]},substringExpression:{SUBSTR:["SUBSTR","(","expression",",","expression","?[,,expression]",")"]},triplesBlock:{VAR1:["triplesSameSubjectPath","?[.,?triplesBlock]"],VAR2:["triplesSameSubjectPath","?[.,?triplesBlock]"],NIL:["triplesSameSubjectPath","?[.,?triplesBlock]"],"(":["triplesSameSubjectPath","?[.,?triplesBlock]"],"[":["triplesSameSubjectPath","?[.,?triplesBlock]"],IRI_REF:["triplesSameSubjectPath","?[.,?triplesBlock]"],TRUE:["triplesSameSubjectPath","?[.,?triplesBlock]"],FALSE:["triplesSameSubjectPath","?[.,?triplesBlock]"],BLANK_NODE_LABEL:["triplesSameSubjectPath","?[.,?triplesBlock]"],ANON:["triplesSameSubjectPath","?[.,?triplesBlock]"],PNAME_LN:["triplesSameSubjectPath","?[.,?triplesBlock]"],PNAME_NS:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL1:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL2:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL_LONG1:["triplesSameSubjectPath","?[.,?triplesBlock]"],STRING_LITERAL_LONG2:["triplesSameSubjectPath","?[.,?triplesBlock]"],INTEGER:["triplesSameSubjectPath","?[.,?triplesBlock]"],DECIMAL:["triplesSameSubjectPath","?[.,?triplesBlock]"],DOUBLE:["triplesSameSubjectPath","?[.,?triplesBlock]"],INTEGER_POSITIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DECIMAL_POSITIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DOUBLE_POSITIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],INTEGER_NEGATIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DECIMAL_NEGATIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"],DOUBLE_NEGATIVE:["triplesSameSubjectPath","?[.,?triplesBlock]"]},triplesNode:{"(":["collection"],"[":["blankNodePropertyList"]},triplesNodePath:{"(":["collectionPath"],"[":["blankNodePropertyListPath"]},triplesSameSubject:{VAR1:["varOrTerm","propertyListNotEmpty"],VAR2:["varOrTerm","propertyListNotEmpty"],NIL:["varOrTerm","propertyListNotEmpty"],IRI_REF:["varOrTerm","propertyListNotEmpty"],TRUE:["varOrTerm","propertyListNotEmpty"],FALSE:["varOrTerm","propertyListNotEmpty"],BLANK_NODE_LABEL:["varOrTerm","propertyListNotEmpty"],ANON:["varOrTerm","propertyListNotEmpty"],PNAME_LN:["varOrTerm","propertyListNotEmpty"],PNAME_NS:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL1:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL2:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL_LONG1:["varOrTerm","propertyListNotEmpty"],STRING_LITERAL_LONG2:["varOrTerm","propertyListNotEmpty"],INTEGER:["varOrTerm","propertyListNotEmpty"],DECIMAL:["varOrTerm","propertyListNotEmpty"],DOUBLE:["varOrTerm","propertyListNotEmpty"],INTEGER_POSITIVE:["varOrTerm","propertyListNotEmpty"],DECIMAL_POSITIVE:["varOrTerm","propertyListNotEmpty"],DOUBLE_POSITIVE:["varOrTerm","propertyListNotEmpty"],INTEGER_NEGATIVE:["varOrTerm","propertyListNotEmpty"],DECIMAL_NEGATIVE:["varOrTerm","propertyListNotEmpty"],DOUBLE_NEGATIVE:["varOrTerm","propertyListNotEmpty"],"(":["triplesNode","propertyList"],"[":["triplesNode","propertyList"]},triplesSameSubjectPath:{VAR1:["varOrTerm","propertyListPathNotEmpty"],VAR2:["varOrTerm","propertyListPathNotEmpty"],NIL:["varOrTerm","propertyListPathNotEmpty"],IRI_REF:["varOrTerm","propertyListPathNotEmpty"],TRUE:["varOrTerm","propertyListPathNotEmpty"],FALSE:["varOrTerm","propertyListPathNotEmpty"],BLANK_NODE_LABEL:["varOrTerm","propertyListPathNotEmpty"],ANON:["varOrTerm","propertyListPathNotEmpty"],PNAME_LN:["varOrTerm","propertyListPathNotEmpty"],PNAME_NS:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL1:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL2:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL_LONG1:["varOrTerm","propertyListPathNotEmpty"],STRING_LITERAL_LONG2:["varOrTerm","propertyListPathNotEmpty"],INTEGER:["varOrTerm","propertyListPathNotEmpty"],DECIMAL:["varOrTerm","propertyListPathNotEmpty"],DOUBLE:["varOrTerm","propertyListPathNotEmpty"],INTEGER_POSITIVE:["varOrTerm","propertyListPathNotEmpty"],DECIMAL_POSITIVE:["varOrTerm","propertyListPathNotEmpty"],DOUBLE_POSITIVE:["varOrTerm","propertyListPathNotEmpty"],INTEGER_NEGATIVE:["varOrTerm","propertyListPathNotEmpty"],DECIMAL_NEGATIVE:["varOrTerm","propertyListPathNotEmpty"],DOUBLE_NEGATIVE:["varOrTerm","propertyListPathNotEmpty"],"(":["triplesNodePath","propertyListPath"],"[":["triplesNodePath","propertyListPath"]},triplesTemplate:{VAR1:["triplesSameSubject","?[.,?triplesTemplate]"],VAR2:["triplesSameSubject","?[.,?triplesTemplate]"],NIL:["triplesSameSubject","?[.,?triplesTemplate]"],"(":["triplesSameSubject","?[.,?triplesTemplate]"],"[":["triplesSameSubject","?[.,?triplesTemplate]"],IRI_REF:["triplesSameSubject","?[.,?triplesTemplate]"],TRUE:["triplesSameSubject","?[.,?triplesTemplate]"],FALSE:["triplesSameSubject","?[.,?triplesTemplate]"],BLANK_NODE_LABEL:["triplesSameSubject","?[.,?triplesTemplate]"],ANON:["triplesSameSubject","?[.,?triplesTemplate]"],PNAME_LN:["triplesSameSubject","?[.,?triplesTemplate]"],PNAME_NS:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL1:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL2:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL_LONG1:["triplesSameSubject","?[.,?triplesTemplate]"],STRING_LITERAL_LONG2:["triplesSameSubject","?[.,?triplesTemplate]"],INTEGER:["triplesSameSubject","?[.,?triplesTemplate]"],DECIMAL:["triplesSameSubject","?[.,?triplesTemplate]"],DOUBLE:["triplesSameSubject","?[.,?triplesTemplate]"],INTEGER_POSITIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DECIMAL_POSITIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DOUBLE_POSITIVE:["triplesSameSubject","?[.,?triplesTemplate]"],INTEGER_NEGATIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DECIMAL_NEGATIVE:["triplesSameSubject","?[.,?triplesTemplate]"],DOUBLE_NEGATIVE:["triplesSameSubject","?[.,?triplesTemplate]"]},unaryExpression:{"!":["!","primaryExpression"],"+":["+","primaryExpression"],"-":["-","primaryExpression"],VAR1:["primaryExpression"],VAR2:["primaryExpression"],"(":["primaryExpression"],STR:["primaryExpression"],LANG:["primaryExpression"],LANGMATCHES:["primaryExpression"],DATATYPE:["primaryExpression"],BOUND:["primaryExpression"],IRI:["primaryExpression"],URI:["primaryExpression"],BNODE:["primaryExpression"],RAND:["primaryExpression"],ABS:["primaryExpression"],CEIL:["primaryExpression"],FLOOR:["primaryExpression"],ROUND:["primaryExpression"],CONCAT:["primaryExpression"],STRLEN:["primaryExpression"],UCASE:["primaryExpression"],LCASE:["primaryExpression"],ENCODE_FOR_URI:["primaryExpression"],CONTAINS:["primaryExpression"],STRSTARTS:["primaryExpression"],STRENDS:["primaryExpression"],STRBEFORE:["primaryExpression"],STRAFTER:["primaryExpression"],YEAR:["primaryExpression"],MONTH:["primaryExpression"],DAY:["primaryExpression"],HOURS:["primaryExpression"],MINUTES:["primaryExpression"],SECONDS:["primaryExpression"],TIMEZONE:["primaryExpression"],TZ:["primaryExpression"],NOW:["primaryExpression"],UUID:["primaryExpression"],STRUUID:["primaryExpression"],MD5:["primaryExpression"],SHA1:["primaryExpression"],SHA256:["primaryExpression"],SHA384:["primaryExpression"],SHA512:["primaryExpression"],COALESCE:["primaryExpression"],IF:["primaryExpression"],STRLANG:["primaryExpression"],STRDT:["primaryExpression"],SAMETERM:["primaryExpression"],ISIRI:["primaryExpression"],ISURI:["primaryExpression"],ISBLANK:["primaryExpression"],ISLITERAL:["primaryExpression"],ISNUMERIC:["primaryExpression"],TRUE:["primaryExpression"],FALSE:["primaryExpression"],COUNT:["primaryExpression"],SUM:["primaryExpression"],MIN:["primaryExpression"],MAX:["primaryExpression"],AVG:["primaryExpression"],SAMPLE:["primaryExpression"],GROUP_CONCAT:["primaryExpression"],SUBSTR:["primaryExpression"],REPLACE:["primaryExpression"],REGEX:["primaryExpression"],EXISTS:["primaryExpression"],NOT:["primaryExpression"],IRI_REF:["primaryExpression"],STRING_LITERAL1:["primaryExpression"],STRING_LITERAL2:["primaryExpression"],STRING_LITERAL_LONG1:["primaryExpression"],STRING_LITERAL_LONG2:["primaryExpression"],INTEGER:["primaryExpression"],DECIMAL:["primaryExpression"],DOUBLE:["primaryExpression"],INTEGER_POSITIVE:["primaryExpression"],DECIMAL_POSITIVE:["primaryExpression"],DOUBLE_POSITIVE:["primaryExpression"],INTEGER_NEGATIVE:["primaryExpression"],DECIMAL_NEGATIVE:["primaryExpression"],DOUBLE_NEGATIVE:["primaryExpression"],PNAME_LN:["primaryExpression"],PNAME_NS:["primaryExpression"]},update:{INSERT:["prologue","?[update1,?[;,update]]"],DELETE:["prologue","?[update1,?[;,update]]"],LOAD:["prologue","?[update1,?[;,update]]"],CLEAR:["prologue","?[update1,?[;,update]]"],DROP:["prologue","?[update1,?[;,update]]"],ADD:["prologue","?[update1,?[;,update]]"],MOVE:["prologue","?[update1,?[;,update]]"],COPY:["prologue","?[update1,?[;,update]]"],CREATE:["prologue","?[update1,?[;,update]]"],WITH:["prologue","?[update1,?[;,update]]"],BASE:["prologue","?[update1,?[;,update]]"],PREFIX:["prologue","?[update1,?[;,update]]"],$:["prologue","?[update1,?[;,update]]"]},update1:{LOAD:["load"],CLEAR:["clear"],DROP:["drop"],ADD:["add"],MOVE:["move"],COPY:["copy"],CREATE:["create"],INSERT:["INSERT","insert1"],DELETE:["DELETE","delete1"],WITH:["modify"]},updateAll:{INSERT:["?[update1,?[;,update]]"],DELETE:["?[update1,?[;,update]]"],LOAD:["?[update1,?[;,update]]"],CLEAR:["?[update1,?[;,update]]"],DROP:["?[update1,?[;,update]]"],ADD:["?[update1,?[;,update]]"],MOVE:["?[update1,?[;,update]]"],COPY:["?[update1,?[;,update]]"],CREATE:["?[update1,?[;,update]]"],WITH:["?[update1,?[;,update]]"],$:["?[update1,?[;,update]]"]},usingClause:{USING:["USING","or([iriRef,[NAMED,iriRef]])"]},valueLogical:{"!":["relationalExpression"],"+":["relationalExpression"],"-":["relationalExpression"],VAR1:["relationalExpression"],VAR2:["relationalExpression"],"(":["relationalExpression"],STR:["relationalExpression"],LANG:["relationalExpression"],LANGMATCHES:["relationalExpression"],DATATYPE:["relationalExpression"],BOUND:["relationalExpression"],IRI:["relationalExpression"],URI:["relationalExpression"],BNODE:["relationalExpression"],RAND:["relationalExpression"],ABS:["relationalExpression"],CEIL:["relationalExpression"],FLOOR:["relationalExpression"],ROUND:["relationalExpression"],CONCAT:["relationalExpression"],STRLEN:["relationalExpression"],UCASE:["relationalExpression"],LCASE:["relationalExpression"],ENCODE_FOR_URI:["relationalExpression"],CONTAINS:["relationalExpression"],STRSTARTS:["relationalExpression"], -STRENDS:["relationalExpression"],STRBEFORE:["relationalExpression"],STRAFTER:["relationalExpression"],YEAR:["relationalExpression"],MONTH:["relationalExpression"],DAY:["relationalExpression"],HOURS:["relationalExpression"],MINUTES:["relationalExpression"],SECONDS:["relationalExpression"],TIMEZONE:["relationalExpression"],TZ:["relationalExpression"],NOW:["relationalExpression"],UUID:["relationalExpression"],STRUUID:["relationalExpression"],MD5:["relationalExpression"],SHA1:["relationalExpression"],SHA256:["relationalExpression"],SHA384:["relationalExpression"],SHA512:["relationalExpression"],COALESCE:["relationalExpression"],IF:["relationalExpression"],STRLANG:["relationalExpression"],STRDT:["relationalExpression"],SAMETERM:["relationalExpression"],ISIRI:["relationalExpression"],ISURI:["relationalExpression"],ISBLANK:["relationalExpression"],ISLITERAL:["relationalExpression"],ISNUMERIC:["relationalExpression"],TRUE:["relationalExpression"],FALSE:["relationalExpression"],COUNT:["relationalExpression"],SUM:["relationalExpression"],MIN:["relationalExpression"],MAX:["relationalExpression"],AVG:["relationalExpression"],SAMPLE:["relationalExpression"],GROUP_CONCAT:["relationalExpression"],SUBSTR:["relationalExpression"],REPLACE:["relationalExpression"],REGEX:["relationalExpression"],EXISTS:["relationalExpression"],NOT:["relationalExpression"],IRI_REF:["relationalExpression"],STRING_LITERAL1:["relationalExpression"],STRING_LITERAL2:["relationalExpression"],STRING_LITERAL_LONG1:["relationalExpression"],STRING_LITERAL_LONG2:["relationalExpression"],INTEGER:["relationalExpression"],DECIMAL:["relationalExpression"],DOUBLE:["relationalExpression"],INTEGER_POSITIVE:["relationalExpression"],DECIMAL_POSITIVE:["relationalExpression"],DOUBLE_POSITIVE:["relationalExpression"],INTEGER_NEGATIVE:["relationalExpression"],DECIMAL_NEGATIVE:["relationalExpression"],DOUBLE_NEGATIVE:["relationalExpression"],PNAME_LN:["relationalExpression"],PNAME_NS:["relationalExpression"]},valuesClause:{VALUES:["VALUES","dataBlock"],$:[],"}":[]},"var":{VAR1:["VAR1"],VAR2:["VAR2"]},varOrIRIref:{VAR1:["var"],VAR2:["var"],IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"]},varOrTerm:{VAR1:["var"],VAR2:["var"],NIL:["graphTerm"],IRI_REF:["graphTerm"],TRUE:["graphTerm"],FALSE:["graphTerm"],BLANK_NODE_LABEL:["graphTerm"],ANON:["graphTerm"],PNAME_LN:["graphTerm"],PNAME_NS:["graphTerm"],STRING_LITERAL1:["graphTerm"],STRING_LITERAL2:["graphTerm"],STRING_LITERAL_LONG1:["graphTerm"],STRING_LITERAL_LONG2:["graphTerm"],INTEGER:["graphTerm"],DECIMAL:["graphTerm"],DOUBLE:["graphTerm"],INTEGER_POSITIVE:["graphTerm"],DECIMAL_POSITIVE:["graphTerm"],DOUBLE_POSITIVE:["graphTerm"],INTEGER_NEGATIVE:["graphTerm"],DECIMAL_NEGATIVE:["graphTerm"],DOUBLE_NEGATIVE:["graphTerm"]},verb:{VAR1:["storeProperty","varOrIRIref"],VAR2:["storeProperty","varOrIRIref"],IRI_REF:["storeProperty","varOrIRIref"],PNAME_LN:["storeProperty","varOrIRIref"],PNAME_NS:["storeProperty","varOrIRIref"],a:["storeProperty","a"]},verbPath:{"^":["path"],a:["path"],"!":["path"],"(":["path"],IRI_REF:["path"],PNAME_LN:["path"],PNAME_NS:["path"]},verbSimple:{VAR1:["var"],VAR2:["var"]},whereClause:{"{":["?WHERE","groupGraphPattern"],WHERE:["?WHERE","groupGraphPattern"]}},keywords:/^(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,punct:/^(\*|a|\.|\{|\}|,|\(|\)|;|\[|\]|\|\||&&|=|!=|!|<=|>=|<|>|\+|-|\/|\^\^|\?|\||\^)/,startSymbol:"sparql11",acceptEmpty:!0}},{}],3:[function(e,i,r){"use strict";var n=function(){try{return e("codemirror")}catch(i){return window.CodeMirror}}();n.defineMode("sparql11",function(i,r){function n(e){var i=[],r=a[e];if(void 0!=r)for(var n in r)i.push(n.toString());else i.push(e);return i}function o(e,i){function r(){var r=null;if(i.inLiteral){var n=!1;r=e.match(j[i.inLiteral].contents.regex,!0,!1);if(r&&0==r[0].length){r=e.match(j[i.inLiteral].closing.regex,!0,!1);n=!0}if(r&&r[0].length>0){var o={quotePos:n?"end":"content",cat:F[i.inLiteral].CAT,style:j[i.inLiteral].complete.style,text:r[0],start:e.start};n&&(i.inLiteral=!1);return o}}for(var t in j){r=e.match(j[t].quotes.regex,!0,!1);if(r){var a;if(i.inLiteral){i.inLiteral=!1;a="end"}else{i.inLiteral=t;a="start"}return{cat:F[t].CAT,style:j[t].quotes.style,text:r[0],quotePos:a,start:e.start}}}for(var p=0;p",style:"error",text:r[0],start:e.start}}function o(){var r=e.column();i.errorStartPos=r;i.errorEndPos=r+E.text.length}function t(e){null==i.queryType&&("SELECT"!=e&&"CONSTRUCT"!=e&&"ASK"!=e&&"DESCRIBE"!=e&&"INSERT"!=e&&"DELETE"!=e&&"LOAD"!=e&&"CLEAR"!=e&&"CREATE"!=e&&"DROP"!=e&&"COPY"!=e&&"MOVE"!=e&&"ADD"!=e||(i.queryType=e))}function p(e){"prefixDecl"===e?i.inPrefixDecl=!0:i.inPrefixDecl=!1;switch(e){case"disallowVars":i.allowVars=!1;break;case"allowVars":i.allowVars=!0;break;case"disallowBnodes":i.allowBnodes=!1;break;case"allowBnodes":i.allowBnodes=!0;break;case"storeProperty":i.storeProperty=!0}}function l(e){return(i.allowVars||"var"!=e)&&(i.allowBnodes||"blankNode"!=e&&"blankNodePropertyList"!=e&&"blankNodePropertyListPath"!=e)}0==e.pos&&(i.possibleCurrent=i.possibleNext);var E=r();if(""==E.cat){if(1==i.OK){i.OK=!1;o()}i.complete=!1;return E.style}if("WS"==E.cat||"COMMENT"==E.cat||E.quotePos&&"end"!=E.quotePos){i.possibleCurrent=i.possibleNext;return E.style}var u,c=!1,d=E.cat;if(!E.quotePos||"end"==E.quotePos)for(;i.stack.length>0&&d&&i.OK&&!c;){u=i.stack.pop();if(a[u]){var N=a[u][d];if(void 0!=N&&l(u)){for(var x=N.length-1;x>=0;--x)i.stack.push(N[x]);p(u)}else{i.OK=!1;i.complete=!1;o();i.stack.push(u)}}else if(u==d){if(i.inPrefixDecl)if("PNAME_NS"===u&&E.text.length>0)i.currentPnameNs=E.text.slice(0,-1);else if(void 0!==i.currentPnameNs&&E.text.length>2){i.prefixes[i.currentPnameNs]=E.text.slice(1,-1);i.currentPnameNs=void 0}c=!0;t(u);for(var I=!0,m=i.stack.length;m>0;--m){var L=a[i.stack[m-1]];L&&L.$||(I=!1)}i.complete=I;if(i.storeProperty&&"punc"!=d.cat){i.lastProperty=E.text;i.storeProperty=!1}if(!i.inPrefixDecl&&("PNAME_NS"===d||"PNAME_LN"===d)){var T=E.text.indexOf(":");if(T>=0){var g=E.text.slice(0,T);if(!i.prefixes[g]&&"bif"!==g){i.OK=!1;o();i.errorMsg="Prefix '"+g+"' is not defined"}}}}else{i.OK=!1;i.complete=!1;o()}}if(!c&&i.OK){i.OK=!1;i.complete=!1;o()}i.possibleCurrent.indexOf("a")>=0&&(i.lastPredicateOffset=E.start);i.possibleCurrent=i.possibleNext;i.possibleNext=n(i.stack[i.stack.length-1]);return E.style}function t(e,r){if(e.inLiteral)return 0;if(e.stack.length&&"?[or([verbPath,verbSimple]),objectList]"==e.stack[e.stack.length-1])return e.lastPredicateOffset;var n=0,o=e.stack.length-1;if(/^[\}\]\)]/.test(r)){for(var t=r.substr(0,1);o>=0;--o)if(e.stack[o]==t){--o;break}}else{var s=K[e.stack[o]];if(s){n+=s;--o}}for(;o>=0;--o){var s=z[e.stack[o]];s&&(n+=s)}return n*i.indentUnit}var s=(i.indentUnit,e("./_tokenizer-table.js")),a=s.table,p='<[^<>"`|{}^\\\0- ]*>',l="[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]",E=l+"|_",u="("+E+"|-|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])",c="("+E+"|[0-9])("+E+"|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])*",d="\\?"+c,N="\\$"+c,x="("+l+")((("+u+")|\\.)*("+u+"))?",I="[0-9A-Fa-f]",m="(%"+I+I+")",L="(\\\\[_~\\.\\-!\\$&'\\(\\)\\*\\+,;=/\\?#@%])",T="("+m+"|"+L+")",g="("+E+"|:|[0-9]|"+T+")(("+u+"|\\.|:|"+T+")*("+u+"|:|"+T+"))?",A="_:("+E+"|[0-9])(("+u+"|\\.)*"+u+")?",v="("+x+")?:",S=v+g,h="@[a-zA-Z]+(-[a-zA-Z0-9]+)*",R="[eE][\\+-]?[0-9]+",C="[0-9]+",f="(([0-9]+\\.[0-9]*)|(\\.[0-9]+))",O="(([0-9]+\\.[0-9]*"+R+")|(\\.[0-9]+"+R+")|([0-9]+"+R+"))",y="\\+"+C,P="\\+"+f,_="\\+"+O,D="-"+C,b="-"+f,G="-"+O,M="\\\\[tbnrf\\\\\"']",U=I+"{4}",B="(\\\\u"+U+"|\\\\U00(10|0"+I+")"+U+")",V="'(([^\\x27\\x5C\\x0A\\x0D])|"+M+"|"+B+")*'",k='"(([^\\x22\\x5C\\x0A\\x0D])|'+M+"|"+B+')*"',F={SINGLE:{CAT:"STRING_LITERAL_LONG1",QUOTES:"'''",CONTENTS:"(('|'')?([^'\\\\]|"+M+"|"+B+"))*"},DOUBLE:{CAT:"STRING_LITERAL_LONG2",QUOTES:'"""',CONTENTS:'(("|"")?([^"\\\\]|'+M+"|"+B+"))*"}};for(var w in F)F[w].COMPLETE=F[w].QUOTES+F[w].CONTENTS+F[w].QUOTES;var j={};for(var w in F)j[w]={complete:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].COMPLETE),style:"string"},contents:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].CONTENTS),style:"string"},closing:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].CONTENTS+F[w].QUOTES),style:"string"},quotes:{name:"STRING_LITERAL_LONG_QUOTES_"+w,regex:new RegExp("^"+F[w].QUOTES),style:"string"}};var H="[\\x20\\x09\\x0D\\x0A]",q="#([^\\n\\r]*[\\n\\r]|[^\\n\\r]*$)",W="("+H+"|("+q+"))*",Y="\\("+W+"\\)",Q="\\["+W+"\\]",X=[{name:"WS",regex:new RegExp("^"+H+"+"),style:"ws"},{name:"COMMENT",regex:new RegExp("^"+q),style:"comment"},{name:"IRI_REF",regex:new RegExp("^"+p),style:"variable-3"},{name:"VAR1",regex:new RegExp("^"+d),style:"atom"},{name:"VAR2",regex:new RegExp("^"+N),style:"atom"},{name:"LANGTAG",regex:new RegExp("^"+h),style:"meta"},{name:"DOUBLE",regex:new RegExp("^"+O),style:"number"},{name:"DECIMAL",regex:new RegExp("^"+f),style:"number"},{name:"INTEGER",regex:new RegExp("^"+C),style:"number"},{name:"DOUBLE_POSITIVE",regex:new RegExp("^"+_),style:"number"},{name:"DECIMAL_POSITIVE",regex:new RegExp("^"+P),style:"number"},{name:"INTEGER_POSITIVE",regex:new RegExp("^"+y),style:"number"},{name:"DOUBLE_NEGATIVE",regex:new RegExp("^"+G),style:"number"},{name:"DECIMAL_NEGATIVE",regex:new RegExp("^"+b),style:"number"},{name:"INTEGER_NEGATIVE",regex:new RegExp("^"+D),style:"number"},{name:"STRING_LITERAL1",regex:new RegExp("^"+V),style:"string"},{name:"STRING_LITERAL2",regex:new RegExp("^"+k),style:"string"},{name:"NIL",regex:new RegExp("^"+Y),style:"punc"},{name:"ANON",regex:new RegExp("^"+Q),style:"punc"},{name:"PNAME_LN",regex:new RegExp("^"+S),style:"string-2"},{name:"PNAME_NS",regex:new RegExp("^"+v),style:"string-2"},{name:"BLANK_NODE_LABEL",regex:new RegExp("^"+A),style:"string-2"}],K={"*[,, object]":3,"*[(,),object]":3,"*[(,),objectPath]":3,"*[/,pathEltOrInverse]":2,object:2,objectPath:2,objectList:2,objectListPath:2,storeProperty:2,pathMod:2,"?pathMod":2,propertyListNotEmpty:1,propertyList:1,propertyListPath:1,propertyListPathNotEmpty:1,"?[verb,objectList]":1},z={"}":1,"]":0,")":1,"{":-1,"(":-1};return{token:o,startState:function(e){return{tokenize:o,OK:!0,complete:s.acceptEmpty,errorStartPos:null,errorEndPos:null,queryType:null,possibleCurrent:n(s.startSymbol),possibleNext:n(s.startSymbol),allowVars:!0,allowBnodes:!0,storeProperty:!1,lastProperty:"",inLiteral:!1,stack:[s.startSymbol],lastPredicateOffset:i.indentUnit,prefixes:{}}},indent:t,electricChars:"}])"}});n.defineMIME("application/x-sparql-query","sparql11")},{"./_tokenizer-table.js":2,codemirror:void 0}],4:[function(e,i,r){var n=i.exports=function(){this.words=0;this.prefixes=0;this.children=[]};n.prototype={insert:function(e,i){if(0!=e.length){var r,o,t=this;void 0===i&&(i=0);if(i!==e.length){t.prefixes++;r=e[i];void 0===t.children[r]&&(t.children[r]=new n);o=t.children[r];o.insert(e,i+1)}else t.words++}},remove:function(e,i){if(0!=e.length){var r,n,o=this;void 0===i&&(i=0);if(void 0!==o)if(i!==e.length){o.prefixes--;r=e[i];n=o.children[r];n.remove(e,i+1)}else o.words--}},update:function(e,i){if(0!=e.length&&0!=i.length){this.remove(e);this.insert(i)}},countWord:function(e,i){if(0==e.length)return 0;var r,n,o=this,t=0;void 0===i&&(i=0);if(i===e.length)return o.words;r=e[i];n=o.children[r];void 0!==n&&(t=n.countWord(e,i+1));return t},countPrefix:function(e,i){if(0==e.length)return 0;var r,n,o=this,t=0;void 0===i&&(i=0);if(i===e.length)return o.prefixes;var r=e[i];n=o.children[r];void 0!==n&&(t=n.countPrefix(e,i+1));return t},find:function(e){return 0!=e.length&&this.countWord(e)>0},getAllWords:function(e){var i,r,n=this,o=[];void 0===e&&(e="");if(void 0===n)return[];n.words>0&&o.push(e);for(i in n.children){r=n.children[i];o=o.concat(r.getAllWords(e+i))}return o},autoComplete:function(e,i){var r,n,o=this;if(0==e.length)return void 0===i?o.getAllWords(e):[];void 0===i&&(i=0);r=e[i];n=o.children[r];return void 0===n?[]:i===e.length-1?n.getAllWords(e):n.autoComplete(e,i+1)}}},{}],5:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(e){var i=e.getWrapperElement();e.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:i.style.width,height:i.style.height};i.style.width="";i.style.height="auto";i.className+=" CodeMirror-fullscreen";document.documentElement.style.overflow="hidden";e.refresh()}function r(e){var i=e.getWrapperElement();i.className=i.className.replace(/\s*CodeMirror-fullscreen\b/,"");document.documentElement.style.overflow="";var r=e.state.fullScreenRestore;i.style.width=r.width;i.style.height=r.height;window.scrollTo(r.scrollLeft,r.scrollTop);e.refresh()}e.defineOption("fullScreen",!1,function(n,o,t){t==e.Init&&(t=!1);!t!=!o&&(o?i(n):r(n))})})},{codemirror:void 0}],6:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){function i(e,i,n,o){var t=e.getLineHandle(i.line),p=i.ch-1,l=p>=0&&a[t.text.charAt(p)]||a[t.text.charAt(++p)];if(!l)return null;var E=">"==l.charAt(1)?1:-1;if(n&&E>0!=(p==i.ch))return null;var u=e.getTokenTypeAt(s(i.line,p+1)),c=r(e,s(i.line,p+(E>0?1:0)),E,u||null,o);return null==c?null:{from:s(i.line,p),to:c&&c.pos,match:c&&c.ch==l.charAt(0),forward:E>0}}function r(e,i,r,n,o){for(var t=o&&o.maxScanLineLength||1e4,p=o&&o.maxScanLines||1e3,l=[],E=o&&o.bracketRegex?o.bracketRegex:/[(){}[\]]/,u=r>0?Math.min(i.line+p,e.lastLine()+1):Math.max(e.firstLine()-1,i.line-p),c=i.line;c!=u;c+=r){var d=e.getLine(c);if(d){var N=r>0?0:d.length-1,x=r>0?d.length:-1;if(!(d.length>t)){c==i.line&&(N=i.ch-(r<0?1:0));for(;N!=x;N+=r){var I=d.charAt(N);if(E.test(I)&&(void 0===n||e.getTokenTypeAt(s(c,N+1))==n)){var m=a[I];if(">"==m.charAt(1)==r>0)l.push(I);else{if(!l.length)return{pos:s(c,N),ch:I};l.pop()}}}}}}return c-r!=(r>0?e.lastLine():e.firstLine())&&null}function n(e,r,n){for(var o=e.state.matchBrackets.maxHighlightLineLength||1e3,a=[],p=e.listSelections(),l=0;l",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},p=null;e.defineOption("matchBrackets",!1,function(i,r,n){n&&n!=e.Init&&i.off("cursorActivity",o);if(r){i.state.matchBrackets="object"==typeof r?r:{};i.on("cursorActivity",o)}});e.defineExtension("matchBrackets",function(){n(this,!0)});e.defineExtension("findMatchingBracket",function(e,r,n){return i(this,e,r,n)});e.defineExtension("scanForBracket",function(e,i,n,o){return r(this,e,i,n,o)})})},{codemirror:void 0}],7:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";e.registerHelper("fold","brace",function(i,r){function n(n){for(var a=r.ch,p=0;;){var l=a<=0?-1:s.lastIndexOf(n,a-1);if(l!=-1){if(1==p&&li.lastLine())return null;var n=i.getTokenAt(e.Pos(r,1));/\S/.test(n.string)||(n=i.getTokenAt(e.Pos(r,n.end+1)));if("keyword"!=n.type||"import"!=n.string)return null;for(var o=r,t=Math.min(i.lastLine(),r+10);o<=t;++o){var s=i.getLine(o),a=s.indexOf(";");if(a!=-1)return{startCh:n.end,end:e.Pos(o,a)}}}var o,t=r.line,s=n(t);if(!s||n(t-1)||(o=n(t-2))&&o.end.line==t-1)return null;for(var a=s.end;;){var p=n(a.line+1);if(null==p)break;a=p.end}return{from:i.clipPos(e.Pos(t,s.startCh+1)),to:a}});e.registerHelper("fold","include",function(i,r){function n(r){if(ri.lastLine())return null;var n=i.getTokenAt(e.Pos(r,1));/\S/.test(n.string)||(n=i.getTokenAt(e.Pos(r,n.end+1)));return"meta"==n.type&&"#include"==n.string.slice(0,8)?n.start+8:void 0}var o=r.line,t=n(o);if(null==t||null!=n(o-1))return null;for(var s=o;;){var a=n(s+1);if(null==a)break;++s}return{from:e.Pos(o,t+1),to:i.clipPos(e.Pos(s))}})})},{codemirror:void 0}],8:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(i,o,t,s){function a(e){var r=p(i,o);if(!r||r.to.line-r.from.linei.firstLine();){o=e.Pos(o.line-1,0);E=a(!1)}if(E&&!E.cleared&&"unfold"!==s){var u=r(i,t);e.on(u,"mousedown",function(i){c.clear();e.e_preventDefault(i)});var c=i.markText(E.from,E.to,{replacedWith:u,clearOnEnter:n(i,t,"clearOnEnter"),__isFold:!0});c.on("clear",function(r,n){e.signal(i,"unfold",i,r,n)});e.signal(i,"fold",i,E.from,E.to)}}function r(e,i){var r=n(e,i,"widget");if("string"==typeof r){var o=document.createTextNode(r);r=document.createElement("span");r.appendChild(o);r.className="CodeMirror-foldmarker"}return r}function n(e,i,r){if(i&&void 0!==i[r])return i[r];var n=e.options.foldOptions;return n&&void 0!==n[r]?n[r]:o[r]}e.newFoldFunction=function(e,r){return function(n,o){i(n,o,{rangeFinder:e,widget:r})}};e.defineExtension("foldCode",function(e,r,n){i(this,e,r,n)});e.defineExtension("isFolded",function(e){for(var i=this.findMarksAt(e),r=0;r=a&&(r=o(t.indicatorOpen))}e.setGutterMarker(i,t.gutter,r);++s})}function s(e){var i=e.getViewport(),r=e.state.foldGutter;if(r){e.operation(function(){t(e,i.from,i.to)});r.from=i.from;r.to=i.to}}function a(e,i,r){var o=e.state.foldGutter;if(o){var t=o.options;if(r==t.gutter){var s=n(e,i);s?s.clear():e.foldCode(u(i,0),t.rangeFinder)}}}function p(e){var i=e.state.foldGutter;if(i){var r=i.options;i.from=i.to=0;clearTimeout(i.changeUpdate);i.changeUpdate=setTimeout(function(){s(e)},r.foldOnChangeTimeSpan||600)}}function l(e){var i=e.state.foldGutter;if(i){var r=i.options;clearTimeout(i.changeUpdate);i.changeUpdate=setTimeout(function(){var r=e.getViewport();i.from==i.to||r.from-i.to>20||i.from-r.to>20?s(e):e.operation(function(){if(r.fromi.to){t(e,i.to,r.to);i.to=r.to}})},r.updateViewportTimeSpan||400)}}function E(e,i){var r=e.state.foldGutter;if(r){var n=i.line;n>=r.from&&n=e.max)){e.ch=0;e.text=e.cm.getLine(++e.line);return!0}}function t(e){if(!(e.line<=e.min)){e.text=e.cm.getLine(--e.line);e.ch=e.text.length;return!0}}function s(e){for(;;){var i=e.text.indexOf(">",e.ch);if(i==-1){if(o(e))continue;return}if(n(e,i+1)){var r=e.text.lastIndexOf("/",i),t=r>-1&&!/\S/.test(e.text.slice(r+1,i));e.ch=i+1;return t?"selfClose":"regular"}e.ch=i+1}}function a(e){for(;;){var i=e.ch?e.text.lastIndexOf("<",e.ch-1):-1;if(i==-1){if(t(e))continue;return}if(n(e,i+1)){x.lastIndex=i;e.ch=i;var r=x.exec(e.text);if(r&&r.index==i)return r}else e.ch=i}}function p(e){for(;;){x.lastIndex=e.ch;var i=x.exec(e.text);if(!i){if(o(e))continue;return}if(n(e,i.index+1)){e.ch=i.index+i[0].length;return i}e.ch=i.index+1}}function l(e){for(;;){var i=e.ch?e.text.lastIndexOf(">",e.ch-1):-1;if(i==-1){if(t(e))continue;return}if(n(e,i+1)){var r=e.text.lastIndexOf("/",i),o=r>-1&&!/\S/.test(e.text.slice(r+1,i));e.ch=i+1;return o?"selfClose":"regular"}e.ch=i}}function E(e,i){for(var r=[];;){var n,o=p(e),t=e.line,a=e.ch-(o?o[0].length:0);if(!o||!(n=s(e)))return;if("selfClose"!=n)if(o[1]){for(var l=r.length-1;l>=0;--l)if(r[l]==o[2]){r.length=l;break}if(l<0&&(!i||i==o[2]))return{tag:o[2],from:c(t,a),to:c(e.line,e.ch)}}else r.push(o[2])}}function u(e,i){for(var r=[];;){var n=l(e);if(!n)return;if("selfClose"!=n){var o=e.line,t=e.ch,s=a(e);if(!s)return;if(s[1])r.push(s[2]);else{for(var p=r.length-1;p>=0;--p)if(r[p]==s[2]){r.length=p;break}if(p<0&&(!i||i==s[2]))return{tag:s[2],from:c(e.line,e.ch),to:c(o,t)}}}else a(e)}}var c=e.Pos,d="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=d+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",x=new RegExp("<(/?)(["+d+"]["+N+"]*)","g");e.registerHelper("fold","xml",function(e,i){for(var n=new r(e,i.line,0);;){var o,t=p(n);if(!t||n.line!=i.line||!(o=s(n)))return;if(!t[1]&&"selfClose"!=o){var a=c(n.line,n.ch),l=E(n,t[2]);return l&&{from:a,to:l.from}}}});e.findMatchingTag=function(e,n,o){var t=new r(e,n.line,n.ch,o);if(t.text.indexOf(">")!=-1||t.text.indexOf("<")!=-1){var p=s(t),l=p&&c(t.line,t.ch),d=p&&a(t);if(p&&d&&!(i(t,n)>0)){var N={from:c(t.line,t.ch),to:l,tag:d[2]};if("selfClose"==p)return{open:N,close:null,at:"open"};if(d[1])return{open:u(t,d[2]),close:N,at:"close"};t=new r(e,l.line,l.ch,o);return{open:N,close:E(t,d[2]),at:"open"}}}};e.findEnclosingTag=function(e,i,n){for(var o=new r(e,i.line,i.ch,n);;){var t=u(o);if(!t)break;var s=new r(e,i.line,i.ch,n),a=E(s,t.tag);if(a)return{open:t,close:a}}};e.scanForClosingTag=function(e,i,n,o){var t=new r(e,i.line,i.ch,o?{from:0,to:o}:null);return E(t,n)}})},{codemirror:void 0}],11:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(e,i){this.cm=e;this.options=i;this.widget=null;this.debounce=0;this.tick=0;this.startPos=this.cm.getCursor("start");this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var r=this;e.on("cursorActivity",this.activityFunc=function(){r.cursorActivity()})}function r(i,r){var n=e.cmpPos(r.from,i.from);return n>0&&i.to.ch-i.from.ch!=r.to.ch-r.from.ch}function n(e,i,r){var n=e.options.hintOptions,o={};for(var t in x)o[t]=x[t];if(n)for(var t in n)void 0!==n[t]&&(o[t]=n[t]);if(r)for(var t in r)void 0!==r[t]&&(o[t]=r[t]);o.hint.resolve&&(o.hint=o.hint.resolve(e,i));return o}function o(e){return"string"==typeof e?e:e.text}function t(e,i){function r(e,r){var o;o="string"!=typeof r?function(e){return r(e,i)}:n.hasOwnProperty(r)?n[r]:r;t[e]=o}var n={Up:function(){i.moveFocus(-1)},Down:function(){i.moveFocus(1)},PageUp:function(){i.moveFocus(-i.menuSize()+1,!0)},PageDown:function(){i.moveFocus(i.menuSize()-1,!0)},Home:function(){i.setFocus(0)},End:function(){i.setFocus(i.length-1)},Enter:i.pick,Tab:i.pick,Esc:i.close},o=e.options.customKeys,t=o?{}:n;if(o)for(var s in o)o.hasOwnProperty(s)&&r(s,o[s]);var a=e.options.extraKeys;if(a)for(var s in a)a.hasOwnProperty(s)&&r(s,a[s]);return t}function s(e,i){for(;i&&i!=e;){if("LI"===i.nodeName.toUpperCase()&&i.parentNode==e)return i;i=i.parentNode}}function a(i,r){this.completion=i;this.data=r;this.picked=!1;var n=this,a=i.cm,p=this.hints=document.createElement("ul");p.className="CodeMirror-hints";this.selectedHint=r.selectedHint||0;for(var l=r.list,E=0;Ep.clientHeight+1,R=a.getScrollInfo();if(S>0){var C=v.bottom-v.top,f=I.top-(I.bottom-v.top);if(f-C>0){p.style.top=(L=I.top-C)+"px";T=!1}else if(C>A){p.style.height=A-5+"px";p.style.top=(L=I.bottom-v.top)+"px";var O=a.getCursor();if(r.from.ch!=O.ch){I=a.cursorCoords(O);p.style.left=(m=I.left)+"px";v=p.getBoundingClientRect()}}}var y=v.right-g;if(y>0){if(v.right-v.left>g){p.style.width=g-5+"px";y-=v.right-v.left-g}p.style.left=(m=I.left-y)+"px"}if(h)for(var P=p.firstChild;P;P=P.nextSibling)P.style.paddingRight=a.display.nativeBarWidth+"px";a.addKeyMap(this.keyMap=t(i,{moveFocus:function(e,i){n.changeActive(n.selectedHint+e,i)},setFocus:function(e){n.changeActive(e)},menuSize:function(){return n.screenAmount()},length:l.length,close:function(){i.close()},pick:function(){n.pick()},data:r}));if(i.options.closeOnUnfocus){var _;a.on("blur",this.onBlur=function(){_=setTimeout(function(){i.close()},100)});a.on("focus",this.onFocus=function(){clearTimeout(_)})}a.on("scroll",this.onScroll=function(){var e=a.getScrollInfo(),r=a.getWrapperElement().getBoundingClientRect(),n=L+R.top-e.top,o=n-(window.pageYOffset||(document.documentElement||document.body).scrollTop);T||(o+=p.offsetHeight);if(o<=r.top||o>=r.bottom)return i.close();p.style.top=n+"px";p.style.left=m+R.left-e.left+"px"});e.on(p,"dblclick",function(e){var i=s(p,e.target||e.srcElement);if(i&&null!=i.hintId){n.changeActive(i.hintId);n.pick()}});e.on(p,"click",function(e){var r=s(p,e.target||e.srcElement);if(r&&null!=r.hintId){n.changeActive(r.hintId);i.options.completeOnSingleClick&&n.pick()}});e.on(p,"mousedown",function(){setTimeout(function(){a.focus()},20)});e.signal(r,"select",l[0],p.firstChild);return!0}function p(e,i){if(!e.somethingSelected())return i;for(var r=[],n=0;n0?i(e):n(o+1)})}var t=p(e,o);n(0)};t.async=!0;t.supportsSelection=!0;return t}return(n=i.getHelper(i.getCursor(),"hintWords"))?function(i){return e.hint.fromList(i,{words:n})}:e.hint.anyword?function(i,r){return e.hint.anyword(i,r)}:function(){}}var u="CodeMirror-hint",c="CodeMirror-hint-active";e.showHint=function(e,i,r){if(!i)return e.showHint(r);r&&r.async&&(i.async=!0);var n={hint:i};if(r)for(var o in r)n[o]=r[o];return e.showHint(n)};e.defineExtension("showHint",function(r){r=n(this,this.getCursor("start"),r);var o=this.listSelections();if(!(o.length>1)){if(this.somethingSelected()){if(!r.hint.supportsSelection)return;for(var t=0;t=this.data.list.length?i=r?this.data.list.length-1:0:i<0&&(i=r?0:this.data.list.length-1);if(this.selectedHint!=i){var n=this.hints.childNodes[this.selectedHint];n.className=n.className.replace(" "+c,"");n=this.hints.childNodes[this.selectedHint=i];n.className+=" "+c;n.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=n.offsetTop+n.offsetHeight-this.hints.clientHeight+3);e.signal(this.data,"select",this.data.list[this.selectedHint],n)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}};e.registerHelper("hint","auto",{resolve:E});e.registerHelper("hint","fromList",function(i,r){var n=i.getCursor(),o=i.getTokenAt(n),t=e.Pos(n.line,o.end);if(o.string&&/\w/.test(o.string[o.string.length-1]))var s=o.string,a=e.Pos(n.line,o.start);else var s="",a=t;for(var p=[],l=0;l,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};e.defineOption("hintOptions",null)})},{codemirror:void 0}],12:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";e.runMode=function(i,r,n,o){var t=e.getMode(e.defaults,r),s=/MSIE \d/.test(navigator.userAgent),a=s&&(null==document.documentMode||document.documentMode<9);if(n.appendChild){var p=o&&o.tabSize||e.defaults.tabSize,l=n,E=0;l.innerHTML="";n=function(e,i){if("\n"!=e){for(var r="",n=0;;){var o=e.indexOf("\t",n);if(o==-1){r+=e.slice(n);E+=e.length-n;break}E+=o-n;r+=e.slice(n,o);var t=p-E%p;E+=t;for(var s=0;s-1){E=r(p,l,E);return{from:n(t.line,E),to:n(t.line,E+s.length)}}}else{var p=e.getLine(t.line).slice(t.ch),l=a(p),E=l.indexOf(i);if(E>-1){E=r(p,l,E)+t.ch;return{from:n(t.line,E),to:n(t.line,E+s.length)}}}}:this.matches=function(){};else{var l=s.split("\n");this.matches=function(i,r){var o=p.length-1;if(i){if(r.line-(p.length-1)=1;--E,--s)if(p[E]!=a(e.getLine(s)))return;var u=e.getLine(s),c=u.length-l[0].length;if(a(u.slice(c))!=p[0])return;return{from:n(s,c),to:t}}if(!(r.line+(p.length-1)>e.lastLine())){var u=e.getLine(r.line),c=u.length-l[0].length;if(a(u.slice(c))==p[0]){for(var d=n(r.line,c),s=r.line+1,E=1;Er))return n;--n}}}var n=e.Pos;i.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(e){function i(e){var i=n(e,0);r.pos={from:i,to:i};r.atOccurrence=!1;return!1}for(var r=this,o=this.doc.clipPos(e?this.pos.from:this.pos.to);;){if(this.pos=this.matches(e,o)){this.atOccurrence=!0;return this.pos.match||!0}if(e){if(!o.line)return i(0);o=n(o.line-1,this.doc.getLine(o.line-1).length)}else{var t=this.doc.lineCount();if(o.line==t-1)return i(t);o=n(o.line+1,0)}}},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(i,r){if(this.atOccurrence){var o=e.splitLines(i);this.doc.replaceRange(o,this.pos.from,this.pos.to,r);this.pos.to=n(this.pos.from.line+o.length-1,o[o.length-1].length+(1==o.length?this.pos.from.ch:0))}}};e.defineExtension("getSearchCursor",function(e,r,n){return new i(this.doc,e,r,n)});e.defineDocExtension("getSearchCursor",function(e,r,n){return new i(this,e,r,n)});e.defineExtension("selectMatches",function(i,r){for(var n=[],o=this.getSearchCursor(i,this.getCursor("from"),r);o.findNext()&&!(e.cmpPos(o.to(),this.getCursor("to"))>0);)n.push({anchor:o.from(),head:o.to()});n.length&&this.setSelections(n,0)})})},{codemirror:void 0}],14:[function(i,r,n){(function(i){"use strict";(function(i,o){"function"==typeof e&&e.amd?e([],o):"object"==typeof n?r.exports=o():i.store=o()})(this,function(){function e(){try{return s in o&&o[s]}catch(e){return!1}}var r,n={},o="undefined"!=typeof window?window:i,t=o.document,s="localStorage",a="script";n.disabled=!1;n.version="1.3.20";n.set=function(e,i){};n.get=function(e,i){};n.has=function(e){return void 0!==n.get(e)};n.remove=function(e){};n.clear=function(){};n.transact=function(e,i,r){if(null==r){r=i;i=null}null==i&&(i={});var o=n.get(e,i);r(o);n.set(e,o)};n.getAll=function(){};n.forEach=function(){};n.serialize=function(e){return JSON.stringify(e)};n.deserialize=function(e){if("string"==typeof e)try{return JSON.parse(e)}catch(i){return e||void 0}};if(e()){r=o[s];n.set=function(e,i){if(void 0===i)return n.remove(e);r.setItem(e,n.serialize(i));return i};n.get=function(e,i){var o=n.deserialize(r.getItem(e));return void 0===o?i:o};n.remove=function(e){r.removeItem(e)};n.clear=function(){r.clear()};n.getAll=function(){var e={};n.forEach(function(i,r){e[i]=r});return e};n.forEach=function(e){for(var i=0;idocument.w=window');l.close();p=l.w.frames[0].document;r=p.createElement("div")}catch(E){r=t.createElement("div");p=t.body}var u=function(e){return function(){var i=Array.prototype.slice.call(arguments,0);i.unshift(r);p.appendChild(r);r.addBehavior("#default#userData");r.load(s);var o=e.apply(n,i);p.removeChild(r);return o}},c=new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]","g"),d=function(e){return e.replace(/^d/,"___$&").replace(c,"___")};n.set=u(function(e,i,r){i=d(i);if(void 0===r)return n.remove(i);e.setAttribute(i,n.serialize(r));e.save(s);return r});n.get=u(function(e,i,r){i=d(i);var o=n.deserialize(e.getAttribute(i));return void 0===o?r:o});n.remove=u(function(e,i){i=d(i);e.removeAttribute(i);e.save(s)});n.clear=u(function(e){var i=e.XMLDocument.documentElement.attributes;e.load(s);for(var r=i.length-1;r>=0;r--)e.removeAttribute(i[r].name);e.save(s)});n.getAll=function(e){var i={};n.forEach(function(e,r){i[e]=r});return i};n.forEach=u(function(e,i){for(var r,o=e.XMLDocument.documentElement.attributes,t=0;r=o[t];++t)i(r.name,n.deserialize(e.getAttribute(r.name)))})}try{var N="__storejs__";n.set(N,N);n.get(N)!=N&&(n.disabled=!0);n.remove(N)}catch(E){n.disabled=!0}n.enabled=!n.disabled;return n})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],15:[function(e,i,r){i.exports={_args:[[{raw:"yasgui-utils@^1.6.0",scope:null,escapedName:"yasgui-utils",name:"yasgui-utils",rawSpec:"^1.6.0",spec:">=1.6.0 <2.0.0",type:"range"},"/home/lrd900/yasgui/yasqe"]],_from:"yasgui-utils@>=1.6.0 <2.0.0",_id:"yasgui-utils@1.6.0",_inCache:!0,_installable:!0,_location:"/yasgui-utils",_npmUser:{name:"laurens.rietveld",email:"laurens.rietveld@gmail.com"},_npmVersion:"1.4.3",_phantomChildren:{},_requested:{raw:"yasgui-utils@^1.6.0",scope:null,escapedName:"yasgui-utils",name:"yasgui-utils",rawSpec:"^1.6.0",spec:">=1.6.0 <2.0.0",type:"range"},_requiredBy:["/"],_resolved:"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz",_shasum:"bcb9091109c233e3e82737c94c202e6512389c47",_shrinkwrap:null,_spec:"yasgui-utils@^1.6.0",_where:"/home/lrd900/yasgui/yasqe",author:{name:"Laurens Rietveld"},bugs:{url:"https://github.com/YASGUI/Utils/issues"},dependencies:{store:"^1.3.14"},description:"Utils for YASGUI libs",devDependencies:{},directories:{},dist:{shasum:"bcb9091109c233e3e82737c94c202e6512389c47",tarball:"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz"},homepage:"https://github.com/YASGUI/Utils",licenses:[{type:"MIT",url:"http://yasgui.github.io/license.txt"}],main:"src/main.js",maintainers:[{name:"laurens.rietveld",email:"laurens.rietveld@gmail.com"}],name:"yasgui-utils",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git://github.com/YASGUI/Utils.git"},version:"1.6.0"}},{}],16:[function(e,i,r){window.console=window.console||{log:function(){}};i.exports={storage:e("./storage.js"),svg:e("./svg.js"),version:{"yasgui-utils":e("../package.json").version},nestedExists:function(e){for(var i=Array.prototype.slice.call(arguments,1),r=0;ri.exp?null:i.val:null}return null}}},{store:14}],18:[function(e,i,r){i.exports={draw:function(e,r){if(e){var n=i.exports.getElement(r);n&&(e.append?e.append(n):e.appendChild(n))}},getElement:function(e){if(e&&0==e.indexOf("0){var t=n(i.getWrapperElement()).find(".CodeMirror-vscrollbar"),s=0;t.is(":visible")&&(s=t.outerWidth());e.forEach(function(e){e.css("right",s)})}});var E=function(e,r){l[e.name]=new s;for(var n=0;n0&&E(n,e)};if(n.get instanceof Array)s(n.get);else{var a=null,l=o.getPersistencyId(i,n.persistent);l&&(a=t.storage.get(l));a&&a.length>0?s(a):n.get instanceof Function&&(n.async?n.get(null,s):s(n.get()))}}},c=function(r){if(!i.somethingSelected()){var o=function(n){if(r&&(!n.autoShow||!n.bulk&&n.async))return!1;var o={closeCharacters:/(?=a)b/,completeSingle:!1};!n.bulk&&n.async&&(o.async=!0);var t=function(e,i){return d(n,i)};e.showHint(i,t,o);return!0};for(var t in p)if(n.inArray(t,i.options.autocompleters)!=-1){var s=p[t];if(s.isValidCompletionPosition)if(s.isValidCompletionPosition()){if(!s.callbacks||!s.callbacks.validPosition||s.callbacks.validPosition(i,s)!==!1){var a=o(s);if(a)break}}else s.callbacks&&s.callbacks.invalidPosition&&s.callbacks.invalidPosition(i,s)}}},d=function(e,r){var n=function(i){var r=i.autocompletionString||i.string,n=[];if(l[e.name])n=l[e.name].autoComplete(r);else if("function"==typeof e.get&&0==e.async)n=e.get(r);else if("object"==typeof e.get)for(var o=r.length,t=0;t
"));r[i.name].show().text("Press "+(navigator.userAgent.indexOf("Mac OS X")!=-1?"CMD":"CTRL")+" - to autocomplete").appendTo(n(e.getWrapperElement()))}},hide:function(e,i){r[i.name]&&r[i.name].hide()}},autoComplete:c,getTrie:function(e){return"string"==typeof e?l[e]:l[e.name]}}};var a=function(e,i,r){r.text!=e.getTokenAt(e.getCursor()).string&&e.replaceRange(r.text,i.from,i.to)}},{"../../lib/trie.js":4,"../main.js":30,"../utils.js":36,jquery:void 0,"yasgui-utils":16}],21:[function(e,i,r){"use strict";(function(){try{return e("jquery")}catch(i){return window.jQuery}})();i.exports=function(r,n){return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(r)},get:function(i,n){return e("./utils").fetchFromLov(r,this,i,n)},preProcessToken:function(e){return i.exports.preProcessToken(r,e)},postProcessToken:function(e,n){return i.exports.postProcessToken(r,e,n)},async:!0,bulk:!1,autoShow:!1,persistent:n,callbacks:{validPosition:r.autocompleters.notifications.show,invalidPosition:r.autocompleters.notifications.hide}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCompleteToken();if(0==i.string.indexOf("?"))return!1;var r=e.getCursor(),n=e.getPreviousNonWsToken(r.line,i);return"a"==n.string||("rdf:type"==n.string||("rdfs:domain"==n.string||"rdfs:range"==n.string))};i.exports.preProcessToken=function(i,r){return e("./utils.js").preprocessResourceTokenForCompletion(i,r)};i.exports.postProcessToken=function(i,r,n){return e("./utils.js").postprocessResourceTokenForCompletion(i,r,n)}},{"./utils":24,"./utils.js":24,jquery:void 0}],22:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o={"string-2":"prefixed",atom:"var"};i.exports=function(e,r){e.on("change",function(){i.exports.appendPrefixIfNeeded(e,r)});return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(e)},get:function(e,r){n.get(i.exports.fetchFrom,function(e){var i=[];for(var n in e)if("bif"!=n){var o=n+": <"+e[n]+">";i.push(o)}i.sort();r(i)})},preProcessToken:function(r){return i.exports.preprocessPrefixTokenForCompletion(e,r)},async:!0,bulk:!0,autoShow:!0,persistent:r,callbacks:{pick:function(){e.collapsePrefixes(!1)}}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCursor(),r=e.getTokenAt(i);if(e.getLine(i.line).length>i.ch)return!1;"ws"!=r.type&&(r=e.getCompleteToken());if(0==!r.string.indexOf("a")&&n.inArray("PNAME_NS",r.state.possibleCurrent)==-1)return!1;var o=e.getPreviousNonWsToken(i.line,r);return!(!o||"PREFIX"!=o.string.toUpperCase())};i.exports.preprocessPrefixTokenForCompletion=function(e,i){var r=e.getPreviousNonWsToken(e.getCursor().line,i);r&&r.string&&":"==r.string.slice(-1)&&(i={start:r.start,end:i.end,string:r.string+" "+i.string,state:i.state});return i};i.exports.appendPrefixIfNeeded=function(e,i){if(e.autocompleters.getTrie(i)&&e.options.autocompleters&&e.options.autocompleters.indexOf(i)!=-1){var r=e.getCursor(),n=e.getTokenAt(r);if("prefixed"==o[n.type]){var t=n.string.indexOf(":");if(t!==-1){var s=e.getPreviousNonWsToken(r.line,n).string.toUpperCase(),a=e.getTokenAt({line:r.line,ch:n.start});if("PREFIX"!=s&&("ws"==a.type||null==a.type)){var p=n.string.substring(0,t+1),l=e.getPrefixesFromQuery();if(null==l[p.slice(0,-1)]){var E=e.autocompleters.getTrie(i).autoComplete(p);E.length>0&&e.addPrefixes(E[0])}}}}}};i.exports.fetchFrom=(0===window.location.protocol.indexOf("http")?"//":"http://")+"prefix.cc/popular/all.file.json"},{jquery:void 0}],23:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}();i.exports=function(r,n){return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(r)},get:function(i,n){return e("./utils").fetchFromLov(r,this,i,n)},preProcessToken:function(e){return i.exports.preProcessToken(r,e)},postProcessToken:function(e,n){return i.exports.postProcessToken(r,e,n)},async:!0,bulk:!1,autoShow:!1,persistent:n,callbacks:{validPosition:r.autocompleters.notifications.show,invalidPosition:r.autocompleters.notifications.hide}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCompleteToken();if(0==i.string.length)return!1;if(0==i.string.indexOf("?"))return!1;if(n.inArray("a",i.state.possibleCurrent)>=0)return!0;var r=e.getCursor(),o=e.getPreviousNonWsToken(r.line,i);return"rdfs:subPropertyOf"==o.string};i.exports.preProcessToken=function(i,r){return e("./utils.js").preprocessResourceTokenForCompletion(i,r)};i.exports.postProcessToken=function(i,r,n){return e("./utils.js").postprocessResourceTokenForCompletion(i,r,n)}},{"./utils":24,"./utils.js":24,jquery:void 0}],24:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=(e("./utils.js"),e("yasgui-utils")),t=function(e,i){var r=e.getPrefixesFromQuery();if(0==!i.string.indexOf("<")){i.tokenPrefix=i.string.substring(0,i.string.indexOf(":")+1);null!=r[i.tokenPrefix.slice(0,-1)]&&(i.tokenPrefixUri=r[i.tokenPrefix.slice(0,-1)])}i.autocompletionString=i.string.trim();if(0==!i.string.indexOf("<")&&i.string.indexOf(":")>-1)for(var n in r)if(i.tokenPrefix===n+":"){i.autocompletionString=r[n];i.autocompletionString+=i.string.substring(n.length+1);break}0==i.autocompletionString.indexOf("<")&&(i.autocompletionString=i.autocompletionString.substring(1));i.autocompletionString.indexOf(">",i.length-1)!==-1&&(i.autocompletionString=i.autocompletionString.substring(0,i.autocompletionString.length-1));return i},s=function(e,i,r){r=i.tokenPrefix&&i.autocompletionString&&i.tokenPrefixUri?i.tokenPrefix+r.substring(i.tokenPrefixUri.length):"<"+r+">";return r},a=0===window.location.protocol.indexOf("http")?"//":"http://",p=function(i,r,t,s){if(!t||!t.string||0==t.string.trim().length){i.autocompleters.notifications.getEl(r).empty().append("Nothing to autocomplete yet!");return!1}var p=50,l={q:t.autocompletionString,page:1};"classes"==r.name?l.type="class":l.type="property";var E=[],u="",c=function(){u=a+"lov.okfn.org/dataset/lov/api/v2/autocomplete/terms?"+n.param(l)};c();var d=function(){l.page++;c()},N=function(){n.get(u,function(e){for(var o=0;o0?E.push(e.results[o].uri[0]):E.push(e.results[o].uri);if(E.length0?i.autocompleters.notifications.hide(i,r):i.autocompleters.notifications.getEl(r).text("0 matches found...");s(E)}}).fail(function(e,n,o){i.autocompleters.notifications.getEl(r).empty().append("Failed fetching suggestions..")})};i.autocompleters.notifications.getEl(r).empty().append(n("Fetchting autocompletions  ")).append(n(o.svg.getElement(e("../imgs.js").loader)).addClass("notificationLoader"));N()};i.exports={fetchFromLov:p,preprocessResourceTokenForCompletion:t,postprocessResourceTokenForCompletion:s}},{"../imgs.js":29,"./utils.js":24,jquery:void 0,"yasgui-utils":16}],25:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}();i.exports=function(e){return{isValidCompletionPosition:function(){var i=e.getTokenAt(e.getCursor());if("ws"!=i.type){i=e.getCompleteToken(i);if(i&&0==i.string.indexOf("?"))return!0}return!1},get:function(i){if(0==i.trim().length)return[];var r={};n(e.getWrapperElement()).find(".cm-atom").each(function(){var e=this.innerHTML;if(0==e.indexOf("?")){var o=n(this).next(),t=o.attr("class");t&&o.attr("class").indexOf("cm-atom")>=0&&(e+=o.text());if(e.length<=1)return;if(0!==e.indexOf(i))return;if(e==i)return;r[e]=!0}});var o=[];for(var t in r)o.push(t);o.sort();return o},async:!1,bulk:!1,autoShow:!0}}},{jquery:void 0}],26:[function(e,i,r){var n=e("./sparql.js"),o=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),t=function(e){return"'"+e+"'"};i.exports={createCurlString:function(e,i){var r=n.getAjaxConfig(e,i),s=r.url;if(0!==r.url.indexOf("http")){var s=window.location.protocol+"//"+window.location.host;s+=0===r.url.indexOf("/")?r.url:window.location.pathname+r.url}var a=["curl",s,"-X",e.options.sparql.requestMethod];"POST"==e.options.sparql.requestMethod&&a.push("--data "+t(o.param(r.data)));for(var p in r.headers)a.push("-H "+t(p+": "+r.headers[p]));return a.join(" ")}}},{"./sparql.js":33,jquery:void 0}],27:[function(e,i,r){var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=e("./main.js");o.defaults=n.extend(!0,{},o.defaults,{mode:"sparql11",value:"PREFIX rdf: \nPREFIX rdfs: \nSELECT * WHERE {\n ?sub ?pred ?obj .\n} \nLIMIT 10",highlightSelectionMatches:{showToken:/\w/},tabMode:"indent",lineNumbers:!0,lineWrapping:!0,backdrop:!1,foldGutter:{rangeFinder:new o.fold.combine(o.fold.brace,o.fold.prefix)},collapsePrefixesOnLoad:!1,gutters:["gutterErrorBar","CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:!0,fixedGutter:!0,syntaxErrorCheck:!0,extraKeys:{"Ctrl-Space":o.autoComplete,"Cmd-Space":o.autoComplete,"Ctrl-D":o.deleteLine,"Ctrl-K":o.deleteLine,"Shift-Ctrl-K":o.deleteLine,"Cmd-D":o.deleteLine,"Cmd-K":o.deleteLine,"Ctrl-/":o.commentLines,"Cmd-/":o.commentLines,"Ctrl-Alt-Down":o.copyLineDown,"Ctrl-Alt-Up":o.copyLineUp,"Cmd-Alt-Down":o.copyLineDown,"Cmd-Alt-Up":o.copyLineUp,"Shift-Ctrl-F":o.doAutoFormat,"Shift-Cmd-F":o.doAutoFormat,"Ctrl-]":o.indentMore,"Cmd-]":o.indentMore,"Ctrl-[":o.indentLess,"Cmd-[":o.indentLess,"Ctrl-S":o.storeQuery,"Cmd-S":o.storeQuery,"Ctrl-Enter":o.executeQuery,"Cmd-Enter":o.executeQuery,F11:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}},cursorHeight:.9,createShareLink:o.createShareLink,createShortLink:null,consumeShareLink:o.consumeShareLink,persistent:function(e){return"yasqe_"+n(e.getWrapperElement()).closest("[id]").attr("id")+"_queryVal"},sparql:{queryName:function(e){return e.getQueryMode()},showQueryButton:!1,endpoint:"http://dbpedia.org/sparql",requestMethod:"POST",acceptHeaderGraph:"text/turtle,*/*;q=0.9",acceptHeaderSelect:"application/sparql-results+json,*/*;q=0.9",acceptHeaderUpdate:"text/plain,*/*;q=0.9",namedGraphs:[],defaultGraphs:[],args:[],headers:{},getQueryForAjax:null,callbacks:{beforeSend:null,complete:null,error:null,success:null},handlers:{}}})},{"./main.js":30,jquery:void 0}],28:[function(e,i,r){i.exports=e("./main.js")},{"./main.js":30}],29:[function(e,i,r){"use strict";i.exports={query:'\t',queryInvalid:'image/svg+xml',download:'\t', -share:'',warning:'',fullscreen:'image/svg+xml',smallscreen:'image/svg+xml'}},{}],30:[function(e,i,r){"use strict";window.console=window.console||{log:function(){}};var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=function(){try{return e("codemirror")}catch(i){return window.CodeMirror}}(),t=e("./utils.js"),s=e("yasgui-utils"),a=e("./imgs.js");e("../lib/deparam.js");e("codemirror/addon/fold/foldcode.js");e("codemirror/addon/fold/foldgutter.js");e("codemirror/addon/fold/xml-fold.js");e("codemirror/addon/fold/brace-fold.js");e("./prefixFold.js");e("codemirror/addon/hint/show-hint.js");e("codemirror/addon/search/searchcursor.js");e("codemirror/addon/edit/matchbrackets.js");e("codemirror/addon/runmode/runmode.js");e("codemirror/addon/display/fullscreen.js");e("../lib/grammar/tokenizer.js");var p=i.exports=function(e,i){var r=n("
",{"class":"yasqe"}).appendTo(n(e));i=l(i);var t=E(o(r[0],i));d(t);return t},l=function(e){var i=n.extend(!0,{},p.defaults,e);return i},E=function(i){i.autocompleters=e("./autocompleters/autocompleterBase.js")(p,i);i.options.autocompleters&&i.options.autocompleters.forEach(function(e){p.Autocompleters[e]&&i.autocompleters.init(e,p.Autocompleters[e])});i.lastQueryDuration=null;i.getCompleteToken=function(r,n){return e("./tokenUtils.js").getCompleteToken(i,r,n)};i.getPreviousNonWsToken=function(r,n){return e("./tokenUtils.js").getPreviousNonWsToken(i,r,n)};i.getNextNonWsToken=function(r,n){return e("./tokenUtils.js").getNextNonWsToken(i,r,n)};i.collapsePrefixes=function(r){void 0===r&&(r=!0);i.foldCode(e("./prefixFold.js").findFirstPrefixLine(i),p.fold.prefix,r?"fold":"unfold")};var r=null,o=null;i.setBackdrop=function(e){if(i.options.backdrop||0===i.options.backdrop||"0"===i.options.backdrop){if(null===o){o=+i.options.backdrop;1===o&&(o=400)}r||(r=n("
",{"class":"backdrop"}).click(function(){n(this).hide()}).insertAfter(n(i.getWrapperElement())));e?r.show(o):r.hide(o)}};i.query=function(e){p.executeQuery(i,e)};i.getUrlArguments=function(e){return p.getUrlArguments(i,e)};i.getPrefixesFromQuery=function(){return e("./prefixUtils.js").getPrefixesFromQuery(i)};i.addPrefixes=function(r){return e("./prefixUtils.js").addPrefixes(i,r)};i.removePrefixes=function(r){return e("./prefixUtils.js").removePrefixes(i,r)};i.getValueWithoutComments=function(){var e="";p.runMode(i.getValue(),"sparql11",function(i,r){"comment"!=r&&(e+=i)});return e};i.getQueryType=function(){return i.queryType};i.getQueryMode=function(){var e=i.getQueryType();return"INSERT"==e||"DELETE"==e||"LOAD"==e||"CLEAR"==e||"CREATE"==e||"DROP"==e||"COPY"==e||"MOVE"==e||"ADD"==e?"update":"query"};i.setCheckSyntaxErrors=function(e){i.options.syntaxErrorCheck=e;I(i)};i.enableCompleter=function(e){u(i.options,e);p.Autocompleters[e]&&i.autocompleters.init(e,p.Autocompleters[e])};i.disableCompleter=function(e){c(i.options,e)};return i},u=function(e,i){e.autocompleters||(e.autocompleters=[]);e.autocompleters.push(i)},c=function(e,i){if("object"==typeof e.autocompleters){var r=n.inArray(i,e.autocompleters);if(r>=0){e.autocompleters.splice(r,1);c(e,i)}}},d=function(e){var i=t.getPersistencyId(e,e.options.persistent);if(i){var r=s.storage.get(i);r&&e.setValue(r)}p.drawButtons(e);e.on("blur",function(e,i){p.storeQuery(e)});e.on("change",function(e,i){I(e);p.updateQueryButton(e);p.positionButtons(e)});e.on("changes",function(){I(e);p.updateQueryButton(e);p.positionButtons(e)});e.on("cursorActivity",function(e,i){x(e)});e.prevQueryValid=!1;I(e);p.positionButtons(e);n(e.getWrapperElement()).on("mouseenter",".cm-atom",function(){var i=n(this).text();n(e.getWrapperElement()).find(".cm-atom").filter(function(){return n(this).text()===i}).addClass("matchingVar")}).on("mouseleave",".cm-atom",function(){n(e.getWrapperElement()).find(".matchingVar").removeClass("matchingVar")});if(e.options.consumeShareLink){e.options.consumeShareLink(e,N());window.addEventListener("hashchange",function(){e.options.consumeShareLink(e,N())})}e.options.collapsePrefixesOnLoad&&e.collapsePrefixes(!0)},N=function(){var e=null;window.location.hash.length>1&&(e=n.deparam(location.href.split("#")[1]));e&&"query"in e||!(window.location.search.length>1)||(e=n.deparam(window.location.search.substring(1)));return e},x=function(e){e.cursor=n(".CodeMirror-cursor");e.buttons&&e.buttons.is(":visible")&&e.cursor.length>0&&(t.elementsOverlap(e.cursor,e.buttons)?e.buttons.find("svg").attr("opacity","0.2"):e.buttons.find("svg").attr("opacity","1.0"))},I=function(i,r){i.queryValid=!0;i.clearGutter("gutterErrorBar");for(var o=null,t=0;t").text(l.state.errorMsg).html()}):o.possibleCurrent&&o.possibleCurrent.length>0&&e("./tooltip")(i,E,function(){var e=[];o.possibleCurrent.forEach(function(i){e.push(""+n("
").text(i).html()+"")});return"This line is invalid. Expected: "+e.join(", ")});E.style.marginTop="2px";E.style.marginLeft="2px";E.className="parseErrorIcon";i.setGutterMarker(t,"gutterErrorBar",E);i.queryValid=!1;break}}i.prevQueryValid=i.queryValid;if(r&&null!=o&&void 0!=o.stack){var u=o.stack,c=o.stack.length;c>1?i.queryValid=!1:1==c&&"solutionModifier"!=u[0]&&"?limitOffsetClauses"!=u[0]&&"?offsetClause"!=u[0]&&(i.queryValid=!1)}};n.extend(p,o);p.Autocompleters={};p.registerAutocompleter=function(e,i){p.Autocompleters[e]=i;u(p.defaults,e)};p.autoComplete=function(e){e.autocompleters.autoComplete(!1)};p.registerAutocompleter("prefixes",e("./autocompleters/prefixes.js"));p.registerAutocompleter("properties",e("./autocompleters/properties.js"));p.registerAutocompleter("classes",e("./autocompleters/classes.js"));p.registerAutocompleter("variables",e("./autocompleters/variables.js"));p.positionButtons=function(e){var i=n(e.getWrapperElement()).find(".CodeMirror-vscrollbar"),r=0;i.is(":visible")&&(r=i.outerWidth());e.buttons.is(":visible")&&e.buttons.css("right",r+4)};p.createShareLink=function(e){var i={};window.location.hash.length>1&&(i=n.deparam(window.location.hash.substring(1)));i.query=e.getValue();return i};p.getAsCurl=function(i,r){var n=e("./curl.js");return n.createCurlString(i,r)};p.consumeShareLink=function(e,i){i&&i.query&&e.setValue(i.query)};p.drawButtons=function(e){e.buttons=n("
").appendTo(n(e.getWrapperElement()));if(e.options.createShareLink){var i=n(s.svg.getElement(a.share));i.click(function(r){r.stopPropagation();var o=n("
").appendTo(e.buttons);n("html").click(function(){o&&o.remove()});o.click(function(e){e.stopPropagation()});var t=n("").val(location.protocol+"//"+location.host+location.pathname+location.search+"#"+n.param(e.options.createShareLink(e)));t.focus(function(){var e=n(this);e.select();e.mouseup(function(){e.unbind("mouseup");return!1})});o.empty().append(n("
",{"class":"inputWrapper"}).append(t));if(e.options.createShortLink){o.addClass("enableShort");n("").addClass("yasqe_btn yasqe_btn-sm yasqe_btn-primary").click(function(){n(this).parent().find("button").attr("disabled","disabled");e.options.createShortLink(t.val(),function(e,i){if(e){t.remove();o.find(".inputWrapper").append(n("",{"class":"shortlinkErr"}).text(e))}else t.val(i).focus()})}).appendTo(o)}n("").addClass("yasqe_btn yasqe_btn-sm yasqe_btn-primary").click(function(){n(this).parent().find("button").attr("disabled","disabled");t.val(p.getAsCurl(e)).focus()}).appendTo(o);var s=i.position();o.css("top",s.top+i.outerHeight()+parseInt(o.css("padding-top"))+"px").css("left",s.left+i.outerWidth()-o.outerWidth()+"px");t.focus()}).addClass("yasqe_share").attr("title","Share your query").appendTo(e.buttons)}var r=n("
",{"class":"fullscreenToggleBtns"}).append(n(s.svg.getElement(a.fullscreen)).addClass("yasqe_fullscreenBtn").attr("title","Set editor full screen").click(function(){e.setOption("fullScreen",!0)})).append(n(s.svg.getElement(a.smallscreen)).addClass("yasqe_smallscreenBtn").attr("title","Set editor to normale size").click(function(){e.setOption("fullScreen",!1)}));e.buttons.append(r);if(e.options.sparql.showQueryButton){n("
",{"class":"yasqe_queryButton"}).click(function(){if(n(this).hasClass("query_busy")){e.xhr&&e.xhr.abort();p.updateQueryButton(e)}else e.query()}).appendTo(e.buttons);p.updateQueryButton(e)}};var m={busy:"loader",valid:"query",error:"queryInvalid"};p.updateQueryButton=function(e,i){var r=n(e.getWrapperElement()).find(".yasqe_queryButton");if(0!=r.length){if(!i){i="valid";e.queryValid===!1&&(i="error")}if(i!=e.queryStatus){r.empty().removeClass(function(e,i){return i.split(" ").filter(function(e){return 0==e.indexOf("query_")}).join(" ")});if("busy"==i){r.append(n("
",{"class":"loader"}));e.queryStatus=i}else if("valid"==i||"error"==i){r.addClass("query_"+i);s.svg.draw(r,a[m[i]]);e.queryStatus=i}}}};p.fromTextArea=function(e,i){i=l(i);var r=(n("
",{"class":"yasqe"}).insertBefore(n(e)).append(n(e)),E(o.fromTextArea(e,i)));d(r);return r};p.storeQuery=function(e){var i=t.getPersistencyId(e,e.options.persistent);i&&s.storage.set(i,e.getValue(),"month")};p.commentLines=function(e){for(var i=e.getCursor(!0).line,r=e.getCursor(!1).line,n=Math.min(i,r),o=Math.max(i,r),t=!0,s=n;s<=o;s++){var a=e.getLine(s);if(0==a.length||"#"!=a.substring(0,1)){t=!1;break}}for(var s=n;s<=o;s++)t?e.replaceRange("",{line:s,ch:0},{line:s,ch:1}):e.replaceRange("#",{line:s,ch:0})};p.copyLineUp=function(e){var i=e.getCursor(),r=e.lineCount();e.replaceRange("\n",{line:r-1,ch:e.getLine(r-1).length});for(var n=r;n>i.line;n--){var o=e.getLine(n-1);e.replaceRange(o,{line:n,ch:0},{line:n,ch:e.getLine(n).length})}};p.copyLineDown=function(e){p.copyLineUp(e);var i=e.getCursor();i.line++;e.setCursor(i)};p.doAutoFormat=function(e){if(e.somethingSelected()){var i={line:e.getCursor(!1).line,ch:e.getSelection().length};L(e,e.getCursor(!0),i)}else{var r=e.lineCount(),n=e.getTextArea().value.length;L(e,{line:0,ch:0},{line:r,ch:n})}};var L=function(e,i,r){var n=e.indexFromPos(i),o=e.indexFromPos(r),t=T(e.getValue(),n,o);e.operation(function(){e.replaceRange(t,i,r);for(var o=e.posFromIndex(n).line,s=e.posFromIndex(n+t.length).line,a=o;a<=s;a++)e.indentLine(a,"smart")})},T=function(e,i,r){e=e.substring(i,r);var t=[["keyword","ws","prefixed","ws","uri"],["keyword","ws","uri"]],s=["{",".",";"],a=["}"],p=function(e,i){for(var r=0;r=0)return r}};o.registerHelper("fold","prefix",function(e,i){function r(){for(var i=!1,r=a-1;r>=0;r--)if(e.getLine(r).toUpperCase().indexOf(s)>=0){i=!0;break}return i}var a=i.line,p=e.getLine(a),l=function(i,r){var n=e.getTokenAt(o.Pos(i,r+1));if(!n||"keyword"!=n.type)return-1;var s=t.getNextNonWsToken(e,i,n.end+1);if(!s||"string-2"!=s.type)return-1;var a=t.getNextNonWsToken(e,i,s.end+1);return a&&"variable-3"==a.type?a.end:-1};if(!r()){var E=n(e,a,i.ch,p);if(null!=E){for(var u,c="{",d=!1,N=e.lastLine(),x=l(a,E),I=a,m=a;m<=N&&!d;++m)for(var L=e.getLine(m),T=m==a?E+1:0;;){!d&&L.indexOf(c)>=0&&(d=!0);var g=L.toUpperCase().indexOf(s,T);if(!(g>=0))break;if((u=l(m,g))>0){x=u;I=m;T=x}T++}return{from:o.Pos(a,E+s.length),to:o.Pos(I,x)}}}})},{"./tokenUtils.js":34,codemirror:void 0}],32:[function(e,i,r){"use strict";var n=function(e,i){var r=e.getPrefixesFromQuery();if("string"==typeof i)o(e,i);else for(var n in i)n in r||o(e,n+": <"+i[n]+">");e.collapsePrefixes(!1)},o=function(e,i){for(var r=null,n=0,o=e.lineCount(),t=0;t")+"\\s*","ig"),""));e.collapsePrefixes(!1)},s=function(e){return e.getTokenAt({line:e.lastLine(),ch:e.getLine(e.lastLine()).length}).state.prefixes},a=function(e,i,r){void 0==r&&(r=1);var n=e.getTokenAt({line:i,ch:r});return null==n||void 0==n||"ws"!=n.type?"":n.string+a(e,i,n.end+1)};i.exports={addPrefixes:n,getPrefixesFromQuery:s,removePrefixes:t}},{}],33:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=e("./utils.js"),t=e("./main.js");t.getAjaxConfig=function(i,r){var o="function"==typeof r?r:null,a="object"==typeof r?r:{};i.options.sparql&&(a=n.extend({},i.options.sparql,a));a.handlers&&n.extend(!0,a.callbacks,a.handlers);if(a.endpoint&&0!=a.endpoint.length){var p={url:"function"==typeof a.endpoint?a.endpoint(i):a.endpoint,type:"function"==typeof a.requestMethod?a.requestMethod(i):a.requestMethod,headers:{Accept:s(i,a)}};a.xhrFields&&(p.xhrFields=a.xhrFields);var l=!1;if(a.callbacks)for(var E in a.callbacks)if(a.callbacks[E]){l=!0;p[E]=a.callbacks[E]}if("GET"===p.type){var u=!0;n.each(i.getUrlArguments(a),function(e,i){p.url+=(u?"?":"&")+i.name+"="+encodeURIComponent(i.value);u=!1})}else p.data=i.getUrlArguments(a);if(l||o){o&&(p.complete=o);a.headers&&!n.isEmptyObject(a.headers)&&n.extend(p.headers,a.headers);var c=new Date,d=function(){i.lastQueryDuration=new Date-c;t.updateQueryButton(i);i.setBackdrop(!1)},N=[function(){e("./main.js").signal(i,"queryFinish",arguments)},d];p.complete&&N.push(p.complete);p.complete=N;return p}}};t.executeQuery=function(e,i){t.signal(e,"query",e,i);t.updateQueryButton(e,"busy");e.setBackdrop(!0);e.xhr=n.ajax(t.getAjaxConfig(e,i))};t.getUrlArguments=function(e,i){var r=e.getQueryMode(),t=[{name:o.getString(e,e.options.sparql.queryName),value:i.getQueryForAjax?i.getQueryForAjax(e):e.getValue()}];if(i.namedGraphs&&i.namedGraphs.length>0)for(var s="query"==r?"named-graph-uri":"using-named-graph-uri ",a=0;a0)for(var s="query"==r?"default-graph-uri":"using-graph-uri ",a=0;a0&&n.merge(t,i.args);return t};var s=function(e,i){var r=null;if(!i.acceptHeader||i.acceptHeaderGraph||i.acceptHeaderSelect||i.acceptHeaderUpdate)if("update"==e.getQueryMode())r="function"==typeof i.acceptHeader?i.acceptHeaderUpdate(e):i.acceptHeaderUpdate;else{var n=e.getQueryType();r="DESCRIBE"==n||"CONSTRUCT"==n?"function"==typeof i.acceptHeaderGraph?i.acceptHeaderGraph(e):i.acceptHeaderGraph:"function"==typeof i.acceptHeaderSelect?i.acceptHeaderSelect(e):i.acceptHeaderSelect}else r="function"==typeof i.acceptHeader?i.acceptHeader(e):i.acceptHeader;return r};i.exports={getAjaxConfig:t.getAjaxConfig}},{"./main.js":30,"./utils.js":36,jquery:void 0}],34:[function(e,i,r){"use strict";var n=function(e,i,r){r||(r=e.getCursor());i||(i=e.getTokenAt(r));var o=e.getTokenAt({line:r.line,ch:i.start});if(null!=o.type&&"ws"!=o.type&&null!=i.type&&"ws"!=i.type){i.start=o.start;i.string=o.string+i.string;return n(e,i,{line:r.line,ch:o.start})}if(null!=i.type&&"ws"==i.type){i.start=i.start+1;i.string=i.string.substring(1);return i}return i},o=function(e,i,r){var n=e.getTokenAt({line:i,ch:r.start});null!=n&&"ws"==n.type&&(n=o(e,i,n));return n},t=function(e,i,r){void 0==r&&(r=1);var n=e.getTokenAt({line:i,ch:r});return null==n||void 0==n||n.end").addClass("yasqe_tooltip").html(r).appendTo(i);t()},function(){n(".yasqe_tooltip").remove()});var t=function(){if(n(e.getWrapperElement()).offset().top>=o.offset().top){o.css("bottom","auto");o.css("top","26px")}}}},{"./utils.js":36,jquery:void 0}],36:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=function(e,i){var r=!1;try{void 0!==e[i]&&(r=!0)}catch(n){}return r},t=function(e,i){var r=null;i&&(r="string"==typeof i?i:i(e));return r},s=function(){function e(e){var i,r,o;i=n(e).offset();r=n(e).width();o=n(e).height();return[[i.left,i.left+r],[i.top,i.top+o]]}function i(e,i){var r,n;r=e[0]n[0]||r[0]===n[0]}return function(r,n){var o=e(r),t=e(n);return i(o[0],t[0])&&i(o[1],t[1])}}(),a=function(e,i){return"function"==typeof i?i(e):i};i.exports={keyExists:o,getPersistencyId:t,elementsOverlap:s,getString:a}},{jquery:void 0}]},{},[28])(28)}); +STRENDS:["relationalExpression"],STRBEFORE:["relationalExpression"],STRAFTER:["relationalExpression"],YEAR:["relationalExpression"],MONTH:["relationalExpression"],DAY:["relationalExpression"],HOURS:["relationalExpression"],MINUTES:["relationalExpression"],SECONDS:["relationalExpression"],TIMEZONE:["relationalExpression"],TZ:["relationalExpression"],NOW:["relationalExpression"],UUID:["relationalExpression"],STRUUID:["relationalExpression"],MD5:["relationalExpression"],SHA1:["relationalExpression"],SHA256:["relationalExpression"],SHA384:["relationalExpression"],SHA512:["relationalExpression"],COALESCE:["relationalExpression"],IF:["relationalExpression"],STRLANG:["relationalExpression"],STRDT:["relationalExpression"],SAMETERM:["relationalExpression"],ISIRI:["relationalExpression"],ISURI:["relationalExpression"],ISBLANK:["relationalExpression"],ISLITERAL:["relationalExpression"],ISNUMERIC:["relationalExpression"],TRUE:["relationalExpression"],FALSE:["relationalExpression"],COUNT:["relationalExpression"],SUM:["relationalExpression"],MIN:["relationalExpression"],MAX:["relationalExpression"],AVG:["relationalExpression"],SAMPLE:["relationalExpression"],GROUP_CONCAT:["relationalExpression"],SUBSTR:["relationalExpression"],REPLACE:["relationalExpression"],REGEX:["relationalExpression"],EXISTS:["relationalExpression"],NOT:["relationalExpression"],IRI_REF:["relationalExpression"],STRING_LITERAL1:["relationalExpression"],STRING_LITERAL2:["relationalExpression"],STRING_LITERAL_LONG1:["relationalExpression"],STRING_LITERAL_LONG2:["relationalExpression"],INTEGER:["relationalExpression"],DECIMAL:["relationalExpression"],DOUBLE:["relationalExpression"],INTEGER_POSITIVE:["relationalExpression"],DECIMAL_POSITIVE:["relationalExpression"],DOUBLE_POSITIVE:["relationalExpression"],INTEGER_NEGATIVE:["relationalExpression"],DECIMAL_NEGATIVE:["relationalExpression"],DOUBLE_NEGATIVE:["relationalExpression"],PNAME_LN:["relationalExpression"],PNAME_NS:["relationalExpression"]},valuesClause:{VALUES:["VALUES","dataBlock"],$:[],"}":[]},"var":{VAR1:["VAR1"],VAR2:["VAR2"]},varOrIRIref:{VAR1:["var"],VAR2:["var"],IRI_REF:["iriRef"],PNAME_LN:["iriRef"],PNAME_NS:["iriRef"]},varOrTerm:{VAR1:["var"],VAR2:["var"],NIL:["graphTerm"],IRI_REF:["graphTerm"],TRUE:["graphTerm"],FALSE:["graphTerm"],BLANK_NODE_LABEL:["graphTerm"],ANON:["graphTerm"],PNAME_LN:["graphTerm"],PNAME_NS:["graphTerm"],STRING_LITERAL1:["graphTerm"],STRING_LITERAL2:["graphTerm"],STRING_LITERAL_LONG1:["graphTerm"],STRING_LITERAL_LONG2:["graphTerm"],INTEGER:["graphTerm"],DECIMAL:["graphTerm"],DOUBLE:["graphTerm"],INTEGER_POSITIVE:["graphTerm"],DECIMAL_POSITIVE:["graphTerm"],DOUBLE_POSITIVE:["graphTerm"],INTEGER_NEGATIVE:["graphTerm"],DECIMAL_NEGATIVE:["graphTerm"],DOUBLE_NEGATIVE:["graphTerm"]},verb:{VAR1:["storeProperty","varOrIRIref"],VAR2:["storeProperty","varOrIRIref"],IRI_REF:["storeProperty","varOrIRIref"],PNAME_LN:["storeProperty","varOrIRIref"],PNAME_NS:["storeProperty","varOrIRIref"],a:["storeProperty","a"]},verbPath:{"^":["path"],a:["path"],"!":["path"],"(":["path"],IRI_REF:["path"],PNAME_LN:["path"],PNAME_NS:["path"]},verbSimple:{VAR1:["var"],VAR2:["var"]},whereClause:{"{":["?WHERE","groupGraphPattern"],WHERE:["?WHERE","groupGraphPattern"]}},keywords:/^(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,punct:/^(\*|a|\.|\{|\}|,|\(|\)|;|\[|\]|\|\||&&|=|!=|!|<=|>=|<|>|\+|-|\/|\^\^|\?|\||\^)/,startSymbol:"sparql11",acceptEmpty:!0}},{}],3:[function(e,i,r){"use strict";var n=function(){try{return e("codemirror")}catch(i){return window.CodeMirror}}();n.defineMode("sparql11",function(i,r){function n(e){var i=[],r=a[e];if(void 0!=r)for(var n in r)i.push(n.toString());else i.push(e);return i}function o(e,i){function r(){var r=null;if(i.inLiteral){var n=!1;r=e.match(j[i.inLiteral].contents.regex,!0,!1);if(r&&0==r[0].length){r=e.match(j[i.inLiteral].closing.regex,!0,!1);n=!0}if(r&&r[0].length>0){var o={quotePos:n?"end":"content",cat:F[i.inLiteral].CAT,style:j[i.inLiteral].complete.style,text:r[0],start:e.start};n&&(i.inLiteral=!1);return o}}for(var t in j){r=e.match(j[t].quotes.regex,!0,!1);if(r){var a;if(i.inLiteral){i.inLiteral=!1;a="end"}else{i.inLiteral=t;a="start"}return{cat:F[t].CAT,style:j[t].quotes.style,text:r[0],quotePos:a,start:e.start}}}for(var p=0;p",style:"error",text:r[0],start:e.start}}function o(){var r=e.column();i.errorStartPos=r;i.errorEndPos=r+E.text.length}function t(e){null==i.queryType&&("SELECT"!=e&&"CONSTRUCT"!=e&&"ASK"!=e&&"DESCRIBE"!=e&&"INSERT"!=e&&"DELETE"!=e&&"LOAD"!=e&&"CLEAR"!=e&&"CREATE"!=e&&"DROP"!=e&&"COPY"!=e&&"MOVE"!=e&&"ADD"!=e||(i.queryType=e))}function p(e){"prefixDecl"===e?i.inPrefixDecl=!0:i.inPrefixDecl=!1;switch(e){case"disallowVars":i.allowVars=!1;break;case"allowVars":i.allowVars=!0;break;case"disallowBnodes":i.allowBnodes=!1;break;case"allowBnodes":i.allowBnodes=!0;break;case"storeProperty":i.storeProperty=!0}}function l(e){return(i.allowVars||"var"!=e)&&(i.allowBnodes||"blankNode"!=e&&"blankNodePropertyList"!=e&&"blankNodePropertyListPath"!=e)}0==e.pos&&(i.possibleCurrent=i.possibleNext);var E=r();if(""==E.cat){if(1==i.OK){i.OK=!1;o()}i.complete=!1;return E.style}if("WS"==E.cat||"COMMENT"==E.cat||E.quotePos&&"end"!=E.quotePos){i.possibleCurrent=i.possibleNext;return E.style}var u,c=!1,d=E.cat;if(!E.quotePos||"end"==E.quotePos)for(;i.stack.length>0&&d&&i.OK&&!c;){u=i.stack.pop();if(a[u]){var N=a[u][d];if(void 0!=N&&l(u)){for(var x=N.length-1;x>=0;--x)i.stack.push(N[x]);p(u)}else{i.OK=!1;i.complete=!1;o();i.stack.push(u)}}else if(u==d){if(i.inPrefixDecl)if("PNAME_NS"===u&&E.text.length>0)i.currentPnameNs=E.text.slice(0,-1);else if(void 0!==i.currentPnameNs&&E.text.length>2){i.prefixes[i.currentPnameNs]=E.text.slice(1,-1);i.currentPnameNs=void 0}c=!0;t(u);for(var I=!0,m=i.stack.length;m>0;--m){var L=a[i.stack[m-1]];L&&L.$||(I=!1)}i.complete=I;if(i.storeProperty&&"punc"!=d.cat){i.lastProperty=E.text;i.storeProperty=!1}if(!i.inPrefixDecl&&("PNAME_NS"===d||"PNAME_LN"===d)){var T=E.text.indexOf(":");if(T>=0){var g=E.text.slice(0,T);if(!i.prefixes[g]&&"bif"!==g){i.OK=!1;o();i.errorMsg="Prefix '"+g+"' is not defined"}}}}else{i.OK=!1;i.complete=!1;o()}}if(!c&&i.OK){i.OK=!1;i.complete=!1;o()}i.possibleCurrent.indexOf("a")>=0&&(i.lastPredicateOffset=E.start);i.possibleCurrent=i.possibleNext;i.possibleNext=n(i.stack[i.stack.length-1]);return E.style}function t(e,r){if(e.inLiteral)return 0;if(e.stack.length&&"?[or([verbPath,verbSimple]),objectList]"==e.stack[e.stack.length-1])return e.lastPredicateOffset;var n=0,o=e.stack.length-1;if(/^[\}\]\)]/.test(r)){for(var t=r.substr(0,1);o>=0;--o)if(e.stack[o]==t){--o;break}}else{var s=K[e.stack[o]];if(s){n+=s;--o}}for(;o>=0;--o){var s=z[e.stack[o]];s&&(n+=s)}return n*i.indentUnit}var s=(i.indentUnit,e("./_tokenizer-table.js")),a=s.table,p='<[^<>"`|{}^\\\0- ]*>',l="[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]",E=l+"|_",u="("+E+"|-|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])",c="("+E+"|[0-9])("+E+"|[0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040])*",d="\\?"+c,N="\\$"+c,x="("+l+")((("+u+")|\\.)*("+u+"))?",I="[0-9A-Fa-f]",m="(%"+I+I+")",L="(\\\\[_~\\.\\-!\\$&'\\(\\)\\*\\+,;=/\\?#@%])",T="("+m+"|"+L+")",g="("+E+"|:|[0-9]|"+T+")(("+u+"|\\.|:|"+T+")*("+u+"|:|"+T+"))?",A="_:("+E+"|[0-9])(("+u+"|\\.)*"+u+")?",v="("+x+")?:",S=v+g,h="@[a-zA-Z]+(-[a-zA-Z0-9]+)*",R="[eE][\\+-]?[0-9]+",C="[0-9]+",f="(([0-9]+\\.[0-9]*)|(\\.[0-9]+))",O="(([0-9]+\\.[0-9]*"+R+")|(\\.[0-9]+"+R+")|([0-9]+"+R+"))",y="\\+"+C,P="\\+"+f,_="\\+"+O,D="-"+C,b="-"+f,G="-"+O,M="\\\\[tbnrf\\\\\"']",U=I+"{4}",B="(\\\\u"+U+"|\\\\U00(10|0"+I+")"+U+")",V="'(([^\\x27\\x5C\\x0A\\x0D])|"+M+"|"+B+")*'",k='"(([^\\x22\\x5C\\x0A\\x0D])|'+M+"|"+B+')*"',F={SINGLE:{CAT:"STRING_LITERAL_LONG1",QUOTES:"'''",CONTENTS:"(('|'')?([^'\\\\]|"+M+"|"+B+"))*"},DOUBLE:{CAT:"STRING_LITERAL_LONG2",QUOTES:'"""',CONTENTS:'(("|"")?([^"\\\\]|'+M+"|"+B+"))*"}};for(var w in F)F[w].COMPLETE=F[w].QUOTES+F[w].CONTENTS+F[w].QUOTES;var j={};for(var w in F)j[w]={complete:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].COMPLETE),style:"string"},contents:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].CONTENTS),style:"string"},closing:{name:"STRING_LITERAL_LONG_"+w,regex:new RegExp("^"+F[w].CONTENTS+F[w].QUOTES),style:"string"},quotes:{name:"STRING_LITERAL_LONG_QUOTES_"+w,regex:new RegExp("^"+F[w].QUOTES),style:"string"}};var H="[\\x20\\x09\\x0D\\x0A]",q="#([^\\n\\r]*[\\n\\r]|[^\\n\\r]*$)",W="("+H+"|("+q+"))*",Y="\\("+W+"\\)",Q="\\["+W+"\\]",X=[{name:"WS",regex:new RegExp("^"+H+"+"),style:"ws"},{name:"COMMENT",regex:new RegExp("^"+q),style:"comment"},{name:"IRI_REF",regex:new RegExp("^"+p),style:"variable-3"},{name:"VAR1",regex:new RegExp("^"+d),style:"atom"},{name:"VAR2",regex:new RegExp("^"+N),style:"atom"},{name:"LANGTAG",regex:new RegExp("^"+h),style:"meta"},{name:"DOUBLE",regex:new RegExp("^"+O),style:"number"},{name:"DECIMAL",regex:new RegExp("^"+f),style:"number"},{name:"INTEGER",regex:new RegExp("^"+C),style:"number"},{name:"DOUBLE_POSITIVE",regex:new RegExp("^"+_),style:"number"},{name:"DECIMAL_POSITIVE",regex:new RegExp("^"+P),style:"number"},{name:"INTEGER_POSITIVE",regex:new RegExp("^"+y),style:"number"},{name:"DOUBLE_NEGATIVE",regex:new RegExp("^"+G),style:"number"},{name:"DECIMAL_NEGATIVE",regex:new RegExp("^"+b),style:"number"},{name:"INTEGER_NEGATIVE",regex:new RegExp("^"+D),style:"number"},{name:"STRING_LITERAL1",regex:new RegExp("^"+V),style:"string"},{name:"STRING_LITERAL2",regex:new RegExp("^"+k),style:"string"},{name:"NIL",regex:new RegExp("^"+Y),style:"punc"},{name:"ANON",regex:new RegExp("^"+Q),style:"punc"},{name:"PNAME_LN",regex:new RegExp("^"+S),style:"string-2"},{name:"PNAME_NS",regex:new RegExp("^"+v),style:"string-2"},{name:"BLANK_NODE_LABEL",regex:new RegExp("^"+A),style:"string-2"}],K={"*[,, object]":3,"*[(,),object]":3,"*[(,),objectPath]":3,"*[/,pathEltOrInverse]":2,object:2,objectPath:2,objectList:2,objectListPath:2,storeProperty:2,pathMod:2,"?pathMod":2,propertyListNotEmpty:1,propertyList:1,propertyListPath:1,propertyListPathNotEmpty:1,"?[verb,objectList]":1},z={"}":1,"]":0,")":1,"{":-1,"(":-1};return{token:o,startState:function(e){return{tokenize:o,OK:!0,complete:s.acceptEmpty,errorStartPos:null,errorEndPos:null,queryType:null,possibleCurrent:n(s.startSymbol),possibleNext:n(s.startSymbol),allowVars:!0,allowBnodes:!0,storeProperty:!1,lastProperty:"",inLiteral:!1,stack:[s.startSymbol],lastPredicateOffset:i.indentUnit,prefixes:{}}},indent:t,electricChars:"}])"}});n.defineMIME("application/x-sparql-query","sparql11")},{"./_tokenizer-table.js":2,codemirror:void 0}],4:[function(e,i,r){var n=i.exports=function(){this.words=0;this.prefixes=0;this.children=[]};n.prototype={insert:function(e,i){if(0!=e.length){var r,o,t=this;void 0===i&&(i=0);if(i!==e.length){t.prefixes++;r=e[i];void 0===t.children[r]&&(t.children[r]=new n);o=t.children[r];o.insert(e,i+1)}else t.words++}},remove:function(e,i){if(0!=e.length){var r,n,o=this;void 0===i&&(i=0);if(void 0!==o)if(i!==e.length){o.prefixes--;r=e[i];n=o.children[r];n.remove(e,i+1)}else o.words--}},update:function(e,i){if(0!=e.length&&0!=i.length){this.remove(e);this.insert(i)}},countWord:function(e,i){if(0==e.length)return 0;var r,n,o=this,t=0;void 0===i&&(i=0);if(i===e.length)return o.words;r=e[i];n=o.children[r];void 0!==n&&(t=n.countWord(e,i+1));return t},countPrefix:function(e,i){if(0==e.length)return 0;var r,n,o=this,t=0;void 0===i&&(i=0);if(i===e.length)return o.prefixes;var r=e[i];n=o.children[r];void 0!==n&&(t=n.countPrefix(e,i+1));return t},find:function(e){return 0!=e.length&&this.countWord(e)>0},getAllWords:function(e){var i,r,n=this,o=[];void 0===e&&(e="");if(void 0===n)return[];n.words>0&&o.push(e);for(i in n.children){r=n.children[i];o=o.concat(r.getAllWords(e+i))}return o},autoComplete:function(e,i){var r,n,o=this;if(0==e.length)return void 0===i?o.getAllWords(e):[];void 0===i&&(i=0);r=e[i];n=o.children[r];return void 0===n?[]:i===e.length-1?n.getAllWords(e):n.autoComplete(e,i+1)}}},{}],5:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(e){var i=e.getWrapperElement();e.state.fullScreenRestore={scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset,width:i.style.width,height:i.style.height};i.style.width="";i.style.height="auto";i.className+=" CodeMirror-fullscreen";document.documentElement.style.overflow="hidden";e.refresh()}function r(e){var i=e.getWrapperElement();i.className=i.className.replace(/\s*CodeMirror-fullscreen\b/,"");document.documentElement.style.overflow="";var r=e.state.fullScreenRestore;i.style.width=r.width;i.style.height=r.height;window.scrollTo(r.scrollLeft,r.scrollTop);e.refresh()}e.defineOption("fullScreen",!1,function(n,o,t){t==e.Init&&(t=!1);!t!=!o&&(o?i(n):r(n))})})},{codemirror:void 0}],6:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){function i(e,i,n,o){var t=e.getLineHandle(i.line),p=i.ch-1,l=p>=0&&a[t.text.charAt(p)]||a[t.text.charAt(++p)];if(!l)return null;var E=">"==l.charAt(1)?1:-1;if(n&&E>0!=(p==i.ch))return null;var u=e.getTokenTypeAt(s(i.line,p+1)),c=r(e,s(i.line,p+(E>0?1:0)),E,u||null,o);return null==c?null:{from:s(i.line,p),to:c&&c.pos,match:c&&c.ch==l.charAt(0),forward:E>0}}function r(e,i,r,n,o){for(var t=o&&o.maxScanLineLength||1e4,p=o&&o.maxScanLines||1e3,l=[],E=o&&o.bracketRegex?o.bracketRegex:/[(){}[\]]/,u=r>0?Math.min(i.line+p,e.lastLine()+1):Math.max(e.firstLine()-1,i.line-p),c=i.line;c!=u;c+=r){var d=e.getLine(c);if(d){var N=r>0?0:d.length-1,x=r>0?d.length:-1;if(!(d.length>t)){c==i.line&&(N=i.ch-(r<0?1:0));for(;N!=x;N+=r){var I=d.charAt(N);if(E.test(I)&&(void 0===n||e.getTokenTypeAt(s(c,N+1))==n)){var m=a[I];if(">"==m.charAt(1)==r>0)l.push(I);else{if(!l.length)return{pos:s(c,N),ch:I};l.pop()}}}}}}return c-r!=(r>0?e.lastLine():e.firstLine())&&null}function n(e,r,n){for(var o=e.state.matchBrackets.maxHighlightLineLength||1e3,a=[],p=e.listSelections(),l=0;l",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},p=null;e.defineOption("matchBrackets",!1,function(i,r,n){if(n&&n!=e.Init){i.off("cursorActivity",o);if(p){p();p=null}}if(r){i.state.matchBrackets="object"==typeof r?r:{};i.on("cursorActivity",o)}});e.defineExtension("matchBrackets",function(){n(this,!0)});e.defineExtension("findMatchingBracket",function(e,r,n){return i(this,e,r,n)});e.defineExtension("scanForBracket",function(e,i,n,o){return r(this,e,i,n,o)})})},{codemirror:void 0}],7:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";e.registerHelper("fold","brace",function(i,r){function n(n){for(var a=r.ch,p=0;;){var l=a<=0?-1:s.lastIndexOf(n,a-1);if(l!=-1){if(1==p&&li.lastLine())return null;var n=i.getTokenAt(e.Pos(r,1));/\S/.test(n.string)||(n=i.getTokenAt(e.Pos(r,n.end+1)));if("keyword"!=n.type||"import"!=n.string)return null;for(var o=r,t=Math.min(i.lastLine(),r+10);o<=t;++o){var s=i.getLine(o),a=s.indexOf(";");if(a!=-1)return{startCh:n.end,end:e.Pos(o,a)}}}var o,t=r.line,s=n(t);if(!s||n(t-1)||(o=n(t-2))&&o.end.line==t-1)return null;for(var a=s.end;;){var p=n(a.line+1);if(null==p)break;a=p.end}return{from:i.clipPos(e.Pos(t,s.startCh+1)),to:a}});e.registerHelper("fold","include",function(i,r){function n(r){if(ri.lastLine())return null;var n=i.getTokenAt(e.Pos(r,1));/\S/.test(n.string)||(n=i.getTokenAt(e.Pos(r,n.end+1)));return"meta"==n.type&&"#include"==n.string.slice(0,8)?n.start+8:void 0}var o=r.line,t=n(o);if(null==t||null!=n(o-1))return null;for(var s=o;;){var a=n(s+1);if(null==a)break;++s}return{from:e.Pos(o,t+1),to:i.clipPos(e.Pos(s))}})})},{codemirror:void 0}],8:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(i,o,t,s){function a(e){var r=p(i,o);if(!r||r.to.line-r.from.linei.firstLine();){o=e.Pos(o.line-1,0);E=a(!1)}if(E&&!E.cleared&&"unfold"!==s){var u=r(i,t);e.on(u,"mousedown",function(i){c.clear();e.e_preventDefault(i)});var c=i.markText(E.from,E.to,{replacedWith:u,clearOnEnter:n(i,t,"clearOnEnter"),__isFold:!0});c.on("clear",function(r,n){e.signal(i,"unfold",i,r,n)});e.signal(i,"fold",i,E.from,E.to)}}function r(e,i){var r=n(e,i,"widget");if("string"==typeof r){var o=document.createTextNode(r);r=document.createElement("span");r.appendChild(o);r.className="CodeMirror-foldmarker"}return r}function n(e,i,r){if(i&&void 0!==i[r])return i[r];var n=e.options.foldOptions;return n&&void 0!==n[r]?n[r]:o[r]}e.newFoldFunction=function(e,r){return function(n,o){i(n,o,{rangeFinder:e,widget:r})}};e.defineExtension("foldCode",function(e,r,n){i(this,e,r,n)});e.defineExtension("isFolded",function(e){for(var i=this.findMarksAt(e),r=0;r=a&&(r=o(t.indicatorOpen))}e.setGutterMarker(i,t.gutter,r);++s})}function s(e){var i=e.getViewport(),r=e.state.foldGutter;if(r){e.operation(function(){t(e,i.from,i.to)});r.from=i.from;r.to=i.to}}function a(e,i,r){var o=e.state.foldGutter;if(o){var t=o.options;if(r==t.gutter){var s=n(e,i);s?s.clear():e.foldCode(u(i,0),t.rangeFinder)}}}function p(e){var i=e.state.foldGutter;if(i){var r=i.options;i.from=i.to=0;clearTimeout(i.changeUpdate);i.changeUpdate=setTimeout(function(){s(e)},r.foldOnChangeTimeSpan||600)}}function l(e){var i=e.state.foldGutter;if(i){var r=i.options;clearTimeout(i.changeUpdate);i.changeUpdate=setTimeout(function(){var r=e.getViewport();i.from==i.to||r.from-i.to>20||i.from-r.to>20?s(e):e.operation(function(){if(r.fromi.to){t(e,i.to,r.to);i.to=r.to}})},r.updateViewportTimeSpan||400)}}function E(e,i){var r=e.state.foldGutter;if(r){var n=i.line;n>=r.from&&n=e.max)){e.ch=0;e.text=e.cm.getLine(++e.line);return!0}}function t(e){if(!(e.line<=e.min)){e.text=e.cm.getLine(--e.line);e.ch=e.text.length;return!0}}function s(e){for(;;){var i=e.text.indexOf(">",e.ch);if(i==-1){if(o(e))continue;return}if(n(e,i+1)){var r=e.text.lastIndexOf("/",i),t=r>-1&&!/\S/.test(e.text.slice(r+1,i));e.ch=i+1;return t?"selfClose":"regular"}e.ch=i+1}}function a(e){for(;;){var i=e.ch?e.text.lastIndexOf("<",e.ch-1):-1;if(i==-1){if(t(e))continue;return}if(n(e,i+1)){x.lastIndex=i;e.ch=i;var r=x.exec(e.text);if(r&&r.index==i)return r}else e.ch=i}}function p(e){for(;;){x.lastIndex=e.ch;var i=x.exec(e.text);if(!i){if(o(e))continue;return}if(n(e,i.index+1)){e.ch=i.index+i[0].length;return i}e.ch=i.index+1}}function l(e){for(;;){var i=e.ch?e.text.lastIndexOf(">",e.ch-1):-1;if(i==-1){if(t(e))continue;return}if(n(e,i+1)){var r=e.text.lastIndexOf("/",i),o=r>-1&&!/\S/.test(e.text.slice(r+1,i));e.ch=i+1;return o?"selfClose":"regular"}e.ch=i}}function E(e,i){for(var r=[];;){var n,o=p(e),t=e.line,a=e.ch-(o?o[0].length:0);if(!o||!(n=s(e)))return;if("selfClose"!=n)if(o[1]){for(var l=r.length-1;l>=0;--l)if(r[l]==o[2]){r.length=l;break}if(l<0&&(!i||i==o[2]))return{tag:o[2],from:c(t,a),to:c(e.line,e.ch)}}else r.push(o[2])}}function u(e,i){for(var r=[];;){var n=l(e);if(!n)return;if("selfClose"!=n){var o=e.line,t=e.ch,s=a(e);if(!s)return;if(s[1])r.push(s[2]);else{for(var p=r.length-1;p>=0;--p)if(r[p]==s[2]){r.length=p;break}if(p<0&&(!i||i==s[2]))return{tag:s[2],from:c(e.line,e.ch),to:c(o,t)}}}else a(e)}}var c=e.Pos,d="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=d+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",x=new RegExp("<(/?)(["+d+"]["+N+"]*)","g");e.registerHelper("fold","xml",function(e,i){for(var n=new r(e,i.line,0);;){var o,t=p(n);if(!t||n.line!=i.line||!(o=s(n)))return;if(!t[1]&&"selfClose"!=o){var a=c(n.line,n.ch),l=E(n,t[2]);return l&&{from:a,to:l.from}}}});e.findMatchingTag=function(e,n,o){var t=new r(e,n.line,n.ch,o);if(t.text.indexOf(">")!=-1||t.text.indexOf("<")!=-1){var p=s(t),l=p&&c(t.line,t.ch),d=p&&a(t);if(p&&d&&!(i(t,n)>0)){var N={from:c(t.line,t.ch),to:l,tag:d[2]};if("selfClose"==p)return{open:N,close:null,at:"open"};if(d[1])return{open:u(t,d[2]),close:N,at:"close"};t=new r(e,l.line,l.ch,o);return{open:N,close:E(t,d[2]),at:"open"}}}};e.findEnclosingTag=function(e,i,n){for(var o=new r(e,i.line,i.ch,n);;){var t=u(o);if(!t)break;var s=new r(e,i.line,i.ch,n),a=E(s,t.tag);if(a)return{open:t,close:a}}};e.scanForClosingTag=function(e,i,n,o){var t=new r(e,i.line,i.ch,o?{from:0,to:o}:null);return E(t,n)}})},{codemirror:void 0}],11:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";function i(e,i){this.cm=e;this.options=i;this.widget=null;this.debounce=0;this.tick=0;this.startPos=this.cm.getCursor("start");this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var r=this;e.on("cursorActivity",this.activityFunc=function(){r.cursorActivity()})}function r(i,r){var n=e.cmpPos(r.from,i.from);return n>0&&i.to.ch-i.from.ch!=r.to.ch-r.from.ch}function n(e,i,r){var n=e.options.hintOptions,o={};for(var t in x)o[t]=x[t];if(n)for(var t in n)void 0!==n[t]&&(o[t]=n[t]);if(r)for(var t in r)void 0!==r[t]&&(o[t]=r[t]);o.hint.resolve&&(o.hint=o.hint.resolve(e,i));return o}function o(e){return"string"==typeof e?e:e.text}function t(e,i){function r(e,r){var o;o="string"!=typeof r?function(e){return r(e,i)}:n.hasOwnProperty(r)?n[r]:r;t[e]=o}var n={Up:function(){i.moveFocus(-1)},Down:function(){i.moveFocus(1)},PageUp:function(){i.moveFocus(-i.menuSize()+1,!0)},PageDown:function(){i.moveFocus(i.menuSize()-1,!0)},Home:function(){i.setFocus(0)},End:function(){i.setFocus(i.length-1)},Enter:i.pick,Tab:i.pick,Esc:i.close},o=e.options.customKeys,t=o?{}:n;if(o)for(var s in o)o.hasOwnProperty(s)&&r(s,o[s]);var a=e.options.extraKeys;if(a)for(var s in a)a.hasOwnProperty(s)&&r(s,a[s]);return t}function s(e,i){for(;i&&i!=e;){if("LI"===i.nodeName.toUpperCase()&&i.parentNode==e)return i;i=i.parentNode}}function a(i,r){this.completion=i;this.data=r;this.picked=!1;var n=this,a=i.cm,p=this.hints=document.createElement("ul");p.className="CodeMirror-hints";this.selectedHint=r.selectedHint||0;for(var l=r.list,E=0;Ep.clientHeight+1,R=a.getScrollInfo();if(S>0){var C=v.bottom-v.top,f=I.top-(I.bottom-v.top);if(f-C>0){p.style.top=(L=I.top-C)+"px";T=!1}else if(C>A){p.style.height=A-5+"px";p.style.top=(L=I.bottom-v.top)+"px";var O=a.getCursor();if(r.from.ch!=O.ch){I=a.cursorCoords(O);p.style.left=(m=I.left)+"px";v=p.getBoundingClientRect()}}}var y=v.right-g;if(y>0){if(v.right-v.left>g){p.style.width=g-5+"px";y-=v.right-v.left-g}p.style.left=(m=I.left-y)+"px"}if(h)for(var P=p.firstChild;P;P=P.nextSibling)P.style.paddingRight=a.display.nativeBarWidth+"px";a.addKeyMap(this.keyMap=t(i,{moveFocus:function(e,i){n.changeActive(n.selectedHint+e,i)},setFocus:function(e){n.changeActive(e)},menuSize:function(){return n.screenAmount()},length:l.length,close:function(){i.close()},pick:function(){n.pick()},data:r}));if(i.options.closeOnUnfocus){var _;a.on("blur",this.onBlur=function(){_=setTimeout(function(){i.close()},100)});a.on("focus",this.onFocus=function(){clearTimeout(_)})}a.on("scroll",this.onScroll=function(){var e=a.getScrollInfo(),r=a.getWrapperElement().getBoundingClientRect(),n=L+R.top-e.top,o=n-(window.pageYOffset||(document.documentElement||document.body).scrollTop);T||(o+=p.offsetHeight);if(o<=r.top||o>=r.bottom)return i.close();p.style.top=n+"px";p.style.left=m+R.left-e.left+"px"});e.on(p,"dblclick",function(e){var i=s(p,e.target||e.srcElement);if(i&&null!=i.hintId){n.changeActive(i.hintId);n.pick()}});e.on(p,"click",function(e){var r=s(p,e.target||e.srcElement);if(r&&null!=r.hintId){n.changeActive(r.hintId);i.options.completeOnSingleClick&&n.pick()}});e.on(p,"mousedown",function(){setTimeout(function(){a.focus()},20)});e.signal(r,"select",l[0],p.firstChild);return!0}function p(e,i){if(!e.somethingSelected())return i;for(var r=[],n=0;n0?i(e):n(o+1)})}var t=p(e,o);n(0)};t.async=!0;t.supportsSelection=!0;return t}return(n=i.getHelper(i.getCursor(),"hintWords"))?function(i){return e.hint.fromList(i,{words:n})}:e.hint.anyword?function(i,r){return e.hint.anyword(i,r)}:function(){}}var u="CodeMirror-hint",c="CodeMirror-hint-active";e.showHint=function(e,i,r){if(!i)return e.showHint(r);r&&r.async&&(i.async=!0);var n={hint:i};if(r)for(var o in r)n[o]=r[o];return e.showHint(n)};e.defineExtension("showHint",function(r){r=n(this,this.getCursor("start"),r);var o=this.listSelections();if(!(o.length>1)){if(this.somethingSelected()){ +if(!r.hint.supportsSelection)return;for(var t=0;t=this.data.list.length?i=r?this.data.list.length-1:0:i<0&&(i=r?0:this.data.list.length-1);if(this.selectedHint!=i){var n=this.hints.childNodes[this.selectedHint];n.className=n.className.replace(" "+c,"");n=this.hints.childNodes[this.selectedHint=i];n.className+=" "+c;n.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=n.offsetTop+n.offsetHeight-this.hints.clientHeight+3);e.signal(this.data,"select",this.data.list[this.selectedHint],n)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}};e.registerHelper("hint","auto",{resolve:E});e.registerHelper("hint","fromList",function(i,r){var n=i.getCursor(),o=i.getTokenAt(n),t=e.Pos(n.line,o.end);if(o.string&&/\w/.test(o.string[o.string.length-1]))var s=o.string,a=e.Pos(n.line,o.start);else var s="",a=t;for(var p=[],l=0;l,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};e.defineOption("hintOptions",null)})},{codemirror:void 0}],12:[function(i,r,n){(function(o){"object"==typeof n&&"object"==typeof r?o(function(){try{return i("codemirror")}catch(e){return window.CodeMirror}}()):"function"==typeof e&&e.amd?e(["../../lib/codemirror"],o):o(CodeMirror)})(function(e){"use strict";e.runMode=function(i,r,n,o){var t=e.getMode(e.defaults,r),s=/MSIE \d/.test(navigator.userAgent),a=s&&(null==document.documentMode||document.documentMode<9);if(n.appendChild){var p=o&&o.tabSize||e.defaults.tabSize,l=n,E=0;l.innerHTML="";n=function(e,i){if("\n"!=e){for(var r="",n=0;;){var o=e.indexOf("\t",n);if(o==-1){r+=e.slice(n);E+=e.length-n;break}E+=o-n;r+=e.slice(n,o);var t=p-E%p;E+=t;for(var s=0;s-1){E=r(p,l,E);return{from:n(t.line,E),to:n(t.line,E+s.length)}}}else{var p=e.getLine(t.line).slice(t.ch),l=a(p),E=l.indexOf(i);if(E>-1){E=r(p,l,E)+t.ch;return{from:n(t.line,E),to:n(t.line,E+s.length)}}}}:this.matches=function(){};else{var l=s.split("\n");this.matches=function(i,r){var o=p.length-1;if(i){if(r.line-(p.length-1)=1;--E,--s)if(p[E]!=a(e.getLine(s)))return;var u=e.getLine(s),c=u.length-l[0].length;if(a(u.slice(c))!=p[0])return;return{from:n(s,c),to:t}}if(!(r.line+(p.length-1)>e.lastLine())){var u=e.getLine(r.line),c=u.length-l[0].length;if(a(u.slice(c))==p[0]){for(var d=n(r.line,c),s=r.line+1,E=1;Er))return n;--n}}}var n=e.Pos;i.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(e){function i(e){var i=n(e,0);r.pos={from:i,to:i};r.atOccurrence=!1;return!1}for(var r=this,o=this.doc.clipPos(e?this.pos.from:this.pos.to);;){if(this.pos=this.matches(e,o)){this.atOccurrence=!0;return this.pos.match||!0}if(e){if(!o.line)return i(0);o=n(o.line-1,this.doc.getLine(o.line-1).length)}else{var t=this.doc.lineCount();if(o.line==t-1)return i(t);o=n(o.line+1,0)}}},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(i,r){if(this.atOccurrence){var o=e.splitLines(i);this.doc.replaceRange(o,this.pos.from,this.pos.to,r);this.pos.to=n(this.pos.from.line+o.length-1,o[o.length-1].length+(1==o.length?this.pos.from.ch:0))}}};e.defineExtension("getSearchCursor",function(e,r,n){return new i(this.doc,e,r,n)});e.defineDocExtension("getSearchCursor",function(e,r,n){return new i(this,e,r,n)});e.defineExtension("selectMatches",function(i,r){for(var n=[],o=this.getSearchCursor(i,this.getCursor("from"),r);o.findNext()&&!(e.cmpPos(o.to(),this.getCursor("to"))>0);)n.push({anchor:o.from(),head:o.to()});n.length&&this.setSelections(n,0)})})},{codemirror:void 0}],14:[function(i,r,n){(function(i){"use strict";(function(i,o){"function"==typeof e&&e.amd?e([],o):"object"==typeof n?r.exports=o():i.store=o()})(this,function(){function e(){try{return s in o&&o[s]}catch(e){return!1}}var r,n={},o="undefined"!=typeof window?window:i,t=o.document,s="localStorage",a="script";n.disabled=!1;n.version="1.3.20";n.set=function(e,i){};n.get=function(e,i){};n.has=function(e){return void 0!==n.get(e)};n.remove=function(e){};n.clear=function(){};n.transact=function(e,i,r){if(null==r){r=i;i=null}null==i&&(i={});var o=n.get(e,i);r(o);n.set(e,o)};n.getAll=function(){};n.forEach=function(){};n.serialize=function(e){return JSON.stringify(e)};n.deserialize=function(e){if("string"==typeof e)try{return JSON.parse(e)}catch(i){return e||void 0}};if(e()){r=o[s];n.set=function(e,i){if(void 0===i)return n.remove(e);r.setItem(e,n.serialize(i));return i};n.get=function(e,i){var o=n.deserialize(r.getItem(e));return void 0===o?i:o};n.remove=function(e){r.removeItem(e)};n.clear=function(){r.clear()};n.getAll=function(){var e={};n.forEach(function(i,r){e[i]=r});return e};n.forEach=function(e){for(var i=0;idocument.w=window');l.close();p=l.w.frames[0].document;r=p.createElement("div")}catch(E){r=t.createElement("div");p=t.body}var u=function(e){return function(){var i=Array.prototype.slice.call(arguments,0);i.unshift(r);p.appendChild(r);r.addBehavior("#default#userData");r.load(s);var o=e.apply(n,i);p.removeChild(r);return o}},c=new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]","g"),d=function(e){return e.replace(/^d/,"___$&").replace(c,"___")};n.set=u(function(e,i,r){i=d(i);if(void 0===r)return n.remove(i);e.setAttribute(i,n.serialize(r));e.save(s);return r});n.get=u(function(e,i,r){i=d(i);var o=n.deserialize(e.getAttribute(i));return void 0===o?r:o});n.remove=u(function(e,i){i=d(i);e.removeAttribute(i);e.save(s)});n.clear=u(function(e){var i=e.XMLDocument.documentElement.attributes;e.load(s);for(var r=i.length-1;r>=0;r--)e.removeAttribute(i[r].name);e.save(s)});n.getAll=function(e){var i={};n.forEach(function(e,r){i[e]=r});return i};n.forEach=u(function(e,i){for(var r,o=e.XMLDocument.documentElement.attributes,t=0;r=o[t];++t)i(r.name,n.deserialize(e.getAttribute(r.name)))})}try{var N="__storejs__";n.set(N,N);n.get(N)!=N&&(n.disabled=!0);n.remove(N)}catch(E){n.disabled=!0}n.enabled=!n.disabled;return n})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],15:[function(e,i,r){i.exports={_args:[[{raw:"yasgui-utils@^1.6.0",scope:null,escapedName:"yasgui-utils",name:"yasgui-utils",rawSpec:"^1.6.0",spec:">=1.6.0 <2.0.0",type:"range"},"/home/lrd900/yasgui/yasqe"]],_from:"yasgui-utils@>=1.6.0 <2.0.0",_id:"yasgui-utils@1.6.0",_inCache:!0,_installable:!0,_location:"/yasgui-utils",_npmUser:{name:"laurens.rietveld",email:"laurens.rietveld@gmail.com"},_npmVersion:"1.4.3",_phantomChildren:{},_requested:{raw:"yasgui-utils@^1.6.0",scope:null,escapedName:"yasgui-utils",name:"yasgui-utils",rawSpec:"^1.6.0",spec:">=1.6.0 <2.0.0",type:"range"},_requiredBy:["/"],_resolved:"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz",_shasum:"bcb9091109c233e3e82737c94c202e6512389c47",_shrinkwrap:null,_spec:"yasgui-utils@^1.6.0",_where:"/home/lrd900/yasgui/yasqe",author:{name:"Laurens Rietveld"},bugs:{url:"https://github.com/YASGUI/Utils/issues"},dependencies:{store:"^1.3.14"},description:"Utils for YASGUI libs",devDependencies:{},directories:{},dist:{shasum:"bcb9091109c233e3e82737c94c202e6512389c47",tarball:"https://registry.npmjs.org/yasgui-utils/-/yasgui-utils-1.6.0.tgz"},homepage:"https://github.com/YASGUI/Utils",licenses:[{type:"MIT",url:"http://yasgui.github.io/license.txt"}],main:"src/main.js",maintainers:[{name:"laurens.rietveld",email:"laurens.rietveld@gmail.com"}],name:"yasgui-utils",optionalDependencies:{},readme:"ERROR: No README data found!",repository:{type:"git",url:"git://github.com/YASGUI/Utils.git"},version:"1.6.0"}},{}],16:[function(e,i,r){window.console=window.console||{log:function(){}};i.exports={storage:e("./storage.js"),svg:e("./svg.js"),version:{"yasgui-utils":e("../package.json").version},nestedExists:function(e){for(var i=Array.prototype.slice.call(arguments,1),r=0;ri.exp?null:i.val:null}return null}}},{store:14}],18:[function(e,i,r){i.exports={draw:function(e,r){if(e){var n=i.exports.getElement(r);n&&(e.append?e.append(n):e.appendChild(n))}},getElement:function(e){if(e&&0==e.indexOf("0){var t=n(i.getWrapperElement()).find(".CodeMirror-vscrollbar"),s=0;t.is(":visible")&&(s=t.outerWidth());e.forEach(function(e){e.css("right",s)})}});var E=function(e,r){l[e.name]=new s;for(var n=0;n0&&E(n,e)};if(n.get instanceof Array)s(n.get);else{var a=null,l=o.getPersistencyId(i,n.persistent);l&&(a=t.storage.get(l));a&&a.length>0?s(a):n.get instanceof Function&&(n.async?n.get(null,s):s(n.get()))}}},c=function(r){if(!i.somethingSelected()){var o=function(n){if(r&&(!n.autoShow||!n.bulk&&n.async))return!1;var o={closeCharacters:/(?=a)b/,completeSingle:!1};!n.bulk&&n.async&&(o.async=!0);var t=function(e,i){return d(n,i)};e.showHint(i,t,o);return!0};for(var t in p)if(n.inArray(t,i.options.autocompleters)!=-1){var s=p[t];if(s.isValidCompletionPosition)if(s.isValidCompletionPosition()){if(!s.callbacks||!s.callbacks.validPosition||s.callbacks.validPosition(i,s)!==!1){var a=o(s);if(a)break}}else s.callbacks&&s.callbacks.invalidPosition&&s.callbacks.invalidPosition(i,s)}}},d=function(e,r){var n=function(i){var r=i.autocompletionString||i.string,n=[];if(l[e.name])n=l[e.name].autoComplete(r);else if("function"==typeof e.get&&0==e.async)n=e.get(r);else if("object"==typeof e.get)for(var o=r.length,t=0;t
"));r[i.name].show().text("Press "+(navigator.userAgent.indexOf("Mac OS X")!=-1?"CMD":"CTRL")+" - to autocomplete").appendTo(n(e.getWrapperElement()))}},hide:function(e,i){r[i.name]&&r[i.name].hide()}},autoComplete:c,getTrie:function(e){return"string"==typeof e?l[e]:l[e.name]}}};var a=function(e,i,r){r.text!=e.getTokenAt(e.getCursor()).string&&e.replaceRange(r.text,i.from,i.to)}},{"../../lib/trie.js":4,"../main.js":30,"../utils.js":36,jquery:void 0,"yasgui-utils":16}],21:[function(e,i,r){"use strict";(function(){try{return e("jquery")}catch(i){return window.jQuery}})();i.exports=function(r,n){return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(r)},get:function(i,n){return e("./utils").fetchFromLov(r,this,i,n)},preProcessToken:function(e){return i.exports.preProcessToken(r,e)},postProcessToken:function(e,n){return i.exports.postProcessToken(r,e,n)},async:!0,bulk:!1,autoShow:!1,persistent:n,callbacks:{validPosition:r.autocompleters.notifications.show,invalidPosition:r.autocompleters.notifications.hide}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCompleteToken();if(0==i.string.indexOf("?"))return!1;var r=e.getCursor(),n=e.getPreviousNonWsToken(r.line,i);return"a"==n.string||("rdf:type"==n.string||("rdfs:domain"==n.string||"rdfs:range"==n.string))};i.exports.preProcessToken=function(i,r){return e("./utils.js").preprocessResourceTokenForCompletion(i,r)};i.exports.postProcessToken=function(i,r,n){return e("./utils.js").postprocessResourceTokenForCompletion(i,r,n)}},{"./utils":24,"./utils.js":24,jquery:void 0}],22:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o={"string-2":"prefixed",atom:"var"};i.exports=function(e,r){e.on("change",function(){i.exports.appendPrefixIfNeeded(e,r)});return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(e)},get:function(e,r){n.get(i.exports.fetchFrom,function(e){var i=[];for(var n in e)if("bif"!=n){var o=n+": <"+e[n]+">";i.push(o)}i.sort();r(i)})},preProcessToken:function(r){return i.exports.preprocessPrefixTokenForCompletion(e,r)},async:!0,bulk:!0,autoShow:!0,persistent:r,callbacks:{pick:function(){e.collapsePrefixes(!1)}}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCursor(),r=e.getTokenAt(i);if(e.getLine(i.line).length>i.ch)return!1;"ws"!=r.type&&(r=e.getCompleteToken());if(0==!r.string.indexOf("a")&&n.inArray("PNAME_NS",r.state.possibleCurrent)==-1)return!1;var o=e.getPreviousNonWsToken(i.line,r);return!(!o||"PREFIX"!=o.string.toUpperCase())};i.exports.preprocessPrefixTokenForCompletion=function(e,i){var r=e.getPreviousNonWsToken(e.getCursor().line,i);r&&r.string&&":"==r.string.slice(-1)&&(i={start:r.start,end:i.end,string:r.string+" "+i.string,state:i.state});return i};i.exports.appendPrefixIfNeeded=function(e,i){if(e.autocompleters.getTrie(i)&&e.options.autocompleters&&e.options.autocompleters.indexOf(i)!=-1){var r=e.getCursor(),n=e.getTokenAt(r);if("prefixed"==o[n.type]){var t=n.string.indexOf(":");if(t!==-1){var s=e.getPreviousNonWsToken(r.line,n).string.toUpperCase(),a=e.getTokenAt({line:r.line,ch:n.start});if("PREFIX"!=s&&("ws"==a.type||null==a.type)){var p=n.string.substring(0,t+1),l=e.getPrefixesFromQuery();if(null==l[p.slice(0,-1)]){var E=e.autocompleters.getTrie(i).autoComplete(p);E.length>0&&e.addPrefixes(E[0])}}}}}};i.exports.fetchFrom=(0===window.location.protocol.indexOf("http")?"//":"http://")+"prefix.cc/popular/all.file.json"},{jquery:void 0}],23:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}();i.exports=function(r,n){return{isValidCompletionPosition:function(){return i.exports.isValidCompletionPosition(r)},get:function(i,n){return e("./utils").fetchFromLov(r,this,i,n)},preProcessToken:function(e){return i.exports.preProcessToken(r,e)},postProcessToken:function(e,n){return i.exports.postProcessToken(r,e,n)},async:!0,bulk:!1,autoShow:!1,persistent:n,callbacks:{validPosition:r.autocompleters.notifications.show,invalidPosition:r.autocompleters.notifications.hide}}};i.exports.isValidCompletionPosition=function(e){var i=e.getCompleteToken();if(0==i.string.length)return!1;if(0==i.string.indexOf("?"))return!1;if(n.inArray("a",i.state.possibleCurrent)>=0)return!0;var r=e.getCursor(),o=e.getPreviousNonWsToken(r.line,i);return"rdfs:subPropertyOf"==o.string};i.exports.preProcessToken=function(i,r){return e("./utils.js").preprocessResourceTokenForCompletion(i,r)};i.exports.postProcessToken=function(i,r,n){return e("./utils.js").postprocessResourceTokenForCompletion(i,r,n)}},{"./utils":24,"./utils.js":24,jquery:void 0}],24:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=(e("./utils.js"),e("yasgui-utils")),t=function(e,i){var r=e.getPrefixesFromQuery();if(0==!i.string.indexOf("<")){i.tokenPrefix=i.string.substring(0,i.string.indexOf(":")+1);null!=r[i.tokenPrefix.slice(0,-1)]&&(i.tokenPrefixUri=r[i.tokenPrefix.slice(0,-1)])}i.autocompletionString=i.string.trim();if(0==!i.string.indexOf("<")&&i.string.indexOf(":")>-1)for(var n in r)if(i.tokenPrefix===n+":"){i.autocompletionString=r[n];i.autocompletionString+=i.string.substring(n.length+1);break}0==i.autocompletionString.indexOf("<")&&(i.autocompletionString=i.autocompletionString.substring(1));i.autocompletionString.indexOf(">",i.length-1)!==-1&&(i.autocompletionString=i.autocompletionString.substring(0,i.autocompletionString.length-1));return i},s=function(e,i,r){r=i.tokenPrefix&&i.autocompletionString&&i.tokenPrefixUri?i.tokenPrefix+r.substring(i.tokenPrefixUri.length):"<"+r+">";return r},a=0===window.location.protocol.indexOf("http")?"//":"http://",p=function(i,r,t,s){if(!t||!t.string||0==t.string.trim().length){i.autocompleters.notifications.getEl(r).empty().append("Nothing to autocomplete yet!");return!1}var p=50,l={q:t.autocompletionString,page:1};"classes"==r.name?l.type="class":l.type="property";var E=[],u="",c=function(){u=a+"lov.okfn.org/dataset/lov/api/v2/autocomplete/terms?"+n.param(l)};c();var d=function(){l.page++;c()},N=function(){n.get(u,function(e){for(var o=0;o0?E.push(e.results[o].uri[0]):E.push(e.results[o].uri);if(E.length0?i.autocompleters.notifications.hide(i,r):i.autocompleters.notifications.getEl(r).text("0 matches found...");s(E)}}).fail(function(e,n,o){i.autocompleters.notifications.getEl(r).empty().append("Failed fetching suggestions..")})};i.autocompleters.notifications.getEl(r).empty().append(n("Fetchting autocompletions  ")).append(n(o.svg.getElement(e("../imgs.js").loader)).addClass("notificationLoader"));N()};i.exports={fetchFromLov:p,preprocessResourceTokenForCompletion:t,postprocessResourceTokenForCompletion:s}},{"../imgs.js":29,"./utils.js":24,jquery:void 0,"yasgui-utils":16}],25:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}();i.exports=function(e){return{isValidCompletionPosition:function(){var i=e.getTokenAt(e.getCursor());if("ws"!=i.type){i=e.getCompleteToken(i);if(i&&0==i.string.indexOf("?"))return!0}return!1},get:function(i){if(0==i.trim().length)return[];var r={};n(e.getWrapperElement()).find(".cm-atom").each(function(){var e=this.innerHTML;if(0==e.indexOf("?")){var o=n(this).next(),t=o.attr("class");t&&o.attr("class").indexOf("cm-atom")>=0&&(e+=o.text());if(e.length<=1)return;if(0!==e.indexOf(i))return;if(e==i)return;r[e]=!0}});var o=[];for(var t in r)o.push(t);o.sort();return o},async:!1,bulk:!1,autoShow:!0}}},{jquery:void 0}],26:[function(e,i,r){var n=e("./sparql.js"),o=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),t=function(e){return"'"+e+"'"};i.exports={createCurlString:function(e,i){var r=n.getAjaxConfig(e,i),s=r.url;if(0!==r.url.indexOf("http")){var s=window.location.protocol+"//"+window.location.host;s+=0===r.url.indexOf("/")?r.url:window.location.pathname+r.url}var a=["curl",s,"-X",e.options.sparql.requestMethod];"POST"==e.options.sparql.requestMethod&&a.push("--data "+t(o.param(r.data)));for(var p in r.headers)a.push("-H "+t(p+": "+r.headers[p]));return a.join(" ")}}},{"./sparql.js":33,jquery:void 0}],27:[function(e,i,r){var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=e("./main.js");o.defaults=n.extend(!0,{},o.defaults,{mode:"sparql11",value:"PREFIX rdf: \nPREFIX rdfs: \nSELECT * WHERE {\n ?sub ?pred ?obj .\n} \nLIMIT 10",highlightSelectionMatches:{showToken:/\w/},tabMode:"indent",lineNumbers:!0,lineWrapping:!0,backdrop:!1,foldGutter:{rangeFinder:new o.fold.combine(o.fold.brace,o.fold.prefix)},collapsePrefixesOnLoad:!1,gutters:["gutterErrorBar","CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:!0,fixedGutter:!0,syntaxErrorCheck:!0,extraKeys:{"Ctrl-Space":o.autoComplete,"Cmd-Space":o.autoComplete,"Ctrl-D":o.deleteLine,"Ctrl-K":o.deleteLine,"Shift-Ctrl-K":o.deleteLine,"Cmd-D":o.deleteLine,"Cmd-K":o.deleteLine,"Ctrl-/":o.commentLines,"Cmd-/":o.commentLines,"Ctrl-Alt-Down":o.copyLineDown,"Ctrl-Alt-Up":o.copyLineUp,"Cmd-Alt-Down":o.copyLineDown,"Cmd-Alt-Up":o.copyLineUp,"Shift-Ctrl-F":o.doAutoFormat,"Shift-Cmd-F":o.doAutoFormat,"Ctrl-]":o.indentMore,"Cmd-]":o.indentMore,"Ctrl-[":o.indentLess,"Cmd-[":o.indentLess,"Ctrl-S":o.storeQuery,"Cmd-S":o.storeQuery,"Ctrl-Enter":o.executeQuery,"Cmd-Enter":o.executeQuery,F11:function(e){e.setOption("fullScreen",!e.getOption("fullScreen"))},Esc:function(e){e.getOption("fullScreen")&&e.setOption("fullScreen",!1)}},cursorHeight:.9,createShareLink:o.createShareLink,createShortLink:null,consumeShareLink:o.consumeShareLink,persistent:function(e){return"yasqe_"+n(e.getWrapperElement()).closest("[id]").attr("id")+"_queryVal"},sparql:{queryName:function(e){return e.getQueryMode()},showQueryButton:!1,endpoint:"http://dbpedia.org/sparql",requestMethod:"POST",acceptHeaderGraph:"text/turtle,*/*;q=0.9",acceptHeaderSelect:"application/sparql-results+json,*/*;q=0.9",acceptHeaderUpdate:"text/plain,*/*;q=0.9",namedGraphs:[],defaultGraphs:[],args:[],headers:{},getQueryForAjax:null,callbacks:{beforeSend:null,complete:null,error:null,success:null},handlers:{}}})},{"./main.js":30,jquery:void 0}],28:[function(e,i,r){i.exports=e("./main.js")},{"./main.js":30}],29:[function(e,i,r){"use strict";i.exports={query:'\t',queryInvalid:'image/svg+xml',download:'\t', +share:'',warning:'',fullscreen:'image/svg+xml',smallscreen:'image/svg+xml'}},{}],30:[function(e,i,r){"use strict";window.console=window.console||{log:function(){}};var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=function(){try{return e("codemirror")}catch(i){return window.CodeMirror}}(),t=e("./utils.js"),s=e("yasgui-utils"),a=e("./imgs.js");e("../lib/deparam.js");e("codemirror/addon/fold/foldcode.js");e("codemirror/addon/fold/foldgutter.js");e("codemirror/addon/fold/xml-fold.js");e("codemirror/addon/fold/brace-fold.js");e("./prefixFold.js");e("codemirror/addon/hint/show-hint.js");e("codemirror/addon/search/searchcursor.js");e("codemirror/addon/edit/matchbrackets.js");e("codemirror/addon/runmode/runmode.js");e("codemirror/addon/display/fullscreen.js");e("../lib/grammar/tokenizer.js");var p=i.exports=function(e,i){var r=n("
",{"class":"yasqe"}).appendTo(n(e));i=l(i);var t=E(o(r[0],i));d(t);return t},l=function(e){var i=n.extend(!0,{},p.defaults,e);return i},E=function(i){i.autocompleters=e("./autocompleters/autocompleterBase.js")(p,i);i.options.autocompleters&&i.options.autocompleters.forEach(function(e){p.Autocompleters[e]&&i.autocompleters.init(e,p.Autocompleters[e])});i.lastQueryDuration=null;i.getCompleteToken=function(r,n){return e("./tokenUtils.js").getCompleteToken(i,r,n)};i.getPreviousNonWsToken=function(r,n){return e("./tokenUtils.js").getPreviousNonWsToken(i,r,n)};i.getNextNonWsToken=function(r,n){return e("./tokenUtils.js").getNextNonWsToken(i,r,n)};i.collapsePrefixes=function(r){void 0===r&&(r=!0);i.foldCode(e("./prefixFold.js").findFirstPrefixLine(i),p.fold.prefix,r?"fold":"unfold")};var r=null,o=null;i.setBackdrop=function(e){if(i.options.backdrop||0===i.options.backdrop||"0"===i.options.backdrop){if(null===o){o=+i.options.backdrop;1===o&&(o=400)}r||(r=n("
",{"class":"backdrop"}).click(function(){n(this).hide()}).insertAfter(n(i.getWrapperElement())));e?r.show(o):r.hide(o)}};i.query=function(e){p.executeQuery(i,e)};i.getUrlArguments=function(e){return p.getUrlArguments(i,e)};i.getPrefixesFromQuery=function(){return e("./prefixUtils.js").getPrefixesFromQuery(i)};i.addPrefixes=function(r){return e("./prefixUtils.js").addPrefixes(i,r)};i.removePrefixes=function(r){return e("./prefixUtils.js").removePrefixes(i,r)};i.getValueWithoutComments=function(){var e="";p.runMode(i.getValue(),"sparql11",function(i,r){"comment"!=r&&(e+=i)});return e};i.getQueryType=function(){return i.queryType};i.getQueryMode=function(){var e=i.getQueryType();return"INSERT"==e||"DELETE"==e||"LOAD"==e||"CLEAR"==e||"CREATE"==e||"DROP"==e||"COPY"==e||"MOVE"==e||"ADD"==e?"update":"query"};i.setCheckSyntaxErrors=function(e){i.options.syntaxErrorCheck=e;I(i)};i.enableCompleter=function(e){u(i.options,e);p.Autocompleters[e]&&i.autocompleters.init(e,p.Autocompleters[e])};i.disableCompleter=function(e){c(i.options,e)};return i},u=function(e,i){e.autocompleters||(e.autocompleters=[]);e.autocompleters.push(i)},c=function(e,i){if("object"==typeof e.autocompleters){var r=n.inArray(i,e.autocompleters);if(r>=0){e.autocompleters.splice(r,1);c(e,i)}}},d=function(e){var i=t.getPersistencyId(e,e.options.persistent);if(i){var r=s.storage.get(i);r&&e.setValue(r)}p.drawButtons(e);e.on("blur",function(e,i){p.storeQuery(e)});e.on("change",function(e,i){I(e);p.updateQueryButton(e);p.positionButtons(e)});e.on("changes",function(){I(e);p.updateQueryButton(e);p.positionButtons(e)});e.on("cursorActivity",function(e,i){x(e)});e.prevQueryValid=!1;I(e);p.positionButtons(e);n(e.getWrapperElement()).on("mouseenter",".cm-atom",function(){var i=n(this).text();n(e.getWrapperElement()).find(".cm-atom").filter(function(){return n(this).text()===i}).addClass("matchingVar")}).on("mouseleave",".cm-atom",function(){n(e.getWrapperElement()).find(".matchingVar").removeClass("matchingVar")});if(e.options.consumeShareLink){e.options.consumeShareLink(e,N());window.addEventListener("hashchange",function(){e.options.consumeShareLink(e,N())})}e.options.collapsePrefixesOnLoad&&e.collapsePrefixes(!0)},N=function(){var e=null;window.location.hash.length>1&&(e=n.deparam(location.href.split("#")[1]));e&&"query"in e||!(window.location.search.length>1)||(e=n.deparam(window.location.search.substring(1)));return e},x=function(e){e.cursor=n(".CodeMirror-cursor");e.buttons&&e.buttons.is(":visible")&&e.cursor.length>0&&(t.elementsOverlap(e.cursor,e.buttons)?e.buttons.find("svg").attr("opacity","0.2"):e.buttons.find("svg").attr("opacity","1.0"))},I=function(i,r){i.queryValid=!0;i.clearGutter("gutterErrorBar");for(var o=null,t=0;t").text(l.state.errorMsg).html()}):o.possibleCurrent&&o.possibleCurrent.length>0&&e("./tooltip")(i,E,function(){var e=[];o.possibleCurrent.forEach(function(i){e.push(""+n("
").text(i).html()+"")});return"This line is invalid. Expected: "+e.join(", ")});E.style.marginTop="2px";E.style.marginLeft="2px";E.className="parseErrorIcon";i.setGutterMarker(t,"gutterErrorBar",E);i.queryValid=!1;break}}i.prevQueryValid=i.queryValid;if(r&&null!=o&&void 0!=o.stack){var u=o.stack,c=o.stack.length;c>1?i.queryValid=!1:1==c&&"solutionModifier"!=u[0]&&"?limitOffsetClauses"!=u[0]&&"?offsetClause"!=u[0]&&(i.queryValid=!1)}};n.extend(p,o);p.Autocompleters={};p.registerAutocompleter=function(e,i){p.Autocompleters[e]=i;u(p.defaults,e)};p.autoComplete=function(e){e.autocompleters.autoComplete(!1)};p.registerAutocompleter("prefixes",e("./autocompleters/prefixes.js"));p.registerAutocompleter("properties",e("./autocompleters/properties.js"));p.registerAutocompleter("classes",e("./autocompleters/classes.js"));p.registerAutocompleter("variables",e("./autocompleters/variables.js"));p.positionButtons=function(e){var i=n(e.getWrapperElement()).find(".CodeMirror-vscrollbar"),r=0;i.is(":visible")&&(r=i.outerWidth());e.buttons.is(":visible")&&e.buttons.css("right",r+4)};p.createShareLink=function(e){var i={};window.location.hash.length>1&&(i=n.deparam(window.location.hash.substring(1)));i.query=e.getValue();return i};p.getAsCurl=function(i,r){var n=e("./curl.js");return n.createCurlString(i,r)};p.consumeShareLink=function(e,i){i&&i.query&&e.setValue(i.query)};p.drawButtons=function(e){e.buttons=n("
").appendTo(n(e.getWrapperElement()));if(e.options.createShareLink){var i=n(s.svg.getElement(a.share));i.click(function(r){r.stopPropagation();var o=n("
").appendTo(e.buttons);n("html").click(function(){o&&o.remove()});o.click(function(e){e.stopPropagation()});var t=n("").val(location.protocol+"//"+location.host+location.pathname+location.search+"#"+n.param(e.options.createShareLink(e)));t.focus(function(){var e=n(this);e.select();e.mouseup(function(){e.unbind("mouseup");return!1})});o.empty().append(n("
",{"class":"inputWrapper"}).append(t));if(e.options.createShortLink){o.addClass("enableShort");n("").addClass("yasqe_btn yasqe_btn-sm yasqe_btn-primary").click(function(){n(this).parent().find("button").attr("disabled","disabled");e.options.createShortLink(t.val(),function(e,i){if(e){t.remove();o.find(".inputWrapper").append(n("",{"class":"shortlinkErr"}).text(e))}else t.val(i).focus()})}).appendTo(o)}n("").addClass("yasqe_btn yasqe_btn-sm yasqe_btn-primary").click(function(){n(this).parent().find("button").attr("disabled","disabled");t.val(p.getAsCurl(e)).focus()}).appendTo(o);var s=i.position();o.css("top",s.top+i.outerHeight()+parseInt(o.css("padding-top"))+"px").css("left",s.left+i.outerWidth()-o.outerWidth()+"px");t.focus()}).addClass("yasqe_share").attr("title","Share your query").appendTo(e.buttons)}var r=n("
",{"class":"fullscreenToggleBtns"}).append(n(s.svg.getElement(a.fullscreen)).addClass("yasqe_fullscreenBtn").attr("title","Set editor full screen").click(function(){e.setOption("fullScreen",!0)})).append(n(s.svg.getElement(a.smallscreen)).addClass("yasqe_smallscreenBtn").attr("title","Set editor to normale size").click(function(){e.setOption("fullScreen",!1)}));e.buttons.append(r);if(e.options.sparql.showQueryButton){n("
",{"class":"yasqe_queryButton"}).click(function(){if(n(this).hasClass("query_busy")){e.xhr&&e.xhr.abort();p.updateQueryButton(e)}else e.query()}).appendTo(e.buttons);p.updateQueryButton(e)}};var m={busy:"loader",valid:"query",error:"queryInvalid"};p.updateQueryButton=function(e,i){var r=n(e.getWrapperElement()).find(".yasqe_queryButton");if(0!=r.length){if(!i){i="valid";e.queryValid===!1&&(i="error")}if(i!=e.queryStatus){r.empty().removeClass(function(e,i){return i.split(" ").filter(function(e){return 0==e.indexOf("query_")}).join(" ")});if("busy"==i){r.append(n("
",{"class":"loader"}));e.queryStatus=i}else if("valid"==i||"error"==i){r.addClass("query_"+i);s.svg.draw(r,a[m[i]]);e.queryStatus=i}}}};p.fromTextArea=function(e,i){i=l(i);var r=(n("
",{"class":"yasqe"}).insertBefore(n(e)).append(n(e)),E(o.fromTextArea(e,i)));d(r);return r};p.storeQuery=function(e){var i=t.getPersistencyId(e,e.options.persistent);i&&s.storage.set(i,e.getValue(),"month")};p.commentLines=function(e){for(var i=e.getCursor(!0).line,r=e.getCursor(!1).line,n=Math.min(i,r),o=Math.max(i,r),t=!0,s=n;s<=o;s++){var a=e.getLine(s);if(0==a.length||"#"!=a.substring(0,1)){t=!1;break}}for(var s=n;s<=o;s++)t?e.replaceRange("",{line:s,ch:0},{line:s,ch:1}):e.replaceRange("#",{line:s,ch:0})};p.copyLineUp=function(e){var i=e.getCursor(),r=e.lineCount();e.replaceRange("\n",{line:r-1,ch:e.getLine(r-1).length});for(var n=r;n>i.line;n--){var o=e.getLine(n-1);e.replaceRange(o,{line:n,ch:0},{line:n,ch:e.getLine(n).length})}};p.copyLineDown=function(e){p.copyLineUp(e);var i=e.getCursor();i.line++;e.setCursor(i)};p.doAutoFormat=function(e){if(e.somethingSelected()){var i={line:e.getCursor(!1).line,ch:e.getSelection().length};L(e,e.getCursor(!0),i)}else{var r=e.lineCount(),n=e.getTextArea().value.length;L(e,{line:0,ch:0},{line:r,ch:n})}};var L=function(e,i,r){var n=e.indexFromPos(i),o=e.indexFromPos(r),t=T(e.getValue(),n,o);e.operation(function(){e.replaceRange(t,i,r);for(var o=e.posFromIndex(n).line,s=e.posFromIndex(n+t.length).line,a=o;a<=s;a++)e.indentLine(a,"smart")})},T=function(e,i,r){e=e.substring(i,r);var t=[["keyword","ws","prefixed","ws","uri"],["keyword","ws","uri"]],s=["{",".",";"],a=["}"],p=function(e,i){for(var r=0;r=0)return r}};o.registerHelper("fold","prefix",function(e,i){function r(){for(var i=!1,r=a-1;r>=0;r--)if(e.getLine(r).toUpperCase().indexOf(s)>=0){i=!0;break}return i}var a=i.line,p=e.getLine(a),l=function(i,r){var n=e.getTokenAt(o.Pos(i,r+1));if(!n||"keyword"!=n.type)return-1;var s=t.getNextNonWsToken(e,i,n.end+1);if(!s||"string-2"!=s.type)return-1;var a=t.getNextNonWsToken(e,i,s.end+1);return a&&"variable-3"==a.type?a.end:-1};if(!r()){var E=n(e,a,i.ch,p);if(null!=E){for(var u,c="{",d=!1,N=e.lastLine(),x=l(a,E),I=a,m=a;m<=N&&!d;++m)for(var L=e.getLine(m),T=m==a?E+1:0;;){!d&&L.indexOf(c)>=0&&(d=!0);var g=L.toUpperCase().indexOf(s,T);if(!(g>=0))break;if((u=l(m,g))>0){x=u;I=m;T=x}T++}return{from:o.Pos(a,E+s.length),to:o.Pos(I,x)}}}})},{"./tokenUtils.js":34,codemirror:void 0}],32:[function(e,i,r){"use strict";var n=function(e,i){var r=e.getPrefixesFromQuery();if("string"==typeof i)o(e,i);else for(var n in i)n in r||o(e,n+": <"+i[n]+">");e.collapsePrefixes(!1)},o=function(e,i){for(var r=null,n=0,o=e.lineCount(),t=0;t")+"\\s*","ig"),""));e.collapsePrefixes(!1)},s=function(e){return e.getTokenAt({line:e.lastLine(),ch:e.getLine(e.lastLine()).length},!0).state.prefixes},a=function(e,i,r){void 0==r&&(r=1);var n=e.getTokenAt({line:i,ch:r});return null==n||void 0==n||"ws"!=n.type?"":n.string+a(e,i,n.end+1)};i.exports={addPrefixes:n,getPrefixesFromQuery:s,removePrefixes:t}},{}],33:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=e("./utils.js"),t=e("./main.js");t.getAjaxConfig=function(i,r){var o="function"==typeof r?r:null,a="object"==typeof r?r:{};i.options.sparql&&(a=n.extend({},i.options.sparql,a));a.handlers&&n.extend(!0,a.callbacks,a.handlers);if(a.endpoint&&0!=a.endpoint.length){var p={url:"function"==typeof a.endpoint?a.endpoint(i):a.endpoint,type:"function"==typeof a.requestMethod?a.requestMethod(i):a.requestMethod,headers:{Accept:s(i,a)}};a.xhrFields&&(p.xhrFields=a.xhrFields);var l=!1;if(a.callbacks)for(var E in a.callbacks)if(a.callbacks[E]){l=!0;p[E]=a.callbacks[E]}if("GET"===p.type){var u=!0;n.each(i.getUrlArguments(a),function(e,i){p.url+=(u?"?":"&")+i.name+"="+encodeURIComponent(i.value);u=!1})}else p.data=i.getUrlArguments(a);if(l||o){o&&(p.complete=o);a.headers&&!n.isEmptyObject(a.headers)&&n.extend(p.headers,a.headers);var c=new Date,d=function(){i.lastQueryDuration=new Date-c;t.updateQueryButton(i);i.setBackdrop(!1)},N=[function(){e("./main.js").signal(i,"queryFinish",arguments)},d];p.complete&&N.push(p.complete);p.complete=N;return p}}};t.executeQuery=function(e,i){t.signal(e,"query",e,i);t.updateQueryButton(e,"busy");e.setBackdrop(!0);e.xhr=n.ajax(t.getAjaxConfig(e,i))};t.getUrlArguments=function(e,i){var r=e.getQueryMode(),t=[{name:o.getString(e,e.options.sparql.queryName),value:i.getQueryForAjax?i.getQueryForAjax(e):e.getValue()}];if(i.namedGraphs&&i.namedGraphs.length>0)for(var s="query"==r?"named-graph-uri":"using-named-graph-uri ",a=0;a0)for(var s="query"==r?"default-graph-uri":"using-graph-uri ",a=0;a0&&n.merge(t,i.args);return t};var s=function(e,i){var r=null;if(!i.acceptHeader||i.acceptHeaderGraph||i.acceptHeaderSelect||i.acceptHeaderUpdate)if("update"==e.getQueryMode())r="function"==typeof i.acceptHeader?i.acceptHeaderUpdate(e):i.acceptHeaderUpdate;else{var n=e.getQueryType();r="DESCRIBE"==n||"CONSTRUCT"==n?"function"==typeof i.acceptHeaderGraph?i.acceptHeaderGraph(e):i.acceptHeaderGraph:"function"==typeof i.acceptHeaderSelect?i.acceptHeaderSelect(e):i.acceptHeaderSelect}else r="function"==typeof i.acceptHeader?i.acceptHeader(e):i.acceptHeader;return r};i.exports={getAjaxConfig:t.getAjaxConfig}},{"./main.js":30,"./utils.js":36,jquery:void 0}],34:[function(e,i,r){"use strict";var n=function(e,i,r){r||(r=e.getCursor());i||(i=e.getTokenAt(r));var o=e.getTokenAt({line:r.line,ch:i.start});if(null!=o.type&&"ws"!=o.type&&null!=i.type&&"ws"!=i.type){i.start=o.start;i.string=o.string+i.string;return n(e,i,{line:r.line,ch:o.start})}if(null!=i.type&&"ws"==i.type){i.start=i.start+1;i.string=i.string.substring(1);return i}return i},o=function(e,i,r){var n=e.getTokenAt({line:i,ch:r.start});null!=n&&"ws"==n.type&&(n=o(e,i,n));return n},t=function(e,i,r){void 0==r&&(r=1);var n=e.getTokenAt({line:i,ch:r});return null==n||void 0==n||n.end").addClass("yasqe_tooltip").html(r).appendTo(i);t()},function(){n(".yasqe_tooltip").remove()});var t=function(){if(n(e.getWrapperElement()).offset().top>=o.offset().top){o.css("bottom","auto");o.css("top","26px")}}}},{"./utils.js":36,jquery:void 0}],36:[function(e,i,r){"use strict";var n=function(){try{return e("jquery")}catch(i){return window.jQuery}}(),o=function(e,i){var r=!1;try{void 0!==e[i]&&(r=!0)}catch(n){}return r},t=function(e,i){var r=null;i&&(r="string"==typeof i?i:i(e));return r},s=function(){function e(e){var i,r,o;i=n(e).offset();r=n(e).width();o=n(e).height();return[[i.left,i.left+r],[i.top,i.top+o]]}function i(e,i){var r,n;r=e[0]n[0]||r[0]===n[0]}return function(r,n){var o=e(r),t=e(n);return i(o[0],t[0])&&i(o[1],t[1])}}(),a=function(e,i){return"function"==typeof i?i(e):i};i.exports={keyExists:o,getPersistencyId:t,elementsOverlap:s,getString:a}},{jquery:void 0}]},{},[28])(28)}); //# sourceMappingURL=yasqe.min.js.map diff --git a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js.map b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js.map index 25e39289562..3010601bc40 100644 --- a/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js.map +++ b/jena-fuseki2/jena-fuseki-core/src/main/webapp/js/lib/yasqe.min.js.map @@ -1 +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,kBAAA,iBAAA,mBACAC,kBAAA,iBAAA,mBACAC,iBAAA,iBAAA,mBACA7B,OACAhB,QACAyD,kBACAC,MAAA,gBAAA,kBACAC,SACAnD,QACAoD,0BACAF,MAAA,wBAAA,0BACAG,SACAC,UACAC,SACAC,SACAC,UACAN,SACAnD,OACAO,UACAlD,MACAqG,cACA7C,KAAA,YAAA,cACAC,KAAA,YAAA,cACAC,MAAA,YAAA,cACAC,MAAA,YAAA,cACAC,KAAA,YAAA,cACAC,SAAA,YAAA,cACAC,MAAA,YAAA,cACAC,OAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,MAAA,YAAA,cACAC,UAAA,YAAA,cACAC,UAAA,YAAA,cACAC,iBAAA,YAAA,cACAC,iBAAA,YAAA,cACAC,sBAAA,YAAA,cACAC,sBAAA,YAAA,cACAC,SAAA,YAAA,cACAC,SAAA,YAAA,cACAC,QAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,iBAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,iBAAA,YAAA,cACA7C,QACAmE,kBACA9C,KAAA,gBAAA,kBACAC,KAAA,gBAAA,kBACAC,MAAA,gBAAA,kBACAC,MAAA,gBAAA,kBACAC,KAAA,gBAAA,kBACAC,SAAA,gBAAA,kBACAC,MAAA,gBAAA,kBACAC,OAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,MAAA,gBAAA,kBACAC,UAAA,gBAAA,kBACAC,UAAA,gBAAA,kBACAC,iBAAA,gBAAA,kBACAC,iBAAA,gBAAA,kBACAC,sBAAA,gBAAA,kBACAC,sBAAA,gBAAA,kBACAC,SAAA,gBAAA,kBACAC,SAAA,gBAAA,kBACAC,QAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,iBAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,iBAAA,gBAAA,kBACA7C,QACAoE,mBACA/C,KAAA,iBAAA,mBACAgD,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,aAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,gBAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,IAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,IAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACA9F,MAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACA8F,QAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAhG,SAAA,iBAAA,mBACAK,UAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAjB,UACAiD,SACAC,UACAJ,SACAC,UACAjG,KACAmD,QACA2G,oBACAtG,KAAA,kBAAA,oBACAgD,KAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,aAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,gBAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,WAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,WAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,IAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,IAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,WAAA,kBAAA,oBACAC,WAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAhG,SAAA,kBAAA,oBACAK,UAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAjB,UACAiD,SACAC,UACAJ,SACAhG,KACAmD,QACA4G,qCACAvG,KAAA,mCAAA,qCACAI,KAAA,mCAAA,qCACAT,QACA6G,kDACAC,KAAA,gDAAA,kDACA3G,KAAA,gDAAA,kDACApB,MACAC,OACAC,OACAC,QACAJ,QACAiI,OACAC,QACAC,OACAC,OACAC,QACAC,QACAC,MACAX,OACAY,OACAC,OACA/F,oBACAC,oBACAC,mBACAC,oBACAC,oBACAC,mBACA1C,QACAqI,yKACAF,KAAA,uKAAA,yKACAC,KAAA,uKAAA,yKACA/F,kBAAA,uKAAA,yKACAC,kBAAA,uKAAA,yKACAC,iBAAA,uKAAA,yKACAC,kBAAA,uKAAA,yKACAC,kBAAA,uKAAA,yKACAC,iBAAA,uKAAA,yKACA9C,MACAC,OACAC,OACAC,QACAJ,QACAiI,OACAC,QACAC,OACAC,OACAC,QACAC,QACAC,MACAX,OACAvH,QACAsI,8BACAC,MAAA,4BAAA,8BACAC,QAAA,4BAAA,8BACA9K,KACA+K,aACAC,YACAC,OACAC,UACAC,UACAC,UACAC,QACAC,SACAC,QACAC,OACAC,QACAC,QACAC,UACAC,SACAC,uCACArI,KAAA,qCAAA,uCACAE,MAAA,qCAAA,uCACAC,MAAA,qCAAA,uCACAmC,SACAnD,OACAkD,SACAiG,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAtI,MAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAH,KAAA,iBAAA,mBACAgD,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,aAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,gBAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,IAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,IAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAhG,SAAA,iBAAA,mBACAK,UAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAjB,UACAiD,SACAC,UACApG,KACAmD,QACA8I,gBACAC,OAAA,cAAA,gBACApG,UACAqG,QACAzI,MAAA,MAAA,QACAC,MAAA,MAAA,QACAxB,QACAiK,gBACA1I,MAAA,cAAA,gBACAC,MAAA,cAAA,gBACAE,SAAA,cAAA,gBACAK,UAAA,cAAA,gBACAC,UAAA,cAAA,gBACA6B,SACAC,UACAC,SACAC,SACAC,UACAN,SACAnD,OACAkD,QACA3C,UACAlD,MACAqM,cACA7I,KAAA,YAAA,cACAC,KAAA,YAAA,cACAC,MAAA,YAAA,cACAC,MAAA,YAAA,cACAC,KAAA,YAAA,cACAC,SAAA,YAAA,cACAC,MAAA,YAAA,cACAC,OAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,MAAA,YAAA,cACAC,UAAA,YAAA,cACAC,UAAA,YAAA,cACAC,iBAAA,YAAA,cACAC,iBAAA,YAAA,cACAC,sBAAA,YAAA,cACAC,sBAAA,YAAA,cACAC,SAAA,YAAA,cACAC,SAAA,YAAA,cACAC,QAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,iBAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,kBAAA,YAAA,cACAC,iBAAA,YAAA,eACAsH,kBACA9I,KAAA,gBAAA,kBACAC,KAAA,gBAAA,kBACAC,MAAA,gBAAA,kBACAC,MAAA,gBAAA,kBACAC,KAAA,gBAAA,kBACAC,SAAA,gBAAA,kBACAC,MAAA,gBAAA,kBACAC,OAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,MAAA,gBAAA,kBACAC,UAAA,gBAAA,kBACAC,UAAA,gBAAA,kBACAC,iBAAA,gBAAA,kBACAC,iBAAA,gBAAA,kBACAC,sBAAA,gBAAA,kBACAC,sBAAA,gBAAA,kBACAC,SAAA,gBAAA,kBACAC,SAAA,gBAAA,kBACAC,QAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,iBAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,kBAAA,gBAAA,kBACAC,iBAAA,gBAAA,mBACAuH,mBACA/I,KAAA,iBAAA,mBACAgD,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,aAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,gBAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,IAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,IAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACA9F,MAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACA8F,QAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAhG,SAAA,iBAAA,mBACAK,UAAA,iBAAA,mBACAC,UAAA,iBAAA,oBACAqI,oBACAhJ,KAAA,kBAAA,oBACAgD,KAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,aAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,gBAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,WAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,WAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,IAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAC,MAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,IAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,UAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,WAAA,kBAAA,oBACAC,WAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,SAAA,kBAAA,oBACAC,OAAA,kBAAA,oBACAC,QAAA,kBAAA,oBACAC,KAAA,kBAAA,oBACAhG,SAAA,kBAAA,oBACAK,UAAA,kBAAA,oBACAC,UAAA,kBAAA,qBACAsI,uCACAjJ,KAAA,qCAAA,uCACAE,MAAA,qCAAA,uCACAC,MAAA,qCAAA,wCACA+I,mBACAX,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAtI,MAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAH,KAAA,iBAAA,mBACAgD,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,aAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,gBAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,IAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAC,MAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,IAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,UAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,WAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,SAAA,iBAAA,mBACAC,OAAA,iBAAA,mBACAC,QAAA,iBAAA,mBACAC,KAAA,iBAAA,mBACAhG,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\": [], \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\",\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==\"\") {\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 (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 ? range.from : cm.firstLine();\n this.max = range ? range.to - 1 : 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; idocument.w=window')\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(\" 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] = $(\"
\");\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\") + \" - 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 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($(\"Fetchting autocompletions  \"))\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: \\nPREFIX rdfs: \\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: '\t',\n\tqueryInvalid: 'image/svg+xml',\n\tdownload: '\t',\n\tshare: '',\n\twarning: '',\n\tfullscreen: 'image/svg+xml',\n\tsmallscreen: 'image/svg+xml',\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 = $(\"
\", {\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 = $('
', {\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 $(\"
\").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(\"\" + $(\"
\").text(expected).html() + \"\");\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 = $(\"
\").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 = $(\"
\").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 = $(\"\").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($('
', {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$('')\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($('', {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$('')\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 = $('
', {\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$(\"
\", {\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($('
', {\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 = $(\"
\", {\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: '\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//just get last token, and return prefixes from the state\n\treturn yasqe.getTokenAt({line: yasqe.lastLine(), ch:yasqe.getLine(yasqe.lastLine()).length}).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 = $(\"
\").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\",\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==\"\") {\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 (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 ? range.from : cm.firstLine();\n this.max = range ? range.to - 1 : 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; idocument.w=window')\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(\" 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] = $(\"
\");\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\") + \" - 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 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($(\"Fetchting autocompletions  \"))\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: \\nPREFIX rdfs: \\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: '\t',\n\tqueryInvalid: 'image/svg+xml',\n\tdownload: '\t',\n\tshare: '',\n\twarning: '',\n\tfullscreen: 'image/svg+xml',\n\tsmallscreen: 'image/svg+xml',\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 = $(\"
\", {\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 = $('
', {\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 $(\"
\").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(\"\" + $(\"
\").text(expected).html() + \"\");\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 = $(\"
\").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 = $(\"
\").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 = $(\"\").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($('
', {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$('')\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($('', {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$('')\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 = $('
', {\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$(\"
\", {\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($('
', {\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 = $(\"
\", {\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: '\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//just get last token, and return prefixes from the state\n\treturn yasqe.getTokenAt({line: yasqe.lastLine(), ch:yasqe.getLine(yasqe.lastLine()).length}).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 = $(\"
\").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/"} \ No newline at end of file +{"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\": [], \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\",\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==\"\") {\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; idocument.w=window')\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(\" 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] = $(\"
\");\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\") + \" - 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 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($(\"Fetchting autocompletions  \"))\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: \\nPREFIX rdfs: \\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: '\t',\n\tqueryInvalid: 'image/svg+xml',\n\tdownload: '\t',\n\tshare: '',\n\twarning: '',\n\tfullscreen: 'image/svg+xml',\n\tsmallscreen: 'image/svg+xml',\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 = $(\"
\", {\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 = $('
', {\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 $(\"
\").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(\"\" + $(\"
\").text(expected).html() + \"\");\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 = $(\"
\").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 = $(\"
\").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 = $(\"\").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($('
', {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$('')\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($('', {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$('')\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 = $('
', {\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$(\"
\", {\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($('
', {\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 = $(\"
\", {\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: '\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 = $(\"
\").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\",\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==\"\") {\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; idocument.w=window')\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(\" 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] = $(\"
\");\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\") + \" - 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 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($(\"Fetchting autocompletions  \"))\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: \\nPREFIX rdfs: \\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: '\t',\n\tqueryInvalid: 'image/svg+xml',\n\tdownload: '\t',\n\tshare: '',\n\twarning: '',\n\tfullscreen: 'image/svg+xml',\n\tsmallscreen: 'image/svg+xml',\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 = $(\"
\", {\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 = $('
', {\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 $(\"
\").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(\"\" + $(\"
\").text(expected).html() + \"\");\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 = $(\"
\").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 = $(\"
\").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 = $(\"\").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($('
', {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$('')\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($('', {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$('')\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 = $('
', {\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$(\"
\", {\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($('
', {\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 = $(\"
\", {\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: '\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 = $(\"
\").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/"} \ No newline at end of file