/** @license MIT - N3.js library (browser version) - ©Ruben Verborgh */ !function(e){function t(){if(!(this instanceof t))return new t;for(var e in a)this[e]=a[e]}function i(e){if(!(this instanceof i))return new i(e);if(e=e||{},this._lexer=e.lexer||new t,this._blankNodes=Object.create(null),this._blankNodeCount=0,this._tripleStack=[],e.documentURI){if(e.documentURI.indexOf("#")>0)throw new Error("Invalid document URI");this._baseURI=e.documentURI,this._baseURIPath=this._baseURI.replace(w,""),this._baseURIRoot=this._baseURI.match(j)[0]}else this._baseURI=null,this._baseURIPath=null}function r(e,t){return this instanceof r?(e&&"function"!=typeof e.write&&(t=e,e=null),e||(e=this,this._output="",this.write=function(e,t,i){this._output+=e,i&&i()}),this._outputStream=e,this._prefixURIs=Object.create(null),void(t&&this.addPrefixes(t))):new r(e,t)}function s(e,t){return this instanceof s?(this._size=0,this._contexts=Object.create(null),this._entities=Object.create(null),this._entities[">>____unused_item_to_make_first_entity_key_non-falsy____<<"]=0,this._entityCount=0,this._blankNodeIndex=0,t||!e||e[0]||(t=e,e=null),this._prefixes=Object.create(null),e&&this.addTriples(e),void(t&&this.addPrefixes(t))):new s(e,t)}function u(e,t){for(var i in S)t?e.prototype[i]=n(S[i]):e[i]=S[i];return e}function n(e){return function(t){return e(this,t)}}var a={_explicituri:/^<((?:[^\x00-\x20<>\\"\{\}\|\^\`]|\\[uU])*)>/,_string:/^"[^"\\]*(?:\\.[^"\\]*)*"(?=[^"\\])|^'[^'\\]*(?:\\.[^'\\]*)*'(?=[^'\\])/,_tripleQuotedString:/^""("[^"\\]*(?:(?:\\.|"(?!""))[^"\\]*)*")""|^''('[^'\\]*(?:(?:\\.|'(?!''))[^'\\]*)*')''/,_langcode:/^@([a-z]+(?:-[a-z0-9]+)*)(?=[^a-z0-9\-])/i,_prefix:/^((?:[A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:[\.\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:(?=\s|<)/,_qname:/^((?:[A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])(?:[\.\-0-9A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff])*)?:((?:(?:[0-:A-Z_a-z\xc0-\xd6\xd8-\xf6\xf8-\u02ff\u0370-\u037d\u037f-\u1fff\u200c\u200d\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])(?:(?:[\.\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~])*(?:[\-0-:A-Z_a-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]|[\ud800-\udb7f][\udc00-\udfff]|%[0-9a-fA-F]{2}|\\[!#-\/;=?\-@_~]))?)?)(?=[\s;,)#]|\.[\s#\(\[<"'])/,_number:/^[\-+]?(?:\d+\.?\d*([eE](?:[\-\+])?\d+)|\d+\.\d+|\.\d+|\d+)(?=\s*[\s\.;,)#])/,_boolean:/^(?:true|false)(?=[\s#,;.])/,_dot:/^\.(?!\d)/,_punctuation:/^[;,\[\]\(\)]/,_fastString:/^"[^"\\]+"(?=[^"\\])/,_keyword:/^@[a-z]+(?=\s)/,_sparqlKeyword:/^(?:PREFIX|BASE)(?=\s)/i,_type:/^\^\^(?:<([^>]*)>|([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][\-0-9A-Z_a-z\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u037d\u037f-\u1fff\u200c-\u200d\u203f-\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]*)?:([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][\-0-9A-Z_a-z\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u037d\u037f-\u1fff\u200c-\u200d\u203f-\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]*)(?=[\s\.;,)#]))/,_shortPredicates:/^a(?=\s+|<)/,_newline:/^[ \t]*(?:#[^\n\r]*)?(?:\r\n|\n|\r)[ \t]*/,_whitespace:/^[ \t]+/,_nonwhitespace:/^\S*/,_endOfFile:/^(?:#[^\n\r]*)?$/},c=/\\u([a-fA-F0-9]{4})|\\U([a-fA-F0-9]{8})|\\[uU]|\\(.)/g,f={"\\":"\\","'":"'",'"':'"',n:"\n",r:"\r",t:" ",f:"\f",b:"\b",_:"_","~":"~",".":".","-":"-","!":"!",$:"$","&":"&","(":"(",")":")","*":"*","+":"+",",":",",";":";","=":"=","/":"/","?":"?","#":"#","@":"@","%":"%"},l=/[\x00-\x20<>\\"\{\}\|\^\`]/,d={".":"dot",";":"semicolon",",":"comma","[":"bracketopen","]":"bracketclose","(":"liststart",")":"listend"},o="function"==typeof setImmediate?setImmediate:function(e){setTimeout(e,0)};t.prototype={_tokenizeToEnd:function(e,t){function i(t){c=t._nonwhitespace.exec(r),t._input=null,e(new Error('Syntax error: unexpected "'+c[0]+'" on line '+t._line+"."))}for(var r=this._input;;){for(var s;s=this._newline.exec(r);)r=r.substr(s[0].length,r.length),this._line++;(s=this._whitespace.exec(r))&&(r=r.substr(s[0].length,r.length));var u={line:this._line,type:"",value:"",prefix:""};if(this._endOfFile.test(r))return t&&(r=null,u.type="eof",e(null,u)),this._input=r;var n,a=r[0],c=null,f=!1;switch(a){case"<":if(c=this._explicituri.exec(r)){if(n=this._unescape(c[1]),null===n||l.test(n))return i(this);u.type="explicituri",u.value=n}break;case'"':case"'":if(c=this._fastString.exec(r))u.type="literal",u.value=c[0];else if(c=this._string.exec(r)){if(n=this._unescape(c[0]),null===n)return i(this);u.type="literal",u.value=n.replace(/^'|'$/g,'"')}else if(c=this._tripleQuotedString.exec(r)){if(n=c[1]||c[2],this._line+=n.split(/\r\n|\r|\n/).length-1,n=this._unescape(n),null===n)return i(this);u.type="literal",u.value=n.replace(/^'|'$/g,'"')}break;case"@":"literal"===this._prevTokenType&&(c=this._langcode.exec(r))?(u.type="langcode",u.value=c[1]):(c=this._keyword.exec(r))&&(u.type=c[0]);break;case"^":(c=this._type.exec(r))&&(u.type="type",c[2]?(u.prefix=c[2],u.value=c[3]):u.value=c[1]);break;case".":if(c=this._dot.test(r)){u.type="dot",c=["."];break}case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"+":case"-":(c=this._number.exec(r))&&(u.type="literal",u.value='"'+c[0]+'"^^":/^[+\-]?\d+$/.test(c[0])?"integer>":"decimal>"));break;case"B":case"b":case"p":case"P":(c=this._sparqlKeyword.exec(r))?u.type=c[0].toUpperCase():f=!0;break;case"f":case"t":(c=this._boolean.exec(r))?(u.type="literal",u.value='"'+c[0]+'"^^'):f=!0;break;case"a":(c=this._shortPredicates.exec(r))?(u.type="abbreviation",u.value="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"):f=!0;break;case",":case";":case"[":case"]":case"(":case")":c=this._punctuation.exec(a),u.type=d[a];break;default:f=!0}if(f&&("@prefix"!==this._prevTokenType&&"PREFIX"!==this._prevTokenType||!(c=this._prefix.exec(r))?((c=this._qname.exec(r))||t&&(c=this._qname.exec(r+" ")))&&(u.type="qname",u.prefix=c[1]||"",u.value=this._unescape(c[2])):(u.type="prefix",u.value=c[1]||"")),null===c)return t||!/^'''|^"""/.test(r)&&/\n|\r/.test(r)?i(this):this._input=r;e(null,u),this._prevTokenType=u.type,r=r.substr(c[0].length,r.length)}},_unescape:function(e){try{return e.replace(c,function(e,t,i,r){var s;if(t){if(s=parseInt(t,16),isNaN(s))throw new Error;return String.fromCharCode(s)}if(i){if(s=parseInt(i,16),isNaN(s))throw new Error;return 65535>s?String.fromCharCode(s):String.fromCharCode(Math.floor((s-65536)/1024)+55296)+String.fromCharCode((s-65536)%1024+56320)}var u=f[r];if(!u)throw new Error;return u})}catch(t){return null}},tokenize:function(e,t){function i(e){null!==s._input&&(s._input+=e,s._tokenizeToEnd(t,!1))}function r(){null!==s._input&&s._tokenizeToEnd(t,!0)}var s=this;this._line=1,"string"==typeof e?(this._input=e,o(function(){s._tokenizeToEnd(t,!0)})):(this._input="",e&&"function"!=typeof e?("function"==typeof e.setEncoding&&e.setEncoding("utf8"),e.on("data",i),e.on("end",r)):(this.addChunk=i,this.end=r,t||(t=e)))}},e.Lexer=t;var h,_="http://www.w3.org/1999/02/22-rdf-syntax-ns#",p=_+"nil",b=_+"first",x=_+"rest",v=/^[a-z]+:/,w=/[^\/]*$/,j=/^(?:[a-z]+:\/*)?[^\/]*/,k=function(){};i.prototype={_readInTopContext:function(e){switch(e.type){case"eof":return this._callback(null,null,this._prefixes);case"@prefix":return this._sparqlStyle=!1,this._readPrefix;case"PREFIX":return this._sparqlStyle=!0,this._readPrefix;case"@base":return this._sparqlStyle=!1,this._readBaseURI;case"BASE":return this._sparqlStyle=!0,this._readBaseURI;default:return this._readSubject(e)}},_readSubject:function(e){switch(e.type){case"explicituri":this._subject=null===this._baseURI||v.test(e.value)?e.value:this._resolveURI(e.value);break;case"qname":if("_"===e.prefix)this._subject=this._blankNodes[e.value]||(this._blankNodes[e.value]="_:b"+this._blankNodeCount++);else{var t=this._prefixes[e.prefix];if(t===h)return this._error('Undefined prefix "'+e.prefix+':"',e);this._subject=t+e.value}break;case"bracketopen":return this._subject="_:b"+this._blankNodeCount++,this._tripleStack.push({subject:this._subject,predicate:null,object:null,type:"blank"}),this._readBlankNodeHead;case"liststart":return this._tripleStack.push({subject:p,predicate:null,object:null,type:"list"}),this._subject=null,this._readListItem;default:return this._error("Expected subject but got "+e.type,e)}return this._subjectHasPredicate=!1,this._readPredicate},_readPredicate:function(e){switch(e.type){case"explicituri":case"abbreviation":this._predicate=null===this._baseURI||v.test(e.value)?e.value:this._resolveURI(e.value);break;case"qname":if("_"===e.prefix)return this._error("Disallowed blank node as predicate",e);var t=this._prefixes[e.prefix];if(t===h)return this._error('Undefined prefix "'+e.prefix+':"',e);this._predicate=t+e.value;break;case"bracketclose":return this._readBlankNodeTail(e,!0);case"dot":return this._subjectHasPredicate?this._readPunctuation(e,!0):this._error("Unexpected dot",e);case"semicolon":return this._readPredicate;default:return this._error('Expected predicate to follow "'+this._subject+'"',e)}return this._subjectHasPredicate=!0,this._readObject},_readObject:function(e){switch(e.type){case"explicituri":this._object=null===this._baseURI||v.test(e.value)?e.value:this._resolveURI(e.value);break;case"qname":if("_"===e.prefix)this._object=this._blankNodes[e.value]||(this._blankNodes[e.value]="_:b"+this._blankNodeCount++);else{var t=this._prefixes[e.prefix];if(t===h)return this._error('Undefined prefix "'+e.prefix+':"',e);this._object=t+e.value}break;case"literal":return this._object=e.value,this._readDataTypeOrLang;case"bracketopen":var i="_:b"+this._blankNodeCount++;return this._tripleStack.push({subject:this._subject,predicate:this._predicate,object:i,type:"blank"}),this._subject=i,this._readBlankNodeHead;case"liststart":return this._tripleStack.push({subject:this._subject,predicate:this._predicate,object:p,type:"list"}),this._subject=null,this._readListItem;default:return this._error('Expected object to follow "'+this._predicate+'"',e)}return this._getTripleEndReader()},_readBlankNodeHead:function(e){return"bracketclose"===e.type?this._readBlankNodeTail(e,!0):this._readPredicate(e)},_readBlankNodeTail:function(e,t){if("bracketclose"!==e.type)return this._readPunctuation(e);t!==!0&&this._callback(null,{subject:this._subject,predicate:this._predicate,object:this._object,context:"n3/contexts#default"});var i=this._tripleStack.pop();return this._subject=i.subject,null!==i.object?(this._predicate=i.predicate,this._object=i.object,this._getTripleEndReader()):this._readPredicate},_readDataTypeOrLang:function(e){switch(e.type){case"type":var t;if(""===e.prefix)t=e.value;else{var i=this._prefixes[e.prefix];if(i===h)return this._error('Undefined prefix "'+e.prefix+':"',e);t=i+e.value}return this._object+="^^<"+t+">",this._getTripleEndReader();case"langcode":return this._object+="@"+e.value.toLowerCase(),this._getTripleEndReader();default:return this._getTripleEndReader().call(this,e)}},_readListItem:function(e){var t=null,i=null,r=this._subject,s=this._tripleStack,u=s[s.length-1],n=this._readListItem;switch(e.type){case"explicituri":t=e.value;break;case"qname":if("_"===e.prefix)t=this._blankNodes[e.value]||(this._blankNodes[e.value]="_:b"+this._blankNodeCount++);else{var a=this._prefixes[e.prefix];if(a===h)return this._error('Undefined prefix "'+e.prefix+':"',e);t=a+e.value}break;case"literal":t=e.value,n=this._readDataTypeOrLang;break;case"bracketopen":i="_:b"+this._blankNodeCount++,t="_:b"+this._blankNodeCount++,s.push({subject:i,predicate:b,object:t,type:"blank"}),this._subject=t,n=this._readBlankNodeHead;break;case"liststart":i="_:b"+this._blankNodeCount++,s.push({subject:i,predicate:b,object:p,type:"list"}),this._subject=null,n=this._readListItem;break;case"listend":if(s.pop(),0!==s.length&&"list"===s[s.length-1].type&&this._callback(null,{subject:u.subject,predicate:u.predicate,object:u.object,context:"n3/contexts#default"}),this._subject=u.subject,null===u.predicate){if(n=this._readPredicate,u.subject===p)return n}else if(this._predicate=u.predicate,this._object=u.object,n=this._getTripleEndReader(),u.object===p)return n;i=p;break;default:return this._error('Expected list item instead of "'+e.type+'"',e)}return null===i&&(this._subject=i="_:b"+this._blankNodeCount++),null===r?u.object===p?u.object=i:u.subject=i:this._callback(null,{subject:r,predicate:x,object:i,context:"n3/contexts#default"}),null!==t&&this._callback(null,{subject:i,predicate:b,object:t,context:"n3/contexts#default"}),n},_readPunctuation:function(e,t){var i;switch(e.type){case"dot":i=this._readInTopContext;break;case"semicolon":i=this._readPredicate;break;case"comma":i=this._readObject;break;default:return this._error('Expected punctuation to follow "'+this._object+'"',e)}return t||this._callback(null,{subject:this._subject,predicate:this._predicate,object:this._object,context:"n3/contexts#default"}),i},_readPrefix:function(e){return"prefix"!==e.type?this._error("Expected prefix to follow @prefix",e):(this._prefix=e.value,this._readPrefixURI)},_readPrefixURI:function(e){if("explicituri"!==e.type)return this._error('Expected explicituri to follow prefix "'+this._prefix+':"',e);var t;return t=null===this._baseURI||v.test(e.value)?e.value:this._resolveURI(e.value),this._prefixes[this._prefix]=t,this._prefixCallback(this._prefix,t),this._readDeclarationPunctuation},_readBaseURI:function(e){return"explicituri"!==e.type?this._error("Expected explicituri to follow base declaration",e):e.value.indexOf("#")>0?this._error("Invalid base URI",e):(this._baseURI=null===this._baseURI||v.test(e.value)?e.value:this._resolveURI(e.value),this._baseURIPath=this._baseURI.replace(w,""),this._baseURIRoot=this._baseURI.match(j)[0],this._readDeclarationPunctuation)},_readDeclarationPunctuation:function(e){return this._sparqlStyle?this._readInTopContext(e):"dot"!==e.type?this._error("Expected declaration to end with a dot",e):this._readInTopContext},_getTripleEndReader:function(){var e=this._tripleStack;if(0===e.length)return this._readPunctuation;switch(e[e.length-1].type){case"blank":return this._readBlankNodeTail;case"list":return this._readListItem}},_error:function(e,t){this._callback(new Error(e+" at line "+t.line+"."))},_resolveURI:function(e){switch(e[0]){case void 0:return this._baseURI;case"#":return this._baseURI+e;case"?":return this._baseURI.replace(/(?:\?.*)?$/,e);case"/":return this._baseURIRoot+e;default:return this._baseURIPath+e}},parse:function(e,t,i){this._readCallback=this._readInTopContext,this._prefixes={},"function"==typeof e&&(i=t,t=e,e=null),this._callback=t||k,this._prefixCallback=i||k;var r=this;this._lexer.tokenize(e,function(e,t){r._readCallback!==h&&(null!==e?r._callback(e):r._readCallback=r._readCallback(t))}),e||(this.addChunk=this._lexer.addChunk,this.end=this._lexer.end)}},e.Parser=i;var y=/^"((?:.|\n|\r)*)"(?:\^\^<(.+)>|@([\-a-z]+))?$/i,_="http://www.w3.org/1999/02/22-rdf-syntax-ns#",I=_+"type",g=/["\\\t\n\r\b\f]/,U=/["\\\t\n\r\b\f]/g,m={"\\":"\\\\",'"':'\\"'," ":"\\t","\n":"\\n","\r":"\\r","\b":"\\b","\f":"\\f"};r.prototype={_write:function(){for(var e=0,t=arguments.length-2;t>=e;e++)this._outputStream.write(arguments[e],"utf8",e===t?arguments[t+1]:null)},_writeUriOrBlankNode:function(e,t){if(/^_:/.test(e))return this._write(e,t);var i,r=e.match(/^(.*[#\/])([a-z][\-_a-z0-9]*)$/i);return r&&(i=this._prefixURIs[r[1]])?this._write(i,r[2],t):void this._write("<",e,">",t)},_writeLiteral:function(e,t,i,r){g.test(e)&&(e=e.replace(U,function(e){return m[e]})),this._write('"',e,'"',t||i?null:r),t?(this._write("^^",null),this._writeUriOrBlankNode(t,r)):i&&this._write("@",i,r)},_writeSubject:function(e,t){if('"'===e[0])throw new Error("A literal as subject is not allowed: "+e);this._writeUriOrBlankNode(e,t)},_writePredicate:function(e,t){if('"'===e[0])throw new Error("A literal as predicate is not allowed: "+e);e===I?this._write("a",t):this._writeUriOrBlankNode(e,t)},_writeObject:function(e,t){var i=y.exec(e);null!==i?this._writeLiteral(i[1],i[2],i[3],t):this._writeUriOrBlankNode(e,t)},addTriple:function(e,t,i,r){i||(r=t,i=e.object,t=e.predicate,e=e.subject);try{this._prevSubject===e?this._prevPredicate===t?this._write(", ",null):(this._write(";\n ",null),this._writePredicate(t),this._write(" ",null),this._prevPredicate=t):(this._prevSubject&&this._write(".\n",null),this._writeSubject(e),this._write(" ",null),this._writePredicate(t),this._write(" ",null),this._prevSubject=e,this._prevPredicate=t),this._writeObject(i,r)}catch(s){r&&r(s)}},addTriples:function(e){for(var t=0;t.\n",i))},addPrefixes:function(e,t){for(var i in e)this.addPrefix(i,e[i]);this._write("\n",t)},end:function(e){if(this._prevSubject&&(this._write(".\n",null),delete this._prevSubject),this===this._outputStream)return e&&e(null,this._output);var t=e&&function(){t=null,e()};try{this._outputStream.end(t)}catch(i){t&&t()}}},e.Writer=r;var R=/^([^:\/#"']*):[^\/]/;s.prototype={get defaultContext(){return"n3/contexts#default"},get size(){var e=this._size;if(null!==e)return e;var t,i,r=this._contexts;for(var s in r)for(var u in t=r[s].subjects)for(var n in i=t[u])e+=Object.keys(i[n]).length;return this._size=e},_addToIndex:function(e,t,i,r){var s=e[t]||(e[t]={}),u=s[i]||(s[i]={});u[r]=null},_findInIndex:function(e,t,i,r,s,u,n,a){var c,f=[],l=Object.keys(this._entities);t&&(c=e)&&((e={})[t]=c[t]);for(var d in e){var o=e[d]||{},h=l[d];i&&(c=o)&&((o={})[i]=c[i]);for(var _ in o){var p=o[_]||{},b=l[_];r&&(c=p)&&(r in p?(p={})[r]=c[r]:p={}),f.push.apply(f,Object.keys(p).map(function(e){var t={context:a};return t[s]=h,t[u]=b,t[n]=l[e],t}))}}return f},addTriple:function(e,t,i,r){t||(r=e.context,i=e.object,t=e.predicate,e=e.subject),r=r||this.defaultContext;var s=this._contexts[r];s||(s=this._contexts[r]={subjects:{},predicates:{},objects:{}},Object.freeze(s));var u=this._entities;return e=u[e]||(u[e]=++this._entityCount),t=u[t]||(u[t]=++this._entityCount),i=u[i]||(u[i]=++this._entityCount),this._addToIndex(s.subjects,e,t,i),this._addToIndex(s.predicates,t,i,e),this._addToIndex(s.objects,i,e,t),this._size=null,this},addTriples:function(e){for(var t=e.length-1;t>=0;t--)this.addTriple(e[t]);return this},addPrefix:function(e,t){this._prefixes[e]=t},addPrefixes:function(e){for(var t in e)this.addPrefix(t,e[t])},find:function(e,t,i,r){var s,u,n,a=this._prefixes;return null!==(s=R.exec(e))&&(n=a[u=s[1]])&&(e=n+e.substr(u.length+1)),null!==(s=R.exec(t))&&(n=a[u=s[1]])&&(t=n+t.substr(u.length+1)),null!==(s=R.exec(i))&&(n=a[u=s[1]])&&(i=n+i.substr(u.length+1)),r&&null!==(s=R.exec(r))&&(n=a[u=s[1]])&&(r=n+r.substr(u.length+1)),this.findByUri(e,t,i,r)},findByUri:function(e,t,i,r){r=r||this.defaultContext;var s=this._contexts[r],u=this._entities;return e&&!(e=u[e])?[]:t&&!(t=u[t])?[]:i&&!(i=u[i])?[]:s?e?i?this._findInIndex(s.objects,i,e,t,"object","subject","predicate",r):this._findInIndex(s.subjects,e,t,i,"subject","predicate","object",r):t?this._findInIndex(s.predicates,t,i,e,"predicate","object","subject",r):this._findInIndex(s.objects,i,e,t,"object","subject","predicate",r):[]},createBlankNode:function(e){var t;if(e){t=e="_:"+e;for(var i=1;this._entities[t];)t=e+i++}else do t="_:b"+this._blankNodeIndex++;while(this._entities[t]);return this._entities[t]=this._entityCount++,t}},e.Store=s;var P="http://www.w3.org/2001/XMLSchema#string",T="http://www.w3.org/1999/02/22-rdf-syntax-ns#langString",S={isUri:function(e){if(!e)return e;var t=e[0];return'"'!==t&&"_"!==t},isLiteral:function(e){return e&&'"'===e[0]},isBlank:function(e){return e&&"_:"===e.substr(0,2)},getLiteralValue:function(e){var t=/^"((?:.|\n|\r)*)"/.exec(e);if(!t)throw new Error(e+" is not a literal");return t[1]},getLiteralType:function(e){var t=/^"(?:.|\n|\r)*"(?:\^\^<(.+)>|(@)[\-a-z]+)?$/i.exec(e);if(!t)throw new Error(e+" is not a literal");return t[1]||(t[2]?T:P)},getLiteralLanguage:function(e){var t=/^"(?:.|\n|\r)*"(?:@([\-a-z]+)|\^\^<.+>)?$/i.exec(e);if(!t)throw new Error(e+" is not a literal");return t[1]?t[1].toLowerCase():""},isQName:function(e){return e&&/^[^:\/"']*:[^:\/"']+$/.test(e)},expandQName:function(e,t){var i=/^([^:\/]*):([^:\/]+)$/.exec(e);if(!i)throw new Error(e+" is not a QName");var r=i[1];if(!(r in t))throw new Error("Unknown prefix: "+r);return t[r]+i[2]}};e.Util=u(u)}("undefined"!=typeof exports?exports:this.N3={});