diff --git a/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/objectBuilder/buildObjects.ts b/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/objectBuilder/buildObjects.ts new file mode 100644 index 0000000..0aac1dd --- /dev/null +++ b/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/objectBuilder/buildObjects.ts @@ -0,0 +1,147 @@ +import type { + ShapeType, + Shape, + Predicate, + Schema, +} from "@nextgraph-monorepo/ng-shex-orm"; + +interface Triple { + s: string; + p: string; + o: string; +} +interface TrackedSubject { + shape: Shape; + parentObject?: TrackedSubject; + valid?: boolean; + trackedPredicates: Record; + /** For Sub-objects only */ + untracked?: boolean; +} + +interface TrackedPredicate { + shape: Predicate; + currentCardinality: number; + childSubjects?: TrackedSubject[]; +} + +export function buildObjects(shapeType: ShapeType) { + // +} + +export function onTriplesRemoved( + trackedSubjects: Record, + triplesRemoved: string[][], + shapeType: ShapeType +) { + // +} + +/** + * Adds new triples to tracked subjects and creates and returns + * new tracked (possibly nested) subjects. + */ +export function onTriplesAdded( + trackedSubjects: Record, + triplesAdded: Triple[], + schema: Schema, + rootShape?: Shape +): { newTrackedSubjects: Record } { + // Track for secondary iterations. + const newTrackedSubjectsCreated: Record = {}; + + for (const triple of triplesAdded) { + if (!trackedSubjects[triple.s]) { + // If rootShape is not set, we are applying the triples new nested objects + // and we don't create new tracked subjects. + if (!rootShape) continue; + + // Check if predicate is in root shape type. + const matchedPredicate = rootShape.predicates.find((p) => triple.p); + if (!matchedPredicate) { + // Nothing to track. + continue; + } + // The triple should be tracked. Create new tracked subject. + const newTrackedSubject: TrackedSubject = { + shape: rootShape, + trackedPredicates: { + [triple.p]: { + shape: matchedPredicate, + currentCardinality: 1, + }, + }, + }; + trackedSubjects[triple.s] = [newTrackedSubject]; + } else { + // Add triple to tracked subject(s). + // In the case of nested shapes, the same subject can be tracked + // in multiple shapes. + const trackedSubjectsMatching = trackedSubjects[triple.s]; + for (const trackedSubject of trackedSubjectsMatching) { + // Is predicate tracked in this subject's shape? + const matchedPredShape = trackedSubject.shape.predicates.find( + (predShape) => predShape.iri === triple.p + ); + if (!matchedPredShape) continue; + // Get or create tracked predicate for tracked shape. + let trackedPredicate = + trackedSubject.trackedPredicates[matchedPredShape?.iri]; + if (!trackedSubjects) { + trackedPredicate = { + currentCardinality: 0, + shape: matchedPredShape, + }; + } + // Increase cardinality. + trackedPredicate.currentCardinality += 1; + + // If predicate shape has nested object, track that too. + if (trackedPredicate.shape.nestedShape) { + const newTrackedObject: TrackedSubject = { + shape: schema[matchedPredShape.nestedShape as string], + trackedPredicates: {}, + parentObject: trackedSubject, + }; + // Remember for adding to registry and for re-running on nested shapes. + const newTracked = newTrackedSubjectsCreated[triple.o]; + if (!newTracked) + newTrackedSubjectsCreated[triple.o] = [ + newTrackedObject, + ]; + newTracked.push(newTrackedObject); + + // Link to parent + const childSubjects = trackedPredicate.childSubjects; + if (childSubjects) childSubjects.push(newTrackedObject); + else trackedPredicate.childSubjects = [newTrackedObject]; + } + + // TODO: Inform tracked subjects about change + } + } + } + + // Rerun triples on new tracked subjects created. + // Then merge with parent tracked subjects + const newNestedSubjectsCreated = onTriplesAdded( + newTrackedSubjectsCreated, + triplesAdded, + schema + ); + + // TODO: Is it correct to do this? + const ret: Record = {}; + for (const subjectIri of Object.keys(newTrackedSubjectsCreated)) { + ret[subjectIri] = [ + ...newTrackedSubjectsCreated[subjectIri], + ...newNestedSubjectsCreated.newTrackedSubjects[subjectIri], + ]; + } + + // Update Valid invalid + + return { newTrackedSubjects: ret }; +} + +// Do we have infinite-loop issues? diff --git a/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/buildConstruct.ts b/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/buildConstruct.ts index 7a72649..ec24ecf 100644 --- a/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/buildConstruct.ts +++ b/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/buildConstruct.ts @@ -73,7 +73,7 @@ function addConstructPattern( valuesBlocks: string[], options?: SparqlBuildOptions ) { - const p = `<${pred.predicateUri}>`; + const p = `<${pred.iri}>`; const objVar = uniqueVar(ctx, pred.readablePredicate); const triple = `${subjectVar} ${p} ${objTerm} .`; diff --git a/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/buildSparqlConstructFromShape.ts b/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/buildSparqlConstructFromShape.ts index 7cfb525..dbbb78c 100644 --- a/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/buildSparqlConstructFromShape.ts +++ b/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/buildSparqlConstructFromShape.ts @@ -47,7 +47,7 @@ export const buildConstructQuery = ({ constructStatements.push({ s: `?${subjectVarName}`, - p: `<${pred.predicateUri}>`, + p: `<${pred.iri}>`, o: `?${shapeVarName}`, optional: pred.minCardinality < 1, literals: pred.literalValue, @@ -58,12 +58,12 @@ export const buildConstructQuery = ({ addTriples(schema[pred.nestedShape]); } else { const objVarName = getVarNameFor( - shapeId + "__separator__" + pred.predicateUri + shapeId + "__separator__" + pred.iri ); constructStatements.push({ s: `?${subjectVarName}`, - p: `<${pred.predicateUri}>`, + p: `<${pred.iri}>`, o: `?${objVarName}`, optional: pred.minCardinality < 1, literals: pred.literalValue, diff --git a/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/testShape.schema.ts b/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/testShape.schema.ts index 5a57db5..da51902 100644 --- a/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/testShape.schema.ts +++ b/sdk/ng-sdk-js/examples/multi-framework-signals/src/ng-mock/wasm-land/sparql/testShape.schema.ts @@ -6,124 +6,124 @@ import type { Schema } from "@nextgraph-monorepo/ng-shex-orm"; * ============================================================================= */ export const testShapeSchema: Schema = { - "http://example.org/TestObject": { - iri: "http://example.org/TestObject", - predicates: [ - { - type: "literal", - literalValue: ["TestObject"], - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", - readablePredicate: "type", - extra: true, - }, - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/stringValue", - readablePredicate: "stringValue", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/numValue", - readablePredicate: "numValue", - }, - { - type: "boolean", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/boolValue", - readablePredicate: "boolValue", - }, - { - type: "number", - maxCardinality: -1, - minCardinality: 0, - predicateUri: "http://example.org/arrayValue", - readablePredicate: "arrayValue", - }, - { - type: "nested", - nestedShape: - "http://example.org/TestObject||http://example.org/objectValue", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/objectValue", - readablePredicate: "objectValue", - }, - { - type: "nested", - nestedShape: - "http://example.org/TestObject||http://example.org/anotherObject", - maxCardinality: -1, - minCardinality: 0, - predicateUri: "http://example.org/anotherObject", - readablePredicate: "anotherObject", - }, - { - type: "eitherOf", - eitherOf: [ - { - type: "string", - }, - { - type: "number", - }, + "http://example.org/TestObject": { + iri: "http://example.org/TestObject", + predicates: [ + { + type: "literal", + literalValue: ["TestObject"], + maxCardinality: 1, + minCardinality: 1, + iri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + readablePredicate: "type", + extra: true, + }, + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/stringValue", + readablePredicate: "stringValue", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/numValue", + readablePredicate: "numValue", + }, + { + type: "boolean", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/boolValue", + readablePredicate: "boolValue", + }, + { + type: "number", + maxCardinality: -1, + minCardinality: 0, + iri: "http://example.org/arrayValue", + readablePredicate: "arrayValue", + }, + { + type: "nested", + nestedShape: + "http://example.org/TestObject||http://example.org/objectValue", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/objectValue", + readablePredicate: "objectValue", + }, + { + type: "nested", + nestedShape: + "http://example.org/TestObject||http://example.org/anotherObject", + maxCardinality: -1, + minCardinality: 0, + iri: "http://example.org/anotherObject", + readablePredicate: "anotherObject", + }, + { + type: "eitherOf", + eitherOf: [ + { + type: "string", + }, + { + type: "number", + }, + ], + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/numOrStr", + readablePredicate: "numOrStr", + }, ], - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/numOrStr", - readablePredicate: "numOrStr", - }, - ], - }, - "http://example.org/TestObject||http://example.org/objectValue": { - iri: "http://example.org/TestObject||http://example.org/objectValue", - predicates: [ - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/nestedString", - readablePredicate: "nestedString", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/nestedNum", - readablePredicate: "nestedNum", - }, - { - type: "number", - maxCardinality: -1, - minCardinality: 0, - predicateUri: "http://example.org/nestedArray", - readablePredicate: "nestedArray", - }, - ], - }, - "http://example.org/TestObject||http://example.org/anotherObject": { - iri: "http://example.org/TestObject||http://example.org/anotherObject", - predicates: [ - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/prop1", - readablePredicate: "prop1", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/prop2", - readablePredicate: "prop2", - }, - ], - }, + }, + "http://example.org/TestObject||http://example.org/objectValue": { + iri: "http://example.org/TestObject||http://example.org/objectValue", + predicates: [ + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/nestedString", + readablePredicate: "nestedString", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/nestedNum", + readablePredicate: "nestedNum", + }, + { + type: "number", + maxCardinality: -1, + minCardinality: 0, + iri: "http://example.org/nestedArray", + readablePredicate: "nestedArray", + }, + ], + }, + "http://example.org/TestObject||http://example.org/anotherObject": { + iri: "http://example.org/TestObject||http://example.org/anotherObject", + predicates: [ + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/prop1", + readablePredicate: "prop1", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/prop2", + readablePredicate: "prop2", + }, + ], + }, }; diff --git a/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/catShape.schema.ts b/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/catShape.schema.ts index a3fb7fe..f726f01 100644 --- a/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/catShape.schema.ts +++ b/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/catShape.schema.ts @@ -6,72 +6,73 @@ import type { Schema } from "@nextgraph-monorepo/ng-shex-orm"; * ============================================================================= */ export const catShapeSchema: Schema = { - "http://example.org/Cat": { - iri: "http://example.org/Cat", - predicates: [ - { - type: "literal", - literalValue: ["http://example.org/Cat"], - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", - readablePredicate: "type", - }, - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/name", - readablePredicate: "name", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/age", - readablePredicate: "age", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/numberOfHomes", - readablePredicate: "numberOfHomes", - }, - { - type: "nested", - nestedShape: "http://example.org/Cat||http://example.org/address", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/address", - readablePredicate: "address", - }, - ], - }, - "http://example.org/Cat||http://example.org/address": { - iri: "http://example.org/Cat||http://example.org/address", - predicates: [ - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/street", - readablePredicate: "street", - }, - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/houseNumber", - readablePredicate: "houseNumber", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/floor", - readablePredicate: "floor", - }, - ], - }, + "http://example.org/Cat": { + iri: "http://example.org/Cat", + predicates: [ + { + type: "literal", + literalValue: ["http://example.org/Cat"], + maxCardinality: 1, + minCardinality: 1, + iri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + readablePredicate: "type", + }, + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/name", + readablePredicate: "name", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/age", + readablePredicate: "age", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/numberOfHomes", + readablePredicate: "numberOfHomes", + }, + { + type: "nested", + nestedShape: + "http://example.org/Cat||http://example.org/address", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/address", + readablePredicate: "address", + }, + ], + }, + "http://example.org/Cat||http://example.org/address": { + iri: "http://example.org/Cat||http://example.org/address", + predicates: [ + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/street", + readablePredicate: "street", + }, + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/houseNumber", + readablePredicate: "houseNumber", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/floor", + readablePredicate: "floor", + }, + ], + }, }; diff --git a/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/personShape.schema.ts b/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/personShape.schema.ts index c987324..10c9a97 100644 --- a/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/personShape.schema.ts +++ b/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/personShape.schema.ts @@ -6,65 +6,66 @@ import type { Schema } from "@nextgraph-monorepo/ng-shex-orm"; * ============================================================================= */ export const personShapeSchema: Schema = { - "http://example.org/Person": { - iri: "http://example.org/Person", - predicates: [ - { - type: "literal", - literalValue: ["http://example.org/Person"], - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", - readablePredicate: "type", - }, - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/name", - readablePredicate: "name", - }, - { - type: "nested", - nestedShape: "http://example.org/Person||http://example.org/address", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/address", - readablePredicate: "address", - }, - { - type: "boolean", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/hasChildren", - readablePredicate: "hasChildren", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/numberOfHouses", - readablePredicate: "numberOfHouses", - }, - ], - }, - "http://example.org/Person||http://example.org/address": { - iri: "http://example.org/Person||http://example.org/address", - predicates: [ - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/street", - readablePredicate: "street", - }, - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/houseNumber", - readablePredicate: "houseNumber", - }, - ], - }, + "http://example.org/Person": { + iri: "http://example.org/Person", + predicates: [ + { + type: "literal", + literalValue: ["http://example.org/Person"], + maxCardinality: 1, + minCardinality: 1, + iri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + readablePredicate: "type", + }, + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/name", + readablePredicate: "name", + }, + { + type: "nested", + nestedShape: + "http://example.org/Person||http://example.org/address", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/address", + readablePredicate: "address", + }, + { + type: "boolean", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/hasChildren", + readablePredicate: "hasChildren", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/numberOfHouses", + readablePredicate: "numberOfHouses", + }, + ], + }, + "http://example.org/Person||http://example.org/address": { + iri: "http://example.org/Person||http://example.org/address", + predicates: [ + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/street", + readablePredicate: "street", + }, + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/houseNumber", + readablePredicate: "houseNumber", + }, + ], + }, }; diff --git a/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/testShape.schema.ts b/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/testShape.schema.ts index 7479b5d..dcc8cb2 100644 --- a/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/testShape.schema.ts +++ b/sdk/ng-sdk-js/examples/multi-framework-signals/src/shapes/ldo/testShape.schema.ts @@ -6,132 +6,132 @@ import type { Schema } from "@nextgraph-monorepo/ng-shex-orm"; * ============================================================================= */ export const testShapeSchema: Schema = { - "http://example.org/TestObject": { - iri: "http://example.org/TestObject", - predicates: [ - { - type: "literal", - literalValue: ["http://example.org/TestObject"], - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", - readablePredicate: "type", - extra: true, - }, - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/stringValue", - readablePredicate: "stringValue", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/numValue", - readablePredicate: "numValue", - }, - { - type: "boolean", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/boolValue", - readablePredicate: "boolValue", - }, - { - type: "number", - maxCardinality: -1, - minCardinality: 0, - predicateUri: "http://example.org/arrayValue", - readablePredicate: "arrayValue", - }, - { - type: "nested", - nestedShape: - "http://example.org/TestObject||http://example.org/objectValue", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/objectValue", - readablePredicate: "objectValue", - }, - { - type: "nested", - nestedShape: - "http://example.org/TestObject||http://example.org/anotherObject", - maxCardinality: -1, - minCardinality: 0, - predicateUri: "http://example.org/anotherObject", - readablePredicate: "anotherObject", - }, - { - type: "eitherOf", - eitherOf: [ - { - type: "string", - }, - { - type: "number", - }, + "http://example.org/TestObject": { + iri: "http://example.org/TestObject", + predicates: [ + { + type: "literal", + literalValue: ["http://example.org/TestObject"], + maxCardinality: 1, + minCardinality: 1, + iri: "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", + readablePredicate: "type", + extra: true, + }, + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/stringValue", + readablePredicate: "stringValue", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/numValue", + readablePredicate: "numValue", + }, + { + type: "boolean", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/boolValue", + readablePredicate: "boolValue", + }, + { + type: "number", + maxCardinality: -1, + minCardinality: 0, + iri: "http://example.org/arrayValue", + readablePredicate: "arrayValue", + }, + { + type: "nested", + nestedShape: + "http://example.org/TestObject||http://example.org/objectValue", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/objectValue", + readablePredicate: "objectValue", + }, + { + type: "nested", + nestedShape: + "http://example.org/TestObject||http://example.org/anotherObject", + maxCardinality: -1, + minCardinality: 0, + iri: "http://example.org/anotherObject", + readablePredicate: "anotherObject", + }, + { + type: "eitherOf", + eitherOf: [ + { + type: "string", + }, + { + type: "number", + }, + ], + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/numOrStr", + readablePredicate: "numOrStr", + }, + { + type: "literal", + literalValue: ["lit1", "lit2"], + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/lit1Or2", + readablePredicate: "lit1Or2", + }, ], - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/numOrStr", - readablePredicate: "numOrStr", - }, - { - type: "literal", - literalValue: ["lit1", "lit2"], - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/lit1Or2", - readablePredicate: "lit1Or2", - }, - ], - }, - "http://example.org/TestObject||http://example.org/objectValue": { - iri: "http://example.org/TestObject||http://example.org/objectValue", - predicates: [ - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/nestedString", - readablePredicate: "nestedString", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/nestedNum", - readablePredicate: "nestedNum", - }, - { - type: "number", - maxCardinality: -1, - minCardinality: 0, - predicateUri: "http://example.org/nestedArray", - readablePredicate: "nestedArray", - }, - ], - }, - "http://example.org/TestObject||http://example.org/anotherObject": { - iri: "http://example.org/TestObject||http://example.org/anotherObject", - predicates: [ - { - type: "string", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/prop1", - readablePredicate: "prop1", - }, - { - type: "number", - maxCardinality: 1, - minCardinality: 1, - predicateUri: "http://example.org/prop2", - readablePredicate: "prop2", - }, - ], - }, + }, + "http://example.org/TestObject||http://example.org/objectValue": { + iri: "http://example.org/TestObject||http://example.org/objectValue", + predicates: [ + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/nestedString", + readablePredicate: "nestedString", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/nestedNum", + readablePredicate: "nestedNum", + }, + { + type: "number", + maxCardinality: -1, + minCardinality: 0, + iri: "http://example.org/nestedArray", + readablePredicate: "nestedArray", + }, + ], + }, + "http://example.org/TestObject||http://example.org/anotherObject": { + iri: "http://example.org/TestObject||http://example.org/anotherObject", + predicates: [ + { + type: "string", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/prop1", + readablePredicate: "prop1", + }, + { + type: "number", + maxCardinality: 1, + minCardinality: 1, + iri: "http://example.org/prop2", + readablePredicate: "prop2", + }, + ], + }, }; diff --git a/sdk/ng-sdk-js/ng-shex-orm/src/schema-converter/converter.ts b/sdk/ng-sdk-js/ng-shex-orm/src/schema-converter/converter.ts index 8bfaaec3..0a7f683 100644 --- a/sdk/ng-sdk-js/ng-shex-orm/src/schema-converter/converter.ts +++ b/sdk/ng-sdk-js/ng-shex-orm/src/schema-converter/converter.ts @@ -84,7 +84,7 @@ function flattenSchema(shapes: Shape[]): ShapeSchema { ); for (const pred of nestedSchemaPredicates) { - const newId = shape.iri + "||" + pred.predicateUri; + const newId = shape.iri + "||" + pred.iri; // Recurse const flattened = flattenSchema([ diff --git a/sdk/ng-sdk-js/ng-shex-orm/src/schema-converter/transformers/ShexJSchemaTransformer.ts b/sdk/ng-sdk-js/ng-shex-orm/src/schema-converter/transformers/ShexJSchemaTransformer.ts index ffecf7d..a90539e 100644 --- a/sdk/ng-sdk-js/ng-shex-orm/src/schema-converter/transformers/ShexJSchemaTransformer.ts +++ b/sdk/ng-sdk-js/ng-shex-orm/src/schema-converter/transformers/ShexJSchemaTransformer.ts @@ -99,7 +99,7 @@ export const ShexJSchemaTransformerCompact = ShexJTraverser.createTransformer< for (const extra of _shape.extra || []) { const extraPredicate = compactShape.predicates.find( - (p) => p.predicateUri === extra + (p) => p.iri === extra ); if (extraPredicate) extraPredicate.extra = true; } diff --git a/sdk/ng-sdk-js/ng-shex-orm/src/types.ts b/sdk/ng-sdk-js/ng-shex-orm/src/types.ts index a32197b..d73591f 100644 --- a/sdk/ng-sdk-js/ng-shex-orm/src/types.ts +++ b/sdk/ng-sdk-js/ng-shex-orm/src/types.ts @@ -25,7 +25,7 @@ export interface Predicate { /** Type of property. */ type: DataType["type"] | "nested" | "eitherOf"; /** The RDF predicate URI. */ - predicateUri: string; + iri: string; /** The alias of the `predicateUri` when serialized to a JSON object. */ readablePredicate: string; /** The required literal value(s), if type is `literal`. Others are allowed, if `extra` is true. */