UNPKG

@dasch-swiss/dsp-js

Version:

JavaScript library that handles API requests to Knora

106 lines 6.59 kB
import { JsonConvert, OperationMode, ValueCheckingMode } from "json2typescript"; import { PropertyMatchingRule } from "json2typescript/src/json2typescript/json-convert-enums"; import { ResourceClassAndPropertyDefinitions } from "../../../../src/cache/ontology-cache/resource-class-and-property-definitions"; import { ResourceClassDefinitionWithPropertyDefinition } from "../../../../src/cache/ontology-cache/resource-class-definition-with-property-definition"; import { Constants } from "../../../../src/models/v2/Constants"; import { OntologyConversionUtil } from "../../../../src/models/v2/ontologies/OntologyConversionUtil"; import { ReadOntology } from "../../../../src/models/v2/ontologies/read/read-ontology"; import { ResourceClassDefinition } from "../../../../src/models/v2/ontologies/resource-class-definition"; import { ResourcePropertyDefinition } from "../../../../src/models/v2/ontologies/resource-property-definition"; import { StandoffClassDefinition } from "../../../../src/models/v2/ontologies/standoff-class-definition"; import { SystemPropertyDefinition } from "../../../../src/models/v2/ontologies/system-property-definition"; import anythingOntologyExpanded from "../v2/ontologies/anything-ontology-expanded.json"; import knoraApiOntologyExpanded from "../v2/ontologies/knora-api-ontology-expanded.json"; export var MockOntology; (function (MockOntology) { var jsonConvert = new JsonConvert(OperationMode.ENABLE, ValueCheckingMode.DISALLOW_NULL, false, PropertyMatchingRule.CASE_STRICT); MockOntology.mockReadOntology = function (ontoIri) { var ontologyJsonld; switch (ontoIri) { case "http://api.knora.org/ontology/knora-api/v2": { ontologyJsonld = knoraApiOntologyExpanded; break; } case "http://0.0.0.0:3333/ontology/0001/anything/v2": { ontologyJsonld = anythingOntologyExpanded; break; } default: { throw new Error("Ontology not supported: " + ontoIri); } } var onto = jsonConvert.deserializeObject(ontologyJsonld, ReadOntology); var entities = ontologyJsonld["@graph"]; // Convert resource classes entities.filter(OntologyConversionUtil.filterResourceClassDefinitions).map(function (resclassJsonld) { return OntologyConversionUtil.convertEntity(resclassJsonld, ResourceClassDefinition, jsonConvert); }).forEach(function (resClass) { onto.classes[resClass.id] = resClass; }); // Convert standoff classes entities.filter(OntologyConversionUtil.filterStandoffClassDefinitions).map(function (standoffclassJsonld) { return OntologyConversionUtil.convertEntity(standoffclassJsonld, StandoffClassDefinition, jsonConvert); }).forEach(function (standoffClass) { onto.classes[standoffClass.id] = standoffClass; }); // Convert resource properties (properties pointing to Knora values) entities.filter(OntologyConversionUtil.filterResourcePropertyDefinitions).map(function (propertyJsonld) { return OntologyConversionUtil.convertEntity(propertyJsonld, ResourcePropertyDefinition, jsonConvert); }).forEach(function (prop) { onto.properties[prop.id] = prop; }); // Convert system properties (properties not pointing to Knora values) entities.filter(OntologyConversionUtil.filterSystemPropertyDefintions).map(function (propertyJsonld) { return OntologyConversionUtil.convertEntity(propertyJsonld, SystemPropertyDefinition, jsonConvert); }).forEach(function (prop) { onto.properties[prop.id] = prop; }); var referencedOntologies = new Set([]); if (ontoIri === "http://0.0.0.0:3333/ontology/0001/anything/v2") { referencedOntologies.add("http://api.knora.org/ontology/knora-api/v2"); } onto.dependsOnOntologies = referencedOntologies; return onto; }; MockOntology.mockIResourceClassAndPropertyDefinitions = function (resClassIri) { var _a; var tmpClasses = {}; var tmpProps = {}; var anythingOntology = anythingOntologyExpanded; var knoraApiOntology = knoraApiOntologyExpanded; var knoraApiEntities = knoraApiOntology["@graph"]; var anythingEntities = anythingOntology["@graph"]; var entities = knoraApiEntities.concat(anythingEntities); // Convert resource classes entities.filter(OntologyConversionUtil.filterResourceClassDefinitions) .map(function (resclassJsonld) { return OntologyConversionUtil.convertEntity(resclassJsonld, ResourceClassDefinition, jsonConvert); }) .filter(function (resclassDef) { return resclassDef.id === resClassIri; }) .forEach(function (resClass) { tmpClasses[resClass.id] = resClass; }); tmpClasses[resClassIri].propertiesList = tmpClasses[resClassIri].propertiesList.filter(function (prop) { // exclude rdfs:label return prop.propertyIndex !== Constants.Label; }); // properties of anything Thing var props = tmpClasses[resClassIri].propertiesList.map(function (prop) { return prop.propertyIndex; }); // Convert resource properties (properties pointing to Knora values) entities.filter(OntologyConversionUtil.filterResourcePropertyDefinitions) .map(function (propertyJsonld) { return OntologyConversionUtil.convertEntity(propertyJsonld, ResourcePropertyDefinition, jsonConvert); }).filter(function (propertyDef) { return props.indexOf(propertyDef.id) !== -1; }) .forEach(function (prop) { tmpProps[prop.id] = prop; }); // Convert system properties (properties not pointing to Knora values) entities.filter(OntologyConversionUtil.filterSystemPropertyDefintions) .map(function (propertyJsonld) { return OntologyConversionUtil.convertEntity(propertyJsonld, SystemPropertyDefinition, jsonConvert); }).filter(function (propertyDef) { return props.indexOf(propertyDef.id) !== -1; }) .forEach(function (prop) { tmpProps[prop.id] = prop; }); return new ResourceClassAndPropertyDefinitions((_a = {}, _a[resClassIri] = new ResourceClassDefinitionWithPropertyDefinition(tmpClasses[resClassIri], tmpProps), _a), tmpProps); }; })(MockOntology || (MockOntology = {})); //# sourceMappingURL=mock-ontology.js.map