@dasch-swiss/dsp-js
Version:
JavaScript library that handles API requests to Knora
106 lines • 6.59 kB
JavaScript
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