@kanonak-protocol/sdk 4.0.0 → 4.2.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.
@@ -1,2 +0,0 @@
1
- import{I as W,J as X}from"./chunk-V3YPCUA6.js";import{b as B,c as V,w}from"./chunk-WUAKDYY6.js";import{a as b,d as K,e as q,f as z}from"./chunk-NC3FSY3R.js";import{a as D,f as E,h as F,j as N,k as Y,m as v}from"./chunk-PBNVHBS3.js";import{c as G,d as x}from"./chunk-T3JR2SV6.js";import{a as L}from"./chunk-FUUTGGJS.js";import{d as U}from"./chunk-2ACBWC7K.js";var Q=(t=>(t.Class="Class",t.DatatypeProperty="DatatypeProperty",t.ObjectProperty="ObjectProperty",t.AnnotationProperty="AnnotationProperty",t.Instance="Instance",t.Datatype="Datatype",t.Unknown="Unknown",t))(Q||{}),Z=(p=>(p.InstanceOf="instanceOf",p.SubClassOf="subClassOf",p.Domain="domain",p.Range="range",p.ObjectRelationship="objectRelationship",p.SubPropertyOf="subPropertyOf",p.PropertyValue="propertyValue",p.EmbeddedLink="embeddedLink",p))(Z||{}),I=class{static async buildFromRepository(e){let a=await new w().parseKanonaks(e),o=await e.getAllDocumentsAsync(),s=[],i=[],t=new Set,p=new Set,g=new Map;for(let u of a){let l=u;l.name&&(b.isClassType(l)&&t.add(l.name),(b.isObjectPropertyType(l)||b.isGenericPropertyType(l))&&p.add(l.name))}for(let u of o)for(let[l,f]of Object.entries(u.body))p.has(l)&&f?.range&&typeof f.range=="string"&&g.set(l,f.range);let y=new Map;for(let u of a){let l=u;l.name&&y.set(l.name,l)}for(let u of o){let l=u.metadata.namespace_,f=l?`${l.publisher}/${l.package_}`:"",c=l?.version?`${l.version.major}.${l.version.minor}.${l.version.patch}`:"",d=H(u);for(let[k,m]of Object.entries(u.body)){if(!m||typeof m!="object")continue;let P=y.get(k),h="Unknown";if(P){let T=P;b.isClassType(T)?h="Class":b.isObjectPropertyType(T)?h="ObjectProperty":b.isDatatypePropertyType(T)?h="DatatypeProperty":b.isAnnotationPropertyType(T)?h="AnnotationProperty":b.isDatatypeType(T)?h="Datatype":b.isGenericPropertyType(T)?h="ObjectProperty":b.isInstanceOfKnownClass(T,t)&&(h="Instance")}let j=f&&c?`${f}/${k}@${c}`:k,A={};for(let[T,$]of Object.entries(m))T!=="type"&&(typeof $!="object"||$===null)&&(A[T]=$);s.push({id:j,label:m.label??k,type:h,namespace:f,properties:A}),J(j,m,h,t,p,i,f,c,d),_(j,m,p,g,s,i,f,c,d),ue(j,P,i)}}return{nodes:s,edges:i}}static buildFromDocument(e){let r=[],a=[],o=e.metadata.namespace_,s=o?.version?`${o.version.major}.${o.version.minor}.${o.version.patch}`:"",i=o?`${o.publisher}/${o.package_}`:"",t=new Set,p=new Set,g=new Map,y=H(e);for(let[f,c]of Object.entries(e.body)){let d=c?.type;d&&(pe(d,y)&&t.add(f),ce(d,y)&&(p.add(f),c.range&&typeof c.range=="string"&&g.set(f,c.range)))}for(let[f,c]of Object.entries(e.body)){if(!c||typeof c!="object")continue;let d=c.type,k=le(d,f,t,y),m=i&&s?`${i}/${f}@${s}`:f,P={};for(let[h,j]of Object.entries(c))h!=="type"&&(typeof j!="object"||j===null)&&(P[h]=j);r.push({id:m,label:c.label??f,type:k,namespace:i,properties:P}),J(m,c,k,t,p,a,i,s,y),_(m,c,p,g,r,a,i,s,y)}let u=new Set(r.map(f=>f.id)),l=a.filter(f=>u.has(f.source)&&u.has(f.target));return{nodes:r,edges:l}}};function H(n,e){let r=new Map;if(n.metadata?.imports)for(let[a,o]of Object.entries(n.metadata.imports))for(let s of o){let i=s.alias??s.packageName,t=s.version,p=`${t.major}.${t.minor}.${t.patch}`;r.set(i,{publisher:a,package_:s.packageName,version:p})}return r}var ee={"kanonak.org/core-rdf/Class":"Class","kanonak.org/core-owl/Class":"Class","kanonak.org/core-rdfs/Class":"Class","kanonak.org/core-owl/ObjectProperty":"ObjectProperty","kanonak.org/core-owl/DatatypeProperty":"DatatypeProperty","kanonak.org/core-owl/AnnotationProperty":"AnnotationProperty","kanonak.org/core-rdf/Property":"ObjectProperty","kanonak.org/core-rdfs/Datatype":"Datatype"},ie=new Set(["kanonak.org/core-owl/ObjectProperty","kanonak.org/core-owl/DatatypeProperty","kanonak.org/core-owl/AnnotationProperty","kanonak.org/core-rdf/Property"]);function M(n,e){if(n.includes(".")){let r=n.indexOf("."),a=n.substring(0,r),o=n.substring(r+1),s=e.get(a);if(s)return`${s.publisher}/${s.package_}/${o}`}return null}function pe(n,e){let r=M(n,e);return r?ee[r]==="Class":!1}function ce(n,e){let r=M(n,e);return r?ie.has(r):!1}function le(n,e,r,a){if(!n||n==="Package")return"Unknown";let o=M(n,a);if(o){let i=ee[o];if(i)return i;let t=o.split("/").pop()?.split("@")[0]??"";return r.has(t)?"Instance":"Unknown"}let s=n.split(".").pop()??n;return r.has(s)?"Instance":"Unknown"}var ne=new Set(["type","label","comment","version","publisher","imports","license","match","alias","package"]);function J(n,e,r,a,o,s,i,t,p){let g=e.type,y=e.subClassOf;if(y){let c=Array.isArray(y)?y:[y];for(let d of c)typeof d=="string"&&s.push({source:n,target:O(d,i,t,p),type:"subClassOf",label:"subClassOf"})}let u=e.subPropertyOf;if(u){let c=Array.isArray(u)?u:[u];for(let d of c)typeof d=="string"&&s.push({source:n,target:O(d,i,t,p),type:"subPropertyOf",label:"subPropertyOf"})}if(r==="Instance"&&g){let c=g.split(".").pop()??g;s.push({source:n,target:O(c,i,t,p),type:"instanceOf",label:"type"})}if(r==="Instance")for(let[c,d]of Object.entries(e)){if(ne.has(c)||!o.has(c))continue;let k=Array.isArray(d)?d:[d];for(let m of k)typeof m=="string"&&fe(m)&&s.push({source:n,target:O(m,i,t,p),type:"propertyValue",label:c,propertyId:O(c,i,t,p)})}let l=r==="ObjectProperty"||r==="DatatypeProperty",f=e.domain&&e.range;if((l||f)&&e.domain&&e.range){let c=typeof e.domain=="string"?e.domain:null,d=typeof e.range=="string"?e.range:null;c&&d&&s.push({source:O(c,i,t,p),target:O(d,i,t,p),type:"objectRelationship",label:e.label??n.split("/").pop()??"",propertyId:n})}}function _(n,e,r,a,o,s,i,t,p){for(let[g,y]of Object.entries(e)){if(ne.has(g)||typeof y!="object"||y===null||Array.isArray(y))continue;let u=y,l=`${n}/${g}`,f=a.get(g),c=f?f.split(".").pop()??f:"Unknown",d={};for(let[m,P]of Object.entries(u))(typeof P!="object"||P===null)&&(d[m]=P);o.push({id:l,label:`${c} (embedded)`,type:"Instance",namespace:i,properties:d});let k=i&&t?`${i}/${g}@${t}`:g;s.push({source:n,target:l,type:"propertyValue",label:g,propertyId:r.has(g)?k:void 0}),f&&s.push({source:l,target:O(c,i,t,p),type:"instanceOf",label:"type (inferred)"}),_(l,u,r,a,o,s,i,t,p)}}function ue(n,e,r){let a=e?.statement;if(Array.isArray(a))for(let o of a){if(!(o instanceof V))continue;let s=o.predicate?.subject?.name??"";for(let i of o.links){let t=i.target?.subject;if(!t)continue;let p=t.version,g=p&&typeof p.major=="number"?`@${p.major}.${p.minor}.${p.patch}`:"";r.push({source:n,target:`${t.publisher}/${t.package_}/${t.name}${g}`,type:"embeddedLink",label:s})}}}function fe(n){return!(!n||n.includes(" ")||n.includes(`
2
- `)||n.startsWith("http://")||n.startsWith("https://")||/^\d{4}-\d{2}/.test(n)||/^\d+(\.\d+)?$/.test(n))}function O(n,e,r,a){if(n.includes("@")&&n.includes("/"))return n;if(n.includes(".")){let o=n.indexOf("."),s=n.substring(0,o),i=n.substring(o+1);if(a){let t=a.get(s);if(t)return`${t.publisher}/${t.package_}/${i}@${t.version}`}return e&&r?`${e}/${i}@${r}`:i}return e&&r?`${e}/${n}@${r}`:n}function de(n){if(!n.expiresAt)return!1;let e=new Date(n.expiresAt),r=300*1e3;return e.getTime()<=Date.now()+r}function Re(n){return!!n.accessToken&&!de(n)}function Se(n){let e=n.replace(/^https?:\/\//,"").replace(/^git:\/\//,"").replace(/\/+$/,"").trim();if(!e)throw new Error("Publisher host cannot be empty");return e}var C="kanonak.org",S="core-rdf",re="core-xsd",te={publisher:C,package_:S,name:"subClassOf"},oe={publisher:C,package_:S,name:"label"},ye={publisher:C,package_:S,name:"comment"},se={publisher:C,package_:"core-owl",name:"oneOf"},ae=n=>n;function ge(n){let e=Y(n,te);if(e)return[e];let r=[];for(let a of v(n,te))a instanceof x&&r.push(a.subject);return r}function me(n,e,r){if(e.publisher===C&&e.package_===S&&e.name==="Literal")return{kind:"datatype",uri:e};let o=E(n,e);if(o){let s=ae(o);if(b.isDatatypeType(s))return{kind:"datatype",uri:e};if(b.isClassType(s))return{kind:"class",uri:K(o)??e,localName:o.name}}return e.publisher===C&&e.package_===re?{kind:"datatype",uri:e}:r==="datatype"?{kind:"datatype",uri:e}:{kind:"class",uri:e,localName:e.name}}function be(n,e,r){if(!e.range)throw new Error(`Property ${e.uri.publisher}/${e.uri.package_}/${e.uri.name} has no rdfs.range; every property must declare a range. Validate the ontology before introspecting it.`);let a=me(n,e.range,e.kind),o=e.kind==="object"?"object":e.kind==="datatype"?"datatype":a.kind==="class"?"object":"datatype";return{uri:e.uri,localName:e.uri.name,kind:o,range:a,...e.label!==void 0?{label:e.label}:{},...e.comment!==void 0?{comment:e.comment}:{},...r??{}}}var R=n=>new L(C,re,n);function ke(n){return typeof n=="boolean"?R("boolean"):typeof n=="number"?Number.isInteger(n)?R("integer"):R("decimal"):R("string")}function he(n,e){let r=[];for(let a of v(e,se))if(a instanceof x){let o=E(n,a.subject),s=(o?K(o):void 0)??a.subject,i=o?N(o,oe):void 0;r.push({kind:"individual",uri:s,localName:s.name,...i!==void 0?{label:i}:{}})}else a instanceof B&&r.push({kind:"literal",value:a.value,datatype:ke(a.value)});return r}function Pe(n,e,r,a){let o=q(n,e),s=D(e);return z(n,e).filter(t=>r?!0:t.domains.some(p=>D(p)===s)).map(t=>be(n,t,X(a,o,t.uri)))}async function Te(n,e,r){let a=n.metadata?.namespace_;if(!a)throw new Error("buildOntologyModel: document has no namespace (publisher/package/version).");let o=r?.includeInherited??!1,s=await new w().parseKanonaks(e),i=W(s),t=[],p=[],g=new Set;for(let y of s){if(!(y instanceof G)||!b.isClassType(ae(y)))continue;let u=K(y);if(!u||u.publisher!==a.publisher||u.package_!==a.package_||u.version&&a.version&&!U(u.version,a.version))continue;let l=D(u);if(g.has(l))continue;g.add(l);let f=ge(y).map(k=>({uri:k,localName:k.name})),c=N(y,oe),d=N(y,ye);t.push({uri:u,localName:u.name,superClasses:f,properties:Pe(s,u,o,i),...c!==void 0?{label:c}:{},...d!==void 0?{comment:d}:{}}),F(y,se)&&p.push({uri:u,localName:u.name,members:he(s,y),...c!==void 0?{label:c}:{},...d!==void 0?{comment:d}:{}})}return{classes:t,enums:p}}export{Q as a,Z as b,I as c,de as d,Re as e,Se as f,Te as g};
@@ -1 +0,0 @@
1
- import{a as L}from"./chunk-ZYAABYDS.js";import{b as _,c as F,i as C}from"./chunk-XYEY6HUC.js";import{a as U,b as B,c as S,d as b,g as I,h as D,i as T,j as w,k as $,l as j}from"./chunk-T3JR2SV6.js";var k=class extends B{name};var x=class extends U{value;carrier;lexical};var K=class extends I{links=[]};var q=t=>({publisher:"kanonak.org",package_:"core-xsd",name:t}),W=t=>({publisher:"kanonak.org",package_:"core-rdf",name:t}),z=(l=>(l.Integer="integer",l.Decimal="decimal",l.Double="double",l.Float="float",l.Boolean="boolean",l.String="string",l.AnyUri="anyURI",l.LangString="langString",l.DateTime="dateTime",l.Date="date",l.Time="time",l.HexBinary="hexBinary",l.Base64Binary="base64Binary",l))(z||{});function v(t){return`${t.publisher}/${t.package_}/${t.name}`}var J=[["integer","integer"],["long","integer"],["int","integer"],["short","integer"],["byte","integer"],["unsignedLong","integer"],["unsignedInt","integer"],["unsignedShort","integer"],["unsignedByte","integer"],["nonNegativeInteger","integer"],["positiveInteger","integer"],["nonPositiveInteger","integer"],["negativeInteger","integer"],["decimal","decimal"],["double","double"],["float","float"],["boolean","boolean"],["string","string"],["normalizedString","string"],["token","string"],["anyURI","anyURI"],["dateTime","dateTime"],["date","date"],["time","time"],["hexBinary","hexBinary"],["base64Binary","base64Binary"]],Q=new Map(J.map(([t,e])=>[v(q(t)),e])),ee=v(W("langString"));function M(t){let e=v(t);return e===ee?"langString":Q.get(e)}function ne(t){let e=t.trim();if(!/^[+-]?\d+$/.test(e))throw new Error(`canonicalInteger: '${t}' is not a valid xsd:integer lexical`);return BigInt(e.replace(/^\+/,"")).toString()}function te(t){let e=t.trim(),n=/^([+-]?)(\d*)(?:\.(\d*))?$/.exec(e);if(!n||n[2]===""&&(n[3]??"")==="")throw new Error(`canonicalDecimal: '${t}' is not a valid xsd:decimal lexical`);let r=n[1]==="-"?"-":"",a=(n[2]??"").replace(/^0+/,"")||"0",o=(n[3]??"").replace(/0+$/,""),i=o.length>0?`${a}.${o}`:a;return i==="0"?"0":`${r}${i}`}function Y(t,e,n){let r=t.trim();if(r==="NaN")return"NaN";if(r==="INF")return"INF";if(r==="-INF")return"-INF";if(!/^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/.test(r))throw new Error(`canonical${n}: '${t}' is not a valid xsd:${n.toLowerCase()} lexical`);let a=e(Number(r));if(!Number.isFinite(a))throw new Error(`canonical${n}: '${t}' is out of the finite range`);return Object.is(a,-0)?"0":String(a)}function re(t){return Y(t,e=>e,"Double")}function ae(t){return Y(t,e=>Math.fround(e),"Float")}function oe(t){let e=t.trim();if(e==="true"||e==="1")return"true";if(e==="false"||e==="0")return"false";throw new Error(`canonicalBoolean: '${t}' is not a valid xsd:boolean lexical`)}function V(t){return t.normalize("NFC")}function ie(t){return t.normalize("NFC")}function Re(t,e){return{value:t.normalize("NFC"),lang:se(e)}}function se(t){let e=t.trim().split("-");if(e.length===0||e[0]==="")throw new Error(`canonicalLanguageTag: '${t}' is not a valid language tag`);return e.map((n,r)=>r===0?n.toLowerCase():n.length===4&&/^[A-Za-z]{4}$/.test(n)?n[0].toUpperCase()+n.slice(1).toLowerCase():n.length===2&&/^[A-Za-z]{2}$/.test(n)?n.toUpperCase():n.toLowerCase()).join("-")}function ce(t){let e=t.trim();if(!/^([0-9A-Fa-f]{2})*$/.test(e))throw new Error(`canonicalHexBinary: '${t}' is not a valid xsd:hexBinary lexical`);return e.toUpperCase()}function fe(t){let e=t.replace(/\s+/g,"");if(!/^[A-Za-z0-9+/]*={0,2}$/.test(e)||e.length%4!==0)throw new Error(`canonicalBase64: '${t}' is not a valid xsd:base64Binary lexical`);return Buffer.from(e,"base64").toString("base64")}var R=t=>t<10?`0${t}`:`${t}`;function P(t){let e=t.startsWith("-"),n=(e?t.slice(1):t).replace(/^0+/,"")||"0",r=n.length<4?n.padStart(4,"0"):n;return`${e?"-":""}${r}`}function Z(t){if(!t)return"";let e=t.replace(/^\./,"").replace(/0+$/,"");return e.length>0?`.${e}`:""}function H(t){return t?t==="Z"||t==="+00:00"||t==="-00:00"?"Z":t:""}function pe(t){return t==="Z"?0:(t[0]==="-"?-1:1)*(Number(t.slice(1,3))*60+Number(t.slice(4,6)))}var ue=/^(-?\d{4,})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/,le=/^(-?\d{4,})-(\d{2})-(\d{2})(Z|[+-]\d{2}:\d{2})?$/,me=/^(\d{2}):(\d{2}):(\d{2})(\.\d+)?(Z|[+-]\d{2}:\d{2})?$/;function ge(t){let e=ue.exec(t.trim());if(!e)throw new Error(`canonicalDateTime: '${t}' is not a valid xsd:dateTime lexical`);let[,n,r,a,o,i,s,f,u]=e,g=Z(f);if(!u)return`${P(n)}-${r}-${a}T${o}:${i}:${s}${g}`;let p=new Date(0);p.setUTCFullYear(Number(n),Number(r)-1,Number(a)),p.setUTCHours(Number(o),Number(i),Number(s),0);let c=new Date(p.getTime()-pe(u)*6e4);return`${P(String(c.getUTCFullYear()))}-${R(c.getUTCMonth()+1)}-${R(c.getUTCDate())}T${R(c.getUTCHours())}:${R(c.getUTCMinutes())}:${R(c.getUTCSeconds())}${g}Z`}function de(t){let e=le.exec(t.trim());if(!e)throw new Error(`canonicalDate: '${t}' is not a valid xsd:date lexical`);let[,n,r,a,o]=e;return`${P(n)}-${r}-${a}${H(o)}`}function ye(t){let e=me.exec(t.trim());if(!e)throw new Error(`canonicalTime: '${t}' is not a valid xsd:time lexical`);let[,n,r,a,o,i]=e,s=Z(o),f=n;return n==="24"&&r==="00"&&a==="00"&&s===""&&(f="00"),`${f}:${r}:${a}${s}${H(i)}`}function De(t,e){switch(t){case"integer":return ne(e);case"decimal":return te(e);case"double":return re(e);case"float":return ae(e);case"boolean":return oe(e);case"string":return V(e);case"anyURI":return ie(e);case"langString":return V(e);case"dateTime":return ge(e);case"date":return de(e);case"time":return ye(e);case"hexBinary":return ce(e);case"base64Binary":return fe(e)}}var be=/\[\[([^\[\]\n]+)\]\]/g,ke=/\[\[/g,X=/```[\s\S]*?```|`[^`\n]*`/g;function he(t){let e=[];for(let n of t.matchAll(X))e.push([n.index,n.index+n[0].length]);return e}function Ce(t){if(!t||!t.includes("[["))return[];let e=he(t),n=o=>e.some(([i,s])=>o>=i&&o<s),r=new Set(A(t).map(o=>o.startOffset)),a=[];for(let o of t.matchAll(ke)){let i=o.index;if(n(i)||r.has(i))continue;let s=t.slice(i,i+48).replace(/\s+/g," ").trim();a.push({startOffset:i,snippet:s})}return a}function A(t){if(!t||!t.includes("[["))return[];let e=[];for(let a of t.matchAll(X))e.push([a.index,a.index+a[0].length]);let n=a=>e.some(([o,i])=>a>=o&&a<i),r=[];for(let a of t.matchAll(be)){let o=a.index;if(n(o))continue;let i=a[1],s=i.indexOf("|"),f=(s===-1?i:i.slice(0,s)).trim();if(f.length===0)continue;let u=s===-1?"":i.slice(s+1).trim(),g={reference:f,startOffset:o,endOffset:o+a[0].length};u.length>0&&(g.displayText=u),r.push(g)}return r}var G=class{constructor(e){}async parseKanonaks(e){let n=[],r=await e.getAllDocumentsAsync(),a=new _(e),o=new F(a);for(let p of r){let c=p.metadata.namespace_?.toString()??"";for(let[l,m]of Object.entries(p.body)){let d=new S,y=this.resolveCanonicalEntity(l,p,c);d.namespace=y.namespace,d.name=y.name,d.statement=[];let h=await this.parseStatements(m,p,a,o,e);d.statement.push(...h),n.push(d)}}let i=new Map,s=new Map,f=[];for(let p of n)if(p instanceof S){let c=`${p.namespace}/${p.name}`,l=i.get(c);if(l){let m=s.get(c);for(let d of p.statement){let y=O(d);m.has(y)||(m.add(y),l.statement.push(d))}}else{let m=new Set,d=[];for(let y of p.statement){let h=O(y);m.has(h)||(m.add(h),d.push(y))}p.statement=d,s.set(c,m),i.set(c,p),f.push(p)}}else f.push(p);let u=new Set;for(let p of f)if(p instanceof S){let c=p.namespace||"",l=c.indexOf("/"),m=l>=0?c.slice(0,l):"",d=l>=0?c.slice(l+1):"",y=d.indexOf("@"),h=y>=0?d.slice(0,y):d;u.add(`${m}/${h}/${p.name}`)}let g=p=>u.has(`${p.publisher}/${p.package_}/${p.name}`);for(let p of f)p instanceof S&&this.canonicalizeStatementBuiltins(p.statement,g);return f}canonicalizeStatementBuiltins(e,n){for(let r of e){let a=r.predicate?.subject;if(C(a,n),r instanceof w)r.object instanceof b&&C(r.object.subject,n);else if(r instanceof $)r.object&&this.canonicalizeStatementBuiltins(r.object.statement,n);else if(r instanceof j)for(let o of r.object??[])o instanceof b?C(o.subject,n):o instanceof k&&this.canonicalizeStatementBuiltins(o.statement,n)}}resolveCanonicalEntity(e,n,r){if(!e.includes(".")||!n.metadata?.imports)return{namespace:r,name:e};let a=e.indexOf("."),o=e.substring(0,a),i=e.substring(a+1);for(let[s,f]of Object.entries(n.metadata.imports))for(let u of f)if((u.alias??u.packageName)===o){let p=u.version;return{namespace:`${s}/${u.packageName}@${p.major}.${p.minor}.${p.patch}`,name:i}}return{namespace:r,name:e}}async parseStatements(e,n,r,a,o){let i=[];if(typeof e!="object"||e===null||Array.isArray(e))return i;for(let[s,f]of Object.entries(e))try{let u=await this.getPropertyMetadata(s,n,r,o,a);if(!u)continue;let g=await this.parsePropertyValue(s,f,u,n,r,a,o);g&&i.push(g)}catch(u){throw new Error(`Failed to parse property '${s}': ${u.message}`,{cause:u})}return i}async getPropertyMetadata(e,n,r,a,o){let i=await r.resolveEntityAsync(e,n);if(!i)return;let s=i.entity,f=s.type?.toString()??"",u=f.includes(".")?f.substring(f.lastIndexOf(".")+1):f;if(!new Set(["Property","DatatypeProperty","ObjectProperty","AnnotationProperty"]).has(u))return;let p=o.getPropertyTypeClassification(f),c=s.range?.toString(),l;if(p==="ObjectProperty")l="ObjectProperty";else if(p==="DatatypeProperty")l="DatatypeProperty";else{let y=c&&c.includes(".")?c.substring(c.lastIndexOf(".")+1):c??"";(c?o.isKnownXsdDatatypeName(c):!1)||y==="Literal"?l="DatatypeProperty":l="ObjectProperty"}let m;if(c){let y=n;if(i.isImported&&i.definedInNamespace){if(typeof a.getDocumentAsync!="function")throw new Error(`Cannot resolve the range of imported property '${e}': the parse repository cannot fetch defining document '${i.definedInNamespace}'. Thread the real repository through to embedded-object parsing \u2014 no stub, no fallback.`);let E=await a.getDocumentAsync(i.definedInNamespace);if(!E)throw new Error(`Cannot resolve the range of imported property '${e}': defining document '${i.definedInNamespace}' was not found in the repository.`);y=E}m=(await r.resolveEntityAsync(c,y))?.uri}return{propertyUri:i.uri.toString(),propertyType:l,range:c,rangeUri:m,isImported:i.isImported,definedInNamespace:i.definedInNamespace}}async parsePropertyValue(e,n,r,a,o,i,s){let f=r.propertyUri;if(n!=null){if(Array.isArray(n))return this.parseListValue(f,n,r,a,o,i,s);if(r.propertyType==="DatatypeProperty")return this.parseDatatypeValue(f,n,r,a,o,i);if(r.propertyType==="ObjectProperty")return this.parseObjectValue(f,n,r,a,o,i,s)}}async parseDatatypeValue(e,n,r,a,o,i){let s;if(typeof n=="string"){if(i.isSubstitutableDatatype(r.rangeUri))return await this.parseSubstitutableValue(e,n,a,o);s=n}else if(typeof n=="number"||typeof n=="boolean")s=String(n);else return;return this.typedScalarStatement(e,s,r)}typedScalarStatement(e,n,r){let a=b.parse(e),o=r.rangeUri?M(r.rangeUri):void 0;if(o==="boolean"){let s=new T;return s.predicate=a,s.object=n==="true"||n==="1",s.carrier=o,s.lexical=n,s}if(o==="integer"||o==="decimal"||o==="double"||o==="float"){let s=new D;return s.predicate=a,s.object=Number(n),s.carrier=o,s.lexical=n,s}let i=I.parse(e,n);return o&&(i.carrier=o,i.lexical=n),i}typedListLiteral(e,n){let r=new x,a=n.rangeUri?M(n.rangeUri):void 0;return a==="boolean"?r.value=e==="true"||e==="1":a==="integer"||a==="decimal"||a==="double"||a==="float"?r.value=Number(e):r.value=e,a&&(r.carrier=a,r.lexical=e),r}async parseSubstitutableValue(e,n,r,a){let o=new K;o.predicate=b.parse(e),o.object=n;for(let i of A(n)){let s=await a.resolveEntityAsync(i.reference,r),f;s&&(f=new b,f.subject=s.uri);let u={reference:i.reference,startOffset:i.startOffset,endOffset:i.endOffset};i.displayText!==void 0&&(u.displayText=i.displayText),f!==void 0&&(u.target=f),o.links.push(u)}return o}async parseObjectValue(e,n,r,a,o,i,s){if(typeof n=="string"){let f=await this.resolveReference(n,a,o);if(!f)return;let u=new w;return u.predicate=b.parse(e),u.object=f,u}if(typeof n=="object"&&!Array.isArray(n)){let f=new k;if(f.statement=await this.parseStatements(n,a,o,i,s),f.statement.length>0){let p=new $;return p.predicate=b.parse(e),p.object=f,p}let u=[];for(let[p,c]of Object.entries(n))if(typeof c=="object"&&c!==null&&!Array.isArray(c)){let l=new k;l.name=p,l.statement=await this.parseStatements(c,a,o,i,s),u.push(l)}else if(typeof c=="string"){let l=await this.resolveReference(c,a,o);l&&u.push(l)}if(u.length>0){let p=new j;return p.predicate=b.parse(e),p.object=u,p}let g=new $;return g.predicate=b.parse(e),g.object=f,g}}async parseListValue(e,n,r,a,o,i,s){let f=[],u=r.propertyType==="DatatypeProperty",g=r.rangeUri?.publisher==="kanonak.org"&&r.rangeUri?.package_==="core-rdf"&&r.rangeUri?.name==="List"||!r.rangeUri&&(r.range?.includes(".")?r.range.substring(r.range.lastIndexOf(".")+1):r.range)==="List";for(let c of n){let l=typeof c=="string"||typeof c=="number"||typeof c=="boolean";if(u&&l){let m=typeof c=="string"?c:String(c);f.push(this.typedListLiteral(m,r));continue}if(g&&l){if(typeof c=="string"){let m=await o.resolveEntityAsync(c,a);if(m){let d=new b;d.subject=m.uri,f.push(d)}else{let d=new x;d.value=c,f.push(d)}}else{let m=new x;m.value=c,f.push(m)}continue}if(typeof c=="string"){let m=await this.resolveReference(c,a,o);m&&f.push(m)}else if(typeof c=="object"&&c!==null&&!Array.isArray(c)){let m=new k;m.statement=await this.parseStatements(c,a,o,i,s),f.push(m)}}let p=new j;return p.predicate=b.parse(e),p.object=f,p}async resolveReference(e,n,r){let a=await r.resolveEntityAsync(e,n);if(a){let i=new b;return i.subject=a.uri,i}let o=n.metadata?.namespace_;if(o){let{KanonakUri:i}=await import("./KanonakUri-4VJGV3FN.js"),s=o.version??{major:0,minor:0,patch:0,toString:()=>"0.0.0",equals:()=>!1,getHashCode:()=>0,compareTo:()=>0};if(e.includes(".")){let u=e.indexOf("."),g=e.substring(0,u),p=e.substring(u+1);if(n.metadata?.imports){for(let[c,l]of Object.entries(n.metadata.imports))for(let m of l)if((m.alias??m.packageName)===g){let y=new b;return y.subject=new i(c,m.packageName,p,m.version),y}}}let f=new b;return f.subject=new i(o.publisher,o.package_,e,s),f}return null}async saveKanonaks(e,n){let r=new Map;for(let a of e)a instanceof S&&a.namespace&&(r.has(a.namespace)||r.set(a.namespace,[]),r.get(a.namespace).push(a));for(let[a,o]of r){let i=await this.convertKanonaksToDocument(a,o),s=`${a.split("@")[0]}.yml`;await n.saveDocumentAsync(i,s)}}async serializeToYaml(e,n){let r=e.filter(i=>i instanceof S&&i.namespace===n);if(r.length===0)throw new Error(`No kanonaks found with namespace '${n}'`);let a=await this.convertKanonaksToDocument(n,r);return new L().save(a)}async convertKanonaksToDocument(e,n){let a={metadata:{namespace_:e,get allImports(){if(!this.imports)return[];let i=[];for(let s of Object.values(this.imports))i.push(...s);return i}},body:{}},o=new Map;for(let i of n){let s={};for(let f of i.statement){let[u,g]=this.convertStatementToProperty(f);u&&g!==null&&g!==void 0&&(s[u]=g),this.collectImportsFromStatement(f,e,o)}a.body[i.name]=s}return a}convertStatementToProperty(e){if(e instanceof I)return[e.predicate.subject.name,e.object];if(e instanceof D)return[e.predicate.subject.name,e.object];if(e instanceof T)return[e.predicate.subject.name,e.object];if(e instanceof w)return[e.predicate.subject.name,e.object.subject.name];if(e instanceof j){let n=this.convertKanonakListToValue(e.object);return[e.predicate.subject.name,n]}else if(e instanceof $){let n=this.convertEmbeddedKanonakToValue(e.object);return[e.predicate.subject.name,n]}return[null,null]}convertKanonakListToValue(e){let n=[];for(let r of e)r instanceof b?n.push(r.subject.name):r instanceof k&&n.push(this.convertEmbeddedKanonakToValue(r));return n}convertEmbeddedKanonakToValue(e){let n={};for(let r of e.statement){let[a,o]=this.convertStatementToProperty(r);a&&o!==null&&o!==void 0&&(n[a]=o)}return n}collectImportsFromStatement(e,n,r){}};function O(t){let e=t.predicate?.subject;return(e?`${e.publisher}/${e.package_}/${e.name}`:"?")+"="+Se(t)}function Se(t){return t instanceof K?"m:"+String(t.object):t instanceof I?"s:"+String(t.object):t instanceof D?"n:"+String(t.object):t instanceof T?"b:"+String(t.object):t instanceof w?"r:"+N(t.object):t instanceof $?"e:"+N(t.object):t instanceof j?"l:["+(t.object??[]).map(N).join("|")+"]":"x"}function N(t){if(!t)return"";if(t instanceof b){let e=t.subject;return"R("+(e?`${e.publisher}/${e.package_}/${e.name}`:"")+")"}return t instanceof k?"E("+(t.statement??[]).map(O).join(";")+")":t instanceof x?"L("+String(t.value)+")":"N"}export{k as a,x as b,K as c,z as d,M as e,ne as f,te as g,re as h,ae as i,oe as j,V as k,ie as l,Re as m,se as n,ce as o,fe as p,ge as q,de as r,ye as s,De as t,Ce as u,A as v,G as w};