{"version":3,"file":"ddo.cjs","sources":["../src/utils/importUtils.ts","../src/schemas/index.ts","../src/services/ddoManager.ts","../src/@types/DDO5/State.ts","../src/elasticMappings/index.ts"],"sourcesContent":["let SHACLValidator: any;\n\nexport const getSHACLValidator = async () => {\n  if (!SHACLValidator) {\n    const module = await import('rdf-validate-shacl');\n    SHACLValidator = module.default;\n  }\n  return SHACLValidator;\n};\n","// Auto-generated - DO NOT EDIT\n// Run 'npm run generate:schemas' to regenerate from .ttl files\n\nexport const SCHEMAS: Record<string, string> = {\n  '4.1.0': `@prefix dash: <http://datashapes.org/dash#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix schema: <http://schema.org/> .\n@prefix sh: <http://www.w3.org/ns/shacl#> .\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\n\nschema:DDOShape\n    sh:targetClass schema:DDO ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^did\\\\\\\\:op\\\\\\\\:(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:chainId;\n        sh:datatype xsd:integer ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:nftAddress;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:metadata ;\n        sh:node schema:MetadataShape ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:services ;\n        sh:node schema:ServiceShape ;\n        sh:minCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:credentials;\n        sh:node schema:CredentialsShape ;\n    ] ; .\n\n\nschema:MetadataShape\n    sh:targetClass schema:Metadata ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:copyrightHolder;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:name ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:type;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:author;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:license;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:links;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n    ] ;\n    sh:property [\n        sh:path schema:tags;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n    ] ;\n    sh:property [\n        sh:path schema:categories;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n    ] ;\n    sh:property [\n        sh:path schema:contentLanguage;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:additionalInformation;\n    ] ;\n    sh:property [\n        sh:path schema:created;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:updated;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:algorithm;\n        sh:node schema:AlgorithmShape ;\n        sh:maxCount 1;\n    ] ;.\n\n\nschema:AlgorithmShape\n    sh:targetClass schema:Algorithm ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:language ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:container ;\n        sh:node schema:ContainerShape ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:consumerParameters;\n        sh:node schema:ConsumerParametersShape ;\n    ] ;.\n\n\nschema:ConsumerParametersShape\n    sh:targetClass schema:ConsumerParameter ;\n    sh:property [\n        sh:path schema:name;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:type;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:label;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:required ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:default;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:options;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n    ] ;.\n\n\nschema:ContainerShape\n    sh:targetClass schema:Container ;\n    sh:property [\n        sh:path schema:entrypoint ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:image ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:tag ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:checksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;.\n\n\nschema:ServiceShape\n    sh:targetClass schema:Service ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:name ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:datatokenAddress ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:serviceEndpoint ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:files;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:timeout ;\n        sh:datatype xsd:integer ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:compute;\n        sh:node schema:ComputeShape ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:additionalInformation ;\n    ] ;\n    sh:property [\n        sh:path schema:consumerParameters;\n        sh:node schema:ConsumerParametersShape ;\n    ] ;.\n\n\nschema:ComputeShape\n    sh:targetClass schema:Compute ;\n    sh:property [\n        sh:path schema:allowRawAlgorithm ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:allowNetworkAccess ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:publisherTrustedAlgorithmPublishers ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n    ] ;\n    sh:property [\n        sh:path schema:publisherTrustedAlgorithms ;\n        sh:or (\n        [ sh:node schema:TrustedAlgoShape ]\n        [ sh:datatype xsd:string ; sh:pattern \"^\\\\\\\\*$\" ]\n        )\n    ] ; .\n\n\nschema:TrustedAlgoShape\n    sh:targetClass schema:TrustedAlgo;\n    sh:property [\n        sh:path schema:did ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:filesChecksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:containerSectionChecksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ; .\n\n\nschema:CredentialsShape\n    sh:targetClass schema:Credentials;\n    sh:property [\n        sh:path schema:deny ;\n        sh:node schema:CredentialsItemShape;\n    ] ;\n    sh:property [\n        sh:path schema:allow;\n        sh:node schema:CredentialsItemShape;\n    ] ; .\n\n\nschema:CredentialsItemShape\n    sh:targetClass schema:CredentialsItem;\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:values ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n    ] ; .\n    `,\n\n  '4.3.0': `@prefix dash: <http://datashapes.org/dash#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix schema: <http://schema.org/> .\n@prefix sh: <http://www.w3.org/ns/shacl#> .\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\n\nschema:DDOShape\n    sh:targetClass schema:DDO ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^did\\\\\\\\:op\\\\\\\\:(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:maxLength 71;\n        sh:minLength 71;\n    ] ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:maxLength 16;\n    ] ;\n    sh:property [\n        sh:path schema:chainId;\n        sh:datatype xsd:integer ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:nftAddress;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:minLength 42;\n        sh:maxLength 42;\n    ] ;\n    sh:property [\n        sh:path schema:metadata ;\n        sh:node schema:MetadataShape ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:services ;\n        sh:node schema:ServiceShape ;\n        sh:minCount 1;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:credentials;\n        sh:node schema:CredentialsShape ;\n        sh:maxCount 64;\n    ] ; .\n\n\nschema:MetadataShape\n    sh:targetClass schema:Metadata ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 7000;\n    ] ;\n    sh:property [\n        sh:path schema:copyrightHolder;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxCount 1;\n        sh:maxLength 512;\n    ] ;\n    sh:property [\n        sh:path schema:name ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 512;\n    ] ;\n    sh:property [\n        sh:path schema:type;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:author;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:license;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:links;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxLength 512;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:tags;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxLength 256;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:categories;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxLength 256;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:contentLanguage;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:additionalInformation;\n    ] ;\n    sh:property [\n        sh:path schema:created;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:updated;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:algorithm;\n        sh:node schema:AlgorithmShape ;\n        sh:maxCount 1;\n    ] ;.\n\n\nschema:AlgorithmShape\n    sh:targetClass schema:Algorithm ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:language ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:container ;\n        sh:node schema:ContainerShape ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:consumerParameters;\n        sh:node schema:ConsumerParametersShape ;\n        sh:maxCount 64;\n    ] ;.\n\n\nschema:ConsumerParametersShape\n    sh:targetClass schema:ConsumerParameter ;\n    sh:property [\n        sh:path schema:name;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:type;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:label;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:required ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 7000;\n    ] ;\n    sh:property [\n        sh:path schema:default;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:options;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxLength 256;\n    ] ;.\n\n\nschema:ContainerShape\n    sh:targetClass schema:Container ;\n    sh:property [\n        sh:path schema:entrypoint ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:image ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:tag ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:checksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxLength 512;\n        sh:minLength 7;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;.\n\n\nschema:ServiceShape\n    sh:targetClass schema:Service ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:name ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n        sh:minLength 4;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:maxCount 1;\n        sh:minLength 10;\n        sh:maxLength 7000;\n    ] ;\n    sh:property [\n        sh:path schema:datatokenAddress ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 42;\n        sh:maxLength 42;\n    ] ;\n    sh:property [\n        sh:path schema:serviceEndpoint ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 10;\n        sh:maxLength 2048;\n    ] ;\n    sh:property [\n        sh:path schema:files;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 8192;\n    ] ;\n    sh:property [\n        sh:path schema:timeout ;\n        sh:datatype xsd:integer ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:compute;\n        sh:node schema:ComputeShape ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:additionalInformation ;\n    ] ;\n    sh:property [\n        sh:path schema:consumerParameters;\n        sh:node schema:ConsumerParametersShape ;\n    ] ;.\n\n\nschema:ComputeShape\n    sh:targetClass schema:Compute ;\n    sh:property [\n        sh:path schema:allowRawAlgorithm ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:allowNetworkAccess ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:publisherTrustedAlgorithmPublishers ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:publisherTrustedAlgorithms;\n        sh:or (\n        [ sh:node schema:TrustedAlgoShape ]\n        [ sh:datatype xsd:string ; sh:pattern \"^\\\\\\\\*$\" ]\n        )\n    ] ; .\n\n\nschema:TrustedAlgoShape\n    sh:targetClass schema:TrustedAlgo;\n    sh:property [\n        sh:path schema:did ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:filesChecksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 1024;\n    ] ;\n    sh:property [\n        sh:path schema:containerSectionChecksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 1024;\n    ] ; .\n\n\nschema:CredentialsShape\n    sh:targetClass schema:Credentials;\n    sh:property [\n        sh:path schema:deny ;\n        sh:node schema:CredentialsItemShape;\n    ] ;\n    sh:property [\n        sh:path schema:allow;\n        sh:node schema:CredentialsItemShape;\n    ] ; .\n\n\nschema:CredentialsItemShape\n    sh:targetClass schema:CredentialsItem;\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:values ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxLength 1024;\n    ] ; .`,\n\n  '4.5.0': `@prefix dash: <http://datashapes.org/dash#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix schema: <http://schema.org/> .\n@prefix sh: <http://www.w3.org/ns/shacl#> .\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\n\nschema:DDOShape\n    sh:targetClass schema:DDO ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^did\\\\\\\\:op\\\\\\\\:(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:maxLength 71;\n        sh:minLength 71;\n    ] ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:maxLength 16;\n    ] ;\n    sh:property [\n        sh:path schema:chainId;\n        sh:datatype xsd:integer ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:nftAddress;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:minLength 42;\n        sh:maxLength 42;\n    ] ;\n    sh:property [\n        sh:path schema:metadata ;\n        sh:node schema:MetadataShape ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:services ;\n        sh:node schema:ServiceShape ;\n        sh:minCount 0;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:credentials;\n        sh:node schema:CredentialsShape ;\n        sh:maxCount 64;\n    ] ; .\n\n\nschema:MetadataShape\n    sh:targetClass schema:Metadata ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 7000;\n        sh:minLength 10;\n    ] ;\n    sh:property [\n        sh:path schema:copyrightHolder;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxCount 1;\n        sh:maxLength 512;\n    ] ;\n    sh:property [\n        sh:path schema:name ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 512;\n        sh:minLength 4;\n    ] ;\n    sh:property [\n        sh:path schema:type;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:author;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:license;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:links;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxLength 512;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:tags;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxLength 256;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:categories;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxLength 256;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:contentLanguage;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:additionalInformation;\n    ] ;\n    sh:property [\n        sh:path schema:created;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:updated;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:algorithm;\n        sh:node schema:AlgorithmShape ;\n        sh:maxCount 1;\n    ] ;.\n\n\nschema:AlgorithmShape\n    sh:targetClass schema:Algorithm ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:language ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:container ;\n        sh:node schema:ContainerShape ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:consumerParameters;\n        sh:node schema:ConsumerParametersShape ;\n        sh:maxCount 64;\n    ] ;.\n\n\nschema:ConsumerParametersShape\n    sh:targetClass schema:ConsumerParameter ;\n    sh:property [\n        sh:path schema:name;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:type;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:label;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:required ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 7000;\n    ] ;\n    sh:property [\n        sh:path schema:default;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:options;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxLength 256;\n    ] ;.\n\n\nschema:ContainerShape\n    sh:targetClass schema:Container ;\n    sh:property [\n        sh:path schema:entrypoint ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 3;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:image ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:tag ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:checksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxLength 512;\n        sh:minLength 7;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;.\n\n\nschema:ServiceShape\n    sh:targetClass schema:Service ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:name ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n        sh:minLength 4;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:maxCount 1;\n        sh:minLength 10;\n        sh:maxLength 7000;\n    ] ;\n    sh:property [\n        sh:path schema:datatokenAddress ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 42;\n        sh:maxLength 42;\n    ] ;\n    sh:property [\n        sh:path schema:serviceEndpoint ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 10;\n        sh:maxLength 2048;\n    ] ;\n    sh:property [\n        sh:path schema:files;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 8192;\n    ] ;\n    sh:property [\n        sh:path schema:timeout ;\n        sh:datatype xsd:integer ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:compute;\n        sh:node schema:ComputeShape ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:additionalInformation ;\n    ] ;\n    sh:property [\n        sh:path schema:consumerParameters;\n        sh:node schema:ConsumerParametersShape ;\n    ] ;.\n\n\nschema:ComputeShape\n    sh:targetClass schema:Compute ;\n    sh:property [\n        sh:path schema:allowRawAlgorithm ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:allowNetworkAccess ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:publisherTrustedAlgorithmPublishers ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:publisherTrustedAlgorithms;\n        sh:or (\n        [ sh:node schema:TrustedAlgoShape ]\n        [ sh:datatype xsd:string ; sh:pattern \"^\\\\\\\\*$\" ]\n        )\n    ] ; .\n\n\nschema:TrustedAlgoShape\n    sh:targetClass schema:TrustedAlgo;\n    sh:property [\n        sh:path schema:did ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:filesChecksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 1024;\n    ] ;\n    sh:property [\n        sh:path schema:containerSectionChecksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 1024;\n    ] ; .\n\n\nschema:CredentialsShape\n    sh:targetClass schema:Credentials;\n    sh:property [\n        sh:path schema:deny ;\n        sh:node schema:CredentialsItemShape;\n    ] ;\n    sh:property [\n        sh:path schema:allow;\n        sh:node schema:CredentialsItemShape;\n    ] ; .\n\n\nschema:CredentialsItemShape\n    sh:targetClass schema:CredentialsItem;\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:values ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxLength 1024;\n    ] ; .`,\n\n  '4.7.0': `@prefix dash: <http://datashapes.org/dash#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix schema: <http://schema.org/> .\n@prefix sh: <http://www.w3.org/ns/shacl#> .\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\n\nschema:DDOShape\n    sh:targetClass schema:DDO ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^did\\\\\\\\:op\\\\\\\\:(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:maxLength 71;\n        sh:minLength 71;\n    ] ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:maxLength 16;\n    ] ;\n    sh:property [\n        sh:path schema:chainId;\n        sh:datatype xsd:integer ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:nftAddress;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:minLength 42;\n        sh:maxLength 42;\n    ] ;\n    sh:property [\n        sh:path schema:metadata ;\n        sh:node schema:MetadataShape ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:services ;\n        sh:node schema:ServiceShape ;\n        sh:minCount 0;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:credentials;\n        sh:node schema:CredentialsShape ;\n        sh:maxCount 64;\n    ] ; .\n\n\nschema:MetadataShape\n    sh:targetClass schema:Metadata ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 7000;\n        sh:minLength 10;\n    ] ;\n    sh:property [\n        sh:path schema:copyrightHolder;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxCount 1;\n        sh:maxLength 512;\n    ] ;\n    sh:property [\n        sh:path schema:name ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 512;\n        sh:minLength 4;\n    ] ;\n    sh:property [\n        sh:path schema:type;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:author;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:license;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:links;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxLength 512;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:tags;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxLength 256;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:categories;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxLength 256;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:contentLanguage;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.|\\\\\\\\s)*$\" ;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:additionalInformation;\n    ] ;\n    sh:property [\n        sh:path schema:created;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:updated;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:algorithm;\n        sh:node schema:AlgorithmShape ;\n        sh:maxCount 1;\n    ] ;.\n\n\nschema:AlgorithmShape\n    sh:targetClass schema:Algorithm ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:language ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:container ;\n        sh:node schema:ContainerShape ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:consumerParameters;\n        sh:node schema:ConsumerParametersShape ;\n        sh:maxCount 64;\n    ] ;.\n\n\nschema:ConsumerParametersShape\n    sh:targetClass schema:ConsumerParameter ;\n    sh:property [\n        sh:path schema:name;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:type;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:label;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:required ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 7000;\n    ] ;\n    sh:property [\n        sh:path schema:default;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:options;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxLength 256;\n    ] ;.\n\n\nschema:ContainerShape\n    sh:targetClass schema:Container ;\n    sh:property [\n        sh:path schema:entrypoint ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 3;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:image ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:tag ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:checksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxLength 512;\n        sh:minLength 7;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;.\n\n\nschema:ServiceShape\n    sh:targetClass schema:Service ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:name ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxCount 1;\n        sh:minLength 4;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:description ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^((.|\\\\n)*)$\" ;\n        sh:maxCount 1;\n        sh:minLength 10;\n        sh:maxLength 7000;\n    ] ;\n    sh:property [\n        sh:path schema:datatokenAddress ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 42;\n        sh:maxLength 42;\n    ] ;\n    sh:property [\n        sh:path schema:serviceEndpoint ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:minLength 10;\n        sh:maxLength 2048;\n    ] ;\n    sh:property [\n        sh:path schema:files;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 8192;\n    ] ;\n    sh:property [\n        sh:path schema:timeout ;\n        sh:datatype xsd:integer ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:compute;\n        sh:node schema:ComputeShape ;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:credentials;\n        sh:node schema:CredentialsShape ;\n        sh:maxCount 64;\n    ] ;\n    sh:property [\n        sh:path schema:additionalInformation ;\n    ] ;\n    sh:property [\n        sh:path schema:consumerParameters;\n        sh:node schema:ConsumerParametersShape ;\n    ] ;.\n\n\nschema:ComputeShape\n    sh:targetClass schema:Compute ;\n    sh:property [\n        sh:path schema:allowRawAlgorithm ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:allowNetworkAccess ;\n        sh:datatype xsd:boolean ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:publisherTrustedAlgorithmPublishers ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:publisherTrustedAlgorithms;\n        sh:or (\n        [ sh:node schema:TrustedAlgoShape ]\n        [ sh:datatype xsd:string ; sh:pattern \"^\\\\\\\\*$\" ]\n        )\n    ] ; .\n\n\nschema:TrustedAlgoShape\n    sh:targetClass schema:TrustedAlgo;\n    sh:property [\n        sh:path schema:did ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:serviceId ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 0;\n        sh:maxCount 1;\n        sh:maxLength 1024;\n    ] ;\n    sh:property [\n        sh:path schema:filesChecksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 1024;\n    ] ;\n    sh:property [\n        sh:path schema:containerSectionChecksum ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 1024;\n    ] ; .\n\n\nschema:CredentialsShape\n    sh:targetClass schema:Credentials;\n    sh:property [\n        sh:path schema:deny ;\n        sh:node schema:CredentialsItemShape;\n    ] ;\n    sh:property [\n        sh:path schema:allow;\n        sh:node schema:CredentialsItemShape;\n    ] ; .\n\n\nschema:CredentialsItemShape\n    sh:targetClass schema:CredentialsItem;\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n        sh:maxLength 256;\n    ] ;\n    sh:property [\n        sh:path schema:values ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^(.*)$\" ;\n        sh:minCount 1;\n        sh:maxLength 1024;\n    ] ; .`,\n\n  '5.0.0': `@prefix dash: <http://datashapes.org/dash#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix schema: <https://www.w3.org/ns/credentials/v2/> .\n@prefix sh: <http://www.w3.org/ns/shacl#> .\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\n\n# Root shape for VerifiableCredential\nschema:VerifiableCredentialShape\n    sh:targetClass schema:VerifiableCredential ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^did\\\\\\\\:ope\\\\\\\\:(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:maxLength 72 ;\n        sh:minLength 72 ;\n    ] ;\n    sh:property [\n        sh:path schema:type ;\n        sh:nodeKind sh:Literal ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:credentialSubject ;\n        sh:node schema:CredentialSubjectShape ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:issuer ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:additionalDdos ;\n        sh:node schema:AdditionalDdosShape ;\n        sh:maxCount 64 ;\n    ] .\n\n# Shape for CredentialSubject\nschema:CredentialSubjectShape\n    sh:targetClass schema:CredentialSubject ;\n    sh:property [\n        sh:path schema:metadata ;\n        sh:node schema:MetadataShape ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:services ;\n        sh:node schema:ServiceShape ;\n        sh:minCount 1 ;\n        sh:maxCount 64 ;\n    ] ;\n    sh:property [\n        sh:path schema:credentials ;\n        sh:node schema:CredentialsShape ;\n        sh:maxCount 64 ;\n    ] ;\n    sh:property [\n        sh:path schema:chainId ;\n        sh:datatype xsd:integer ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:nftAddress ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n        sh:minLength 42 ;\n        sh:maxLength 42 ;\n    ] ;\n    sh:property [\n        sh:path schema:event ;\n        sh:node schema:EventShape ;\n        sh:maxCount 1 ;\n    ] .\n\n# Shape for Metadata\nschema:MetadataShape\n    sh:property [\n        sh:path schema:created;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:updated;\n        sh:datatype xsd:string;\n#       sh:pattern \"^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])(\\\\.[0-9]{3})?Z$\" ;\n        sh:minCount 1;\n        sh:maxCount 1;\n    ] ;\n    sh:property [\n        sh:path schema:name ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:providedBy ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:tags ;\n        sh:datatype xsd:string ;\n        sh:maxCount 64 ;\n    ] ;\n    sh:property [\n        sh:path schema:additionalInformation ;\n        sh:nodeKind sh:BlankNodeOrIRI ;\n    ] .\n\n# Shape for Services\nschema:ServiceShape\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:datatokenAddress ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:serviceEndpoint ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:timeout ;\n        sh:datatype xsd:integer ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] .\n\n# Shape for Event\nschema:EventShape\n    sh:property [\n        sh:path schema:txid ;\n        sh:datatype xsd:string ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:block ;\n        sh:datatype xsd:integer ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:from ;\n        sh:datatype xsd:string ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:contract ;\n        sh:datatype xsd:string ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:datetime ;\n        sh:datatype xsd:string ;\n        sh:maxCount 1 ;\n    ] .\n\n# Shape for LanguageValue\nschema:LanguageValueShape\n    sh:property [\n        sh:path schema:value ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:language ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:direction ;\n        sh:datatype xsd:string ;\n        sh:maxCount 1 ;\n    ] .\n\n# Shape for AdditionalDdos\nschema:AdditionalDdosShape\n    sh:property [\n        sh:path schema:type ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:data ;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] .\n`,\n\n  'deprecated': `@prefix dash: <http://datashapes.org/dash#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n@prefix schema: <http://schema.org/> .\n@prefix sh: <http://www.w3.org/ns/shacl#> .\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .\n\nschema:DDOShape\n    sh:targetClass schema:DDO ;\n    sh:property [\n        sh:path schema:id ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^did\\\\\\\\:op\\\\\\\\:(.*)$\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:nftAddress;\n        sh:datatype xsd:string ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:chainId;\n        sh:datatype xsd:integer ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;\n    sh:property [\n        sh:path schema:version ;\n        sh:datatype xsd:string ;\n        sh:pattern \"^deprecated\" ;\n        sh:minCount 1 ;\n        sh:maxCount 1 ;\n    ] ;`,\n\n};\n","import { getAddress, sha256, toUtf8Bytes } from 'ethers';\nimport { fromRdf } from 'rdf-literal';\nimport { Parser as N3Parser, Store } from 'n3';\nimport jsonld from 'jsonld';\nimport { AssetFields } from '../@types/AssetTypes.js';\nimport { Service as ServiceV4 } from '../@types/DDO4/Service.js';\nimport { Service as ServiceV5 } from '../@types/DDO5/Service.js';\nimport {\n  CredentialSubject,\n  DDOFields,\n  Proof,\n  UpdateFields,\n  VersionedDDO\n} from '../@types/index.js';\nimport { getSHACLValidator } from '../utils/importUtils.js';\nimport { SCHEMAS } from '../schemas/index.js';\n\nconst CURRENT_VERSION = '5.0.0';\nconst ALLOWED_VERSIONS = [\n  '4.1.0',\n  '4.3.0',\n  '4.5.0',\n  '4.7.0',\n  '5.0.0',\n  'deprecated'\n];\n\nexport abstract class DDOManager {\n  private ddoData: Record<string, any>;\n\n  /**\n   * Constructor for DDOManager.\n   * @param ddoData - The data object representing the DDO.\n   */\n  public constructor(ddoData: Record<string, any>) {\n    this.ddoData = ddoData;\n  }\n\n  /**\n   * Abstract method to generate a DID (Decentralized Identifier).\n   * @param nftAddress - The NFT address.\n   * @param chainId - The chain ID.\n   * @returns A string representing the DID.\n   */\n  abstract makeDid(nftAddress: string, chainId: string): string;\n\n  /**\n   * Abstract method to retrieve DDO fields.\n   * `DDOFields` or `CredentialSubject` contains the following structure:\n   * - **id**: The Decentralized Identifier (DID) of the asset.\n   * - **metadata**: The metadata describing the asset.\n   * - **services**: An array of services associated with the asset.\n   * - **credentials**: An array of verifiable credentials.\n   * - **chainId**: The blockchain chain ID where the asset is registered.\n   * - **nftAddress**: The address of the NFT representing the asset.\n   * - **event** (optional): The last event related to the asset.\n   *\n   * @returns The DDO fields as `DDOFields` or `CredentialSubject`.\n   */\n  abstract getDDOFields(): DDOFields | CredentialSubject;\n\n  /**\n   * Abstract method to retrieve asset fields.\n   * `AssetFields` contains the following structure:\n   * - **datatokens** (optional): The datatokens associated with the asset.\n   * - **event** (optional): The last event related to the asset.\n   * - **nft** (optional): Information about the NFT representing the asset.\n   * - **purgatory** (optional): Purgatory status of the asset, if applicable.\n   * - **stats** (optional): Statistical information about the asset (e.g., usage, views).\n   *\n   * @returns The asset fields as `AssetFields`.\n   */\n  abstract getAssetFields(): AssetFields;\n\n  /**\n   * Abstract method to update multiple fields.\n   * @param fields - Partial object containing fields to update.\n   * @returns The updated DDO data.\n   */\n  abstract updateFields(fields: UpdateFields): Record<string, any>;\n\n  /**\n   * Retrieves the DDO data.\n   * @returns The DDO data as a record.\n   */\n  public getDDOData(): Record<string, any> {\n    return this.ddoData;\n  }\n\n  /**\n   * Method to retrieve the DID.\n   * @returns The DID of ddo.\n   */\n  public getDid(): string {\n    return this.getDDOData().id || null;\n  }\n\n  public deleteIndexedMetadataIfExists(\n    ddo: Record<string, any>\n  ): Record<string, any> {\n    const ddoCopy: Record<string, any> = structuredClone(ddo);\n    if ('indexedMetadata' in ddoCopy) {\n      delete ddoCopy.indexedMetadata;\n      return ddoCopy;\n    }\n    return ddo;\n  }\n\n  /**\n   * Returns the SHACL schema content for a given version.\n   * @param version - The schema version (default: CURRENT_VERSION).\n   * @returns The schema content as a string.\n   * @throws An error if the version is not supported.\n   */\n  public getSchema(version: string = CURRENT_VERSION): string {\n    if (!ALLOWED_VERSIONS.includes(version)) {\n      throw new Error(`Unsupported schema version: ${version}`);\n    }\n    const schema = SCHEMAS[version];\n    if (!schema) {\n      throw new Error(`Schema not found for version: ${version}`);\n    }\n    return schema;\n  }\n\n  /**\n   * Parses schema and data, runs SHACL validation.\n   * @returns Validation report or null if parsing failed (errors added to extraErrors).\n   */\n  protected async runShaclValidation(\n    ddoCopy: Record<string, any>,\n    extraErrors: Record<string, string[]>\n  ): Promise<{ conforms: boolean; results: any[]; dataset: any } | null> {\n    const SHACLValidator = await getSHACLValidator();\n\n    // Parse Turtle schema with n3\n    const schemaContent = this.getSchema(ddoCopy.version);\n    const shapes = new Store(new N3Parser().parse(schemaContent));\n\n    // Parse JSON-LD data: convert to N-Quads, then parse with n3\n    let nquads;\n    try {\n      nquads = await jsonld.toRDF(ddoCopy, { format: 'application/n-quads' });\n    } catch {\n      extraErrors.output = ['Output is null or invalid'];\n      return null;\n    }\n    const data = new Store(new N3Parser().parse(nquads as string));\n\n    const validator = new SHACLValidator(shapes);\n    return validator.validate(data);\n  }\n\n  /**\n   * Factory method to get a DDO class instance based on version.\n   * @param ddoData - The DDO data object.\n   * @returns An instance of `V4DDO` or `V5DDO` or `DeprecatedDDO`.\n   * @throws An error if the version is not supported.\n   */\n  public static getDDOClass(ddoData: Record<string, any>): VersionedDDO {\n    const { version, id } = ddoData;\n    if (version.startsWith('4') && id.startsWith('did:op')) {\n      return new V4DDO(ddoData);\n    } else if (version.startsWith('5') && id.startsWith('did:ope')) {\n      return new V5DDO(ddoData);\n    } else if (version === 'deprecated') {\n      return new DeprecatedDDO(ddoData);\n    }\n    throw new Error(`Unsupported DDO version: ${version}`);\n  }\n}\n\n// V4 DDO implementation\nexport class V4DDO extends DDOManager {\n  public constructor(ddoData: Record<string, any>) {\n    super(ddoData);\n  }\n\n  makeDid(nftAddress: string, chainId: string): string {\n    return (\n      'did:op:' + sha256(toUtf8Bytes(getAddress(nftAddress) + chainId)).slice(2)\n    );\n  }\n\n  getDDOFields(): DDOFields {\n    const data = this.getDDOData();\n    return {\n      id: data.id || null,\n      version: data.version || null,\n      metadata: data.metadata || null,\n      services: data.services || null,\n      chainId: data.chainId || null,\n      credentials: data.credentials || null,\n      nftAddress: data.nftAddress || null\n    };\n  }\n\n  getAssetFields(): AssetFields {\n    return {\n      indexedMetadata: this.getDDOData().indexedMetadata,\n      datatokens: this.getDDOData().datatokens\n    };\n  }\n\n  updateFields(fields: UpdateFields): Record<string, any> {\n    if (fields.id) this.getDDOData().id = fields.id;\n    if (fields.nftAddress) this.getDDOData().nftAddress = fields.nftAddress;\n    if (fields.chainId) this.getDDOData().chainId = fields.chainId;\n    if (fields.datatokens) this.getDDOData().datatokens = fields.datatokens;\n    if (fields.indexedMetadata?.nft)\n      this.getDDOData().indexedMetadata.nft = fields.indexedMetadata.nft;\n    if (fields.indexedMetadata?.event)\n      this.getDDOData().indexedMetadata.event = fields.indexedMetadata.event;\n    if (fields.indexedMetadata?.purgatory)\n      this.getDDOData().indexedMetadata.purgatory =\n        fields.indexedMetadata.purgatory;\n    if (fields.services)\n      this.getDDOData().services = fields.services as ServiceV4[];\n    if (fields.indexedMetadata?.stats)\n      this.getDDOData().indexedMetadata.stats = fields.indexedMetadata.stats;\n    return this.getDDOData();\n  }\n\n  async validate(): Promise<[boolean, Record<string, string[]>]> {\n    const updatedDdo = this.deleteIndexedMetadataIfExists(this.getDDOData());\n    const ddoCopy = JSON.parse(JSON.stringify(updatedDdo));\n    const { chainId, nftAddress } = ddoCopy;\n    const extraErrors: Record<string, string[]> = {};\n\n    ddoCopy['@type'] = 'DDO';\n    ddoCopy['@context'] = { '@vocab': 'http://schema.org/' };\n\n    if (!chainId) {\n      extraErrors.chainId = ['chainId is missing or invalid.'];\n    }\n\n    try {\n      getAddress(nftAddress);\n    } catch {\n      extraErrors.nftAddress = ['nftAddress is missing or invalid.'];\n    }\n\n    if (this.makeDid(nftAddress, chainId.toString(10)) !== ddoCopy.id) {\n      extraErrors.id = ['did is not valid for chain Id and nft address'];\n    }\n\n    const report = await this.runShaclValidation(ddoCopy, extraErrors);\n    if (!report) return [false, extraErrors];\n\n    if (report.conforms) return [true, {}];\n\n    for (const result of report.results) {\n      const key = result.path?.value.replace('http://schema.org/', '');\n      if (key) {\n        if (!(key in extraErrors)) extraErrors[key] = [];\n        extraErrors[key].push(fromRdf(result.message[0]));\n      }\n    }\n    extraErrors.fullReport = report.dataset.toString();\n    return [false, extraErrors];\n  }\n}\n\n// V5 DDO implementation\nexport class V5DDO extends DDOManager {\n  public constructor(ddoData: Record<string, any>) {\n    super(ddoData);\n  }\n\n  makeDid(nftAddress: string, chainId: string): string {\n    return (\n      'did:ope:' +\n      sha256(toUtf8Bytes(getAddress(nftAddress) + chainId)).slice(2)\n    );\n  }\n\n  getDDOFields(): CredentialSubject {\n    const data = this.getDDOData();\n    return {\n      id: data?.id || null,\n      version: data?.version || null,\n      metadata: data.credentialSubject?.metadata || null,\n      services: data.credentialSubject?.services || null,\n      chainId: data.credentialSubject?.chainId || null,\n      credentials: data.credentialSubject?.credentials || null,\n      nftAddress: data.credentialSubject?.nftAddress || null\n    };\n  }\n\n  getAssetFields(): AssetFields {\n    return {\n      indexedMetadata: this.getDDOData()?.indexedMetadata,\n      datatokens: this.getDDOData().credentialSubject?.datatokens\n    };\n  }\n\n  getProof(): Proof {\n    return this.getDDOData().proof;\n  }\n\n  getIssuer(): string {\n    return this.getDDOData().issuer;\n  }\n\n  updateFields(fields: UpdateFields): Record<string, any> {\n    const credentialSubject = this.getDDOData().credentialSubject || {};\n    if (fields.id) this.getDDOData().id = fields.id;\n    if (fields.nftAddress) credentialSubject.nftAddress = fields.nftAddress;\n    if (fields.chainId) credentialSubject.chainId = fields.chainId;\n    if (fields.datatokens) credentialSubject.datatokens = fields.datatokens;\n    if (fields.indexedMetadata?.nft)\n      this.getDDOData().indexedMetadata.nft = fields.indexedMetadata.nft;\n    if (fields.indexedMetadata?.event)\n      this.getDDOData().indexedMetadata.event = fields.indexedMetadata.event;\n    if (fields.indexedMetadata?.purgatory)\n      this.getDDOData().indexedMetadata.purgatory =\n        fields.indexedMetadata.purgatory;\n    if (fields.services)\n      credentialSubject.services = fields.services as ServiceV5[];\n    if (fields.indexedMetadata?.stats)\n      this.getDDOData().indexedMetadata.stats = fields.indexedMetadata.stats;\n    if (fields.issuer) this.getDDOData().issuer = fields.issuer;\n    if (fields.proof) this.getDDOData().proof = fields.proof;\n    this.getDDOData().credentialSubject = credentialSubject;\n    return this.getDDOData();\n  }\n\n  async validate(): Promise<[boolean, Record<string, string[]>]> {\n    const updatedDdo = this.deleteIndexedMetadataIfExists(this.getDDOData());\n    const ddoCopy = JSON.parse(JSON.stringify(updatedDdo));\n    const { chainId, nftAddress } = ddoCopy.credentialSubject;\n    const extraErrors: Record<string, string[]> = {};\n\n    ddoCopy['@type'] = 'VerifiableCredential';\n    ddoCopy['@context'] = { '@vocab': 'https://www.w3.org/ns/credentials/v2/' };\n\n    if (!ddoCopy.credentialSubject.chainId) {\n      extraErrors.chainId = ['chainId is missing or invalid.'];\n    }\n\n    try {\n      getAddress(nftAddress);\n    } catch {\n      extraErrors.nftAddress = ['nftAddress is missing or invalid.'];\n    }\n\n    if (this.makeDid(nftAddress, chainId.toString(10)) !== ddoCopy.id) {\n      extraErrors.id = ['did is not valid for chainId and nft address'];\n    }\n\n    if (!ddoCopy.credentialSubject.metadata) {\n      extraErrors.metadata = ['metadata is missing or invalid.'];\n    }\n\n    if (!ddoCopy.credentialSubject.services) {\n      extraErrors.services = ['services are missing or invalid.'];\n    }\n\n    const report = await this.runShaclValidation(ddoCopy, extraErrors);\n    if (!report) return [false, extraErrors];\n\n    if (report.conforms) return [true, {}];\n\n    for (const result of report.results) {\n      const key = result?.path?.value.replace(\n        'https://www.w3.org/ns/credentials/v2/',\n        ''\n      );\n      if (key) {\n        if (!(key in extraErrors)) extraErrors[key] = [];\n        extraErrors[key].push(result.message[0].value);\n      }\n    }\n    extraErrors.fullReport = report.dataset.toString();\n    return [false, extraErrors];\n  }\n}\n\n// Deprecated DDO implementation\nexport class DeprecatedDDO extends DDOManager {\n  public constructor(ddoData: Record<string, any>) {\n    super(ddoData);\n  }\n\n  makeDid(nftAddress: string, chainId: string): string {\n    return (\n      'did:op:' + sha256(toUtf8Bytes(getAddress(nftAddress) + chainId)).slice(2)\n    );\n  }\n\n  getDDOFields(): DDOFields {\n    const data = this.getDDOData();\n    return {\n      id: data?.id || null,\n      version: 'deprecated',\n      chainId: data?.chainId || null,\n      nftAddress: data?.nftAddress || null,\n      metadata: null,\n      services: null,\n      credentials: null\n    };\n  }\n\n  getAssetFields(): AssetFields {\n    const { indexedMetadata } = this.getDDOData();\n    indexedMetadata.event = null;\n    indexedMetadata.purgatory = null;\n    indexedMetadata.stats = null;\n    indexedMetadata.nft = {\n      state: this.getDDOData().indexedMetadata.nft.state,\n      address: null,\n      name: null,\n      symbol: null,\n      owner: null,\n      created: null,\n      tokenURI: null\n    };\n    return {\n      indexedMetadata,\n      datatokens: null\n    };\n  }\n\n  updateFields(fields: UpdateFields): Record<string, any> {\n    const ddo = this.getDDOData() || {};\n    if (fields.id) ddo.id = fields.id;\n    if (fields.nftAddress) ddo.nftAddress = fields.nftAddress;\n    if (fields.chainId) ddo.chainId = fields.chainId;\n    if (fields.indexedMetadata?.nft?.state)\n      ddo.indexedMetadata.nft.state = fields.indexedMetadata.nft.state;\n    return ddo;\n  }\n\n  async validate(): Promise<[boolean, Record<string, string[]>]> {\n    const updatedDdo = this.deleteIndexedMetadataIfExists(this.getDDOData());\n    const ddoCopy = JSON.parse(JSON.stringify(updatedDdo));\n    const { chainId, nftAddress } = ddoCopy;\n    const extraErrors: Record<string, string[]> = {};\n\n    ddoCopy['@type'] = 'DDO';\n    ddoCopy['@context'] = { '@vocab': 'http://schema.org/' };\n\n    if (!chainId) {\n      extraErrors.chainId = ['chainId is missing or invalid.'];\n    }\n\n    try {\n      getAddress(nftAddress);\n    } catch {\n      extraErrors.nftAddress = ['nftAddress is missing or invalid.'];\n    }\n\n    if (this.makeDid(nftAddress, chainId.toString(10)) !== ddoCopy.id) {\n      extraErrors.id = ['did is not valid for chain Id and nft address'];\n    }\n\n    const report = await this.runShaclValidation(ddoCopy, extraErrors);\n    if (!report) return [false, extraErrors];\n\n    if (report.conforms) return [true, {}];\n\n    for (const result of report.results) {\n      const key = result.path?.value.replace('http://schema.org/', '');\n      if (key) {\n        if (!(key in extraErrors)) extraErrors[key] = [];\n        extraErrors[key].push(fromRdf(result.message[0]));\n      }\n    }\n    extraErrors.fullReport = report.dataset.toString();\n    return [false, extraErrors];\n  }\n}\n\nexport async function validateDDO(\n  ddoData: Record<string, unknown>\n): Promise<[boolean, Record<string, string[]>]> {\n  try {\n    const ddoInstance = DDOManager.getDDOClass(ddoData);\n    return await ddoInstance.validate();\n  } catch (error) {\n    return [false, { general: [`Validation failed: ${error}`] }];\n  }\n}\n","export enum State {\n  Active = 0,\n  EndOfLife = 1,\n  Deprecated = 2,\n  RevokedByPublisher = 3,\n  OrderingIsTemporaryDisabled = 4,\n  AssetUnlisted = 5\n}\n","export interface ElasticsearchMapping {\n  index: string;\n  body: {\n    mappings: {\n      properties: Record<string, any>;\n    };\n  };\n}\n\nconst v4ServiceProperties = {\n  id: { type: 'keyword' },\n  type: { type: 'keyword' },\n  name: {\n    type: 'text',\n    fields: { keyword: { type: 'keyword', ignore_above: 256 } }\n  },\n  description: { type: 'text' },\n  files: { type: 'keyword', index: false },\n  datatokenAddress: { type: 'keyword' },\n  serviceEndpoint: { type: 'keyword' },\n  timeout: { type: 'long' },\n  compute: {\n    type: 'object',\n    properties: {\n      allowRawAlgorithm: { type: 'boolean' },\n      allowNetworkAccess: { type: 'boolean' },\n      publisherTrustedAlgorithmPublishers: { type: 'keyword' },\n      publisherTrustedAlgorithms: {\n        type: 'nested',\n        properties: {\n          did: { type: 'keyword' },\n          serviceId: { type: 'keyword' },\n          filesChecksum: { type: 'keyword' },\n          containerSectionChecksum: { type: 'keyword' }\n        }\n      }\n    }\n  },\n  credentials: {\n    type: 'object',\n    properties: {\n      allow: {\n        type: 'nested',\n        properties: {\n          type: { type: 'keyword' },\n          values: { type: 'keyword' }\n        }\n      },\n      deny: {\n        type: 'nested',\n        properties: {\n          type: { type: 'keyword' },\n          values: { type: 'keyword' }\n        }\n      }\n    }\n  },\n  consumerParameters: { type: 'object', enabled: false },\n  additionalInformation: { type: 'object', enabled: false }\n};\n\n// v4.1.0 → v4.7.0 differ only in SHACL length constraints and a couple of\n// optional fields (4.7 adds `serviceId` on TrustedAlgo, `credentials` on\n// Service). ES doesn't enforce constraints, and unused fields stay empty in\n// older docs — so all v4 versions share the same mapping body and differ\n// only in index name.\nconst v4MappingProperties = {\n  '@context': { type: 'keyword' },\n  id: { type: 'keyword' },\n  version: { type: 'keyword' },\n  nftAddress: { type: 'keyword' },\n  chainId: { type: 'long' },\n  metadata: {\n    type: 'object',\n    properties: {\n      created: { type: 'date' },\n      updated: { type: 'date' },\n      name: {\n        type: 'text',\n        fields: { keyword: { type: 'keyword', ignore_above: 256 } }\n      },\n      description: { type: 'text' },\n      type: { type: 'keyword' },\n      author: {\n        type: 'text',\n        fields: { keyword: { type: 'keyword', ignore_above: 256 } }\n      },\n      license: { type: 'keyword' },\n      links: { type: 'keyword' },\n      tags: { type: 'keyword' },\n      categories: { type: 'keyword' },\n      copyrightHolder: { type: 'keyword' },\n      contentLanguage: { type: 'keyword' },\n      algorithm: {\n        type: 'object',\n        properties: {\n          language: { type: 'keyword' },\n          version: { type: 'keyword' },\n          container: {\n            type: 'object',\n            properties: {\n              entrypoint: { type: 'keyword' },\n              image: { type: 'keyword' },\n              tag: { type: 'keyword' },\n              checksum: { type: 'keyword' }\n            }\n          },\n          consumerParameters: { type: 'object', enabled: false }\n        }\n      },\n      additionalInformation: { type: 'object', enabled: false }\n    }\n  },\n  services: { type: 'nested', properties: v4ServiceProperties },\n  credentials: {\n    type: 'object',\n    properties: {\n      allow: {\n        type: 'nested',\n        properties: {\n          type: { type: 'keyword' },\n          values: { type: 'keyword' }\n        }\n      },\n      deny: {\n        type: 'nested',\n        properties: {\n          type: { type: 'keyword' },\n          values: { type: 'keyword' }\n        }\n      }\n    }\n  }\n};\n\n/* eslint-disable camelcase */\nexport const ddoMappingV4_1_0: ElasticsearchMapping = {\n  index: 'op_ddo_v4.1.0',\n  body: { mappings: { properties: v4MappingProperties } }\n};\n\nexport const ddoMappingV4_3_0: ElasticsearchMapping = {\n  index: 'op_ddo_v4.3.0',\n  body: { mappings: { properties: v4MappingProperties } }\n};\n\nexport const ddoMappingV4_5_0: ElasticsearchMapping = {\n  index: 'op_ddo_v4.5.0',\n  body: { mappings: { properties: v4MappingProperties } }\n};\n\nexport const ddoMappingV4_7_0: ElasticsearchMapping = {\n  index: 'op_ddo_v4.7.0',\n  body: { mappings: { properties: v4MappingProperties } }\n};\n/* eslint-enable camelcase */\n\nconst v5ServiceProperties = {\n  id: { type: 'keyword' },\n  type: { type: 'keyword' },\n  name: {\n    type: 'text',\n    fields: { keyword: { type: 'keyword', ignore_above: 256 } }\n  },\n  displayName: {\n    type: 'object',\n    properties: {\n      value: { type: 'text' },\n      language: { type: 'keyword' },\n      direction: { type: 'keyword' }\n    }\n  },\n  description: {\n    type: 'object',\n    properties: {\n      value: { type: 'text' },\n      language: { type: 'keyword' },\n      direction: { type: 'keyword' }\n    }\n  },\n  datatokenAddress: { type: 'keyword' },\n  serviceEndpoint: { type: 'keyword' },\n  files: { type: 'keyword', index: false },\n  timeout: { type: 'long' },\n  state: { type: 'keyword' },\n  compute: { type: 'object', enabled: false },\n  consumerParameters: { type: 'object', enabled: false },\n  credentials: { type: 'object', enabled: false },\n  dataSchema: { type: 'object', enabled: false },\n  inputSchema: { type: 'object', enabled: false },\n  outputSchema: { type: 'object', enabled: false },\n  additionalInformation: { type: 'object', enabled: false }\n};\n\n/* eslint-disable-next-line camelcase */\nexport const ddoMappingV5_0_0: ElasticsearchMapping = {\n  index: 'op_ddo_v5.0.0',\n  body: {\n    mappings: {\n      properties: {\n        '@context': { type: 'keyword' },\n        id: { type: 'keyword' },\n        type: { type: 'keyword' },\n        issuer: { type: 'keyword' },\n        version: { type: 'keyword' },\n        credentialSubject: {\n          type: 'object',\n          properties: {\n            id: { type: 'keyword' },\n            version: { type: 'keyword' },\n            chainId: { type: 'long' },\n            nftAddress: { type: 'keyword' },\n            metadata: {\n              type: 'object',\n              properties: {\n                created: { type: 'date' },\n                updated: { type: 'date' },\n                name: {\n                  type: 'text',\n                  fields: { keyword: { type: 'keyword', ignore_above: 256 } }\n                },\n                description: {\n                  type: 'object',\n                  properties: {\n                    value: { type: 'text' },\n                    language: { type: 'keyword' },\n                    direction: { type: 'keyword' }\n                  }\n                },\n                displayTitle: {\n                  type: 'object',\n                  properties: {\n                    value: { type: 'text' },\n                    language: { type: 'keyword' },\n                    direction: { type: 'keyword' }\n                  }\n                },\n                type: { type: 'keyword' },\n                author: {\n                  type: 'text',\n                  fields: { keyword: { type: 'keyword', ignore_above: 256 } }\n                },\n                providedBy: { type: 'keyword' },\n                copyrightHolder: { type: 'keyword' },\n                license: { type: 'object', enabled: false },\n                links: { type: 'object', enabled: false },\n                attachments: { type: 'object', enabled: false },\n                tags: { type: 'keyword' },\n                categories: { type: 'keyword' },\n                algorithm: { type: 'object', enabled: false },\n                additionalInformation: { type: 'object', enabled: false }\n              }\n            },\n            services: { type: 'nested', properties: v5ServiceProperties },\n            credentials: { type: 'object', enabled: false },\n            event: {\n              type: 'object',\n              properties: {\n                txid: { type: 'keyword' },\n                block: { type: 'long' },\n                from: { type: 'keyword' },\n                contract: { type: 'keyword' },\n                datetime: { type: 'date' }\n              }\n            }\n          }\n        },\n        additionalDdos: {\n          type: 'nested',\n          properties: {\n            type: { type: 'keyword' },\n            data: { type: 'object', enabled: false }\n          }\n        }\n      }\n    }\n  }\n};\n\n/* eslint-disable camelcase */\nexport const ddoElasticMappings: ElasticsearchMapping[] = [\n  ddoMappingV4_1_0,\n  ddoMappingV4_3_0,\n  ddoMappingV4_5_0,\n  ddoMappingV4_7_0,\n  ddoMappingV5_0_0\n];\n/* eslint-enable camelcase */\n"],"names":["SHACLValidator","SCHEMAS","deprecated","State","ALLOWED_VERSIONS","DDOManager","ddoData","this","_proto","prototype","getDDOData","getDid","id","deleteIndexedMetadataIfExists","ddo","ddoCopy","structuredClone","indexedMetadata","getSchema","version","includes","Error","schema","runShaclValidation","extraErrors","_this","Promise","resolve","_temp","then","module","e","reject","getSHACLValidator","_exit","_temp3","_result","data","Store","N3Parser","parse","nquads","shapes","validate","schemaContent","Parser","_temp2","_catch","jsonld","toRDF","format","_jsonld$toRDF","output","getDDOClass","startsWith","V4DDO","V5DDO","DeprecatedDDO","_DDOManager2","call","_inheritsLoose","_proto2","makeDid","nftAddress","chainId","sha256","toUtf8Bytes","getAddress","slice","getDDOFields","metadata","services","credentials","getAssetFields","datatokens","updateFields","fields","_fields$indexedMetada","_fields$indexedMetada2","_fields$indexedMetada3","_fields$indexedMetada4","nft","event","purgatory","stats","_this2","updatedDdo","JSON","stringify","_unused","toString","report","conforms","_step","_iterator","_createForOfIteratorHelperLoose","results","done","_result$path","result","value","key","path","replace","push","fromRdf","message","fullReport","dataset","_DDOManager3","_proto3","_data$credentialSubje","_data$credentialSubje2","_data$credentialSubje3","_data$credentialSubje4","_data$credentialSubje5","credentialSubject","_this$getDDOData","_this$getDDOData$cred","getProof","proof","getIssuer","issuer","_fields$indexedMetada5","_fields$indexedMetada6","_fields$indexedMetada7","_fields$indexedMetada8","_this3","_ddoCopy$credentialSu","_unused2","_iterator2","_step2","_result$path2","_DDOManager4","_proto4","state","address","name","symbol","owner","created","tokenURI","_fields$indexedMetada9","_this4","_unused3","_step3","_iterator3","_result$path3","v4MappingProperties","type","properties","updated","keyword","ignore_above","description","author","license","links","tags","categories","copyrightHolder","contentLanguage","algorithm","language","container","entrypoint","image","tag","checksum","consumerParameters","enabled","additionalInformation","files","index","datatokenAddress","serviceEndpoint","timeout","compute","allowRawAlgorithm","allowNetworkAccess","publisherTrustedAlgorithmPublishers","publisherTrustedAlgorithms","did","serviceId","filesChecksum","containerSectionChecksum","allow","values","deny","ddoMappingV4_1_0","body","mappings","ddoMappingV4_3_0","ddoMappingV4_5_0","ddoMappingV4_7_0","ddoMappingV5_0_0","direction","displayTitle","providedBy","attachments","displayName","dataSchema","inputSchema","outputSchema","txid","block","from","contract","datetime","additionalDdos","ddoElasticMappings","ddoInstance","error","general"],"mappings":"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"}