@ifc-lite/semantic 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +373 -0
- package/README.md +22 -0
- package/dist/bsdd.d.ts +40 -0
- package/dist/bsdd.d.ts.map +1 -0
- package/dist/bsdd.js +53 -0
- package/dist/bsdd.js.map +1 -0
- package/dist/dictionary.d.ts +26 -0
- package/dist/dictionary.d.ts.map +1 -0
- package/dist/dictionary.js +36 -0
- package/dist/dictionary.js.map +1 -0
- package/dist/graph-import.d.ts +11 -0
- package/dist/graph-import.d.ts.map +1 -0
- package/dist/graph-import.js +79 -0
- package/dist/graph-import.js.map +1 -0
- package/dist/graph.d.ts +4 -0
- package/dist/graph.d.ts.map +1 -0
- package/dist/graph.js +29 -0
- package/dist/graph.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/profile-artifacts.d.ts +104 -0
- package/dist/profile-artifacts.d.ts.map +1 -0
- package/dist/profile-artifacts.js +123 -0
- package/dist/profile-artifacts.js.map +1 -0
- package/dist/profile-index.d.ts +15 -0
- package/dist/profile-index.d.ts.map +1 -0
- package/dist/profile-index.js +11 -0
- package/dist/profile-index.js.map +1 -0
- package/dist/profile-types.d.ts +21 -0
- package/dist/profile-types.d.ts.map +1 -0
- package/dist/profile-types.js +5 -0
- package/dist/profile-types.js.map +1 -0
- package/dist/profiles.d.ts +38 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +174 -0
- package/dist/profiles.js.map +1 -0
- package/dist/projection.d.ts +8 -0
- package/dist/projection.d.ts.map +1 -0
- package/dist/projection.js +70 -0
- package/dist/projection.js.map +1 -0
- package/dist/provider.d.ts +35 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +98 -0
- package/dist/provider.js.map +1 -0
- package/dist/query.d.ts +7 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +57 -0
- package/dist/query.js.map +1 -0
- package/dist/resolver.d.ts +56 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js +89 -0
- package/dist/resolver.js.map +1 -0
- package/dist/results.d.ts +14 -0
- package/dist/results.d.ts.map +1 -0
- package/dist/results.js +73 -0
- package/dist/results.js.map +1 -0
- package/dist/server-listener.d.ts +5 -0
- package/dist/server-listener.d.ts.map +1 -0
- package/dist/server-listener.js +46 -0
- package/dist/server-listener.js.map +1 -0
- package/dist/server.d.ts +21 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +141 -0
- package/dist/server.js.map +1 -0
- package/dist/shacl-parameters.d.ts +6 -0
- package/dist/shacl-parameters.d.ts.map +1 -0
- package/dist/shacl-parameters.js +65 -0
- package/dist/shacl-parameters.js.map +1 -0
- package/dist/shacl-targets.d.ts +12 -0
- package/dist/shacl-targets.d.ts.map +1 -0
- package/dist/shacl-targets.js +114 -0
- package/dist/shacl-targets.js.map +1 -0
- package/dist/types.d.ts +40 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/dist/validation-report.d.ts +35 -0
- package/dist/validation-report.d.ts.map +1 -0
- package/dist/validation-report.js +20 -0
- package/dist/validation-report.js.map +1 -0
- package/dist/validation.d.ts +26 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +201 -0
- package/dist/validation.js.map +1 -0
- package/dist/workspace.d.ts +32 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +140 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import jsonld from 'jsonld';
|
|
5
|
+
import { Parser, Writer } from 'n3';
|
|
6
|
+
import { LIMITS, isObject } from './types.js';
|
|
7
|
+
/** Reject remote and scoped remote contexts before conversion; imports never run code or fetch URLs. */
|
|
8
|
+
function assertInlineContexts(value) {
|
|
9
|
+
const pending = [value];
|
|
10
|
+
let visits = 0;
|
|
11
|
+
while (pending.length) {
|
|
12
|
+
if (++visits > 100000)
|
|
13
|
+
throw new Error('JSON-LD exceeds the 100,000 node work limit');
|
|
14
|
+
const node = pending.pop();
|
|
15
|
+
if (Array.isArray(node)) {
|
|
16
|
+
for (const value of node)
|
|
17
|
+
pending.push(value);
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (!isObject(node))
|
|
21
|
+
continue;
|
|
22
|
+
if ('@context' in node) {
|
|
23
|
+
const contexts = Array.isArray(node['@context']) ? node['@context'] : [node['@context']];
|
|
24
|
+
if (contexts.some(context => context !== null && !isObject(context)))
|
|
25
|
+
throw new Error('Only inline JSON-LD contexts are supported; remote contexts are disabled');
|
|
26
|
+
}
|
|
27
|
+
if ('@import' in node)
|
|
28
|
+
throw new Error('JSON-LD context imports are disabled');
|
|
29
|
+
for (const value of Object.values(node))
|
|
30
|
+
pending.push(value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export async function parseGraph(input, options) {
|
|
34
|
+
const maxBytes = options.maxBytes ?? LIMITS.bytes;
|
|
35
|
+
const maxQuads = options.maxQuads ?? LIMITS.quads;
|
|
36
|
+
if (!Number.isInteger(maxBytes) || maxBytes < 1 || maxBytes > LIMITS.bytes || !Number.isInteger(maxQuads) || maxQuads < 1 || maxQuads > LIMITS.quads)
|
|
37
|
+
throw new Error('Invalid graph import limits');
|
|
38
|
+
const serialized = typeof input === 'string' ? input : JSON.stringify(input);
|
|
39
|
+
if (typeof serialized !== 'string' || new TextEncoder().encode(serialized).byteLength > maxBytes)
|
|
40
|
+
throw new Error('Graph exceeds the byte limit');
|
|
41
|
+
let rdf;
|
|
42
|
+
if (options.format === 'application/ld+json') {
|
|
43
|
+
let document = input;
|
|
44
|
+
if (typeof input === 'string') {
|
|
45
|
+
try {
|
|
46
|
+
document = JSON.parse(input);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
throw new Error('Invalid JSON-LD JSON syntax; provide a valid JSON object or array');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (!isObject(document) && !Array.isArray(document))
|
|
53
|
+
throw new Error('Expected a JSON-LD document');
|
|
54
|
+
assertInlineContexts(document);
|
|
55
|
+
const converted = await jsonld.toRDF(document, { format: 'application/n-quads',
|
|
56
|
+
documentLoader: async () => { throw new Error('Remote JSON-LD documents and contexts are disabled'); } });
|
|
57
|
+
if (typeof converted !== 'string')
|
|
58
|
+
throw new Error('Expected N-Quads from JSON-LD conversion');
|
|
59
|
+
rdf = converted;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
if (typeof input !== 'string')
|
|
63
|
+
throw new Error('Turtle and N-Quads input must be text');
|
|
64
|
+
rdf = input;
|
|
65
|
+
}
|
|
66
|
+
if (new TextEncoder().encode(rdf).byteLength > maxBytes)
|
|
67
|
+
throw new Error('Converted graph exceeds the byte limit');
|
|
68
|
+
const quads = new Parser({ format: options.format === 'text/turtle' ? 'text/turtle' : 'N-Quads' }).parse(rdf);
|
|
69
|
+
if (quads.length > maxQuads)
|
|
70
|
+
throw new Error('Graph exceeds the quad limit');
|
|
71
|
+
// N-Quads retains graph names, blank nodes, repeated predicates and literal metadata.
|
|
72
|
+
const writer = new Writer({ format: 'N-Quads' });
|
|
73
|
+
writer.addQuads(quads);
|
|
74
|
+
const graph = await new Promise((resolve, reject) => writer.end((error, value) => error ? reject(error) : resolve(value)));
|
|
75
|
+
if (new TextEncoder().encode(graph).byteLength > maxBytes)
|
|
76
|
+
throw new Error('Serialized graph exceeds the byte limit');
|
|
77
|
+
return { graph, format: 'application/n-quads', quadCount: quads.length };
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=graph-import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-import.js","sourceRoot":"","sources":["../src/graph-import.ts"],"names":[],"mappings":"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"}
|
package/dist/graph.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type SemanticRecord } from './types.js';
|
|
2
|
+
/** Keep original dataset text for named graph identity; records are an explicit subject projection. */
|
|
3
|
+
export declare function recordsFromGraph(graph: string, format?: 'text/turtle' | 'application/n-quads'): SemanticRecord[];
|
|
4
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAKA,OAAO,EAA2B,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1E,uGAAuG;AACvG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,aAAa,GAAG,qBAAqC,GAAG,cAAc,EAAE,CAc/H"}
|
package/dist/graph.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { Parser } from 'n3';
|
|
5
|
+
import { LIMITS } from './types.js';
|
|
6
|
+
import { createRecordAccumulator } from './results.js';
|
|
7
|
+
/** Keep original dataset text for named graph identity; records are an explicit subject projection. */
|
|
8
|
+
export function recordsFromGraph(graph, format = 'text/turtle') {
|
|
9
|
+
if (new TextEncoder().encode(graph).length > LIMITS.bytes)
|
|
10
|
+
throw new Error('RDF graph exceeds byte limit');
|
|
11
|
+
const quads = new Parser({ format }).parse(graph);
|
|
12
|
+
if (quads.length > LIMITS.quads)
|
|
13
|
+
throw new Error('RDF graph exceeds quad limit');
|
|
14
|
+
const term = (value) => {
|
|
15
|
+
if (value.termType === 'NamedNode')
|
|
16
|
+
return { type: 'uri', value: value.value };
|
|
17
|
+
if (value.termType === 'BlankNode')
|
|
18
|
+
return { type: 'bnode', value: value.value };
|
|
19
|
+
if (value.termType === 'Literal')
|
|
20
|
+
return { type: 'literal', value: value.value,
|
|
21
|
+
...(value.language ? { 'xml:lang': value.language } : { datatype: value.datatype.value }) };
|
|
22
|
+
throw new Error('RDF-star quoted triples are outside the supported RDF 1.1 term model');
|
|
23
|
+
};
|
|
24
|
+
const accumulator = createRecordAccumulator();
|
|
25
|
+
for (const quad of quads)
|
|
26
|
+
accumulator.append(term(quad.subject), term(quad.predicate), term(quad.object));
|
|
27
|
+
return accumulator.records();
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAwC,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,uGAAuG;AACvG,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,SAAgD,aAAa;IAC3G,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC3G,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,CAAC,KAAuC,EAAc,EAAE;QACnE,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/E,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACjF,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;gBAC5E,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,uBAAuB,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1G,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { GUID_PATTERN, LIMITS, assertIri } from './types.js';
|
|
2
|
+
export type { RdfBinding, SparqlResults, SemanticRecord, SemanticDataset } from './types.js';
|
|
3
|
+
export { parseResults, recordsFromResults } from './results.js';
|
|
4
|
+
export { assertReadOnlyQuery, relatedResourceQuery, relatedIdentityQuery } from './query.js';
|
|
5
|
+
export { createSemanticProvider, request } from './provider.js';
|
|
6
|
+
export type { SemanticProvider, ProviderReadOptions, ProviderResult } from './provider.js';
|
|
7
|
+
export { ResolverRegistry, IFC_GLOBAL_ID_STRATEGY, resolveResource, createResourceLinkStrategy, createProfileMappingStrategy } from './resolver.js';
|
|
8
|
+
export type { EntityAddress, LiveEntity, Resolution, IdentityRecord, ResolverContext, IdentityStrategy, ResourceIdentityLink } from './resolver.js';
|
|
9
|
+
export { exportWorkspace, importWorkspace, sanitizeSource } from './workspace.js';
|
|
10
|
+
export type { SemanticWorkspace, WorkspaceQuery, RevisionLink, ImportedWorkspace } from './workspace.js';
|
|
11
|
+
export * from './profile-index.js';
|
|
12
|
+
export { resourcesFromResults, DEFAULT_MAPPING } from './projection.js';
|
|
13
|
+
export type { BindingMapping } from './projection.js';
|
|
14
|
+
export { recordsFromGraph } from './graph.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AACpJ,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACpJ,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClF,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzG,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACxE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
export { GUID_PATTERN, LIMITS, assertIri } from './types.js';
|
|
5
|
+
export { parseResults, recordsFromResults } from './results.js';
|
|
6
|
+
export { assertReadOnlyQuery, relatedResourceQuery, relatedIdentityQuery } from './query.js';
|
|
7
|
+
export { createSemanticProvider, request } from './provider.js';
|
|
8
|
+
export { ResolverRegistry, IFC_GLOBAL_ID_STRATEGY, resolveResource, createResourceLinkStrategy, createProfileMappingStrategy } from './resolver.js';
|
|
9
|
+
export { exportWorkspace, importWorkspace, sanitizeSource } from './workspace.js';
|
|
10
|
+
export * from './profile-index.js';
|
|
11
|
+
export { resourcesFromResults, DEFAULT_MAPPING } from './projection.js';
|
|
12
|
+
export { recordsFromGraph } from './graph.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAEpJ,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAElF,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { ContextDefinition } from 'jsonld';
|
|
2
|
+
import { type ProfileDefinition } from './profiles.js';
|
|
3
|
+
export declare function resourceSchema(type: string, profile?: ProfileDefinition, structural?: boolean): {
|
|
4
|
+
type: string;
|
|
5
|
+
additionalProperties: boolean;
|
|
6
|
+
required: string[];
|
|
7
|
+
properties: {
|
|
8
|
+
id: {
|
|
9
|
+
type: string;
|
|
10
|
+
format: string;
|
|
11
|
+
};
|
|
12
|
+
type: {
|
|
13
|
+
const: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export declare function exchangeSchema(profile?: ProfileDefinition, structural?: boolean): {
|
|
18
|
+
$schema: string;
|
|
19
|
+
$id: string;
|
|
20
|
+
type: string;
|
|
21
|
+
additionalProperties: boolean;
|
|
22
|
+
required: string[];
|
|
23
|
+
properties: {
|
|
24
|
+
profile: {
|
|
25
|
+
const: string;
|
|
26
|
+
};
|
|
27
|
+
source: {
|
|
28
|
+
type: string;
|
|
29
|
+
format: string;
|
|
30
|
+
};
|
|
31
|
+
completeness: {
|
|
32
|
+
enum: string[];
|
|
33
|
+
};
|
|
34
|
+
resources: {
|
|
35
|
+
type: string;
|
|
36
|
+
maxItems: number;
|
|
37
|
+
items: {
|
|
38
|
+
oneOf: {
|
|
39
|
+
type: string;
|
|
40
|
+
additionalProperties: boolean;
|
|
41
|
+
required: string[];
|
|
42
|
+
properties: {
|
|
43
|
+
id: {
|
|
44
|
+
type: string;
|
|
45
|
+
format: string;
|
|
46
|
+
};
|
|
47
|
+
type: {
|
|
48
|
+
const: string;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
}[];
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export declare function profileContext(profile?: ProfileDefinition): ContextDefinition;
|
|
57
|
+
export declare function shapesTurtle(profile?: ProfileDefinition): Promise<string>;
|
|
58
|
+
export declare function vocabularyTurtle(profile?: ProfileDefinition): Promise<string>;
|
|
59
|
+
export declare function generateArtifacts(profile?: ProfileDefinition): Promise<{
|
|
60
|
+
schema: {
|
|
61
|
+
$schema: string;
|
|
62
|
+
$id: string;
|
|
63
|
+
type: string;
|
|
64
|
+
additionalProperties: boolean;
|
|
65
|
+
required: string[];
|
|
66
|
+
properties: {
|
|
67
|
+
profile: {
|
|
68
|
+
const: string;
|
|
69
|
+
};
|
|
70
|
+
source: {
|
|
71
|
+
type: string;
|
|
72
|
+
format: string;
|
|
73
|
+
};
|
|
74
|
+
completeness: {
|
|
75
|
+
enum: string[];
|
|
76
|
+
};
|
|
77
|
+
resources: {
|
|
78
|
+
type: string;
|
|
79
|
+
maxItems: number;
|
|
80
|
+
items: {
|
|
81
|
+
oneOf: {
|
|
82
|
+
type: string;
|
|
83
|
+
additionalProperties: boolean;
|
|
84
|
+
required: string[];
|
|
85
|
+
properties: {
|
|
86
|
+
id: {
|
|
87
|
+
type: string;
|
|
88
|
+
format: string;
|
|
89
|
+
};
|
|
90
|
+
type: {
|
|
91
|
+
const: string;
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
}[];
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
context: ContextDefinition;
|
|
100
|
+
shapes: string;
|
|
101
|
+
vocabulary: string;
|
|
102
|
+
dictionary: import("./dictionary.js").SemanticDictionary;
|
|
103
|
+
}>;
|
|
104
|
+
//# sourceMappingURL=profile-artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-artifacts.d.ts","sourceRoot":"","sources":["../src/profile-artifacts.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAkC,KAAK,iBAAiB,EAAqB,MAAM,eAAe,CAAC;AAyB1G,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,oBAAkB,EAAE,UAAU,UAAQ;;;;;;;;;;;;;EAazF;AACD,wBAAgB,cAAc,CAAC,OAAO,oBAAkB,EAAE,UAAU,UAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK3E;AACD,wBAAgB,cAAc,CAAC,OAAO,oBAAkB,GAAG,iBAAiB,CAO3E;AAED,wBAAsB,YAAY,CAAC,OAAO,oBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B7E;AACD,wBAAsB,gBAAgB,CAAC,OAAO,oBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAajF;AACD,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,iBAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGnF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { DataFactory, Writer } from 'n3';
|
|
5
|
+
import { assertProfile, DEFAULT_PROFILE } from './profiles.js';
|
|
6
|
+
import { profileToDictionary } from './dictionary.js';
|
|
7
|
+
import { LIMITS } from './types.js';
|
|
8
|
+
const { namedNode: n, literal: l, blankNode: b } = DataFactory;
|
|
9
|
+
const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
|
|
10
|
+
const SH = 'http://www.w3.org/ns/shacl#';
|
|
11
|
+
const XSD = 'http://www.w3.org/2001/XMLSchema#';
|
|
12
|
+
const RDFS = 'http://www.w3.org/2000/01/rdf-schema#';
|
|
13
|
+
const datatype = (field) => field.kind === 'language' ? RDF + 'langString' : XSD + (field.kind === 'number' ? 'double' : field.kind === 'integer' ? 'integer' : field.kind === 'boolean' ? 'boolean' : 'string');
|
|
14
|
+
// JSON-LD 1.1 serializes double values in canonical scientific notation. sh:in
|
|
15
|
+
// uses RDF term equality, so enums must use the identical lexical representation.
|
|
16
|
+
const rdfValue = (field, value) => field.kind === 'iri' ? n(String(value))
|
|
17
|
+
: l(field.kind === 'number' && typeof value === 'number' ? value.toExponential(15).replace(/(\d)0*e\+?/, '$1E') : String(value), n(datatype(field)));
|
|
18
|
+
const valueBounds = (field) => ({
|
|
19
|
+
minimum: field.minimum ?? (field.kind === 'integer' ? Number.MIN_SAFE_INTEGER : undefined),
|
|
20
|
+
maximum: field.maximum ?? (field.kind === 'integer' ? Number.MAX_SAFE_INTEGER : undefined),
|
|
21
|
+
});
|
|
22
|
+
function scalarSchema(field) {
|
|
23
|
+
const bounds = valueBounds(field);
|
|
24
|
+
return field.kind === 'language' ? { type: 'object', minProperties: 1, additionalProperties: false,
|
|
25
|
+
patternProperties: { '^[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*$': { type: 'string', maxLength: LIMITS.literalCharacters } } }
|
|
26
|
+
: { type: field.kind === 'iri' ? 'string' : field.kind, ...(['iri', 'string'].includes(field.kind) ? { maxLength: LIMITS.literalCharacters } : {}), ...(field.kind === 'iri' ? { format: 'uri' } : {}),
|
|
27
|
+
...(field.enum ? { enum: field.enum } : {}), ...(field.pattern ? { pattern: field.pattern } : {}),
|
|
28
|
+
...(bounds.minimum !== undefined ? { minimum: bounds.minimum } : {}), ...(bounds.maximum !== undefined ? { maximum: bounds.maximum } : {}) };
|
|
29
|
+
}
|
|
30
|
+
export function resourceSchema(type, profile = DEFAULT_PROFILE, structural = false) {
|
|
31
|
+
assertProfile(profile);
|
|
32
|
+
const definition = profile.types[type];
|
|
33
|
+
if (!Object.hasOwn(profile.types, type))
|
|
34
|
+
throw new Error(`Unknown resource type: ${type}`);
|
|
35
|
+
return { type: 'object', additionalProperties: false, required: [...new Set(['id', 'type', 'label',
|
|
36
|
+
...(!structural ? Object.entries(definition.fields).filter(([, count]) => (count.minCount ?? 0) > 0).map(([key]) => key) : [])])],
|
|
37
|
+
properties: { id: { type: 'string', format: 'uri' }, type: { const: type },
|
|
38
|
+
...Object.fromEntries(Object.entries(definition.fields).map(([key, count]) => {
|
|
39
|
+
const original = profile.fields[key];
|
|
40
|
+
const scalar = scalarSchema(structural ? { iri: original.iri, kind: original.kind } : original);
|
|
41
|
+
return [key, (count.maxCount ?? 1) > 1 ? { type: 'array', uniqueItems: true, items: scalar, maxItems: count.maxCount,
|
|
42
|
+
...(!structural ? { minItems: count.minCount ?? 0 } : {}) } : scalar];
|
|
43
|
+
})) } };
|
|
44
|
+
}
|
|
45
|
+
export function exchangeSchema(profile = DEFAULT_PROFILE, structural = false) {
|
|
46
|
+
assertProfile(profile);
|
|
47
|
+
return { $schema: 'http://json-schema.org/draft-07/schema#', $id: profile.id, type: 'object', additionalProperties: false, required: ['profile', 'source', 'completeness', 'resources'],
|
|
48
|
+
properties: { profile: { const: profile.id }, source: { type: 'string', format: 'uri' }, completeness: { enum: ['complete', 'partial'] },
|
|
49
|
+
resources: { type: 'array', maxItems: 5000, items: { oneOf: Object.keys(profile.types).map(type => resourceSchema(type, profile, structural)) } } } };
|
|
50
|
+
}
|
|
51
|
+
export function profileContext(profile = DEFAULT_PROFILE) {
|
|
52
|
+
assertProfile(profile);
|
|
53
|
+
return { id: '@id', type: '@type', ...Object.fromEntries(Object.entries(profile.types).map(([key, value]) => [key, value.iri])),
|
|
54
|
+
...Object.fromEntries(Object.entries(profile.fields).map(([key, field]) => [key,
|
|
55
|
+
field.kind === 'iri' ? { '@id': field.iri, '@type': '@id' }
|
|
56
|
+
: field.kind === 'language' ? { '@id': field.iri, '@container': '@language' }
|
|
57
|
+
: field.kind === 'string' ? field.iri : { '@id': field.iri, '@type': datatype(field) }])) };
|
|
58
|
+
}
|
|
59
|
+
const finish = (writer) => new Promise((resolve, reject) => writer.end((error, value) => error ? reject(error) : resolve(value)));
|
|
60
|
+
export async function shapesTurtle(profile = DEFAULT_PROFILE) {
|
|
61
|
+
assertProfile(profile);
|
|
62
|
+
const writer = new Writer({ prefixes: { sh: SH, rdf: RDF, xsd: XSD } });
|
|
63
|
+
const add = (subject, predicate, object) => writer.addQuad(subject, n(predicate), object);
|
|
64
|
+
const list = (values) => {
|
|
65
|
+
const cells = values.map(() => b());
|
|
66
|
+
cells.forEach((cell, i) => { add(cell, RDF + 'first', values[i]); add(cell, RDF + 'rest', cells[i + 1] ?? n(RDF + 'nil')); });
|
|
67
|
+
return cells[0] ?? n(RDF + 'nil');
|
|
68
|
+
};
|
|
69
|
+
for (const [key, definition] of Object.entries(profile.types)) {
|
|
70
|
+
const shape = n(profile.vocabulary + key + 'Shape');
|
|
71
|
+
add(shape, RDF + 'type', n(SH + 'NodeShape'));
|
|
72
|
+
add(shape, SH + 'targetClass', n(definition.iri));
|
|
73
|
+
add(shape, SH + 'closed', l('true', n(XSD + 'boolean')));
|
|
74
|
+
add(shape, SH + 'ignoredProperties', list([n(RDF + 'type')]));
|
|
75
|
+
for (const [name, count] of Object.entries(definition.fields)) {
|
|
76
|
+
const field = profile.fields[name];
|
|
77
|
+
const property = b();
|
|
78
|
+
const bounds = valueBounds(field);
|
|
79
|
+
add(shape, SH + 'property', property);
|
|
80
|
+
add(property, SH + 'path', n(field.iri));
|
|
81
|
+
add(property, SH + 'minCount', l(count.minCount ?? 0));
|
|
82
|
+
if (field.kind !== 'language')
|
|
83
|
+
add(property, SH + 'maxCount', l(count.maxCount ?? 1));
|
|
84
|
+
else
|
|
85
|
+
add(property, SH + 'uniqueLang', l('true', n(XSD + 'boolean')));
|
|
86
|
+
add(property, field.kind === 'iri' ? SH + 'nodeKind' : SH + 'datatype', n(field.kind === 'iri' ? SH + 'IRI' : datatype(field)));
|
|
87
|
+
if (['string', 'iri', 'language'].includes(field.kind))
|
|
88
|
+
add(property, SH + 'maxLength', l(LIMITS.literalCharacters));
|
|
89
|
+
if (field.targetType)
|
|
90
|
+
add(property, SH + 'class', n(profile.types[field.targetType].iri));
|
|
91
|
+
if (field.pattern)
|
|
92
|
+
add(property, SH + 'pattern', l(field.pattern));
|
|
93
|
+
if (bounds.minimum !== undefined)
|
|
94
|
+
add(property, SH + 'minInclusive', l(String(bounds.minimum), n(datatype(field))));
|
|
95
|
+
if (bounds.maximum !== undefined)
|
|
96
|
+
add(property, SH + 'maxInclusive', l(String(bounds.maximum), n(datatype(field))));
|
|
97
|
+
if (field.enum)
|
|
98
|
+
add(property, SH + 'in', list(field.enum.map(value => rdfValue(field, value))));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return finish(writer);
|
|
102
|
+
}
|
|
103
|
+
export async function vocabularyTurtle(profile = DEFAULT_PROFILE) {
|
|
104
|
+
assertProfile(profile);
|
|
105
|
+
const writer = new Writer({ prefixes: { rdf: RDF, rdfs: RDFS, xsd: XSD } });
|
|
106
|
+
for (const [name, type] of Object.entries(profile.types)) {
|
|
107
|
+
writer.addQuad(n(type.iri), n(RDF + 'type'), n(RDFS + 'Class'));
|
|
108
|
+
for (const [language, label] of Object.entries(type.labels ?? { en: name }))
|
|
109
|
+
writer.addQuad(n(type.iri), n(RDFS + 'label'), l(label, language));
|
|
110
|
+
}
|
|
111
|
+
for (const [name, field] of Object.entries(profile.fields)) {
|
|
112
|
+
writer.addQuad(n(field.iri), n(RDF + 'type'), n(RDF + 'Property'));
|
|
113
|
+
for (const [language, label] of Object.entries(field.labels ?? { en: name }))
|
|
114
|
+
writer.addQuad(n(field.iri), n(RDFS + 'label'), l(label, language));
|
|
115
|
+
writer.addQuad(n(field.iri), n(RDFS + 'range'), n(field.kind === 'iri' ? RDFS + 'Resource' : datatype(field)));
|
|
116
|
+
}
|
|
117
|
+
return finish(writer);
|
|
118
|
+
}
|
|
119
|
+
export async function generateArtifacts(profile = DEFAULT_PROFILE) {
|
|
120
|
+
const [shapes, vocabulary] = await Promise.all([shapesTurtle(profile), vocabularyTurtle(profile)]);
|
|
121
|
+
return { schema: exchangeSchema(profile), context: profileContext(profile), shapes, vocabulary, dictionary: profileToDictionary(profile) };
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=profile-artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-artifacts.js","sourceRoot":"","sources":["../src/profile-artifacts.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,eAAe,EAA6C,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC;AAC/D,MAAM,GAAG,GAAG,6CAA6C,CAAC;AAC1D,MAAM,EAAE,GAAG,6BAA6B,CAAC;AACzC,MAAM,GAAG,GAAG,mCAAmC,CAAC;AAChD,MAAM,IAAI,GAAG,uCAAuC,CAAC;AACrD,MAAM,QAAQ,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC/N,+EAA+E;AAC/E,kFAAkF;AAClF,MAAM,QAAQ,GAAG,CAAC,KAAmB,EAAE,KAAgC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvJ,MAAM,WAAW,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1F,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;CAC3F,CAAC,CAAC;AACH,SAAS,YAAY,CAAC,KAAmB;IACvC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAE,oBAAoB,EAAE,KAAK;QAChG,iBAAiB,EAAE,EAAE,qCAAqC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,EAAE;QACvH,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACnJ,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAO,GAAG,eAAe,EAAE,UAAU,GAAG,KAAK;IACxF,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IAC3F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO;gBAChG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjI,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;YACxE,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3E,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACrC,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAChG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBAClH,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACd,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,eAAe,EAAE,UAAU,GAAG,KAAK;IAC1E,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,EAAE,OAAO,EAAE,yCAAyC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC;QACrL,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;YACtI,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC5J,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,eAAe;IACtD,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7H,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG;YAC7E,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;gBACzD,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE;oBAC3E,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtG,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,MAAc,EAAmB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3J,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAO,GAAG,eAAe;IAC1D,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,CAAC,OAAoD,EAAE,SAAiB,EAAE,MAA0E,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IACnN,MAAM,IAAI,GAAG,CAAC,MAAuD,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9H,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC;QACpD,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;QAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACjG,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACxH,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAC,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YAClC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC;YAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAChF,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;;gBACjF,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACrE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACrH,IAAI,KAAK,CAAC,UAAU;gBAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1F,IAAI,KAAK,CAAC,OAAO;gBAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpH,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpH,IAAI,KAAK,CAAC,IAAI;gBAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAO,GAAG,eAAe;IAC9D,aAAa,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5E,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClJ,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;QACnE,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAClJ,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAA6B,eAAe;IAClF,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnG,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7I,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { DEFAULT_PROFILE, PROFILE_ID, VOCAB, RESOURCE_TYPES, GUID_PATTERN, assertProfile } from './profiles.js';
|
|
2
|
+
export type { ProfileDefinition, ProfileField, ProfileType } from './profiles.js';
|
|
3
|
+
export type { SemanticResource, SemanticDocument, ValidationFinding } from './profile-types.js';
|
|
4
|
+
export { exchangeSchema, profileContext, shapesTurtle, vocabularyTurtle, generateArtifacts } from './profile-artifacts.js';
|
|
5
|
+
export { parseProfileDocument, parseDocument, parseImport, validateJson, validateLinks, asJsonLd, toRdf, validateGraph } from './validation.js';
|
|
6
|
+
export type { GraphValidationOptions } from './validation.js';
|
|
7
|
+
export { createValidationReport } from './validation-report.js';
|
|
8
|
+
export type { ValidationReport } from './validation-report.js';
|
|
9
|
+
export { parseGraph } from './graph-import.js';
|
|
10
|
+
export type { GraphImportOptions } from './graph-import.js';
|
|
11
|
+
export { profileToDictionary, dictionaryToProfile } from './dictionary.js';
|
|
12
|
+
export type { SemanticDictionary, DictionaryImport } from './dictionary.js';
|
|
13
|
+
export { profileFromBsdd } from './bsdd.js';
|
|
14
|
+
export type { BsddProvider, BsddClass } from './bsdd.js';
|
|
15
|
+
//# sourceMappingURL=profile-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-index.d.ts","sourceRoot":"","sources":["../src/profile-index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAChH,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClF,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3H,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChJ,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
export { DEFAULT_PROFILE, PROFILE_ID, VOCAB, RESOURCE_TYPES, GUID_PATTERN, assertProfile } from './profiles.js';
|
|
5
|
+
export { exchangeSchema, profileContext, shapesTurtle, vocabularyTurtle, generateArtifacts } from './profile-artifacts.js';
|
|
6
|
+
export { parseProfileDocument, parseDocument, parseImport, validateJson, validateLinks, asJsonLd, toRdf, validateGraph } from './validation.js';
|
|
7
|
+
export { createValidationReport } from './validation-report.js';
|
|
8
|
+
export { parseGraph } from './graph-import.js';
|
|
9
|
+
export { profileToDictionary, dictionaryToProfile } from './dictionary.js';
|
|
10
|
+
export { profileFromBsdd } from './bsdd.js';
|
|
11
|
+
//# sourceMappingURL=profile-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-index.js","sourceRoot":"","sources":["../src/profile-index.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGhH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3H,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhJ,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type { ProfileDefinition, ProfileField, ProfileType } from './profiles.js';
|
|
2
|
+
export interface SemanticResource {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
label: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface SemanticDocument {
|
|
9
|
+
profile: string;
|
|
10
|
+
source: string;
|
|
11
|
+
completeness: 'complete' | 'partial';
|
|
12
|
+
resources: SemanticResource[];
|
|
13
|
+
}
|
|
14
|
+
export interface ValidationFinding {
|
|
15
|
+
engine: 'JSON Schema' | 'SHACL' | 'links';
|
|
16
|
+
resourceId: string;
|
|
17
|
+
path: string;
|
|
18
|
+
message: string;
|
|
19
|
+
severity?: 'Violation' | 'Warning' | 'Info';
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=profile-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-types.d.ts","sourceRoot":"","sources":["../src/profile-types.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClF,MAAM,WAAW,gBAAgB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE;AACrG,MAAM,WAAW,gBAAgB;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC;IAAC,SAAS,EAAE,gBAAgB,EAAE,CAAA;CAAE;AAC1I,MAAM,WAAW,iBAAiB;IAAG,MAAM,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAAA;CAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-types.js","sourceRoot":"","sources":["../src/profile-types.ts"],"names":[],"mappings":"AAAA;;+DAE+D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export { GUID_PATTERN } from './types.js';
|
|
2
|
+
export interface ProfileField {
|
|
3
|
+
iri: string;
|
|
4
|
+
kind: 'string' | 'number' | 'integer' | 'boolean' | 'iri' | 'language';
|
|
5
|
+
labels?: Record<string, string>;
|
|
6
|
+
enum?: (string | number | boolean)[];
|
|
7
|
+
pattern?: string;
|
|
8
|
+
minimum?: number;
|
|
9
|
+
maximum?: number;
|
|
10
|
+
unit?: string;
|
|
11
|
+
targetType?: string;
|
|
12
|
+
external?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface ProfileType {
|
|
15
|
+
iri: string;
|
|
16
|
+
labels?: Record<string, string>;
|
|
17
|
+
fields: Record<string, {
|
|
18
|
+
minCount?: number;
|
|
19
|
+
maxCount?: number;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
export interface ProfileDefinition {
|
|
23
|
+
id: string;
|
|
24
|
+
version: string;
|
|
25
|
+
vocabulary: string;
|
|
26
|
+
fields: Record<string, ProfileField>;
|
|
27
|
+
types: Record<string, ProfileType>;
|
|
28
|
+
}
|
|
29
|
+
export declare const PROFILE_ID = "https://example.org/ifc-lite/semantic-pilot/v1";
|
|
30
|
+
export declare const VOCAB = "https://example.org/ifc-lite/semantic-pilot#";
|
|
31
|
+
export declare const RESOURCE_TYPES: readonly ["Building", "Logbook", "Installation", "Product", "Passport", "Inspection"];
|
|
32
|
+
export declare const DEFAULT_PROFILE: ProfileDefinition;
|
|
33
|
+
export declare function isUri(value: string): boolean;
|
|
34
|
+
/** Shared bounded pattern policy for both profile-generated and imported shapes. */
|
|
35
|
+
export declare function assertBoundedPattern(pattern: string, location: string): void;
|
|
36
|
+
/** Validate profiles before compiling schemas or executing graph validation. */
|
|
37
|
+
export declare function assertProfile(value: unknown): asserts value is ProfileDefinition;
|
|
38
|
+
//# sourceMappingURL=profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AACD,MAAM,WAAW,WAAW;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE;AAC/I,MAAM,WAAW,iBAAiB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CAAE;AAChK,eAAO,MAAM,UAAU,mDAAmD,CAAC;AAC3E,eAAO,MAAM,KAAK,iDAAiD,CAAC;AACpE,eAAO,MAAM,cAAc,uFAAwF,CAAC;AAKpH,eAAO,MAAM,eAAe,EAAE,iBAkB7B,CAAC;AACF,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5C;AACD,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CA8B5E;AACD,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,CA4DhF"}
|