rdfs
Version:
RDF data model mapping library for javascript.
18 lines (17 loc) • 31.1 kB
JavaScript
/*
* rdfs 1.12.3
* Copyright 2021 Qfield
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
;const e={},t=module.exports,r=require("jsonld");t.IRI_RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#",t.IRI_RDFS="http://www.w3.org/2000/01/rdf-schema#",t.IRI_XSD="http://www.w3.org/2001/XMLSchema#",t.IRI_RDFS_RESOURCE=t.IRI_RDFS+"Resource",t.IRI_RDFS_CLASS=t.IRI_RDFS+"Class",t.IRI_RDFS_LITERAL=t.IRI_RDFS+"Literal",t.IRI_RDFS_DATATYPE=t.IRI_RDFS+"Datatype",t.IRI_RDF_LANGSTRING=t.IRI_RDF+"langString",t.IRI_RDF_HTML=t.IRI_RDF+"HTML",t.IRI_RDF_XMLLITERAL=t.IRI_RDF+"XMLLiteral",t.IRI_RDF_PROPERTY=t.IRI_RDF+"Property",t.IRI_RDFS_RANGE=t.IRI_RDFS+"range",t.IRI_RDFS_DOMAIN=t.IRI_RDFS+"domain",t.IRI_RDF_TYPE=t.IRI_RDF+"type",t.IRI_RDFS_SUBCLASSOF=t.IRI_RDFS+"subClassOf",t.IRI_RDFS_SUBPROPERTYOF=t.IRI_RDFS+"subPropertyOf",t.IRI_RDFS_LABEL=t.IRI_RDFS+"label",t.IRI_RDFS_COMMENT=t.IRI_RDFS+"comment",t.IRI_RDFS_CONTAINER=t.IRI_RDFS+"Container",t.IRI_RDF_BAG=t.IRI_RDF+"Bag",t.IRI_RDF_SEQ=t.IRI_RDF+"Seq",t.IRI_RDF_ALT=t.IRI_RDF+"Alt",t.IRI_RDFS_CONTAINERMEMBERSHIPPROPERTY=t.IRI_RDFS+"ContainerMembershipProperty",t.IRI_RDFS_MEMBER=t.IRI_RDFS+"member",t.IRI_RDF_LIST=t.IRI_RDF+"List",t.IRI_RDF_FIRST=t.IRI_RDF+"first",t.IRI_RDF_REST=t.IRI_RDF+"rest",t.IRI_RDF_NIL=t.IRI_RDF+"nil",t.IRI_RDF_STATEMENT=t.IRI_RDF+"Statement",t.IRI_RDF_SUBJECT=t.IRI_RDF+"subject",t.IRI_RDF_PREDICATE=t.IRI_RDF+"predicate",t.IRI_RDF_OBJECT=t.IRI_RDF+"object",t.IRI_RDFS_SEEALSO=t.IRI_RDFS+"seeAlso",t.IRI_RDFS_ISDEFINEDBY=t.IRI_RDFS+"isDefinedBy",t.IRI_RDF_VALUE=t.IRI_RDF+"value",t.IRI_XSD_STRING=t.IRI_XSD+"string",t.IRI_XSD_BOOLEAN=t.IRI_XSD+"boolean",t.IRI_XSD_DECIMAL=t.IRI_XSD+"decimal",t.IRI_XSD_INTEGER=t.IRI_XSD+"integer",t.IRI_XSD_DOUBLE=t.IRI_XSD+"double",t.IRI_XSD_FLOAT=t.IRI_XSD+"float",t.IRI_XSD_DATE=t.IRI_XSD+"date",t.IRI_XSD_TIME=t.IRI_XSD+"time",t.IRI_XSD_DATETIME=t.IRI_XSD+"dateTime",t.IRI_XSD_DATETIMESTAMP=t.IRI_XSD+"dateTimeStamp",t.IRI_XSD_GYEAR=t.IRI_XSD+"gYear",t.IRI_XSD_GMONTH=t.IRI_XSD+"gMonth",t.IRI_XSD_GDAY=t.IRI_XSD+"gDay",t.IRI_XSD_GYEARMONTH=t.IRI_XSD+"gYearMonth",t.IRI_XSD_DURATION=t.IRI_XSD+"duration",t.IRI_XSD_YEARMONTHDURATION=t.IRI_XSD+"yearMonthDuration",t.IRI_XSD_DAYTIMEDURATION=t.IRI_XSD+"dayTimeDuration",t.IRI_XSD_BYTE=t.IRI_XSD+"byte",t.IRI_XSD_SHORT=t.IRI_XSD+"short",t.IRI_XSD_INT=t.IRI_XSD+"int",t.IRI_XSD_LONG=t.IRI_XSD+"long",t.IRI_XSD_UNSIGNEDBYTE=t.IRI_XSD+"unsignedByte",t.IRI_XSD_UNSIGNEDSHORT=t.IRI_XSD+"unsignedShort",t.IRI_XSD_UNSIGNEDINT=t.IRI_XSD+"unsignedInt",t.IRI_XSD_UNSIGNEDLONG=t.IRI_XSD+"unsignedLong",t.IRI_XSD_POSITIVEINTEGER=t.IRI_XSD+"positiveInteger",t.IRI_XSD_NONNEGATIVEINTEGER=t.IRI_XSD+"nonNegativeInteger",t.IRI_XSD_NEGATIVEINTEGER=t.IRI_XSD+"negativeInteger",t.IRI_XSD_NONPOSITIVEINTEGER=t.IRI_XSD+"nonPositiveInteger",t.IRI_XSD_HEXBINARY=t.IRI_XSD+"hexBinary",t.IRI_XSD_BASE64BINARY=t.IRI_XSD+"base64Binary",t.IRI_XSD_ANYURI=t.IRI_XSD+"anyURI",t.IRI_XSD_LANGUAGE=t.IRI_XSD+"language",t.IRI_XSD_NORMALIZEDSTRING=t.IRI_XSD+"normalizedString",t.IRI_XSD_TOKEN=t.IRI_XSD+"token",t.IRI_XSD_NMTOKEN=t.IRI_XSD+"NMTOKEN",t.IRI_XSD_NAME=t.IRI_XSD+"Name",t.IRI_XSD_NCNAME=t.IRI_XSD+"NCName",e.ResourceFactory=function(r){const I=this,s=function(t){let I;const s=t.constructor;if(s===String)I=r.expandIRI(t);else{if(s!==e.BaseResource)throw new Error("Invalid property.");if(I=t.IRI,void 0===I)throw new Error("Property should have an IRI.")}return I},n=function(I,n){const o=new Map,R=e.BaseResource.bind(r,I);return R.constructor=e.BaseResource,I.resource=R,I.bindingProperties=o,Object.defineProperty(R,"model",{get:function(){return r}}),void 0===n?R.toString=function(){return"Resource"}:(Object.defineProperty(R,"IRI",{get:function(){return n}}),R.toString=function(){return`Resource <${n}>`}),R.valueOf=function(e){const I=e.resource,s=e.bindingProperties;return function(){let e;const n=s.get(t.IRI_RDF_VALUE);if(void 0===n)e=I;else if(e=n.valueOf(),e.constructor===String){const I=s.get(t.IRI_RDF_TYPE);if(void 0===I);else if(!0===I.has(r.rdfLangString))e=e.substring(0,e.lastIndexOf("@"));else if(!0===I.has(r.xsdDecimal)||!0===I.has(r.xsdFloat)||!0===I.has(r.xsdDouble))e=parseFloat(e);else if(!0===I.has(r.xsdInteger)||!0===I.has(r.xsdByte)||!0===I.has(r.xsdShort)||!0===I.has(r.xsdInt)||!0===I.has(r.xsdLong)||!0===I.has(r.xsdNonNegativeInteger)||!0===I.has(r.xsdUnsignedByte)||!0===I.has(r.xsdUnsignedShort)||!0===I.has(r.xsdUnsignedInt)||!0===I.has(r.xsdUnsignedLong)||!0===I.has(r.xsdPositiveInteger)||!0===I.has(r.xsdNegativeInteger)||!0===I.has(r.xsdNonPositiveInteger)){if(e=parseInt(e),!1===Number.isSafeInteger(e))throw new RangeError("Out of integer range.")}else if(!0===I.has(r.xsdBoolean))if("false"===e||"0"===e)e=!1;else{if("true"!==e&&"1"!==e)throw new RangeError("Illegal boolean literal.");e=!0}else!0!==I.has(r.xsdDate)&&!0!==I.has(r.xsdDateTime)&&!0!==I.has(r.xsdDateTimeStamp)||(e=new Date(e))}return e}}(I),R.has=function(e){const t=e.bindingProperties;return function(e,r){let I;e=s(e);const n=t.get(e);return I=void 0!==n&&n.has(r),I}}(I),R.get=function(e){const t=e.bindingProperties;return function(e){let r;return e=s(e),r=t.get(e),r}}(I),R.set=function(I){const n=I.resource,o=I.resourceIndex,R=I.bindingProperties,i=I.options;return function(I,_){let a=i;void 0===a&&(a={});let f=a.set;void 0===f&&(f={});const d=f.before,D=f.after,c=f.around;I=s(I);const S=n.get(t.IRI_RDF_TYPE);let l=o.get(I);if(I===t.IRI_RDFS_RANGE||I===t.IRI_RDFS_DOMAIN||I===t.IRI_RDFS_SUBPROPERTYOF){const e=o.get(t.IRI_RDF_PROPERTY);let s=void 0===S;if(!1===s?s=S.has(e):!1===r.useStrict&&n.set(t.IRI_RDF_TYPE,e),!1===s){if(!1!==r.useStrict)throw new Error(`The domain of <${I}> should be a rdf:Property.`);S.set(e)}}else if(I===t.IRI_RDF_TYPE||I===t.IRI_RDFS_LABEL||I===t.IRI_RDFS_COMMENT||I===t.IRI_RDFS_MEMBER||I===t.IRI_RDFS_SEEALSO||I===t.IRI_RDFS_ISDEFINEDBY||I===t.IRI_RDF_VALUE||!0===I.startsWith(t.IRI_RDF+"_"));else if(I===t.IRI_RDFS_SUBCLASSOF){const e=o.get(t.IRI_RDFS_CLASS);let s=void 0===S;if(!1===s?s=S.has(e):!1===r.useStrict&&n.set(t.IRI_RDF_TYPE,e),!1===s){if(!1!==r.useStrict)throw new Error(`The domain of <${I}> should be a rdfs:Class.`);S.set(e)}}else if(I===t.IRI_RDF_FIRST||I===t.IRI_RDF_REST){const e=o.get(t.IRI_RDF_LIST);let s=void 0===S;if(!1===s?s=S.has(e):!1===r.useStrict&&n.set(t.IRI_RDF_TYPE,e),!1===s){if(!1!==r.useStrict)throw new Error(`The domain of <${I}> should be a rdf:List.`);S.set(e)}}else if(I===t.IRI_RDF_SUBJECT||I===t.IRI_RDF_PREDICATE||I===t.IRI_RDF_OBJECT){const e=o.get(t.IRI_RDF_STATEMENT);let s=void 0===S;if(!1===s?s=S.has(e):!1===r.useStrict&&n.set(t.IRI_RDF_TYPE,e),!1===s){if(!1!==r.useStrict)throw new Error(`The domain of <${I}> should be a rdf:Statement.`);S.set(e)}}else{let e=o.get(t.IRI_RDFS_RESOURCE);if(void 0===l)l=r.rdfsResource.defineProperty(I),!1===r.useStrict&&n.set(t.IRI_RDF_TYPE,e);else{const s=l.get(t.IRI_RDFS_DOMAIN);if(void 0===s)l=r.rdfsResource.defineProperty(I),!1===r.useStrict&&n.set(t.IRI_RDF_TYPE,e);else{let o=s.has(e);if(!1===o&&(void 0===S||S.every((function(e){return o=s.has(e),!1===o}))),!1===o){if(!1!==r.useStrict)throw new Error(`The domain of <${I}> should be ${s.toString()}`);if(1!==s.size)throw new Error(`Cannot infer resource type by the domain of <${I}> definitions: `+s.toString());e=s.get(),n.set(t.IRI_RDF_TYPE,e)}}}}if(I=l.IRI,void 0===d||d(a,n,l,_),!1===R.has(I)){const t=new e.BindingProperty(l);void 0===c?t.set(_):c(a,n,l,_,t.set.bind(t)),R.set(I,t)}else{const e=R.get(I);void 0===c?e.set(_):c(a,n,l,_,e.set.bind(e))}return void 0===D||D(a,n,l,_),n}}(I),R.delete=function(e){const t=e.resource,I=e.bindingProperties,s=e.options;return function(e){let n=s;void 0===n&&(n={});let o=n.delete;void 0===o&&(o={});const R=o.before,i=o.after,_=o.around;e=r.expandIRI(e),void 0===R||R(n,t,e),void 0===_?I.delete(e):_(n,t,e,I.delete.bind(I)),void 0===i||i(n,t,e)}}(I),R.some=function(e){const t=e.bindingProperties;return function(e){let r=!1;const I=t.values();for(let t=I.next();!1===t.done&&!0!==r;)r=e(t.value),!0===r||(t=I.next());return!0===r}}(I),R.every=function(e){const t=e.bindingProperties;return function(e){let r=!0;const I=t.values();for(let t=I.next();!1===t.done&&!0===r;)r=e(t.value),!0===r&&(t=I.next());return!0===r}}(I),R.forEach=function(e){const t=e.bindingProperties;return function(e){const r=t.values();for(let t=r.next();!1===t.done;)e(t.value),t=r.next()}}(I),R[Symbol.iterator]=function(e){const t=e.bindingProperties;return function*(){const e=t.values();for(let t=e.next();!1===t.done;)yield t.value,t=e.next()}}(I),R.toJSON=function(e){const t=e.resource,r=t.IRI;return function(e){let I;void 0===e&&(e={});let s=e.resource;void 0===s&&(s=new Map,e.resource=s);let n=e.literal;if(void 0===n&&(n=new Map,e.literal=n),!1===s.has(t)){if(void 0===r){const e="_:b"+s.size;I={"@id":e},s.set(t,e)}else{if(r.constructor!==String)throw new Error("Invalid resource IRI.");I={"@id":r},s.set(t,r)}t.forEach((function(t){const r=t.property.IRI;if(void 0===r)throw new Error("Property should have an IRI.");if(r.constructor!==String)throw new Error("Invalid property IRI.");const s=t.toJSON(e);I[r]=s}))}else{const e=s.get(t);I=!1===n.has(e)?{"@id":e}:n.get(e)}return I}}(I),R.defineProperty=function(e){const I=e.resource,s=I.IRI;return function(e,n){const o=r.rdfProperty(e);if(void 0===s)o.set(t.IRI_RDFS_DOMAIN,r.rdfsResource);else{if(s.constructor!==String)throw new Error("Invalid resource IRI.");o.set(t.IRI_RDFS_DOMAIN,I)}return void 0===n||o.set(t.IRI_RDFS_RANGE,n),o}}(I),R};I.createInstance=function(e,t,s){let o;const R=e.resourceIndex;let i=e.options;void 0===i&&(i={});let _=i.declare;void 0===_&&(_={});const a=_.before,f=_.after,d=_.around;if(void 0===t)void 0===a||a(i),o=void 0===d?n(e):d(i,n.bind(I,e)),R.set("_:b"+R.size,o);else{if(t.constructor!==String)throw new Error("Invalid resource IRI.");{if(!1!==t.startsWith("_:"))throw new Error(`Illegal resource IRI <${t}>.`);let s=r.expandIRI(t);if(void 0===a||a(i,t),!1===R.has(s))if(void 0===d?o=n(e,s):(o=d(i,t,n.bind(I,e)),s=o.IRI),void 0===s)R.set("_:b"+R.size,o);else{if(s.constructor!==String)throw new Error("Invalid resource IRI.");R.set(s,o)}else o=R.get(s)}}return void 0===f||f(i,o),void 0===s||(e.options=s),o}},e.BaseResource=function(r,I,s,n){const o={resourceIndex:r.resourceIndex,options:r.options},R=r.resource;if(this instanceof R!=!1)throw new Error("Should be invoked as function.");const i=R.model;if(void 0===I);else{const t=I.constructor;if(t===String);else{if(t===e.BaseResource||t===Array)n=s,s=I;else{if(t!==Object)throw new Error("Invalid arguments.");n=I,s=void 0}I=void 0}}const _=new e.ResourceFactory(i).createInstance(o,I,n);return _.set(t.IRI_RDF_TYPE,R),void 0===s||_.set(t.IRI_RDF_TYPE,s),_},e.BindingProperty=function(r){const I=this;if(void 0===r)throw new Error("Invalid argument: property.");if(r.constructor!==e.BaseResource)throw new Error("Invalid argument: property.");const s=r.model,n=r.IRI,o=new Map,R=[],i=function(r){let I=r.constructor!==e.BaseResource;if(!1===I){const e=r.IRI;if(e===t.IRI_RDFS_RESOURCE||e===t.IRI_RDFS_CLASS||e===t.IRI_RDFS_LITERAL||e===t.IRI_RDFS_DATATYPE||e===t.IRI_RDF_LANGSTRING||e===t.IRI_RDF_HTML||e===t.IRI_RDF_XMLLITERAL||e===t.IRI_RDF_PROPERTY||e===t.IRI_RDFS_CONTAINER||e===t.IRI_RDF_BAG||e===t.IRI_RDF_SEQ||e===t.IRI_RDF_ALT||e===t.IRI_RDFS_CONTAINERMEMBERSHIPPROPERTY||e===t.IRI_RDF_LIST||e===t.IRI_RDF_STATEMENT);else{const e=r.get(t.IRI_RDF_TYPE);void 0===e||(I=e.has(s.rdfsLiteral)||e.has(s.rdfLangString)||e.has(s.rdfHTML)||e.has(s.rdfXMLLiteral))}}return I},_=function(I){let o;const R=r.get(t.IRI_RDFS_RANGE),_=i(I);if(void 0===R)if(!1===_){if(!1===s.useStrict){const e=s.rdfsResource;I.set(t.IRI_RDF_TYPE,e)}o=t.IRI_RDFS_RESOURCE}else o=t.IRI_RDFS_LITERAL;else{if(!1===(R.some((function(r){let n=!1;return n=r===s.rdfsResource||(!1===_?function(r,I){let n=!1;if(void 0===r)throw new Error("Invalid argument: value.");if(r.constructor!==e.BaseResource)throw new Error("Invalid argument: value.");{const e=r.get(t.IRI_RDF_TYPE);void 0===e||(n=e.has(I),!1===n&&I===s.rdfsClass&&(n=e.has(s.rdfsDatatype)))}return n}(I,r):function(r,I){let s=!1;const n=I.IRI;if(void 0===r)throw new Error("Invalid argument: value.");{const o=r.constructor;if(o===String)s=n===t.IRI_XSD_STRING;else if(o===Number){s=!1===Number.isInteger(r)?n===t.IRI_XSD_DOUBLE:n===t.IRI_XSD_INTEGER,s=!0===s||n===t.IRI_XSD_DECIMAL}else if(o===Boolean)s=n===t.IRI_XSD_BOOLEAN;else if(o===Date)s=n===t.IRI_XSD_DATETIME;else{if(o!==e.BaseResource)throw new Error("Invalid argument: value.");{const e=r.get(t.IRI_RDF_TYPE);void 0===e||(s=e.has(I))}}}return s}(I,r)),n}))||0===R.size)){if(!1!==s.useStrict)throw new RangeError(`The range of <${n}> should be ${R.toString()}.`);if(!1!==_)throw new RangeError(`The range of <${n}> should be ${R.toString()}.`);if(1!==R.size)throw new RangeError(`Cannot infer resource type by the range of <${n}> definitions: ${R.toString()}.`);{const e=R.get();I.set(t.IRI_RDF_TYPE,e)}o=t.IRI_RDFS_RESOURCE}else o=!1===_?t.IRI_RDFS_RESOURCE:t.IRI_RDFS_LITERAL}return o},a=function(r){let I;if(void 0===r)throw new Error("Invalid argument: literal.");{const n=r.constructor;if(n===e.BaseResource){const e=r.get(t.IRI_RDF_VALUE);if(void 0===e)throw new Error("Literal should have a value.");const n=r.get(t.IRI_RDF_TYPE);if(void 0===n){const t=e.get();I=a(t)}else{I={};const o=e.get().toString();if(!0===n.has(s.rdfLangString)){const e=o.lastIndexOf("@");if(e<0)throw new Error("Missing langString.");I["@value"]=o.substring(0,e),I["@language"]=o.substring(e+1).toLowerCase()}else{I["@value"]=o;!1===n.some((function(e){const r=e.IRI;let s;return!1===(!1==(void 0===r||r===t.IRI_RDFS_LITERAL))?s=!1:(s=void 0===I["@type"]==!1,!1===s&&(I["@type"]=r)),s}))||(I=r)}}}else I=n===String||n===Number||n===Boolean?r:{"@value":r.toString()}}return I},f=function(t,r,I){const s=t.resource,n=t.literal,o=a(I);if(o.constructor===e.BaseResource){const e=o.toJSON(t);r.push(e)}else{if(I.constructor===e.BaseResource){const e=s.get(I);if(void 0===e){const e=I.IRI;if(void 0===e){const e="_:b"+s.size;s.set(I,e),!1===n.has(e)&&n.set(e,o)}else s.set(I,e),!1===n.has(e)&&n.set(e,o)}else!1===n.has(e)&&n.set(e,o)}r.push(o)}};I.set=function(r){if(void 0===r)throw new Error("Invalid argument: value.");{const i=r.constructor;if(i===Array)r.forEach((function(e){I.set(e)}));else{i===Date&&(r=s.rdfsLiteral(r.toISOString(),s.xsdDateTime));const I=r.IRI;let a;if(n===t.IRI_RDFS_RANGE||n===t.IRI_RDFS_DOMAIN||n===t.IRI_RDF_TYPE||n===t.IRI_RDFS_SUBCLASSOF){let I,o;if(i===e.BaseResource){if(I=r===s.rdfsClass,!1===I){const e=r.get(t.IRI_RDF_TYPE);o=s.rdfsClass,void 0===e||(I=e.has(o)||e.has(s.rdfsDatatype))}}else I=!1;if(!1===I){if(!1!==s.useStrict||void 0===o)throw new RangeError(`The range of <${n}> should be rdfs:Class.`);r.set(t.IRI_RDF_TYPE,o),a=t.IRI_RDFS_RESOURCE}else a=t.IRI_RDFS_RESOURCE}else if(n===t.IRI_RDFS_SUBPROPERTYOF){let I,o;if(i===e.BaseResource){const e=r.get(t.IRI_RDF_TYPE);o=s.rdfProperty,I=void 0!==e&&e.has(o)}else I=!1;if(!1===I){if(!1!==s.useStrict||void 0===o)throw new RangeError(`The range of <${n}> should be rdf:Property.`);r.set(t.IRI_RDF_TYPE,o),a=t.IRI_RDFS_RESOURCE}else a=t.IRI_RDFS_RESOURCE}else if(n===t.IRI_RDFS_LABEL||n===t.IRI_RDFS_COMMENT){let I,o;if(i===e.BaseResource){const e=r.get(t.IRI_RDF_TYPE);o=s.rdfsLiteral,I=void 0!==e&&(e.has(o)||e.has(s.rdfLangString)||e.has(s.rdfHTML)||e.has(s.rdfXMLLiteral))}else I=!0;if(!1===I){if(!1!==s.useStrict||void 0===o)throw new RangeError(`The range of <${n}> should be rdfs:Literal.`);r.set(t.IRI_RDF_TYPE,o),a=t.IRI_RDFS_LITERAL}else a=t.IRI_RDFS_LITERAL}else if(n===t.IRI_RDFS_MEMBER||n===t.IRI_RDF_FIRST||n===t.IRI_RDF_SUBJECT||n===t.IRI_RDF_PREDICATE||n===t.IRI_RDF_OBJECT||n===t.IRI_RDFS_SEEALSO||n===t.IRI_RDFS_ISDEFINEDBY||n===t.IRI_RDF_VALUE||!0===n.startsWith(t.IRI_RDF+"_")){let I,n;if(i===e.BaseResource){const e=r.get(t.IRI_RDF_TYPE);n=s.rdfsResource,I=void 0!==e&&(e.has(s.rdfsLiteral)||e.has(s.rdfLangString)||e.has(s.rdfHTML)||e.has(s.rdfXMLLiteral)),!1===I?(!1===s.useStrict&&void 0!==n&&r.set(t.IRI_RDF_TYPE,n),a=t.IRI_RDFS_RESOURCE):a=t.IRI_RDFS_LITERAL}else a=t.IRI_RDFS_LITERAL}else if(n===t.IRI_RDF_REST){let I,o;if(i===e.BaseResource){const e=r.get(t.IRI_RDF_TYPE);o=s.rdfList,I=void 0!==e&&e.has(o)}else I=!1;if(!1===I){if(!1!==s.useStrict||void 0===o)throw new RangeError(`The range of <${n}> should be rdf:List.`);r.set(t.IRI_RDF_TYPE,o),a=t.IRI_RDFS_RESOURCE}else a=t.IRI_RDFS_RESOURCE}else a=_(r);a===t.IRI_RDFS_LITERAL?R.push(r):void 0===I?o.set(r,r):o.set(I,r)}}return I},I.has=function(r){let I;if(void 0===r)I=R.length+o.size>0;else{if(!1===i(r)){const e=r.IRI;if(void 0===e)I=o.has(r);else{const t=s.expandIRI(e);I=o.has(t)}}else if(r.constructor===e.BaseResource){const s=r.get(t.IRI_RDF_TYPE),n=r.get(t.IRI_RDF_VALUE);I=R.some((function(r){let I;if(r.constructor===e.BaseResource){const e=r.get(t.IRI_RDF_TYPE);if(I=s.every((function(t){return e.has(t)})),!1===I);else{const e=r.get(t.IRI_RDF_VALUE);I=void 0!==e&&void 0!==n&&e.valueOf()===n.valueOf()}}else I=!1;return I}))}else I=R.some((function(e){return e.valueOf()===r.valueOf()}))}return I},I.get=function(t){let r;if(void 0===t){if(R.length+o.size>1)throw new Error("More than one values are associated with the property.");if(1===o.size){r=o.values().next().value}else r=R[0]}else if(!0===Number.isInteger(t))r=R[t];else{const I=t.constructor;if(I===e.BaseResource){if(void 0===t.IRI)r=o.get(t);else{const e=s.expandIRI();r=o.get(e)}}else if(I===String){const e=s.expandIRI(t);r=o.get(e)}else r=o.get(t)}return r},I.delete=function(r){let I;if(void 0===r)I=R.length>0||o.size>0,R.length=0,o.clear();else{if(!1===i(r)){const e=r.IRI;if(void 0===e)I=o.delete(r);else{const t=s.expandIRI(e);I=o.delete(t)}}else{let s=-1;if(r.constructor===e.BaseResource){const n=r.get(t.IRI_RDF_TYPE),o=r.get(t.IRI_RDF_VALUE);I=R.some((function(r){let I;if(r.constructor===e.BaseResource){const e=r.get(t.IRI_RDF_TYPE);if(I=n.every((function(t){return e.has(t)})),!1===I);else{const e=r.get(t.IRI_RDF_VALUE);I=void 0!==e&&void 0!==o&&e.valueOf()===o.valueOf()}}else I=!1;return s+=1,I}))}else I=R.some((function(e){const t=e.valueOf()===r.valueOf();return s+=1,t}));!1===I||R.splice(s,1)}}return I},I.some=function(e){let t=!1;const r=o.values();for(let I=r.next();!1===I.done&&!0!==t;)t=e(I.value),!0===t||(I=r.next());return!0===t||(t=R.some((function(t){return e(t)}))),!0===t},I.every=function(e){let t=!0;const r=o.values();for(let I=r.next();!1===I.done&&!0===t;)t=e(I.value),!0===t&&(I=r.next());return!0===t&&(t=R.every((function(t){return e(t)}))),!0===t},I.forEach=function(e){const t=o.values();for(let r=t.next();!1===r.done;)e(r.value),r=t.next();R.forEach((function(t){e(t)}))},I[Symbol.iterator]=function*(){const e=o.values();for(let t=e.next();!1===t.done;)yield t.value,t=e.next();for(const e of R)yield e},I.toJSON=function(e){let t;void 0===e&&(e={});let r=e.resource;void 0===r&&(r=new Map,e.resource=r);let I=e.literal;if(void 0===I&&(I=new Map,e.literal=I),o.size+R.length>1)t=[],o.forEach((function(r){const I=r.toJSON(e);t.push(I)})),R.forEach(f.bind(this,e,t));else if(0===o.size)if(0===R.length)t=void 0;else{const r=R[0];t=[],f(e,t,r),t=t.pop()}else{const r=o.values().next().value;t=r.toJSON(e)}return t},I.toString=function(){const e=[];I.forEach((function(t){e.push(t.toString())}));return`BindingProperty <${r.IRI}> [ ${e.join(", ")} ]`},I.valueOf=function(){let e;if(R.length+o.size>1)e=I;else if(1===o.size){e=o.values().next().value.valueOf()}else e=R[0].valueOf();return e},Object.defineProperty(I,"property",{get:function(){return r}}),Object.defineProperty(I,"size",{get:function(){return o.size+R.length}}),Object.defineProperty(I,"model",{get:function(){return s}})},t.Model=function(I,s){const n=this,o=new e.ResourceFactory(n),R=new Map,i={},_={useStrict:!0};Object.defineProperty(n,"useStrict",{get:function(){return _.useStrict},set:function(e){_.useStrict=!0===e}});const a=function(e,t,r){if(!1!==Object.prototype.hasOwnProperty.call(e,t))throw new Error(`Model property "${t}" is already existed.`);e[t]=r,Object.defineProperty(n,t,{get:function(){return r}})},f=function(e,t,r,I){const s=o.createInstance({resourceIndex:R},r,I);a(e,t,s)},d=function(e,r,I,s,n){const o=n["@id"],R=n["@type"],_=n["@language"];let a;if(void 0===o)if(void 0===_)if(void 0===R)a=n["@value"];else if(R===t.IRI_XSD_DOUBLE)a=parseFloat(n["@value"]);else if(R===t.IRI_XSD_INTEGER)a=parseInt(n["@value"]);else if(R===t.IRI_XSD_STRING)a=n["@value"];else if(R===t.IRI_XSD_BOOLEAN)if(a=n["@value"],"false"===a||"0"===a)a=!1;else{if("true"!==a&&"1"!==a)throw new Error("Illegal boolean literal.");a=!0}else a=i.rdfsLiteral(n["@value"].toString(),i.rdfsDatatype(R));else a=i.rdfLangString(n["@value"]+"@"+_);else!0===r.has(o)?a=r.get(o):!1===o.startsWith("_:")?(a=i.rdfsResource(o),e.set(t.IRI_RDFS_MEMBER,a)):(a=i.rdfsResource(),r.set(o,a));I.set(s,a)},D=function(e,r){let I=!1,s=e["@type"];if(void 0===s)I=!1;else{const e=s.constructor;if(e===String){I=n.expandIRI(e)===r}else I=e===Array&&s.some(e=>n.expandIRI(e)===r)}if(!1===I){let s=void 0;for(const r in e)if(!1===Object.prototype.hasOwnProperty.call(e,r));else{if(n.expandIRI(r)===t.IRI_RDF_TYPE){s=e[r];break}}if(void 0===s)I=!1;else{const e=s.constructor;if(e===String){I=n.expandIRI(e)===r}else I=e===Array&&s.some(e=>{let t=!1;if(e.constructor===String){t=n.expandIRI(e)===r}else{const I=e["@id"];if(void 0===I)t=!1;else{t=n.expandIRI(I)===r}}return t})}}return I},c=function(e,r,I){const s=I["@id"];if(!1===D(I,t.IRI_RDFS_CLASS)||void 0===s);else if(!0===r.has(s));else{let I;!1===s.startsWith("_:")?I=i.rdfsClass(s):(I=i.rdfsClass(),r.set(s,I)),e.set(t.IRI_RDFS_MEMBER,I)}},S=function(e,r){const I=r["@id"];if(!1===D(r,t.IRI_RDF_PROPERTY)||void 0===I);else{if(!1!==I.startsWith("_:"))throw new Error("Property cannot be an blank node.");{const r=i.rdfProperty(I);e.set(t.IRI_RDFS_MEMBER,r)}}},l=function(e,r,I){const s=I["@id"];if(void 0===s);else{let n;!0===r.has(s)?n=r.get(s):(!1===s.startsWith("_:")?n=i.rdfsResource(s):(n=i.rdfsResource(),r.set(s,n)),e.set(t.IRI_RDFS_MEMBER,n));const o=I["@type"];if(void 0===o);else{const e=o.constructor;if(e===String){const e=i.rdfsResource(o);n.set(t.IRI_RDF_TYPE,e)}else if(e===Array)for(const e of o){const r=i.rdfsResource(e);n.set(t.IRI_RDF_TYPE,r)}}for(const t in I)if(!1===Object.prototype.hasOwnProperty.call(I,t));else{if(!0===t.startsWith("_:"))throw new Error("Property cannot be an blank node.");if(!1===t.startsWith("@"))for(const s of I[t])d(e,r,n,t,s)}}};n.expandIRI=function(e){let t;const r=e.split(":",2);if(2===r.length){const n=r[0];if(0===n.length)t=I+r[1];else{const I=s[n];t=void 0===I?e:I+r[1]}}else t=1===r.length?I+r[0]:e;return t},n.defineClass=function(e,r){const I=i.rdfsClass(e);return void 0===r||I.set(t.IRI_RDFS_SUBCLASSOF,r),I},n.defineProperty=function(e,t,r){return e.defineProperty(t,r)},n.get=function(e){e=n.expandIRI(e);return R.get(e)};const u=function(e,t){void 0===t?t=["built-in"]:t.constructor===Array||(t=[t]),t.forEach((function(t){if(void 0===t);else if("built-in"===t)for(const t in i)if(!1===Object.prototype.hasOwnProperty.call(i,t));else{const r=i[t];e.set(r,r.IRI)}else{const r=t.constructor;r===RegExp?R.forEach((function(r,I){!1===t.test(I)||e.set(r,I)})):r===Function&&R.forEach((function(r,I){!0===t(r)&&e.set(r,I)}))}}))};var E;n.forEach=function(e,t){const r=new Map;void 0===t&&(t={}),u(r,t.exclude),R.forEach((function(t,I){!1===r.has(t)&&e(t,I)}))},n.extend=function(e){let t=0;for(const r in e)if(!1===Object.prototype.hasOwnProperty.call(e,r));else{const I=e[r],s=n.expandIRI(r),o=R.get(s);void 0===o||I.constructor===String&&(a(i,I,o),t+=1)}return t},n.load=function(e,t){let I;const s=n.rdfsContainer(),o=new Map;if(void 0===t)I=new Promise((function(t,I){r.expand(e).then((function(e){r.flatten(e).then((function(e){let r=null;try{for(const t of e)c(s,o,t);for(const t of e)S(s,t);for(const t of e)l(s,o,t)}catch(e){r=e}null===r?t(s):I(r)}),(function(e){I(e)}))}),(function(e){I(e)}))}));else{if(t.constructor!==Function)throw new Error("Invalid argument: callback.");r.expand(e).then((function(e){r.flatten(e).then((function(e){let r=null;try{for(const t of e)c(s,o,t);for(const t of e)S(s,t);for(const t of e)l(s,o,t)}catch(e){r=e}null===r?t(null,s):t(r)}),(function(e){t(e)}))}),(function(e){t(e)}))}return I},n.save=function(e,t){let I;const n={resource:new Map,literal:new Map},o=[],i=n.resource,_=n.literal;if(void 0===e);else{const r=e.constructor;if(r===Function);else{if(r!==Object)throw new Error("Invalid argument: callback.");if(void 0!==t)throw new Error("Invalid argument: callback.");t=e,e=void 0}}void 0===t&&(t={}),u(i,t.exclude),R.forEach((function(e){o.push(e.toJSON(n))}));const a=o.filter((function(e){return!1===_.has(e["@id"])}));return void 0===e?I=r.compact({"@graph":a},s):r.compact({"@graph":a},s).then((function(t){e(null,t)}),(function(t){e(t)})),I},f(E=i,"rdfsResource",t.IRI_RDFS_RESOURCE),f(E,"rdfsClass",t.IRI_RDFS_CLASS),f(E,"rdfsLiteral",t.IRI_RDFS_LITERAL,{declare:{around:function(e,r,I){const s=I();return s.set(t.IRI_RDF_VALUE,r),s}}}),f(E,"rdfsDatatype",t.IRI_RDFS_DATATYPE),f(E,"rdfLangString",t.IRI_RDF_LANGSTRING,{declare:{around:function(e,r,I){const s=I();return s.set(t.IRI_RDF_VALUE,r),s}}}),f(E,"rdfHTML",t.IRI_RDF_HTML,{declare:{around:function(e,r,I){const s=I();return s.set(t.IRI_RDF_VALUE,r),s}}}),f(E,"rdfXMLLiteral",t.IRI_RDF_XMLLITERAL,{declare:{around:function(e,r,I){const s=I();return s.set(t.IRI_RDF_VALUE,r),s}}}),f(E,"rdfProperty",t.IRI_RDF_PROPERTY),f(E,"rdfsRange",t.IRI_RDFS_RANGE),f(E,"rdfsDomain",t.IRI_RDFS_DOMAIN),f(E,"rdfType",t.IRI_RDF_TYPE),f(E,"rdfsSubClassOf",t.IRI_RDFS_SUBCLASSOF),f(E,"rdfsSubPropertyOf",t.IRI_RDFS_SUBPROPERTYOF),f(E,"rdfsLabel",t.IRI_RDFS_LABEL),f(E,"rdfsComment",t.IRI_RDFS_COMMENT),f(E,"rdfsContainer",t.IRI_RDFS_CONTAINER),f(E,"rdfBag",t.IRI_RDF_BAG),f(E,"rdfSeq",t.IRI_RDF_SEQ),f(E,"rdfAlt",t.IRI_RDF_ALT),f(E,"rdfsContainerMembershipProperty",t.IRI_RDFS_CONTAINERMEMBERSHIPPROPERTY),f(E,"rdfsMember",t.IRI_RDFS_MEMBER),f(E,"rdfList",t.IRI_RDF_LIST),f(E,"rdfFirst",t.IRI_RDF_FIRST),f(E,"rdfRest",t.IRI_RDF_REST),f(E,"rdfNil",t.IRI_RDF_NIL),f(E,"rdfStatement",t.IRI_RDF_STATEMENT),f(E,"rdfSubject",t.IRI_RDF_SUBJECT),f(E,"rdfPredicate",t.IRI_RDF_PREDICATE),f(E,"rdfObject",t.IRI_RDF_OBJECT),f(E,"rdfsSeeAlso",t.IRI_RDFS_SEEALSO),f(E,"rdfsIsDefinedBy",t.IRI_RDFS_ISDEFINEDBY),f(E,"rdfValue",t.IRI_RDF_VALUE),E.rdfsResource.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfsClass.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfsLiteral.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfsLiteral.set(t.IRI_RDFS_SUBCLASSOF,E.rdfsResource),E.rdfsDatatype.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfsDatatype.set(t.IRI_RDFS_SUBCLASSOF,E.rdfsClass),E.rdfLangString.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfLangString.set(t.IRI_RDF_TYPE,E.rdfsDatatype),E.rdfLangString.set(t.IRI_RDFS_SUBCLASSOF,E.rdfsLiteral),E.rdfHTML.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfHTML.set(t.IRI_RDF_TYPE,E.rdfsDatatype),E.rdfHTML.set(t.IRI_RDFS_SUBCLASSOF,E.rdfsLiteral),E.rdfXMLLiteral.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfXMLLiteral.set(t.IRI_RDF_TYPE,E.rdfsDatatype),E.rdfXMLLiteral.set(t.IRI_RDFS_SUBCLASSOF,E.rdfsLiteral),E.rdfProperty.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfsRange.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfsDomain.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfType.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfsSubClassOf.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfsSubPropertyOf.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfsLabel.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfsComment.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfsContainer.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfBag.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfBag.set(t.IRI_RDFS_SUBCLASSOF,E.rdfsContainer),E.rdfSeq.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfSeq.set(t.IRI_RDFS_SUBCLASSOF,E.rdfsContainer),E.rdfAlt.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfAlt.set(t.IRI_RDFS_SUBCLASSOF,E.rdfsContainer),E.rdfsContainerMembershipProperty.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfsContainerMembershipProperty.set(t.IRI_RDFS_SUBCLASSOF,E.rdfProperty),E.rdfsMember.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfList.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfFirst.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfRest.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfNil.set(t.IRI_RDF_TYPE,E.rdfList),E.rdfStatement.set(t.IRI_RDF_TYPE,E.rdfsClass),E.rdfSubject.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfPredicate.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfObject.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfsSeeAlso.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfsIsDefinedBy.set(t.IRI_RDF_TYPE,E.rdfProperty),E.rdfValue.set(t.IRI_RDF_TYPE,E.rdfProperty),a(E,"xsdString",E.rdfsDatatype(t.IRI_XSD_STRING)),a(E,"xsdBoolean",E.rdfsDatatype(t.IRI_XSD_BOOLEAN)),a(E,"xsdDecimal",E.rdfsDatatype(t.IRI_XSD_DECIMAL)),a(E,"xsdInteger",E.rdfsDatatype(t.IRI_XSD_INTEGER)),a(E,"xsdDouble",E.rdfsDatatype(t.IRI_XSD_DOUBLE)),a(E,"xsdFloat",E.rdfsDatatype(t.IRI_XSD_FLOAT)),a(E,"xsdDate",E.rdfsDatatype(t.IRI_XSD_DATE)),a(E,"xsdTime",E.rdfsDatatype(t.IRI_XSD_TIME)),a(E,"xsdDateTime",E.rdfsDatatype(t.IRI_XSD_DATETIME)),a(E,"xsdDateTimeStamp",E.rdfsDatatype(t.IRI_XSD_DATETIMESTAMP)),a(E,"xsdGYear",E.rdfsDatatype(t.IRI_XSD_GYEAR)),a(E,"xsdGMonth",E.rdfsDatatype(t.IRI_XSD_GMONTH)),a(E,"xsdGDay",E.rdfsDatatype(t.IRI_XSD_GDAY)),a(E,"xsdGYearMonth",E.rdfsDatatype(t.IRI_XSD_GYEARMONTH)),a(E,"xsdDuration",E.rdfsDatatype(t.IRI_XSD_DURATION)),a(E,"xsdYearMonthDuration",E.rdfsDatatype(t.IRI_XSD_YEARMONTHDURATION)),a(E,"xsdDayTimeDuration",E.rdfsDatatype(t.IRI_XSD_DAYTIMEDURATION)),a(E,"xsdByte",E.rdfsDatatype(t.IRI_XSD_BYTE)),a(E,"xsdShort",E.rdfsDatatype(t.IRI_XSD_SHORT)),a(E,"xsdInt",E.rdfsDatatype(t.IRI_XSD_INT)),a(E,"xsdLong",E.rdfsDatatype(t.IRI_XSD_LONG)),a(E,"xsdUnsignedByte",E.rdfsDatatype(t.IRI_XSD_UNSIGNEDBYTE)),a(E,"xsdUnsignedShort",E.rdfsDatatype(t.IRI_XSD_UNSIGNEDSHORT)),a(E,"xsdUnsignedInt",E.rdfsDatatype(t.IRI_XSD_UNSIGNEDINT)),a(E,"xsdUnsignedLong",E.rdfsDatatype(t.IRI_XSD_UNSIGNEDLONG)),a(E,"xsdPositiveInteger",E.rdfsDatatype(t.IRI_XSD_POSITIVEINTEGER)),a(E,"xsdNonNegativeInteger",E.rdfsDatatype(t.IRI_XSD_NONNEGATIVEINTEGER)),a(E,"xsdNegativeInteger",E.rdfsDatatype(t.IRI_XSD_NEGATIVEINTEGER)),a(E,"xsdNonPositiveInteger",E.rdfsDatatype(t.IRI_XSD_NONPOSITIVEINTEGER)),a(E,"xsdHexBinary",E.rdfsDatatype(t.IRI_XSD_HEXBINARY)),a(E,"xsdBase64Binary",E.rdfsDatatype(t.IRI_XSD_BASE64BINARY)),a(E,"xsdAnyURI",E.rdfsDatatype(t.IRI_XSD_ANYURI)),a(E,"xsdLanguage",E.rdfsDatatype(t.IRI_XSD_LANGUAGE)),a(E,"xsdNormalizedString",E.rdfsDatatype(t.IRI_XSD_NORMALIZEDSTRING)),a(E,"xsdToken",E.rdfsDatatype(t.IRI_XSD_TOKEN)),a(E,"xsdNMToken",E.rdfsDatatype(t.IRI_XSD_NMTOKEN)),a(E,"xsdName",E.rdfsDatatype(t.IRI_XSD_NAME)),a(E,"xsdNCName",E.rdfsDatatype(t.IRI_XSD_NCNAME))};