@kitelev/exocortex-cli 13.182.0 → 13.183.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +3 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- // @kitelev/exocortex-cli v13.182.0
2
+ // @kitelev/exocortex-cli v13.183.0
3
3
  // CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more
4
4
  // License: MIT
5
5
 
@@ -112,7 +112,7 @@ Expecting `+Ac.join(", ")+", got '"+(this.terminals_[We]||We)+"'":Lf="Parse erro
112
112
  `,this._explicitDatatype=!!r.explicitDatatype}o(rt,"Generator");rt.prototype.toQuery=function(r){var e="";return r.queryType&&(e+=r.queryType.toUpperCase()+" "),r.reduced&&(e+="REDUCED "),r.distinct&&(e+="DISTINCT "),r.variables?e+=Or(r.variables,void 0,function(t){return/^[?$]/.test(t)?t:xn(t)?this.toEntity(t):"("+this.toExpression(t.expression)+" AS "+Lu(t.variable)+")"},this)+" ":r.template&&(e+=this.group(r.template,!0)+this._newline),r.from&&(e+=this.graphs("FROM ",r.from.default)+this.graphs("FROM NAMED ",r.from.named)),r.where&&(e+="WHERE "+this.group(r.where,!0)+this._newline),r.updates&&(e+=Or(r.updates,";"+this._newline,this.toUpdate,this)),r.group&&(e+="GROUP BY "+Or(r.group,void 0,function(t){var i=xn(t.expression)?this.toEntity(t.expression):"("+this.toExpression(t.expression)+")";return t.variable?"("+i+" AS "+Lu(t.variable)+")":i},this)+this._newline),r.having&&(e+="HAVING ("+Or(r.having,void 0,this.toExpression,this)+")"+this._newline),r.order&&(e+="ORDER BY "+Or(r.order,void 0,function(t){var i="("+this.toExpression(t.expression)+")";return t.descending?"DESC "+i:i},this)+this._newline),r.offset&&(e+="OFFSET "+r.offset+this._newline),r.limit&&(e+="LIMIT "+r.limit+this._newline),r.values&&(e+=this.values(r)),e=this.baseAndPrefixes(r)+e,e.trim()};rt.prototype.baseAndPrefixes=function(r){var e=r.base?"BASE <"+r.base+">"+this._newline:"",t="";for(var i in r.prefixes)(this._options.allPrefixes||this._usedPrefixes[i])&&(t+="PREFIX "+i+": <"+r.prefixes[i]+">"+this._newline);return e+t};rt.prototype.toPattern=function(r){var e=r.type||r instanceof Array&&"array"||(r.subject&&r.predicate&&r.object?"triple":"");if(!(e in this))throw new Error("Unknown entry type: "+e);return this[e](r)};rt.prototype.triple=function(r){return this.toEntity(r.subject)+" "+this.toEntity(r.predicate)+" "+this.toEntity(r.object)+"."};rt.prototype.array=function(r){return Or(r,this._newline,this.toPattern,this)};rt.prototype.bgp=function(r){return this.encodeTriples(r.triples)};rt.prototype.encodeTriples=function(r){if(!r.length)return"";for(var e=[],t=void 0,i=void 0,n=0;n<r.length;n++){var s=r[n];gs(s.subject,t)?gs(s.predicate,i)?e.push(","):(i=s.predicate,e.push(";"+this._newline,this._indent,this.toEntity(i))):(t&&e.push("."+this._newline),t=s.subject,i=s.predicate,e.push(this.toEntity(t)," ",this.toEntity(i))),e.push(" ",this.toEntity(s.object))}return e.push("."),e.join("")};rt.prototype.graph=function(r){return"GRAPH "+this.toEntity(r.name)+" "+this.group(r)};rt.prototype.graphs=function(r,e){return!e||e.length===0?"":Or(e,"",function(t){return r+this.toEntity(t)+this._newline},this)};rt.prototype.group=function(r,e){return r=e!==!0?this.array(r.patterns||r.triples):this.toPattern(r.type!=="group"?r:r.patterns),r.indexOf(this._newline)===-1?"{ "+r+" }":"{"+this._newline+this.indent(r)+this._newline+"}"};rt.prototype.query=function(r){return this.toQuery(r)};rt.prototype.filter=function(r){return"FILTER("+this.toExpression(r.expression)+")"};rt.prototype.bind=function(r){return"BIND("+this.toExpression(r.expression)+" AS "+Lu(r.variable)+")"};rt.prototype.optional=function(r){return"OPTIONAL "+this.group(r)};rt.prototype.union=function(r){return Or(r.patterns,this._newline+"UNION"+this._newline,function(e){return this.group(e,!0)},this)};rt.prototype.minus=function(r){return"MINUS "+this.group(r)};rt.prototype.values=function(r){var e=Object.keys(r.values.reduce(function(n,s){for(var a in s)n[a]=!0;return n},{})),t,i;return e.length===1?t=i="":(t="(",i=")"),"VALUES "+t+e.join(" ")+i+" {"+this._newline+Or(r.values,this._newline,function(n){return" "+t+Or(e,void 0,function(s){return n[s]?this.toEntity(n[s]):"UNDEF"},this)+i},this)+this._newline+"}"};rt.prototype.service=function(r){return"SERVICE "+(r.silent?"SILENT ":"")+this.toEntity(r.name)+" "+this.group(r)};rt.prototype.toExpression=function(r){if(xn(r))return this.toEntity(r);switch(r.type.toLowerCase()){case"aggregate":return r.aggregation.toUpperCase()+"("+(r.distinct?"DISTINCT ":"")+this.toExpression(r.expression)+(typeof r.separator=="string"?'; SEPARATOR = "'+r.separator.replace(A2,C2)+'"':"")+")";case"functioncall":return this.toEntity(r.function)+"("+Or(r.args,", ",this.toExpression,this)+")";case"operation":var e=r.operator.toUpperCase(),t=r.args||[];switch(r.operator.toLowerCase()){case"<":case">":case">=":case"<=":case"&&":case"||":case"=":case"!=":case"+":case"-":case"*":case"/":return(xn(t[0])?this.toEntity(t[0]):"("+this.toExpression(t[0])+")")+" "+e+" "+(xn(t[1])?this.toEntity(t[1]):"("+this.toExpression(t[1])+")");case"!":return"!("+this.toExpression(t[0])+")";case"uplus":return"+("+this.toExpression(t[0])+")";case"uminus":return"-("+this.toExpression(t[0])+")";case"notin":e="NOT IN";case"in":return this.toExpression(t[0])+" "+e+"("+(go(t[1])?t[1]:Or(t[1],", ",this.toExpression,this))+")";case"notexists":e="NOT EXISTS";case"exists":return e+" "+this.group(t[0],!0);default:return e+"("+Or(t,", ",this.toExpression,this)+")"}default:throw new Error("Unknown expression type: "+r.type)}};rt.prototype.toEntity=function(r){if(xn(r))switch(r.termType){case"Wildcard":return"*";case"Variable":return Lu(r);case"BlankNode":return"_:"+r.value;case"Literal":var e=r.value||"",t=r.language||"",i=r.datatype;if(r='"'+e.replace(A2,C2)+'"',t)r+="@"+t;else if(i){if(!this._explicitDatatype)switch(i.value){case yO:return r;case gO:if(/^\d+$/.test(e))return e+" "}r+="^^"+this.encodeIRI(i.value)}return r;case"Quad":if(!this._sparqlStar)throw new Error("SPARQL* support is not enabled");return r.graph&&r.graph.termType!=="DefaultGraph"?"<< GRAPH "+this.toEntity(r.graph)+" { "+this.toEntity(r.subject)+" "+this.toEntity(r.predicate)+" "+this.toEntity(r.object)+" } >>":"<< "+this.toEntity(r.subject)+" "+this.toEntity(r.predicate)+" "+this.toEntity(r.object)+" >>";default:return this.encodeIRI(r.value)}else{var n=r.items.map(this.toEntity,this),s=r.pathType;switch(s){case"^":case"!":return s+n[0];case"*":case"+":case"?":return"("+n[0]+s+")";default:return"("+n.join(s)+")"}}};var A2=/["\\\t\n\r\b\f]/g,C2=o(function(r){return vO[r]},"escapeReplacer"),vO={"\\":"\\\\",'"':'\\"'," ":"\\t","\n":"\\n","\r":"\\r","\b":"\\b","\f":"\\f"};rt.prototype.encodeIRI=function(r){var e=this._prefixRegex.exec(r);if(e){var t=this._prefixByIri[e[1]];return this._usedPrefixes[t]=!0,t+":"+e[2]}return"<"+r+">"};rt.prototype.toUpdate=function(r){switch(r.type||r.updateType){case"load":return"LOAD"+(r.source?" "+this.toEntity(r.source):"")+(r.destination?" INTO GRAPH "+this.toEntity(r.destination):"");case"insert":return"INSERT DATA "+this.group(r.insert,!0);case"delete":return"DELETE DATA "+this.group(r.delete,!0);case"deletewhere":return"DELETE WHERE "+this.group(r.delete,!0);case"insertdelete":return(r.graph?"WITH "+this.toEntity(r.graph)+this._newline:"")+(r.delete.length?"DELETE "+this.group(r.delete,!0)+this._newline:"")+(r.insert.length?"INSERT "+this.group(r.insert,!0)+this._newline:"")+(r.using?this.graphs("USING ",r.using.default):"")+(r.using?this.graphs("USING NAMED ",r.using.named):"")+"WHERE "+this.group(r.where,!0);case"add":case"copy":case"move":return r.type.toUpperCase()+" "+(r.silent?"SILENT ":"")+(r.source.default?"DEFAULT":this.toEntity(r.source.name))+" TO "+this.toEntity(r.destination.name);case"create":case"clear":case"drop":return r.type.toUpperCase()+(r.silent?" SILENT ":" ")+(r.graph.default?"DEFAULT":r.graph.named?"NAMED":r.graph.all?"ALL":"GRAPH "+this.toEntity(r.graph.name));default:throw new Error("Unknown update query type: "+r.type)}};rt.prototype.indent=function(r){return r.replace(/^/gm,this._indent)};function Lu(r){return"?"+r.value}o(Lu,"variableToString");function go(r){return typeof r=="string"}o(go,"isString");function xn(r){return typeof r.termType=="string"}o(xn,"isTerm");function gs(r,e){if(!r||!xn(r)||!e||!xn(e)||r.termType!==e.termType)return!1;switch(r.termType){case"Literal":return r.value===e.value&&r.language===e.language&&gs(r.datatype,e.datatype);case"Quad":return gs(r.subject,e.subject)&&gs(r.predicate,e.predicate)&&gs(r.object,e.object)&&gs(r.graph,e.graph);default:return r.value===e.value}}o(gs,"equalTerms");function Or(r,e,t,i){return r.map(t,i).join(go(e)?e:" ")}o(Or,"mapJoin");function _O(r={}){return{stringify:o(function(e){var t=Object.create(r);return t.prefixes=e.prefixes,new rt(t).toQuery(e)},"stringify"),createGenerator:o(function(){return new rt(r)},"createGenerator")}}o(_O,"_Generator");O2.exports={Generator:_O}});var Bp=y(Vu=>{"use strict";Object.defineProperty(Vu,"__esModule",{value:!0});Vu.BlankNode=void 0;var Up=class{static{o(this,"BlankNode")}constructor(e){this.termType="BlankNode",this.value=e}equals(e){return!!e&&e.termType==="BlankNode"&&e.value===this.value}};Vu.BlankNode=Up});var Wp=y($u=>{"use strict";Object.defineProperty($u,"__esModule",{value:!0});$u.DefaultGraph=void 0;var yo=class{static{o(this,"DefaultGraph")}constructor(){this.termType="DefaultGraph",this.value=""}equals(e){return!!e&&e.termType==="DefaultGraph"}};$u.DefaultGraph=yo;yo.INSTANCE=new yo});var Uu=y(qu=>{"use strict";Object.defineProperty(qu,"__esModule",{value:!0});qu.NamedNode=void 0;var Gp=class{static{o(this,"NamedNode")}constructor(e){this.termType="NamedNode",this.value=e}equals(e){return!!e&&e.termType==="NamedNode"&&e.value===this.value}};qu.NamedNode=Gp});var Hp=y(Bu=>{"use strict";Object.defineProperty(Bu,"__esModule",{value:!0});Bu.Literal=void 0;var P2=Uu(),vo=class r{static{o(this,"Literal")}constructor(e,t){this.termType="Literal",this.value=e,typeof t=="string"?(this.language=t,this.datatype=r.RDF_LANGUAGE_STRING):t?(this.language="",this.datatype=t):(this.language="",this.datatype=r.XSD_STRING)}equals(e){return!!e&&e.termType==="Literal"&&e.value===this.value&&e.language===this.language&&this.datatype.equals(e.datatype)}};Bu.Literal=vo;vo.RDF_LANGUAGE_STRING=new P2.NamedNode("http://www.w3.org/1999/02/22-rdf-syntax-ns#langString");vo.XSD_STRING=new P2.NamedNode("http://www.w3.org/2001/XMLSchema#string")});var Kp=y(Wu=>{"use strict";Object.defineProperty(Wu,"__esModule",{value:!0});Wu.Quad=void 0;var zp=class{static{o(this,"Quad")}constructor(e,t,i,n){this.termType="Quad",this.value="",this.subject=e,this.predicate=t,this.object=i,this.graph=n}equals(e){return!!e&&(e.termType==="Quad"||!e.termType)&&this.subject.equals(e.subject)&&this.predicate.equals(e.predicate)&&this.object.equals(e.object)&&this.graph.equals(e.graph)}};Wu.Quad=zp});var Yp=y(Gu=>{"use strict";Object.defineProperty(Gu,"__esModule",{value:!0});Gu.Variable=void 0;var Qp=class{static{o(this,"Variable")}constructor(e){this.termType="Variable",this.value=e}equals(e){return!!e&&e.termType==="Variable"&&e.value===this.value}};Gu.Variable=Qp});var D2=y(Hu=>{"use strict";Object.defineProperty(Hu,"__esModule",{value:!0});Hu.DataFactory=void 0;var wO=Bp(),bO=Wp(),I2=Hp(),SO=Uu(),EO=Kp(),TO=Yp(),xO=0,Xp=class{static{o(this,"DataFactory")}constructor(e){this.blankNodeCounter=0,e=e||{},this.blankNodePrefix=e.blankNodePrefix||`df_${xO++}_`}namedNode(e){return new SO.NamedNode(e)}blankNode(e){return new wO.BlankNode(e||`${this.blankNodePrefix}${this.blankNodeCounter++}`)}literal(e,t){return new I2.Literal(e,t)}variable(e){return new TO.Variable(e)}defaultGraph(){return bO.DefaultGraph.INSTANCE}quad(e,t,i,n){return new EO.Quad(e,t,i,n||this.defaultGraph())}fromTerm(e){switch(e.termType){case"NamedNode":return this.namedNode(e.value);case"BlankNode":return this.blankNode(e.value);case"Literal":return e.language?this.literal(e.value,e.language):e.datatype.equals(I2.Literal.XSD_STRING)?this.literal(e.value):this.literal(e.value,this.fromTerm(e.datatype));case"Variable":return this.variable(e.value);case"DefaultGraph":return this.defaultGraph();case"Quad":return this.quad(this.fromTerm(e.subject),this.fromTerm(e.predicate),this.fromTerm(e.object),this.fromTerm(e.graph))}}fromQuad(e){return this.fromTerm(e)}resetBlankNodeCounter(){this.blankNodeCounter=0}};Hu.DataFactory=Xp});var R2=y(Fr=>{"use strict";var AO=Fr&&Fr.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),ys=Fr&&Fr.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&AO(e,r,t)};Object.defineProperty(Fr,"__esModule",{value:!0});ys(Bp(),Fr);ys(D2(),Fr);ys(Wp(),Fr);ys(Hp(),Fr);ys(Uu(),Fr);ys(Kp(),Fr);ys(Yp(),Fr)});var k2=y((zM,N2)=>{var{Parser:en}=x2(),{Generator:CO}=F2(),{Wildcard:OO}=qp(),{DataFactory:FO}=R2();function PO({prefixes:r,baseIRI:e,factory:t,pathOnly:i,sparqlStar:n,skipValidation:s,skipUngroupedVariableCheck:a}={}){let c={};for(let l in r??{})c[l]=r[l];let u=new en;return u.parse=function(){return en.base=e||"",en.prefixes=Object.create(c),en.factory=t||new FO,en.sparqlStar=!!n,en.pathOnly=!!i,en.skipValidation=!!s||!!a,en.prototype.parse.apply(u,arguments)},u._resetBlanks=en._resetBlanks,u}o(PO,"_Parser");N2.exports={Parser:PO,Generator:CO,Wildcard:OO}});var Zp=y(Zs=>{"use strict";Object.defineProperty(Zs,"__esModule",{value:!0});Zs.CaseWhenTransformerError=Zs.CaseWhenTransformer=void 0;var Jp=class{static{o(this,"CaseWhenTransformer")}transform(e){let t=e,i,n=0,s=100;do if(i=t,t=this.transformSinglePass(t),n++,n>s)throw new tn("Too many nested CASE expressions (max 100 iterations)");while(t!==i);return t}transformSinglePass(e){let t=this.findCasePositions(e);if(t.length===0)return e;let i=e;for(let n=t.length-1;n>=0;n--){let s=t[n],a=this.extractCaseExpression(i,s);if(a){let c=this.convertCaseToIf(a.content);i=i.substring(0,s)+c+i.substring(s+a.length)}}return i}findCasePositions(e){let t=[],i=e.toUpperCase(),n=0;for(;n<e.length;){if(e[n]==="'"||e[n]==='"'){let s=e[n];for(n++;n<e.length&&e[n]!==s;)e[n]==="\\"&&n++,n++;n++;continue}if(i.substring(n,n+4)==="CASE"&&this.isWordBoundary(e,n,4)){t.push(n),n+=4;continue}n++}return t}extractCaseExpression(e,t){let i=1,n=t+4,s=e.toUpperCase();for(;n<e.length&&i>0;){if(e[n]==="'"||e[n]==='"'){let a=e[n];for(n++;n<e.length&&e[n]!==a;)e[n]==="\\"&&n++,n++;n++;continue}if(s.substring(n,n+4)==="CASE"&&this.isWordBoundary(e,n,4)){i++,n+=4;continue}if(s.substring(n,n+3)==="END"&&this.isWordBoundary(e,n,3)){if(i--,i===0){let a=e.substring(t,n+3);return{content:a,length:a.length}}n+=3;continue}n++}if(i>0)throw new tn(`Unclosed CASE expression at position ${t}`);return null}isWordBoundary(e,t,i){let n=t>0?e[t-1]:"",s=t===0||!/[a-zA-Z0-9_?$]/.test(n),a=t+i<e.length?e[t+i]:"",c=t+i>=e.length||!/[a-zA-Z0-9_]/.test(a);return s&&c}convertCaseToIf(e){let t=this.extractWhenClauses(e),i=this.extractElseClause(e);if(t.length===0)throw new tn("CASE expression must have at least one WHEN clause");let n=i!==null?i:'""';for(let s=t.length-1;s>=0;s--){let{condition:a,result:c}=t[s];n=`IF(${a}, ${c}, ${n})`}return n}extractWhenClauses(e){let t=[],i=e.replace(/^\s*CASE\s+/i,"").replace(/\s*END\s*$/i,""),n=this.findKeywordPositions(i,"WHEN"),s=this.findKeywordPositions(i,"ELSE"),a=s.length>0?s[0]:i.length;for(let c=0;c<n.length;c++){let u=n[c]+4,l=c+1<n.length?n[c+1]:a,f=i.substring(u,l).trim(),h=this.parseWhenClause(f);h&&t.push(h)}return t}findKeywordPositions(e,t){let i=[],n=e.toUpperCase(),s=0,a=0;for(;s<e.length;){let c=e[s];if(c==="'"||c==='"'){let u=c;for(s++;s<e.length&&e[s]!==u;)e[s]==="\\"&&s++,s++;s++;continue}if(c==="("){a++,s++;continue}if(c===")"){a--,s++;continue}if(a===0&&n.substring(s,s+t.length)===t&&this.isWordBoundary(e,s,t.length)){i.push(s),s+=t.length;continue}s++}return i}parseWhenClause(e){let t=this.findKeywordPositions(e,"THEN");if(t.length===0)throw new tn(`WHEN clause missing THEN keyword: ${e.substring(0,50)}...`);let i=t[0],n=e.substring(0,i).trim(),s=e.substring(i+4).trim();if(!n)throw new tn("WHEN clause has empty condition");if(!s)throw new tn("WHEN clause has empty result");return{condition:n,result:s}}extractElseClause(e){let t=e.replace(/^\s*CASE\s+/i,"").replace(/\s*END\s*$/i,""),i=this.findKeywordPositions(t,"ELSE");if(i.length>0){let n=i[0];return t.substring(n+4).trim()}return null}};Zs.CaseWhenTransformer=Jp;var tn=class extends Error{static{o(this,"CaseWhenTransformerError")}constructor(e){super(`CASE WHEN transformation error: ${e}`),this.name="CaseWhenTransformerError"}};Zs.CaseWhenTransformerError=tn});var j2=y(An=>{"use strict";Object.defineProperty(An,"__esModule",{value:!0});An.PrefixStarTransformerError=An.PrefixStarTransformer=An.WellKnownPrefixResolver=void 0;var zu=class{static{o(this,"WellKnownPrefixResolver")}constructor(){this.wellKnownPrefixes=new Map;let e=new Map;e.set("schema","http://schema.org/"),this.wellKnownPrefixes.set("http://schema.org/",e);let t=new Map;t.set("foaf","http://xmlns.com/foaf/0.1/"),this.wellKnownPrefixes.set("http://xmlns.com/foaf/0.1/",t);let i=new Map;i.set("dc","http://purl.org/dc/elements/1.1/"),i.set("dcterms","http://purl.org/dc/terms/"),this.wellKnownPrefixes.set("http://purl.org/dc/elements/1.1/",i),this.wellKnownPrefixes.set("http://purl.org/dc/terms/",i);let n=new Map;n.set("rdf","http://www.w3.org/1999/02/22-rdf-syntax-ns#"),n.set("rdfs","http://www.w3.org/2000/01/rdf-schema#"),this.wellKnownPrefixes.set("http://www.w3.org/1999/02/22-rdf-syntax-ns#",n),this.wellKnownPrefixes.set("http://www.w3.org/2000/01/rdf-schema#",n);let s=new Map;s.set("owl","http://www.w3.org/2002/07/owl#"),this.wellKnownPrefixes.set("http://www.w3.org/2002/07/owl#",s);let a=new Map;a.set("xsd","http://www.w3.org/2001/XMLSchema#"),this.wellKnownPrefixes.set("http://www.w3.org/2001/XMLSchema#",a);let c=new Map;c.set("skos","http://www.w3.org/2004/02/skos/core#"),this.wellKnownPrefixes.set("http://www.w3.org/2004/02/skos/core#",c);let u=new Map;u.set("prov","http://www.w3.org/ns/prov#"),this.wellKnownPrefixes.set("http://www.w3.org/ns/prov#",u);let l=new Map;l.set("geo","http://www.w3.org/2003/01/geo/wgs84_pos#"),this.wellKnownPrefixes.set("http://www.w3.org/2003/01/geo/wgs84_pos#",l);let f=new Map;f.set("dcat","http://www.w3.org/ns/dcat#"),this.wellKnownPrefixes.set("http://www.w3.org/ns/dcat#",f)}async resolve(e){let t=e.endsWith("#")||e.endsWith("/")?e:e+(e.includes("#")?"":"/"),i=this.wellKnownPrefixes.get(t);if(i)return i;let n=t.slice(0,-1),s=this.wellKnownPrefixes.get(n);return s||new Map}addVocabulary(e,t){this.wellKnownPrefixes.set(e,t)}};An.WellKnownPrefixResolver=zu;var em=class{static{o(this,"PrefixStarTransformer")}constructor(e){this.resolver=e??new zu}async transform(e){let t=this.findPrefixStarDeclarations(e);if(t.length===0)return e;let i=[],n=[];for(let a of t)try{let c=await this.resolver.resolve(a.uri);for(let[u,l]of c)i.push(`PREFIX ${u}: <${l}>`);if(c.size===0){let u=this.extractPrefixFromUri(a.uri);u&&i.push(`PREFIX ${u}: <${a.uri}>`)}}catch(c){let u=c instanceof Error?c.message:String(c);n.push(`Failed to resolve vocabulary ${a.uri}: ${u}`)}if(i.length===0&&n.length>0)throw new ea(n.join("; "));let s=e;for(let a=t.length-1;a>=0;a--){let c=t[a];s=s.substring(0,c.startPos)+s.substring(c.endPos)}return i.length>0&&(s=i.join(`
113
113
  `)+`
114
114
  `+s.trimStart()),s}findPrefixStarDeclarations(e){let t=[],i=e.toUpperCase(),n=0;for(;n<e.length;){if(e[n]==="'"||e[n]==='"'){let s=e[n];for(n++;n<e.length&&e[n]!==s;)e[n]==="\\"&&n++,n++;n++;continue}if(i.substring(n,n+6)==="PREFIX"){let s=n;for(n+=6;n<e.length&&/\s/.test(e[n]);)n++;if(e[n]==="*"){for(n++;n<e.length&&/\s/.test(e[n]);)n++;if(e[n]==="<"){n++;let a=n;for(;n<e.length&&e[n]!==">";)n++;if(e[n]===">"){let c=e.substring(a,n);n++;let u=this.findDeclarationEnd(e,n);t.push({uri:c,startPos:s,endPos:u}),n=u;continue}else throw new ea(`Unclosed IRI in PREFIX* declaration at position ${a}`)}else throw new ea(`Expected IRI after PREFIX* at position ${n}`)}else continue}n++}return t}findDeclarationEnd(e,t){let i=t;for(;i<e.length;){let n=e[i];if(n===`
115
- `)return i+1;let s=e.substring(i).toUpperCase();if(s.startsWith("PREFIX")||s.startsWith("BASE")||s.startsWith("SELECT")||s.startsWith("CONSTRUCT")||s.startsWith("DESCRIBE")||s.startsWith("ASK"))return i;if(/\s/.test(n)){i++;continue}break}return i}extractPrefixFromUri(e){let t=e.replace(/^https?:\/\//,"");t=t.replace(/\/$/,"").replace(/#$/,"");let i=t.split(/[/.#]+/).filter(Boolean);if(i.length===0)return null;let n=i[i.length-1];return/^(ontology|vocab|schema|ns|core)$/i.test(n)&&i.length>1?i[i.length-2].toLowerCase():n.toLowerCase().replace(/[^a-z0-9]/g,"")}};An.PrefixStarTransformer=em;var ea=class extends Error{static{o(this,"PrefixStarTransformerError")}constructor(e){super(`PREFIX* transformation error: ${e}`),this.name="PrefixStarTransformerError"}};An.PrefixStarTransformerError=ea});var V2=y(Mr=>{"use strict";var IO=Mr&&Mr.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),DO=Mr&&Mr.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),RO=Mr&&Mr.__importStar||(function(){var r=o(function(e){return r=Object.getOwnPropertyNames||function(t){var i=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[i.length]=n);return i},r(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=r(e),n=0;n<i.length;n++)i[n]!=="default"&&IO(t,e,i[n]);return DO(t,e),t}})();Object.defineProperty(Mr,"__esModule",{value:!0});Mr.SPARQLParser=Mr.SPARQLParseError=void 0;var M2=RO(k2()),tm=Zp(),L2=j2(),Pr=class extends Error{static{o(this,"SPARQLParseError")}constructor(e,t,i,n){super(e,n?{cause:n}:void 0),this.name="SPARQLParseError",this.line=t,this.column=i}};Mr.SPARQLParseError=Pr;var rm=class{static{o(this,"SPARQLParser")}constructor(e){this.parser=new M2.Parser({sparqlStar:!0}),this.generator=new M2.Generator,this.caseWhenTransformer=new tm.CaseWhenTransformer,this.prefixStarTransformer=new L2.PrefixStarTransformer(e?.vocabularyResolver)}parse(e){try{let t=this.caseWhenTransformer.transform(e),i=this.parser.parse(t);return this.validateQuery(i),i}catch(t){if(t instanceof tm.CaseWhenTransformerError)throw new Pr(t.message);if(t instanceof Error){let i=t.message.match(/line (\d+), column (\d+)/),n=i?parseInt(i[1],10):void 0,s=i?parseInt(i[2],10):void 0;throw new Pr(`SPARQL syntax error: ${t.message}`,n,s,t)}throw t}}async parseAsync(e){try{let t=await this.prefixStarTransformer.transform(e),i=this.caseWhenTransformer.transform(t),n=this.parser.parse(i);return this.validateQuery(n),n}catch(t){if(t instanceof L2.PrefixStarTransformerError)throw new Pr(t.message);if(t instanceof tm.CaseWhenTransformerError)throw new Pr(t.message);if(t instanceof Error){let i=t.message.match(/line (\d+), column (\d+)/),n=i?parseInt(i[1],10):void 0,s=i?parseInt(i[2],10):void 0;throw new Pr(`SPARQL syntax error: ${t.message}`,n,s,t)}throw t}}hasPrefixStar(e){return/PREFIX\s*\*/i.test(e)}toString(e){try{return this.generator.stringify(e)}catch(t){throw t instanceof Error?new Pr(`Failed to serialize SPARQL query: ${t.message}`,void 0,void 0,t):t}}getQueryType(e){if("queryType"in e&&e.type==="query")return e.queryType;throw new Pr("Query does not have a valid queryType property")}isSelectQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="SELECT"}isConstructQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="CONSTRUCT"}isAskQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="ASK"}isDescribeQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="DESCRIBE"}isUpdateQuery(e){return e.type==="update"}isInsertDataOperation(e){return"updateType"in e&&e.updateType==="insert"}isDeleteDataOperation(e){return"updateType"in e&&e.updateType==="delete"}validateQuery(e){if(!e||typeof e!="object")throw new Pr("Invalid query: not an object");if(e.type!=="query"&&e.type!=="update")throw new Pr(`Invalid type: expected "query" or "update", got "${e.type}"`);if(e.type==="query"){let t=["SELECT","CONSTRUCT","ASK","DESCRIBE"];if(!t.includes(e.queryType))throw new Pr(`Invalid query type: expected one of ${t.join(", ")}, got "${e.queryType}"`)}}};Mr.SPARQLParser=rm});var $2=y(ta=>{"use strict";Object.defineProperty(ta,"__esModule",{value:!0});ta.AlgebraTranslator=ta.AlgebraTranslatorError=void 0;var me=class extends Error{static{o(this,"AlgebraTranslatorError")}constructor(e,t){super(e,t?{cause:t}:void 0),this.name="AlgebraTranslatorError"}};ta.AlgebraTranslatorError=me;var im=class{static{o(this,"AlgebraTranslator")}constructor(){this.aggregateCounter=0}translate(e){if(e.type!=="query")throw new me("Only query operations are supported (not updates)");if(e.queryType==="SELECT")return this.translateSelect(e);if(e.queryType==="CONSTRUCT")return this.translateConstruct(e);if(e.queryType==="ASK")return this.translateAsk(e);throw new me(`Query type ${e.queryType} not yet supported`)}translateSelect(e){let t;if(!e.where||e.where.length===0)throw new me("SELECT query must have WHERE clause");t=this.translateWhere(e.where),this.aggregateCounter=0;let i=new Map,n=this.extractAggregatesWithMapping(e.variables,i),s=this.extractGroupVariables(e.group);if((n.length>0||s.length>0)&&(t={type:"group",variables:s,aggregates:n,input:t}),e.variables&&e.variables.length>0){for(let c of e.variables){let u=c;if(u.expression&&u.variable){if(u.expression.type==="aggregate")continue;let l=this.transformExpressionWithAggregateVars(u.expression,i);t={type:"extend",variable:u.variable.value,expression:l,input:t}}}let a=e.variables.filter(c=>c.termType==="Variable"||c.variable).map(c=>c.termType==="Variable"?c.value:c.variable.value);a.length>0&&(t={type:"project",variables:a,input:t})}return e.distinct&&(t={type:"distinct",input:t}),e.reduced&&(t={type:"reduced",input:t}),e.order&&e.order.length>0&&(t={type:"orderby",comparators:e.order.map(a=>this.translateOrderComparator(a)),input:t}),(e.limit!==void 0||e.offset!==void 0)&&(t={type:"slice",limit:e.limit,offset:e.offset,input:t}),t}translateConstruct(e){let t=this.translateConstructTemplate(e.template??[]);if(!e.where||e.where.length===0)throw new me("CONSTRUCT query must have WHERE clause");let i=this.translateWhere(e.where);return{type:"construct",template:t,where:i}}translateConstructTemplate(e){return!e||!Array.isArray(e)?[]:e.map(t=>this.translateTriple(t))}translateAsk(e){return{type:"ask",where:e.where&&e.where.length>0?this.translateWhere(e.where):{type:"bgp",triples:[]}}}extractAggregatesWithMapping(e,t){if(!e)return[];let i=[];for(let n of e)!n.expression||!n.variable||(n.expression.type==="aggregate"?(i.push({variable:n.variable.value,expression:this.translateAggregateExpression(n.expression)}),t.set(n.expression,n.variable.value)):this.collectNestedAggregates(n.expression,i,t));return i}collectNestedAggregates(e,t,i){if(e){if(e.type==="aggregate"){let n=`__agg${this.aggregateCounter++}`;t.push({variable:n,expression:this.translateAggregateExpression(e)}),i.set(e,n)}else if(e.type==="operation"&&e.args)for(let n of e.args)this.collectNestedAggregates(n,t,i)}}transformExpressionWithAggregateVars(e,t){if(t.has(e))return{type:"variable",name:t.get(e)};if(e.type==="operation"&&e.args){let i=e.args.map(c=>this.transformExpressionWithAggregateVars(c,t)),n=["=","!=","<",">","<=",">="],s=["&&","||","!"],a=["+","-","*","/"];return n.includes(e.operator)?{type:"comparison",operator:e.operator,left:i[0],right:i[1]}:s.includes(e.operator)?{type:"logical",operator:e.operator,operands:i}:a.includes(e.operator)?{type:"arithmetic",operator:e.operator,left:i[0],right:i[1]}:{type:"function",function:e.operator,args:i}}return this.translateExpression(e)}extractGroupVariables(e){return e?e.filter(t=>t.expression&&t.expression.termType==="Variable").map(t=>t.expression.value):[]}translateAggregateExpression(e){return{type:"aggregate",aggregation:e.aggregation.toLowerCase(),expression:e.expression?this.translateExpression(e.expression):void 0,distinct:e.distinct||!1,separator:e.separator}}translateWhere(e){if(e.length===0)throw new me("Empty WHERE clause");let t=e.filter(a=>a.type==="filter"),i=e.filter(a=>a.type==="bind"),n=e.filter(a=>a.type!=="filter"&&a.type!=="bind"),s;n.length===0?s={type:"bgp",triples:[]}:n.length===1?s=this.translatePattern(n[0]):s=n.map(c=>this.translatePattern(c)).reduce((c,u)=>({type:"join",left:c,right:u}));for(let a of i)s=this.translateBind(a,s);for(let a of t)s={type:"filter",expression:this.translateExpression(a.expression),input:s};return s}translatePattern(e){if(!e||!e.type)throw new me("Invalid pattern: missing type");switch(e.type){case"bgp":return this.translateBGP(e);case"filter":return this.translateFilter(e);case"optional":return this.translateOptional(e);case"union":return this.translateUnion(e);case"minus":return this.translateMinus(e);case"values":return this.translateValues(e);case"group":return this.translateWhere(e.patterns);case"query":return this.translateSubquery(e);case"service":return this.translateService(e);case"graph":return this.translateGraph(e);default:throw new me(`Unsupported pattern type: ${e.type}`)}}translateBGP(e){if(!e.triples||!Array.isArray(e.triples))throw new me("BGP pattern must have triples array");return{type:"bgp",triples:e.triples.map(t=>this.translateTriple(t))}}translateTriple(e){if(!e.subject||!e.predicate||!e.object)throw new me("Triple must have subject, predicate, and object");return{subject:this.translateTripleElement(e.subject),predicate:this.translatePredicate(e.predicate),object:this.translateTripleElement(e.object)}}translatePredicate(e){return e.type==="path"?this.translatePropertyPath(e):this.translateTripleElement(e)}translatePropertyPath(e){if(!e.pathType)throw new me("Property path must have pathType");if(!e.items||!Array.isArray(e.items))throw new me("Property path must have items array");let t=e.items.map(i=>this.translatePathItem(i));switch(e.pathType){case"/":return{type:"path",pathType:"/",items:t};case"|":return{type:"path",pathType:"|",items:t};case"^":if(t.length!==1)throw new me("Inverse path must have exactly one item");return{type:"path",pathType:"^",items:[t[0]]};case"+":if(t.length!==1)throw new me("OneOrMore path must have exactly one item");return{type:"path",pathType:"+",items:[t[0]]};case"*":if(t.length!==1)throw new me("ZeroOrMore path must have exactly one item");return{type:"path",pathType:"*",items:[t[0]]};case"?":if(t.length!==1)throw new me("ZeroOrOne path must have exactly one item");return{type:"path",pathType:"?",items:[t[0]]};default:throw new me(`Unsupported property path type: ${e.pathType}`)}}translatePathItem(e){if(e.type==="path")return this.translatePropertyPath(e);if(e.termType==="NamedNode")return{type:"iri",value:e.value};throw new me(`Unsupported path item type: ${e.type||e.termType}`)}translateTripleElement(e){if(!e||!e.termType)throw new me("Triple element must have termType");switch(e.termType){case"Variable":return{type:"variable",value:e.value};case"NamedNode":return{type:"iri",value:e.value};case"Literal":return{type:"literal",value:e.value,datatype:e.datatype?.value,language:e.language};case"BlankNode":return{type:"blank",value:e.value};case"Quad":return this.translateQuotedTriple(e);default:throw new me(`Unsupported term type: ${e.termType}`)}}translateQuotedTriple(e){if(!e.subject||!e.predicate||!e.object)throw new me("Quoted triple must have subject, predicate, and object");let t=this.translateTripleElement(e.subject),i=this.translateQuotedTriplePredicate(e.predicate),n=this.translateTripleElement(e.object);return{type:"quoted",subject:t,predicate:i,object:n}}translateQuotedTriplePredicate(e){if(!e||!e.termType)throw new me("Quoted triple predicate must have termType");switch(e.termType){case"Variable":return{type:"variable",value:e.value};case"NamedNode":return{type:"iri",value:e.value};default:throw new me(`Quoted triple predicate must be IRI or Variable, got: ${e.termType}`)}}translateFilter(e){if(!e.expression)throw new me("Filter pattern must have expression");let t=e.patterns?this.translateWhere(e.patterns):{type:"bgp",triples:[]};return{type:"filter",expression:this.translateExpression(e.expression),input:t}}translateExpression(e){if(!e)throw new me("Expression cannot be null or undefined");if(e.type==="operation")return this.translateOperationExpression(e);if(e.type==="functioncall"||e.type==="functionCall")return{type:"functionCall",function:e.function,args:e.args.map(t=>this.translateExpression(t))};if(e.termType)return this.translateTermExpression(e);throw new me(`Unsupported expression structure: ${JSON.stringify(e)}`)}translateOperationExpression(e){let t=["=","!=","<",">","<=",">="],i=["&&","||","!"],n=["+","-","*","/"];return t.includes(e.operator)?{type:"comparison",operator:e.operator,left:this.translateExpression(e.args[0]),right:this.translateExpression(e.args[1])}:i.includes(e.operator)?{type:"logical",operator:e.operator,operands:e.args.map(s=>this.translateExpression(s))}:n.includes(e.operator)?{type:"arithmetic",operator:e.operator,left:this.translateExpression(e.args[0]),right:this.translateExpression(e.args[1])}:e.operator==="exists"||e.operator==="notexists"?this.translateExistsExpression(e):e.operator==="in"||e.operator==="notin"?this.translateInExpression(e):{type:"function",function:e.operator,args:e.args.map(s=>this.translateExpression(s))}}translateExistsExpression(e){if(!e.args||e.args.length!==1)throw new me("EXISTS/NOT EXISTS must have exactly one pattern argument");let t=e.args[0],i;return t.type==="group"&&t.patterns?i=this.translateWhere(t.patterns):t.type==="bgp"?i=this.translateBGP(t):i=this.translatePattern(t),{type:"exists",negated:e.operator==="notexists",pattern:i}}translateInExpression(e){if(!e.args||e.args.length!==2)throw new me("IN/NOT IN must have exactly 2 arguments (expression and list)");let t=e.args[0],i=e.args[1];if(!Array.isArray(i))throw new me("IN/NOT IN second argument must be an array of values");return{type:"in",expression:this.translateExpression(t),list:i.map(n=>this.translateExpression(n)),negated:e.operator==="notin"}}translateTermExpression(e){if(e.termType==="Variable")return{type:"variable",name:e.value};if(e.termType==="Literal"){let t=e.value;return e.datatype&&(e.datatype.value.includes("#integer")||e.datatype.value.includes("#decimal")?t=parseFloat(e.value):e.datatype.value.includes("#boolean")&&(t=e.value==="true")),{type:"literal",value:t,datatype:e.datatype?.value}}return{type:"literal",value:String(e.value||e)}}translateOptional(e){if(!e.patterns||e.patterns.length===0)throw new me("OPTIONAL pattern must have patterns");return{type:"leftjoin",left:{type:"bgp",triples:[]},right:this.translateWhere(e.patterns),expression:e.expression?this.translateExpression(e.expression):void 0}}translateUnion(e){if(!e.patterns||e.patterns.length<2)throw new me("UNION pattern must have at least 2 patterns");let t=o(n=>n.type==="graph"?this.translateGraph(n):n.type==="service"?this.translateService(n):n.patterns&&Array.isArray(n.patterns)?this.translateWhere(n.patterns):this.translateWhere([n]),"translateBranch"),i={type:"union",left:t(e.patterns[0]),right:t(e.patterns[1])};for(let n=2;n<e.patterns.length;n++)i={type:"union",left:i,right:t(e.patterns[n])};return i}translateMinus(e){if(!e.patterns||e.patterns.length===0)throw new me("MINUS pattern must have patterns");return{type:"minus",left:{type:"bgp",triples:[]},right:this.translateWhere(e.patterns)}}translateValues(e){if(!e.values||!Array.isArray(e.values))throw new me("VALUES pattern must have values array");let t=new Set;for(let n of e.values)for(let s of Object.keys(n)){let a=s.startsWith("?")?s.slice(1):s;t.add(a)}let i=e.values.map(n=>this.translateValuesBinding(n));return{type:"values",variables:Array.from(t),bindings:i}}translateValuesBinding(e){let t={};for(let[i,n]of Object.entries(e)){let s=i.startsWith("?")?i.slice(1):i,a=n;if(a.termType==="NamedNode")t[s]={type:"iri",value:a.value};else if(a.termType==="Literal")t[s]={type:"literal",value:a.value,datatype:a.datatype?.value,language:a.language||void 0};else throw new me(`Unsupported VALUES term type: ${a.termType}`)}return t}translateBind(e,t){if(!e.variable||!e.expression)throw new me("BIND pattern must have variable and expression");return{type:"extend",variable:e.variable.value,expression:this.translateExpression(e.expression),input:t}}translateOrderComparator(e){return{expression:this.translateExpression(e.expression),descending:e.descending||!1}}translateSubquery(e){if(e.queryType!=="SELECT")throw new me(`Only SELECT subqueries are supported, got: ${e.queryType}`);return{type:"subquery",query:this.translateSelect(e)}}translateService(e){if(!e.name||e.name.termType!=="NamedNode")throw new me("SERVICE pattern must have a NamedNode endpoint");if(!e.patterns||!Array.isArray(e.patterns))throw new me("SERVICE pattern must have patterns array");let t=this.translateWhere(e.patterns);return{type:"service",endpoint:e.name.value,pattern:t,silent:e.silent||!1}}translateGraph(e){if(!e.name)throw new me("GRAPH pattern must have a name (IRI or variable)");if(!e.patterns||!Array.isArray(e.patterns))throw new me("GRAPH pattern must have patterns array");let t;if(e.name.termType==="NamedNode")t={type:"iri",value:e.name.value};else if(e.name.termType==="Variable")t={type:"variable",value:e.name.value};else throw new me(`GRAPH pattern name must be NamedNode or Variable, got: ${e.name.termType}`);let i=this.translateWhere(e.patterns);return{type:"graph",name:t,pattern:i}}};ta.AlgebraTranslator=im});var sm=y(Ku=>{"use strict";Object.defineProperty(Ku,"__esModule",{value:!0});Ku.FilterContainsOptimizer=void 0;var NO=nt(),kO=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i,nm=class{static{o(this,"FilterContainsOptimizer")}constructor(){this.tripleStore=null,this.lastOptimizationHints=[]}setTripleStore(e){this.tripleStore=e}getLastOptimizationHints(){return this.lastOptimizationHints}clearHints(){this.lastOptimizationHints=[]}async optimize(e){return this.clearHints(),this.optimizeRecursive(e)}optimizeSync(e,t){return this.clearHints(),this.optimizeSyncRecursive(e,t)}async optimizeRecursive(e){return e.type==="filter"?this.optimizeFilter(e):e.type==="join"?{type:"join",left:await this.optimizeRecursive(e.left),right:await this.optimizeRecursive(e.right)}:e.type==="leftjoin"?{...e,left:await this.optimizeRecursive(e.left),right:await this.optimizeRecursive(e.right)}:e.type==="union"?{type:"union",left:await this.optimizeRecursive(e.left),right:await this.optimizeRecursive(e.right)}:e.type==="minus"?{...e,left:await this.optimizeRecursive(e.left),right:await this.optimizeRecursive(e.right)}:e.type==="project"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="orderby"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="slice"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="distinct"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="reduced"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="group"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="extend"?{...e,input:await this.optimizeRecursive(e.input)}:e}optimizeSyncRecursive(e,t){return e.type==="filter"?this.optimizeFilterSync(e,t):e.type==="join"?{type:"join",left:this.optimizeSyncRecursive(e.left,t),right:this.optimizeSyncRecursive(e.right,t)}:e.type==="leftjoin"?{...e,left:this.optimizeSyncRecursive(e.left,t),right:this.optimizeSyncRecursive(e.right,t)}:e.type==="union"?{type:"union",left:this.optimizeSyncRecursive(e.left,t),right:this.optimizeSyncRecursive(e.right,t)}:e.type==="minus"?{...e,left:this.optimizeSyncRecursive(e.left,t),right:this.optimizeSyncRecursive(e.right,t)}:e.type==="project"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="orderby"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="slice"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="distinct"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="reduced"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="group"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="extend"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e}async optimizeFilter(e){let t=this.detectContainsUUIDPattern(e.expression);if(!t)return{type:"filter",expression:e.expression,input:await this.optimizeRecursive(e.input)};let i=[];return this.tripleStore&&(i=await this.findSubjectsContainingUUID(t.uuid)),this.rewriteFilter(e,t,i)}optimizeFilterSync(e,t){let i=this.detectContainsUUIDPattern(e.expression);if(!i)return{type:"filter",expression:e.expression,input:this.optimizeSyncRecursive(e.input,t)};let n=t?t.filter(s=>s.includes(i.uuid)):[];return this.rewriteFilter(e,i,n)}rewriteFilter(e,t,i){if(this.lastOptimizationHints.push({type:"uuid-index-lookup",originalPattern:`FILTER(CONTAINS(STR(?${t.variable}), "${t.uuid}"))`,suggestedRewrite:i.length===1?`VALUES ?${t.variable} { <${i[0]}> }`:i.length>1?`VALUES ?${t.variable} { ${i.map(n=>`<${n}>`).join(" ")} }`:"No matching URIs found for UUID",estimatedSpeedup:i.length>0?"O(n) \u2192 O(1)":"N/A",matchedUri:i.length===1?i[0]:void 0}),i.length===0)return{type:"filter",expression:e.expression,input:this.optimizeSyncRecursive(e.input)};if(i.length===1){let n=this.injectSubjectConstraint(e.input,t.variable,i[0]);if(n!==e.input)return n}return this.createValuesJoin(e,t,i)}detectContainsUUIDPattern(e){if(e.type==="function"||e.type==="functionCall"){let t=e;if((typeof t.function=="string"?t.function.toLowerCase():t.function?.value?.toLowerCase()??"")==="contains"&&t.args.length===2)return this.analyzeContainsArgs(t.args[0],t.args[1],e)}if(e.type==="logical"&&e.operator==="&&")for(let t of e.operands){let i=this.detectContainsUUIDPattern(t);if(i)return i}return null}analyzeContainsArgs(e,t,i){let n=null;if(e.type==="function"||e.type==="functionCall"){let s=e;if((typeof s.function=="string"?s.function.toLowerCase():s.function?.value?.toLowerCase()??"")==="str"&&s.args.length===1){let c=s.args[0];c.type==="variable"&&(n=c.name)}}if(!n&&e.type==="variable"&&(n=e.name),!n)return null;if(t.type==="literal"){let c=String(t.value).match(kO);if(c)return{variable:n,uuid:c[0].toLowerCase(),originalExpression:i}}return null}async findSubjectsContainingUUID(e){if(!this.tripleStore)return[];if(this.tripleStore.findSubjectsByUUID)return(await this.tripleStore.findSubjectsByUUID(e)).map(s=>s.value);let t=await this.tripleStore.subjects(),i=[];for(let n of t)n instanceof NO.IRI&&n.value.toLowerCase().includes(e.toLowerCase())&&i.push(n.value);return i}injectSubjectConstraint(e,t,i){if(e.type==="bgp"){let n=e.triples.map(a=>a.subject.type==="variable"&&a.subject.value===t?{...a,subject:{type:"iri",value:i}}:a);if(n.some((a,c)=>a.subject!==e.triples[c].subject))return{type:"bgp",triples:n}}if(e.type==="join"){let n=this.injectSubjectConstraint(e.left,t,i),s=this.injectSubjectConstraint(e.right,t,i);if(n!==e.left||s!==e.right)return{type:"join",left:n,right:s}}if(e.type==="filter"){let n=this.injectSubjectConstraint(e.input,t,i);if(n!==e.input)return{...e,input:n}}return e}createValuesJoin(e,t,i){return{type:"join",left:{type:"values",variables:[t.variable],bindings:i.map(a=>({[t.variable]:{type:"iri",value:a}}))},right:this.optimizeSyncRecursive(e.input)}}analyzeQuery(e){let t=[];return this.analyzeRecursive(e,t),t}analyzeRecursive(e,t){if(e.type==="filter"){let i=this.detectContainsUUIDPattern(e.expression);i&&t.push({type:"uuid-index-lookup",originalPattern:`FILTER(CONTAINS(STR(?${i.variable}), "${i.uuid}"))`,suggestedRewrite:`Use --optimize flag or rewrite as VALUES ?${i.variable} { <uri-containing-uuid> }`,estimatedSpeedup:"O(n) \u2192 O(1) with UUID index lookup"}),this.analyzeRecursive(e.input,t);return}e.type==="join"?(this.analyzeRecursive(e.left,t),this.analyzeRecursive(e.right,t)):e.type==="leftjoin"?(this.analyzeRecursive(e.left,t),this.analyzeRecursive(e.right,t)):e.type==="union"?(this.analyzeRecursive(e.left,t),this.analyzeRecursive(e.right,t)):e.type==="minus"?(this.analyzeRecursive(e.left,t),this.analyzeRecursive(e.right,t)):e.type==="project"?this.analyzeRecursive(e.input,t):e.type==="orderby"?this.analyzeRecursive(e.input,t):e.type==="slice"?this.analyzeRecursive(e.input,t):e.type==="distinct"?this.analyzeRecursive(e.input,t):e.type==="reduced"?this.analyzeRecursive(e.input,t):e.type==="group"?this.analyzeRecursive(e.input,t):e.type==="extend"&&this.analyzeRecursive(e.input,t)}};Ku.FilterContainsOptimizer=nm});var q2=y(Qu=>{"use strict";Object.defineProperty(Qu,"__esModule",{value:!0});Qu.AlgebraOptimizer=void 0;var jO=sm(),am=class{static{o(this,"AlgebraOptimizer")}constructor(){this.stats=new Map,this.tripleStore=null,this.filterContainsOptimizer=new jO.FilterContainsOptimizer}setTripleStore(e){this.tripleStore=e,this.filterContainsOptimizer.setTripleStore(e)}getOptimizationHints(){return this.filterContainsOptimizer.getLastOptimizationHints()}analyzeQuery(e){return this.filterContainsOptimizer.analyzeQuery(e)}optimize(e){let t=e;return t=this.eliminateEmptyBGPInFilterJoin(t),t=this.filterPushDown(t),t=this.joinReordering(t),t}async optimizeAsync(e){let t=e;return t=this.eliminateEmptyBGPInFilterJoin(t),this.tripleStore&&(t=await this.filterContainsOptimizer.optimize(t)),t=this.filterPushDown(t),t=this.joinReordering(t),t}optimizeWithSubjects(e,t){let i=e;return i=this.eliminateEmptyBGPInFilterJoin(i),i=this.filterContainsOptimizer.optimizeSync(i,t),i=this.filterPushDown(i),i=this.joinReordering(i),i}eliminateEmptyBGPInFilterJoin(e){if(e.type==="join"){if(e.left.type==="filter"){let t=e.left;if(t.input.type==="bgp"&&t.input.triples.length===0)return{type:"filter",expression:t.expression,input:this.eliminateEmptyBGPInFilterJoin(e.right)}}if(e.right.type==="filter"){let t=e.right;if(t.input.type==="bgp"&&t.input.triples.length===0)return{type:"filter",expression:t.expression,input:this.eliminateEmptyBGPInFilterJoin(e.left)}}return{type:"join",left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}}return e.type==="filter"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="leftjoin"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="union"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="minus"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="project"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="orderby"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="slice"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="distinct"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e}filterPushDown(e){return e.type==="filter"?this.pushDownFilter(e):e.type==="join"?{type:"join",left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="leftjoin"?{...e,left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="union"?{type:"union",left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="minus"?{...e,left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="project"?{...e,input:this.filterPushDown(e.input)}:e.type==="orderby"?{...e,input:this.filterPushDown(e.input)}:e.type==="slice"?{...e,input:this.filterPushDown(e.input)}:e.type==="distinct"?{...e,input:this.filterPushDown(e.input)}:e}pushDownFilter(e){let t=e.input;if(t.type==="join"){let i=this.getFilterVariables(e.expression),n=this.getOperationVariables(t.left),s=this.getOperationVariables(t.right),a=i.every(u=>n.has(u)),c=i.every(u=>s.has(u));return a&&!c?{type:"join",left:{type:"filter",expression:e.expression,input:this.filterPushDown(t.left)},right:this.filterPushDown(t.right)}:c&&!a?{type:"join",left:this.filterPushDown(t.left),right:{type:"filter",expression:e.expression,input:this.filterPushDown(t.right)}}:{type:"filter",expression:e.expression,input:{type:"join",left:this.filterPushDown(t.left),right:this.filterPushDown(t.right)}}}return t.type==="union"?{type:"union",left:{type:"filter",expression:e.expression,input:this.filterPushDown(t.left)},right:{type:"filter",expression:e.expression,input:this.filterPushDown(t.right)}}:{type:"filter",expression:e.expression,input:this.filterPushDown(t)}}getFilterVariables(e){let t=[];if(e.type==="variable")t.push(e.name);else if(e.type==="comparison")t.push(...this.getFilterVariables(e.left)),t.push(...this.getFilterVariables(e.right));else if(e.type==="logical")for(let i of e.operands)t.push(...this.getFilterVariables(i));else if(e.type==="function")for(let i of e.args)t.push(...this.getFilterVariables(i));return Array.from(new Set(t))}getOperationVariables(e){let t=new Set;if(e.type==="bgp")for(let i of e.triples)i.subject.type==="variable"&&t.add(i.subject.value),i.predicate.type==="variable"&&t.add(i.predicate.value),i.object.type==="variable"&&t.add(i.object.value);else if(e.type==="join"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else{if(e.type==="filter")return this.getOperationVariables(e.input);if(e.type==="leftjoin"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else if(e.type==="union"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else{if(e.type==="minus")return this.getOperationVariables(e.left);if(e.type==="project")return new Set(e.variables)}}return t}joinReordering(e){return e.type==="join"?this.reorderJoin(e):e.type==="filter"?{...e,input:this.joinReordering(e.input)}:e.type==="leftjoin"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="union"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="minus"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="project"?{...e,input:this.joinReordering(e.input)}:e.type==="orderby"?{...e,input:this.joinReordering(e.input)}:e.type==="slice"?{...e,input:this.joinReordering(e.input)}:e.type==="distinct"?{...e,input:this.joinReordering(e.input)}:e}reorderJoin(e){let t=this.estimateCost(e.left);return this.estimateCost(e.right)<t?{type:"join",left:this.joinReordering(e.right),right:this.joinReordering(e.left)}:{type:"join",left:this.joinReordering(e.left),right:this.joinReordering(e.right)}}estimateCost(e){if(e.type==="bgp"){let t=e.triples.length*100;for(let i of e.triples)i.subject.type==="variable"&&(t+=10),i.predicate.type==="variable"&&(t+=20),i.object.type==="variable"&&(t+=10);return t}return e.type==="filter"?this.estimateCost(e.input)*.3:e.type==="join"?this.estimateCost(e.left)*this.estimateCost(e.right):e.type==="leftjoin"?this.estimateCost(e.left)+this.estimateCost(e.right)*.5:e.type==="union"?this.estimateCost(e.left)+this.estimateCost(e.right):e.type==="minus"?this.estimateCost(e.left)+this.estimateCost(e.right)*.3:100}setStatistics(e,t){this.stats.set(e,t)}getStatistics(e){return this.stats.get(e)}};Qu.AlgebraOptimizer=am});var U2=y(Yu=>{"use strict";Object.defineProperty(Yu,"__esModule",{value:!0});Yu.AlgebraSerializer=void 0;var om=class{static{o(this,"AlgebraSerializer")}toString(e,t=0){let i=" ".repeat(t);switch(e.type){case"bgp":return`${i}BGP [
115
+ `)return i+1;let s=e.substring(i).toUpperCase();if(s.startsWith("PREFIX")||s.startsWith("BASE")||s.startsWith("SELECT")||s.startsWith("CONSTRUCT")||s.startsWith("DESCRIBE")||s.startsWith("ASK"))return i;if(/\s/.test(n)){i++;continue}break}return i}extractPrefixFromUri(e){let t=e.replace(/^https?:\/\//,"");t=t.replace(/\/$/,"").replace(/#$/,"");let i=t.split(/[/.#]+/).filter(Boolean);if(i.length===0)return null;let n=i[i.length-1];return/^(ontology|vocab|schema|ns|core)$/i.test(n)&&i.length>1?i[i.length-2].toLowerCase():n.toLowerCase().replace(/[^a-z0-9]/g,"")}};An.PrefixStarTransformer=em;var ea=class extends Error{static{o(this,"PrefixStarTransformerError")}constructor(e){super(`PREFIX* transformation error: ${e}`),this.name="PrefixStarTransformerError"}};An.PrefixStarTransformerError=ea});var V2=y(Mr=>{"use strict";var IO=Mr&&Mr.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),DO=Mr&&Mr.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),RO=Mr&&Mr.__importStar||(function(){var r=o(function(e){return r=Object.getOwnPropertyNames||function(t){var i=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[i.length]=n);return i},r(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var i=r(e),n=0;n<i.length;n++)i[n]!=="default"&&IO(t,e,i[n]);return DO(t,e),t}})();Object.defineProperty(Mr,"__esModule",{value:!0});Mr.SPARQLParser=Mr.SPARQLParseError=void 0;var M2=RO(k2()),tm=Zp(),L2=j2(),Pr=class extends Error{static{o(this,"SPARQLParseError")}constructor(e,t,i,n){super(e,n?{cause:n}:void 0),this.name="SPARQLParseError",this.line=t,this.column=i}};Mr.SPARQLParseError=Pr;var rm=class{static{o(this,"SPARQLParser")}constructor(e){this.parser=new M2.Parser({sparqlStar:!0}),this.generator=new M2.Generator({sparqlStar:!0}),this.caseWhenTransformer=new tm.CaseWhenTransformer,this.prefixStarTransformer=new L2.PrefixStarTransformer(e?.vocabularyResolver)}parse(e){try{let t=this.caseWhenTransformer.transform(e),i=this.parser.parse(t);return this.validateQuery(i),i}catch(t){if(t instanceof tm.CaseWhenTransformerError)throw new Pr(t.message);if(t instanceof Error){let i=t.message.match(/line (\d+), column (\d+)/),n=i?parseInt(i[1],10):void 0,s=i?parseInt(i[2],10):void 0;throw new Pr(`SPARQL syntax error: ${t.message}`,n,s,t)}throw t}}async parseAsync(e){try{let t=await this.prefixStarTransformer.transform(e),i=this.caseWhenTransformer.transform(t),n=this.parser.parse(i);return this.validateQuery(n),n}catch(t){if(t instanceof L2.PrefixStarTransformerError)throw new Pr(t.message);if(t instanceof tm.CaseWhenTransformerError)throw new Pr(t.message);if(t instanceof Error){let i=t.message.match(/line (\d+), column (\d+)/),n=i?parseInt(i[1],10):void 0,s=i?parseInt(i[2],10):void 0;throw new Pr(`SPARQL syntax error: ${t.message}`,n,s,t)}throw t}}hasPrefixStar(e){return/PREFIX\s*\*/i.test(e)}toString(e){try{return this.generator.stringify(e)}catch(t){throw t instanceof Error?new Pr(`Failed to serialize SPARQL query: ${t.message}`,void 0,void 0,t):t}}getQueryType(e){if("queryType"in e&&e.type==="query")return e.queryType;throw new Pr("Query does not have a valid queryType property")}isSelectQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="SELECT"}isConstructQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="CONSTRUCT"}isAskQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="ASK"}isDescribeQuery(e){return"queryType"in e&&e.type==="query"&&e.queryType==="DESCRIBE"}isUpdateQuery(e){return e.type==="update"}isInsertDataOperation(e){return"updateType"in e&&e.updateType==="insert"}isDeleteDataOperation(e){return"updateType"in e&&e.updateType==="delete"}validateQuery(e){if(!e||typeof e!="object")throw new Pr("Invalid query: not an object");if(e.type!=="query"&&e.type!=="update")throw new Pr(`Invalid type: expected "query" or "update", got "${e.type}"`);if(e.type==="query"){let t=["SELECT","CONSTRUCT","ASK","DESCRIBE"];if(!t.includes(e.queryType))throw new Pr(`Invalid query type: expected one of ${t.join(", ")}, got "${e.queryType}"`)}}};Mr.SPARQLParser=rm});var $2=y(ta=>{"use strict";Object.defineProperty(ta,"__esModule",{value:!0});ta.AlgebraTranslator=ta.AlgebraTranslatorError=void 0;var me=class extends Error{static{o(this,"AlgebraTranslatorError")}constructor(e,t){super(e,t?{cause:t}:void 0),this.name="AlgebraTranslatorError"}};ta.AlgebraTranslatorError=me;var im=class{static{o(this,"AlgebraTranslator")}constructor(){this.aggregateCounter=0}translate(e){if(e.type!=="query")throw new me("Only query operations are supported (not updates)");if(e.queryType==="SELECT")return this.translateSelect(e);if(e.queryType==="CONSTRUCT")return this.translateConstruct(e);if(e.queryType==="ASK")return this.translateAsk(e);throw new me(`Query type ${e.queryType} not yet supported`)}translateSelect(e){let t;if(!e.where||e.where.length===0)throw new me("SELECT query must have WHERE clause");t=this.translateWhere(e.where),this.aggregateCounter=0;let i=new Map,n=this.extractAggregatesWithMapping(e.variables,i),s=this.extractGroupVariables(e.group);if((n.length>0||s.length>0)&&(t={type:"group",variables:s,aggregates:n,input:t}),e.variables&&e.variables.length>0){for(let c of e.variables){let u=c;if(u.expression&&u.variable){if(u.expression.type==="aggregate")continue;let l=this.transformExpressionWithAggregateVars(u.expression,i);t={type:"extend",variable:u.variable.value,expression:l,input:t}}}let a=e.variables.filter(c=>c.termType==="Variable"||c.variable).map(c=>c.termType==="Variable"?c.value:c.variable.value);a.length>0&&(t={type:"project",variables:a,input:t})}return e.distinct&&(t={type:"distinct",input:t}),e.reduced&&(t={type:"reduced",input:t}),e.order&&e.order.length>0&&(t={type:"orderby",comparators:e.order.map(a=>this.translateOrderComparator(a)),input:t}),(e.limit!==void 0||e.offset!==void 0)&&(t={type:"slice",limit:e.limit,offset:e.offset,input:t}),t}translateConstruct(e){let t=this.translateConstructTemplate(e.template??[]);if(!e.where||e.where.length===0)throw new me("CONSTRUCT query must have WHERE clause");let i=this.translateWhere(e.where);return{type:"construct",template:t,where:i}}translateConstructTemplate(e){return!e||!Array.isArray(e)?[]:e.map(t=>this.translateTriple(t))}translateAsk(e){return{type:"ask",where:e.where&&e.where.length>0?this.translateWhere(e.where):{type:"bgp",triples:[]}}}extractAggregatesWithMapping(e,t){if(!e)return[];let i=[];for(let n of e)!n.expression||!n.variable||(n.expression.type==="aggregate"?(i.push({variable:n.variable.value,expression:this.translateAggregateExpression(n.expression)}),t.set(n.expression,n.variable.value)):this.collectNestedAggregates(n.expression,i,t));return i}collectNestedAggregates(e,t,i){if(e){if(e.type==="aggregate"){let n=`__agg${this.aggregateCounter++}`;t.push({variable:n,expression:this.translateAggregateExpression(e)}),i.set(e,n)}else if(e.type==="operation"&&e.args)for(let n of e.args)this.collectNestedAggregates(n,t,i)}}transformExpressionWithAggregateVars(e,t){if(t.has(e))return{type:"variable",name:t.get(e)};if(e.type==="operation"&&e.args){let i=e.args.map(c=>this.transformExpressionWithAggregateVars(c,t)),n=["=","!=","<",">","<=",">="],s=["&&","||","!"],a=["+","-","*","/"];return n.includes(e.operator)?{type:"comparison",operator:e.operator,left:i[0],right:i[1]}:s.includes(e.operator)?{type:"logical",operator:e.operator,operands:i}:a.includes(e.operator)?{type:"arithmetic",operator:e.operator,left:i[0],right:i[1]}:{type:"function",function:e.operator,args:i}}return this.translateExpression(e)}extractGroupVariables(e){return e?e.filter(t=>t.expression&&t.expression.termType==="Variable").map(t=>t.expression.value):[]}translateAggregateExpression(e){return{type:"aggregate",aggregation:e.aggregation.toLowerCase(),expression:e.expression?this.translateExpression(e.expression):void 0,distinct:e.distinct||!1,separator:e.separator}}translateWhere(e){if(e.length===0)throw new me("Empty WHERE clause");let t=e.filter(a=>a.type==="filter"),i=e.filter(a=>a.type==="bind"),n=e.filter(a=>a.type!=="filter"&&a.type!=="bind"),s;n.length===0?s={type:"bgp",triples:[]}:n.length===1?s=this.translatePattern(n[0]):s=n.map(c=>this.translatePattern(c)).reduce((c,u)=>({type:"join",left:c,right:u}));for(let a of i)s=this.translateBind(a,s);for(let a of t)s={type:"filter",expression:this.translateExpression(a.expression),input:s};return s}translatePattern(e){if(!e||!e.type)throw new me("Invalid pattern: missing type");switch(e.type){case"bgp":return this.translateBGP(e);case"filter":return this.translateFilter(e);case"optional":return this.translateOptional(e);case"union":return this.translateUnion(e);case"minus":return this.translateMinus(e);case"values":return this.translateValues(e);case"group":return this.translateWhere(e.patterns);case"query":return this.translateSubquery(e);case"service":return this.translateService(e);case"graph":return this.translateGraph(e);default:throw new me(`Unsupported pattern type: ${e.type}`)}}translateBGP(e){if(!e.triples||!Array.isArray(e.triples))throw new me("BGP pattern must have triples array");return{type:"bgp",triples:e.triples.map(t=>this.translateTriple(t))}}translateTriple(e){if(!e.subject||!e.predicate||!e.object)throw new me("Triple must have subject, predicate, and object");return{subject:this.translateTripleElement(e.subject),predicate:this.translatePredicate(e.predicate),object:this.translateTripleElement(e.object)}}translatePredicate(e){return e.type==="path"?this.translatePropertyPath(e):this.translateTripleElement(e)}translatePropertyPath(e){if(!e.pathType)throw new me("Property path must have pathType");if(!e.items||!Array.isArray(e.items))throw new me("Property path must have items array");let t=e.items.map(i=>this.translatePathItem(i));switch(e.pathType){case"/":return{type:"path",pathType:"/",items:t};case"|":return{type:"path",pathType:"|",items:t};case"^":if(t.length!==1)throw new me("Inverse path must have exactly one item");return{type:"path",pathType:"^",items:[t[0]]};case"+":if(t.length!==1)throw new me("OneOrMore path must have exactly one item");return{type:"path",pathType:"+",items:[t[0]]};case"*":if(t.length!==1)throw new me("ZeroOrMore path must have exactly one item");return{type:"path",pathType:"*",items:[t[0]]};case"?":if(t.length!==1)throw new me("ZeroOrOne path must have exactly one item");return{type:"path",pathType:"?",items:[t[0]]};default:throw new me(`Unsupported property path type: ${e.pathType}`)}}translatePathItem(e){if(e.type==="path")return this.translatePropertyPath(e);if(e.termType==="NamedNode")return{type:"iri",value:e.value};throw new me(`Unsupported path item type: ${e.type||e.termType}`)}translateTripleElement(e){if(!e||!e.termType)throw new me("Triple element must have termType");switch(e.termType){case"Variable":return{type:"variable",value:e.value};case"NamedNode":return{type:"iri",value:e.value};case"Literal":return{type:"literal",value:e.value,datatype:e.datatype?.value,language:e.language};case"BlankNode":return{type:"blank",value:e.value};case"Quad":return this.translateQuotedTriple(e);default:throw new me(`Unsupported term type: ${e.termType}`)}}translateQuotedTriple(e){if(!e.subject||!e.predicate||!e.object)throw new me("Quoted triple must have subject, predicate, and object");let t=this.translateTripleElement(e.subject),i=this.translateQuotedTriplePredicate(e.predicate),n=this.translateTripleElement(e.object);return{type:"quoted",subject:t,predicate:i,object:n}}translateQuotedTriplePredicate(e){if(!e||!e.termType)throw new me("Quoted triple predicate must have termType");switch(e.termType){case"Variable":return{type:"variable",value:e.value};case"NamedNode":return{type:"iri",value:e.value};default:throw new me(`Quoted triple predicate must be IRI or Variable, got: ${e.termType}`)}}translateFilter(e){if(!e.expression)throw new me("Filter pattern must have expression");let t=e.patterns?this.translateWhere(e.patterns):{type:"bgp",triples:[]};return{type:"filter",expression:this.translateExpression(e.expression),input:t}}translateExpression(e){if(!e)throw new me("Expression cannot be null or undefined");if(e.type==="operation")return this.translateOperationExpression(e);if(e.type==="functioncall"||e.type==="functionCall")return{type:"functionCall",function:e.function,args:e.args.map(t=>this.translateExpression(t))};if(e.termType)return this.translateTermExpression(e);throw new me(`Unsupported expression structure: ${JSON.stringify(e)}`)}translateOperationExpression(e){let t=["=","!=","<",">","<=",">="],i=["&&","||","!"],n=["+","-","*","/"];return t.includes(e.operator)?{type:"comparison",operator:e.operator,left:this.translateExpression(e.args[0]),right:this.translateExpression(e.args[1])}:i.includes(e.operator)?{type:"logical",operator:e.operator,operands:e.args.map(s=>this.translateExpression(s))}:n.includes(e.operator)?{type:"arithmetic",operator:e.operator,left:this.translateExpression(e.args[0]),right:this.translateExpression(e.args[1])}:e.operator==="exists"||e.operator==="notexists"?this.translateExistsExpression(e):e.operator==="in"||e.operator==="notin"?this.translateInExpression(e):{type:"function",function:e.operator,args:e.args.map(s=>this.translateExpression(s))}}translateExistsExpression(e){if(!e.args||e.args.length!==1)throw new me("EXISTS/NOT EXISTS must have exactly one pattern argument");let t=e.args[0],i;return t.type==="group"&&t.patterns?i=this.translateWhere(t.patterns):t.type==="bgp"?i=this.translateBGP(t):i=this.translatePattern(t),{type:"exists",negated:e.operator==="notexists",pattern:i}}translateInExpression(e){if(!e.args||e.args.length!==2)throw new me("IN/NOT IN must have exactly 2 arguments (expression and list)");let t=e.args[0],i=e.args[1];if(!Array.isArray(i))throw new me("IN/NOT IN second argument must be an array of values");return{type:"in",expression:this.translateExpression(t),list:i.map(n=>this.translateExpression(n)),negated:e.operator==="notin"}}translateTermExpression(e){if(e.termType==="Variable")return{type:"variable",name:e.value};if(e.termType==="Literal"){let t=e.value;return e.datatype&&(e.datatype.value.includes("#integer")||e.datatype.value.includes("#decimal")?t=parseFloat(e.value):e.datatype.value.includes("#boolean")&&(t=e.value==="true")),{type:"literal",value:t,datatype:e.datatype?.value}}return{type:"literal",value:String(e.value||e)}}translateOptional(e){if(!e.patterns||e.patterns.length===0)throw new me("OPTIONAL pattern must have patterns");return{type:"leftjoin",left:{type:"bgp",triples:[]},right:this.translateWhere(e.patterns),expression:e.expression?this.translateExpression(e.expression):void 0}}translateUnion(e){if(!e.patterns||e.patterns.length<2)throw new me("UNION pattern must have at least 2 patterns");let t=o(n=>n.type==="graph"?this.translateGraph(n):n.type==="service"?this.translateService(n):n.patterns&&Array.isArray(n.patterns)?this.translateWhere(n.patterns):this.translateWhere([n]),"translateBranch"),i={type:"union",left:t(e.patterns[0]),right:t(e.patterns[1])};for(let n=2;n<e.patterns.length;n++)i={type:"union",left:i,right:t(e.patterns[n])};return i}translateMinus(e){if(!e.patterns||e.patterns.length===0)throw new me("MINUS pattern must have patterns");return{type:"minus",left:{type:"bgp",triples:[]},right:this.translateWhere(e.patterns)}}translateValues(e){if(!e.values||!Array.isArray(e.values))throw new me("VALUES pattern must have values array");let t=new Set;for(let n of e.values)for(let s of Object.keys(n)){let a=s.startsWith("?")?s.slice(1):s;t.add(a)}let i=e.values.map(n=>this.translateValuesBinding(n));return{type:"values",variables:Array.from(t),bindings:i}}translateValuesBinding(e){let t={};for(let[i,n]of Object.entries(e)){let s=i.startsWith("?")?i.slice(1):i,a=n;if(a.termType==="NamedNode")t[s]={type:"iri",value:a.value};else if(a.termType==="Literal")t[s]={type:"literal",value:a.value,datatype:a.datatype?.value,language:a.language||void 0};else throw new me(`Unsupported VALUES term type: ${a.termType}`)}return t}translateBind(e,t){if(!e.variable||!e.expression)throw new me("BIND pattern must have variable and expression");return{type:"extend",variable:e.variable.value,expression:this.translateExpression(e.expression),input:t}}translateOrderComparator(e){return{expression:this.translateExpression(e.expression),descending:e.descending||!1}}translateSubquery(e){if(e.queryType!=="SELECT")throw new me(`Only SELECT subqueries are supported, got: ${e.queryType}`);return{type:"subquery",query:this.translateSelect(e)}}translateService(e){if(!e.name||e.name.termType!=="NamedNode")throw new me("SERVICE pattern must have a NamedNode endpoint");if(!e.patterns||!Array.isArray(e.patterns))throw new me("SERVICE pattern must have patterns array");let t=this.translateWhere(e.patterns);return{type:"service",endpoint:e.name.value,pattern:t,silent:e.silent||!1}}translateGraph(e){if(!e.name)throw new me("GRAPH pattern must have a name (IRI or variable)");if(!e.patterns||!Array.isArray(e.patterns))throw new me("GRAPH pattern must have patterns array");let t;if(e.name.termType==="NamedNode")t={type:"iri",value:e.name.value};else if(e.name.termType==="Variable")t={type:"variable",value:e.name.value};else throw new me(`GRAPH pattern name must be NamedNode or Variable, got: ${e.name.termType}`);let i=this.translateWhere(e.patterns);return{type:"graph",name:t,pattern:i}}};ta.AlgebraTranslator=im});var sm=y(Ku=>{"use strict";Object.defineProperty(Ku,"__esModule",{value:!0});Ku.FilterContainsOptimizer=void 0;var NO=nt(),kO=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i,nm=class{static{o(this,"FilterContainsOptimizer")}constructor(){this.tripleStore=null,this.lastOptimizationHints=[]}setTripleStore(e){this.tripleStore=e}getLastOptimizationHints(){return this.lastOptimizationHints}clearHints(){this.lastOptimizationHints=[]}async optimize(e){return this.clearHints(),this.optimizeRecursive(e)}optimizeSync(e,t){return this.clearHints(),this.optimizeSyncRecursive(e,t)}async optimizeRecursive(e){return e.type==="filter"?this.optimizeFilter(e):e.type==="join"?{type:"join",left:await this.optimizeRecursive(e.left),right:await this.optimizeRecursive(e.right)}:e.type==="leftjoin"?{...e,left:await this.optimizeRecursive(e.left),right:await this.optimizeRecursive(e.right)}:e.type==="union"?{type:"union",left:await this.optimizeRecursive(e.left),right:await this.optimizeRecursive(e.right)}:e.type==="minus"?{...e,left:await this.optimizeRecursive(e.left),right:await this.optimizeRecursive(e.right)}:e.type==="project"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="orderby"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="slice"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="distinct"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="reduced"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="group"?{...e,input:await this.optimizeRecursive(e.input)}:e.type==="extend"?{...e,input:await this.optimizeRecursive(e.input)}:e}optimizeSyncRecursive(e,t){return e.type==="filter"?this.optimizeFilterSync(e,t):e.type==="join"?{type:"join",left:this.optimizeSyncRecursive(e.left,t),right:this.optimizeSyncRecursive(e.right,t)}:e.type==="leftjoin"?{...e,left:this.optimizeSyncRecursive(e.left,t),right:this.optimizeSyncRecursive(e.right,t)}:e.type==="union"?{type:"union",left:this.optimizeSyncRecursive(e.left,t),right:this.optimizeSyncRecursive(e.right,t)}:e.type==="minus"?{...e,left:this.optimizeSyncRecursive(e.left,t),right:this.optimizeSyncRecursive(e.right,t)}:e.type==="project"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="orderby"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="slice"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="distinct"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="reduced"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="group"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e.type==="extend"?{...e,input:this.optimizeSyncRecursive(e.input,t)}:e}async optimizeFilter(e){let t=this.detectContainsUUIDPattern(e.expression);if(!t)return{type:"filter",expression:e.expression,input:await this.optimizeRecursive(e.input)};let i=[];return this.tripleStore&&(i=await this.findSubjectsContainingUUID(t.uuid)),this.rewriteFilter(e,t,i)}optimizeFilterSync(e,t){let i=this.detectContainsUUIDPattern(e.expression);if(!i)return{type:"filter",expression:e.expression,input:this.optimizeSyncRecursive(e.input,t)};let n=t?t.filter(s=>s.includes(i.uuid)):[];return this.rewriteFilter(e,i,n)}rewriteFilter(e,t,i){if(this.lastOptimizationHints.push({type:"uuid-index-lookup",originalPattern:`FILTER(CONTAINS(STR(?${t.variable}), "${t.uuid}"))`,suggestedRewrite:i.length===1?`VALUES ?${t.variable} { <${i[0]}> }`:i.length>1?`VALUES ?${t.variable} { ${i.map(n=>`<${n}>`).join(" ")} }`:"No matching URIs found for UUID",estimatedSpeedup:i.length>0?"O(n) \u2192 O(1)":"N/A",matchedUri:i.length===1?i[0]:void 0}),i.length===0)return{type:"filter",expression:e.expression,input:this.optimizeSyncRecursive(e.input)};if(i.length===1){let n=this.injectSubjectConstraint(e.input,t.variable,i[0]);if(n!==e.input)return n}return this.createValuesJoin(e,t,i)}detectContainsUUIDPattern(e){if(e.type==="function"||e.type==="functionCall"){let t=e;if((typeof t.function=="string"?t.function.toLowerCase():t.function?.value?.toLowerCase()??"")==="contains"&&t.args.length===2)return this.analyzeContainsArgs(t.args[0],t.args[1],e)}if(e.type==="logical"&&e.operator==="&&")for(let t of e.operands){let i=this.detectContainsUUIDPattern(t);if(i)return i}return null}analyzeContainsArgs(e,t,i){let n=null;if(e.type==="function"||e.type==="functionCall"){let s=e;if((typeof s.function=="string"?s.function.toLowerCase():s.function?.value?.toLowerCase()??"")==="str"&&s.args.length===1){let c=s.args[0];c.type==="variable"&&(n=c.name)}}if(!n&&e.type==="variable"&&(n=e.name),!n)return null;if(t.type==="literal"){let c=String(t.value).match(kO);if(c)return{variable:n,uuid:c[0].toLowerCase(),originalExpression:i}}return null}async findSubjectsContainingUUID(e){if(!this.tripleStore)return[];if(this.tripleStore.findSubjectsByUUID)return(await this.tripleStore.findSubjectsByUUID(e)).map(s=>s.value);let t=await this.tripleStore.subjects(),i=[];for(let n of t)n instanceof NO.IRI&&n.value.toLowerCase().includes(e.toLowerCase())&&i.push(n.value);return i}injectSubjectConstraint(e,t,i){if(e.type==="bgp"){let n=e.triples.map(a=>a.subject.type==="variable"&&a.subject.value===t?{...a,subject:{type:"iri",value:i}}:a);if(n.some((a,c)=>a.subject!==e.triples[c].subject))return{type:"bgp",triples:n}}if(e.type==="join"){let n=this.injectSubjectConstraint(e.left,t,i),s=this.injectSubjectConstraint(e.right,t,i);if(n!==e.left||s!==e.right)return{type:"join",left:n,right:s}}if(e.type==="filter"){let n=this.injectSubjectConstraint(e.input,t,i);if(n!==e.input)return{...e,input:n}}return e}createValuesJoin(e,t,i){return{type:"join",left:{type:"values",variables:[t.variable],bindings:i.map(a=>({[t.variable]:{type:"iri",value:a}}))},right:this.optimizeSyncRecursive(e.input)}}analyzeQuery(e){let t=[];return this.analyzeRecursive(e,t),t}analyzeRecursive(e,t){if(e.type==="filter"){let i=this.detectContainsUUIDPattern(e.expression);i&&t.push({type:"uuid-index-lookup",originalPattern:`FILTER(CONTAINS(STR(?${i.variable}), "${i.uuid}"))`,suggestedRewrite:`Use --optimize flag or rewrite as VALUES ?${i.variable} { <uri-containing-uuid> }`,estimatedSpeedup:"O(n) \u2192 O(1) with UUID index lookup"}),this.analyzeRecursive(e.input,t);return}e.type==="join"?(this.analyzeRecursive(e.left,t),this.analyzeRecursive(e.right,t)):e.type==="leftjoin"?(this.analyzeRecursive(e.left,t),this.analyzeRecursive(e.right,t)):e.type==="union"?(this.analyzeRecursive(e.left,t),this.analyzeRecursive(e.right,t)):e.type==="minus"?(this.analyzeRecursive(e.left,t),this.analyzeRecursive(e.right,t)):e.type==="project"?this.analyzeRecursive(e.input,t):e.type==="orderby"?this.analyzeRecursive(e.input,t):e.type==="slice"?this.analyzeRecursive(e.input,t):e.type==="distinct"?this.analyzeRecursive(e.input,t):e.type==="reduced"?this.analyzeRecursive(e.input,t):e.type==="group"?this.analyzeRecursive(e.input,t):e.type==="extend"&&this.analyzeRecursive(e.input,t)}};Ku.FilterContainsOptimizer=nm});var q2=y(Qu=>{"use strict";Object.defineProperty(Qu,"__esModule",{value:!0});Qu.AlgebraOptimizer=void 0;var jO=sm(),am=class{static{o(this,"AlgebraOptimizer")}constructor(){this.stats=new Map,this.tripleStore=null,this.filterContainsOptimizer=new jO.FilterContainsOptimizer}setTripleStore(e){this.tripleStore=e,this.filterContainsOptimizer.setTripleStore(e)}getOptimizationHints(){return this.filterContainsOptimizer.getLastOptimizationHints()}analyzeQuery(e){return this.filterContainsOptimizer.analyzeQuery(e)}optimize(e){let t=e;return t=this.eliminateEmptyBGPInFilterJoin(t),t=this.filterPushDown(t),t=this.joinReordering(t),t}async optimizeAsync(e){let t=e;return t=this.eliminateEmptyBGPInFilterJoin(t),this.tripleStore&&(t=await this.filterContainsOptimizer.optimize(t)),t=this.filterPushDown(t),t=this.joinReordering(t),t}optimizeWithSubjects(e,t){let i=e;return i=this.eliminateEmptyBGPInFilterJoin(i),i=this.filterContainsOptimizer.optimizeSync(i,t),i=this.filterPushDown(i),i=this.joinReordering(i),i}eliminateEmptyBGPInFilterJoin(e){if(e.type==="join"){if(e.left.type==="filter"){let t=e.left;if(t.input.type==="bgp"&&t.input.triples.length===0)return{type:"filter",expression:t.expression,input:this.eliminateEmptyBGPInFilterJoin(e.right)}}if(e.right.type==="filter"){let t=e.right;if(t.input.type==="bgp"&&t.input.triples.length===0)return{type:"filter",expression:t.expression,input:this.eliminateEmptyBGPInFilterJoin(e.left)}}return{type:"join",left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}}return e.type==="filter"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="leftjoin"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="union"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="minus"?{...e,left:this.eliminateEmptyBGPInFilterJoin(e.left),right:this.eliminateEmptyBGPInFilterJoin(e.right)}:e.type==="project"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="orderby"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="slice"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e.type==="distinct"?{...e,input:this.eliminateEmptyBGPInFilterJoin(e.input)}:e}filterPushDown(e){return e.type==="filter"?this.pushDownFilter(e):e.type==="join"?{type:"join",left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="leftjoin"?{...e,left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="union"?{type:"union",left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="minus"?{...e,left:this.filterPushDown(e.left),right:this.filterPushDown(e.right)}:e.type==="project"?{...e,input:this.filterPushDown(e.input)}:e.type==="orderby"?{...e,input:this.filterPushDown(e.input)}:e.type==="slice"?{...e,input:this.filterPushDown(e.input)}:e.type==="distinct"?{...e,input:this.filterPushDown(e.input)}:e}pushDownFilter(e){let t=e.input;if(t.type==="join"){let i=this.getFilterVariables(e.expression),n=this.getOperationVariables(t.left),s=this.getOperationVariables(t.right),a=i.every(u=>n.has(u)),c=i.every(u=>s.has(u));return a&&!c?{type:"join",left:{type:"filter",expression:e.expression,input:this.filterPushDown(t.left)},right:this.filterPushDown(t.right)}:c&&!a?{type:"join",left:this.filterPushDown(t.left),right:{type:"filter",expression:e.expression,input:this.filterPushDown(t.right)}}:{type:"filter",expression:e.expression,input:{type:"join",left:this.filterPushDown(t.left),right:this.filterPushDown(t.right)}}}return t.type==="union"?{type:"union",left:{type:"filter",expression:e.expression,input:this.filterPushDown(t.left)},right:{type:"filter",expression:e.expression,input:this.filterPushDown(t.right)}}:{type:"filter",expression:e.expression,input:this.filterPushDown(t)}}getFilterVariables(e){let t=[];if(e.type==="variable")t.push(e.name);else if(e.type==="comparison")t.push(...this.getFilterVariables(e.left)),t.push(...this.getFilterVariables(e.right));else if(e.type==="logical")for(let i of e.operands)t.push(...this.getFilterVariables(i));else if(e.type==="function")for(let i of e.args)t.push(...this.getFilterVariables(i));return Array.from(new Set(t))}getOperationVariables(e){let t=new Set;if(e.type==="bgp")for(let i of e.triples)i.subject.type==="variable"&&t.add(i.subject.value),i.predicate.type==="variable"&&t.add(i.predicate.value),i.object.type==="variable"&&t.add(i.object.value);else if(e.type==="join"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else{if(e.type==="filter")return this.getOperationVariables(e.input);if(e.type==="leftjoin"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else if(e.type==="union"){let i=this.getOperationVariables(e.left),n=this.getOperationVariables(e.right);return new Set([...i,...n])}else{if(e.type==="minus")return this.getOperationVariables(e.left);if(e.type==="project")return new Set(e.variables)}}return t}joinReordering(e){return e.type==="join"?this.reorderJoin(e):e.type==="filter"?{...e,input:this.joinReordering(e.input)}:e.type==="leftjoin"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="union"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="minus"?{...e,left:this.joinReordering(e.left),right:this.joinReordering(e.right)}:e.type==="project"?{...e,input:this.joinReordering(e.input)}:e.type==="orderby"?{...e,input:this.joinReordering(e.input)}:e.type==="slice"?{...e,input:this.joinReordering(e.input)}:e.type==="distinct"?{...e,input:this.joinReordering(e.input)}:e}reorderJoin(e){let t=this.estimateCost(e.left);return this.estimateCost(e.right)<t?{type:"join",left:this.joinReordering(e.right),right:this.joinReordering(e.left)}:{type:"join",left:this.joinReordering(e.left),right:this.joinReordering(e.right)}}estimateCost(e){if(e.type==="bgp"){let t=e.triples.length*100;for(let i of e.triples)i.subject.type==="variable"&&(t+=10),i.predicate.type==="variable"&&(t+=20),i.object.type==="variable"&&(t+=10);return t}return e.type==="filter"?this.estimateCost(e.input)*.3:e.type==="join"?this.estimateCost(e.left)*this.estimateCost(e.right):e.type==="leftjoin"?this.estimateCost(e.left)+this.estimateCost(e.right)*.5:e.type==="union"?this.estimateCost(e.left)+this.estimateCost(e.right):e.type==="minus"?this.estimateCost(e.left)+this.estimateCost(e.right)*.3:100}setStatistics(e,t){this.stats.set(e,t)}getStatistics(e){return this.stats.get(e)}};Qu.AlgebraOptimizer=am});var U2=y(Yu=>{"use strict";Object.defineProperty(Yu,"__esModule",{value:!0});Yu.AlgebraSerializer=void 0;var om=class{static{o(this,"AlgebraSerializer")}toString(e,t=0){let i=" ".repeat(t);switch(e.type){case"bgp":return`${i}BGP [
116
116
  ${e.triples.map(l=>`${i} ${this.tripleToString(l)}`).join(`
117
117
  `)}
118
118
  ${i}]`;case"filter":return`${i}Filter(
@@ -291,7 +291,7 @@ globstar while`,e,d,t,g,w),this.matchOne(e.slice(d),t.slice(g),i))return this.de
291
291
  \u{1F4CB} Failed Files:`);for(let t of e.results.filter(i=>!i.success))console.log(` \u274C ${t.filepath}: ${t.error}`)}if(e.movedCount>0&&r==="text"){console.log(`
292
292
  \u{1F4CB} Moved Files:`);for(let t of e.results.filter(i=>i.success&&i.changes?.moved))console.log(` \u{1F4C1} ${t.filepath} \u2192 ${t.changes?.newPath}`)}}}o(J6,"outputResult");function qb(){return new gr("batch-repair").description("Batch repair folder locations for all markdown files in a directory").argument("<directory>","Directory to process (relative to vault root)").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--dry-run","Preview changes without modifying files").option("--format <type>","Output format: text|json (default: text)","text").option("--progress","Show progress during processing (default: true)",!0).option("--no-progress","Disable progress output").action(async(r,e)=>{let t=e.format||"text";ge.setFormat(t);try{let i=(0,$b.resolve)(e.vault),n=new qn(i),s=r;if(!await n.directoryExists(s))throw new et(`Directory not found: ${s}`,"exocortex batch-repair <existing-directory>");let c=await n.getMarkdownFiles(s);if(c.length===0){if(t==="json"){let O=ut.success({success:!0,total:0,movedCount:0,alreadyCorrectCount:0,errorCount:0,results:[],durationMs:0,atomic:!1});console.log(JSON.stringify(O,null,2))}else console.log(`
293
293
  \u{1F4C2} No markdown files found in ${s}`);process.exit(0)}let u=c.map(O=>({command:"repair-folder",filepath:O})),l=e.progress!==!1&&t==="text",f=0;l&&console.log(`
294
- \u{1F50D} Processing ${c.length} files in ${s}...`);let d=await new Fs(i,e.dryRun).executeBatch(u,!1),g=0,w=0,b=0;for(let O of d.results)if(O.success?O.changes?.moved?g++:w++:b++,l&&!e.dryRun){f++;let P=Math.round(f/c.length*100);process.stdout.write(`\r Processing ${f}/${c.length} (${P}%)...`)}l&&process.stdout.write("\r"+" ".repeat(60)+"\r");let A={...d,movedCount:g,alreadyCorrectCount:w,errorCount:b};J6(t,A),process.exit(A.success?0:5)}catch(i){ge.handle(i)}})}o(qb,"batchRepairCommand");var yf=require("fs"),vi=require("path");function Ub(){return new gr("resolve").description("Resolve UUID to file path").argument("<uuid>","Full or partial UUID to resolve").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--format <type>","Output format: uri|path|json (default: uri)","uri").option("--output <type>","Response format: text|json (for MCP tools)","text").option("--partial","Match partial UUIDs (returns all matches)").action(async(r,e)=>{let t=e.output||"text";ge.setFormat(t);try{let i=Date.now();if(!Z6(r))throw new et(`Invalid UUID format: ${r}`,"exocortex resolve <uuid> [--format uri|path|json] [--partial]",{uuid:r});let n=(0,vi.resolve)(e.vault);if(!(0,yf.existsSync)(n))throw new un(n);let s=e7(n,r,e.partial??!1),a=Date.now()-i;if(s.length===0){if(t==="json"){let c=ut.error("VALIDATION_FILE_NOT_FOUND",`UUID not found: ${r}`,3,{context:{uuid:r}});console.log(JSON.stringify(c,null,2))}else console.error(`UUID not found: ${r}`);process.exit(1)}e.partial||s.length>1?r7(s,n,e.format,t,r,a):t7(s[0],n,e.format,t,r,a)}catch(i){ge.handle(i)}})}o(Ub,"resolveCommand");function Z6(r){if(r.length<4)return!1;let e=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,t=/^[0-9a-f-]+$/i;return e.test(r)||t.test(r)}o(Z6,"isValidUuidFormat");function e7(r,e,t){let i=[],n=e.toLowerCase();function s(a){let c=(0,yf.readdirSync)(a,{withFileTypes:!0});for(let u of c){let l=(0,vi.join)(a,u.name);if(u.isDirectory())!u.name.startsWith(".")&&u.name!=="node_modules"&&s(l);else if(u.isFile()&&u.name.endsWith(".md")){let f=u.name.toLowerCase();t?f.includes(n)&&i.push(l):(f.startsWith(n+".md")||f.startsWith(n+" ")||f.startsWith(n+"-"))&&i.push(l)}}}return o(s,"walk"),s(r),i}o(e7,"findFilesWithUuid");function Bb(r){return`obsidian://vault/${encodeURI(r)}`}o(Bb,"pathToObsidianUri");function Wb(r){let e=r.match(/^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i);return e?e[1]:(0,vi.basename)(r,".md")}o(Wb,"extractUuidFromFilename");function t7(r,e,t,i,n,s){let a=(0,vi.relative)(e,r),c=Bb(a),u=Wb((0,vi.basename)(r));if(i==="json"){let l={uuid:u,path:a,absolutePath:r,uri:c},f=ut.success(l,{durationMs:s,searchUuid:n});console.log(JSON.stringify(f,null,2))}else switch(t){case"path":console.log(r);break;case"json":console.log(JSON.stringify({uuid:u,path:a,absolutePath:r,uri:c},null,2));break;case"uri":default:console.log(c);break}}o(t7,"outputSingleResult");function r7(r,e,t,i,n,s){let a=r.map(c=>{let u=(0,vi.relative)(e,c),l=Bb(u);return{uuid:Wb((0,vi.basename)(c)),path:u,absolutePath:c,uri:l}});if(i==="json"){let c=ut.success({matches:a,count:a.length},{durationMs:s,searchUuid:n,itemCount:a.length});console.log(JSON.stringify(c,null,2))}else switch(t){case"path":for(let c of a)console.log(c.absolutePath);break;case"json":console.log(JSON.stringify(a,null,2));break;case"uri":default:for(let c of a)console.log(c.uri);break}}o(r7,"outputMultipleResults");var Bn=new gr;Bn.name("exocortex").description("CLI tool for Exocortex knowledge management system").version("13.182.0");Bn.command("sparql").description("SPARQL query execution").addCommand(Ow());Bn.addCommand(kb());Bn.addCommand(Lb());Bn.addCommand(Vb());Bn.addCommand(qb());Bn.addCommand(Ub());Bn.parse();
294
+ \u{1F50D} Processing ${c.length} files in ${s}...`);let d=await new Fs(i,e.dryRun).executeBatch(u,!1),g=0,w=0,b=0;for(let O of d.results)if(O.success?O.changes?.moved?g++:w++:b++,l&&!e.dryRun){f++;let P=Math.round(f/c.length*100);process.stdout.write(`\r Processing ${f}/${c.length} (${P}%)...`)}l&&process.stdout.write("\r"+" ".repeat(60)+"\r");let A={...d,movedCount:g,alreadyCorrectCount:w,errorCount:b};J6(t,A),process.exit(A.success?0:5)}catch(i){ge.handle(i)}})}o(qb,"batchRepairCommand");var yf=require("fs"),vi=require("path");function Ub(){return new gr("resolve").description("Resolve UUID to file path").argument("<uuid>","Full or partial UUID to resolve").option("--vault <path>","Path to Obsidian vault",process.cwd()).option("--format <type>","Output format: uri|path|json (default: uri)","uri").option("--output <type>","Response format: text|json (for MCP tools)","text").option("--partial","Match partial UUIDs (returns all matches)").action(async(r,e)=>{let t=e.output||"text";ge.setFormat(t);try{let i=Date.now();if(!Z6(r))throw new et(`Invalid UUID format: ${r}`,"exocortex resolve <uuid> [--format uri|path|json] [--partial]",{uuid:r});let n=(0,vi.resolve)(e.vault);if(!(0,yf.existsSync)(n))throw new un(n);let s=e7(n,r,e.partial??!1),a=Date.now()-i;if(s.length===0){if(t==="json"){let c=ut.error("VALIDATION_FILE_NOT_FOUND",`UUID not found: ${r}`,3,{context:{uuid:r}});console.log(JSON.stringify(c,null,2))}else console.error(`UUID not found: ${r}`);process.exit(1)}e.partial||s.length>1?r7(s,n,e.format,t,r,a):t7(s[0],n,e.format,t,r,a)}catch(i){ge.handle(i)}})}o(Ub,"resolveCommand");function Z6(r){if(r.length<4)return!1;let e=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,t=/^[0-9a-f-]+$/i;return e.test(r)||t.test(r)}o(Z6,"isValidUuidFormat");function e7(r,e,t){let i=[],n=e.toLowerCase();function s(a){let c=(0,yf.readdirSync)(a,{withFileTypes:!0});for(let u of c){let l=(0,vi.join)(a,u.name);if(u.isDirectory())!u.name.startsWith(".")&&u.name!=="node_modules"&&s(l);else if(u.isFile()&&u.name.endsWith(".md")){let f=u.name.toLowerCase();t?f.includes(n)&&i.push(l):(f.startsWith(n+".md")||f.startsWith(n+" ")||f.startsWith(n+"-"))&&i.push(l)}}}return o(s,"walk"),s(r),i}o(e7,"findFilesWithUuid");function Bb(r){return`obsidian://vault/${encodeURI(r)}`}o(Bb,"pathToObsidianUri");function Wb(r){let e=r.match(/^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i);return e?e[1]:(0,vi.basename)(r,".md")}o(Wb,"extractUuidFromFilename");function t7(r,e,t,i,n,s){let a=(0,vi.relative)(e,r),c=Bb(a),u=Wb((0,vi.basename)(r));if(i==="json"){let l={uuid:u,path:a,absolutePath:r,uri:c},f=ut.success(l,{durationMs:s,searchUuid:n});console.log(JSON.stringify(f,null,2))}else switch(t){case"path":console.log(r);break;case"json":console.log(JSON.stringify({uuid:u,path:a,absolutePath:r,uri:c},null,2));break;case"uri":default:console.log(c);break}}o(t7,"outputSingleResult");function r7(r,e,t,i,n,s){let a=r.map(c=>{let u=(0,vi.relative)(e,c),l=Bb(u);return{uuid:Wb((0,vi.basename)(c)),path:u,absolutePath:c,uri:l}});if(i==="json"){let c=ut.success({matches:a,count:a.length},{durationMs:s,searchUuid:n,itemCount:a.length});console.log(JSON.stringify(c,null,2))}else switch(t){case"path":for(let c of a)console.log(c.absolutePath);break;case"json":console.log(JSON.stringify(a,null,2));break;case"uri":default:for(let c of a)console.log(c.uri);break}}o(r7,"outputMultipleResults");var Bn=new gr;Bn.name("exocortex").description("CLI tool for Exocortex knowledge management system").version("13.183.0");Bn.command("sparql").description("SPARQL query execution").addCommand(Ow());Bn.addCommand(kb());Bn.addCommand(Lb());Bn.addCommand(Vb());Bn.addCommand(qb());Bn.addCommand(Ub());Bn.parse();
295
295
  /*! Bundled license information:
296
296
 
297
297
  reflect-metadata/Reflect.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitelev/exocortex-cli",
3
- "version": "13.182.0",
3
+ "version": "13.183.0",
4
4
  "description": "CLI tool for Exocortex knowledge management system - SPARQL queries, task management, and more",
5
5
  "main": "dist/index.js",
6
6
  "bin": {