@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,140 @@
|
|
|
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 { LIMITS, assertIri, isObject } from './types.js';
|
|
5
|
+
import { GUID_PATTERN, assertRevisionIdentifier } from './resolver.js';
|
|
6
|
+
import { parseResults } from './results.js';
|
|
7
|
+
function string(value, name) {
|
|
8
|
+
if (typeof value !== 'string')
|
|
9
|
+
throw new Error(`Expected workspace ${name}`);
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
function safeEndpoint(value) {
|
|
13
|
+
const url = new URL(string(value, 'endpoint'));
|
|
14
|
+
if (url.protocol !== 'https:' || url.username || url.password || url.search || url.hash)
|
|
15
|
+
throw new Error('Portable endpoints must be HTTPS without credentials, query parameters or fragments');
|
|
16
|
+
return url.href;
|
|
17
|
+
}
|
|
18
|
+
export function sanitizeSource(value) {
|
|
19
|
+
const source = string(value, 'source');
|
|
20
|
+
let url;
|
|
21
|
+
try {
|
|
22
|
+
url = new URL(source);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
if (/^[A-Za-z][A-Za-z0-9+.-]*:\/\//u.test(source))
|
|
26
|
+
throw new Error('Invalid workspace source URL');
|
|
27
|
+
return source;
|
|
28
|
+
}
|
|
29
|
+
if (!url.host && !/^[A-Za-z][A-Za-z0-9+.-]*:\/\//u.test(source))
|
|
30
|
+
return source;
|
|
31
|
+
url.username = '';
|
|
32
|
+
url.password = '';
|
|
33
|
+
url.search = '';
|
|
34
|
+
url.hash = '';
|
|
35
|
+
return url.href;
|
|
36
|
+
}
|
|
37
|
+
function parseWorkspace(value) {
|
|
38
|
+
if (!isObject(value) || value.version !== 1 || !Array.isArray(value.datasets) || !Array.isArray(value.queries) || !Array.isArray(value.revisions))
|
|
39
|
+
throw new Error('Unsupported semantic workspace version');
|
|
40
|
+
if (value.datasets.length > 100 || value.queries.length > 100 || value.revisions.length > LIMITS.rows)
|
|
41
|
+
throw new Error('Workspace exceeds configured limits');
|
|
42
|
+
const datasets = value.datasets.map(raw => {
|
|
43
|
+
if (!isObject(raw) || !['complete', 'partial'].includes(String(raw.completeness)))
|
|
44
|
+
throw new Error('Invalid workspace dataset');
|
|
45
|
+
const dataset = { id: string(raw.id, 'dataset id'), source: sanitizeSource(raw.source), completeness: raw.completeness };
|
|
46
|
+
if (raw.profileId !== undefined)
|
|
47
|
+
dataset.profileId = string(raw.profileId, 'profile id');
|
|
48
|
+
if (raw.rows !== undefined) {
|
|
49
|
+
if (!isObject(raw.rows))
|
|
50
|
+
throw new Error('Invalid workspace rows');
|
|
51
|
+
dataset.rows = parseResults({ head: { vars: raw.rows.columns }, results: { bindings: raw.rows.rows } });
|
|
52
|
+
}
|
|
53
|
+
if (raw.graph !== undefined) {
|
|
54
|
+
dataset.graph = string(raw.graph, 'graph');
|
|
55
|
+
if (raw.graphFormat !== 'text/turtle' && raw.graphFormat !== 'application/n-quads')
|
|
56
|
+
throw new Error('Invalid graph format');
|
|
57
|
+
dataset.graphFormat = raw.graphFormat;
|
|
58
|
+
}
|
|
59
|
+
if (raw.resources !== undefined) {
|
|
60
|
+
if (!Array.isArray(raw.resources) || raw.resources.length > LIMITS.rows)
|
|
61
|
+
throw new Error('Invalid workspace resource count');
|
|
62
|
+
dataset.resources = raw.resources.map(record => {
|
|
63
|
+
if (!isObject(record) || !Array.isArray(record.types) || !record.types.every(v => typeof v === 'string') || !isObject(record.properties))
|
|
64
|
+
throw new Error('Invalid semantic record');
|
|
65
|
+
const id = string(record.id, 'resource id');
|
|
66
|
+
if (!id.startsWith('_:'))
|
|
67
|
+
assertIri(id);
|
|
68
|
+
const properties = Object.create(null);
|
|
69
|
+
for (const [predicate, terms] of Object.entries(record.properties)) {
|
|
70
|
+
assertIri(predicate);
|
|
71
|
+
if (!Array.isArray(terms) || terms.length > LIMITS.rows)
|
|
72
|
+
throw new Error('Invalid semantic predicate values');
|
|
73
|
+
properties[predicate] = parseResults({ head: { vars: ['term'] }, results: { bindings: terms.map(term => ({ term })) } }).rows.map(row => row.term);
|
|
74
|
+
}
|
|
75
|
+
return { id, types: [...record.types], properties };
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return dataset;
|
|
79
|
+
});
|
|
80
|
+
const queries = value.queries.map(raw => {
|
|
81
|
+
if (!isObject(raw) || !['json', 'select', 'construct'].includes(String(raw.kind)))
|
|
82
|
+
throw new Error('Invalid workspace query');
|
|
83
|
+
const query = { id: string(raw.id, 'query id'), endpoint: safeEndpoint(raw.endpoint), kind: raw.kind };
|
|
84
|
+
if (raw.query !== undefined)
|
|
85
|
+
query.query = string(raw.query, 'query');
|
|
86
|
+
if (raw.profileId !== undefined)
|
|
87
|
+
query.profileId = string(raw.profileId, 'profile id');
|
|
88
|
+
if (raw.resolverStrategy !== undefined)
|
|
89
|
+
query.resolverStrategy = string(raw.resolverStrategy, 'resolver');
|
|
90
|
+
if (raw.mapping !== undefined) {
|
|
91
|
+
if (!isObject(raw.mapping) || !Object.values(raw.mapping).every(v => typeof v === 'string'))
|
|
92
|
+
throw new Error('Invalid query mapping');
|
|
93
|
+
query.mapping = { ...raw.mapping };
|
|
94
|
+
}
|
|
95
|
+
return query;
|
|
96
|
+
});
|
|
97
|
+
const declaredRevisions = new Set();
|
|
98
|
+
const revisions = value.revisions.map(raw => {
|
|
99
|
+
if (!isObject(raw))
|
|
100
|
+
throw new Error('Invalid revision link');
|
|
101
|
+
assertRevisionIdentifier(raw.revision);
|
|
102
|
+
if (declaredRevisions.has(raw.revision))
|
|
103
|
+
throw new Error('Duplicate workspace revision identifier');
|
|
104
|
+
declaredRevisions.add(raw.revision);
|
|
105
|
+
return { revision: raw.revision, modelLabel: string(raw.modelLabel, 'model label') };
|
|
106
|
+
});
|
|
107
|
+
let resourceLinks;
|
|
108
|
+
if (value.resourceLinks !== undefined) {
|
|
109
|
+
if (!Array.isArray(value.resourceLinks) || value.resourceLinks.length > LIMITS.rows)
|
|
110
|
+
throw new Error('Invalid resource identity links');
|
|
111
|
+
resourceLinks = value.resourceLinks.map(raw => {
|
|
112
|
+
if (!isObject(raw))
|
|
113
|
+
throw new Error('Invalid resource identity link');
|
|
114
|
+
const resourceId = string(raw.resourceId, 'resource URI');
|
|
115
|
+
const modelRevision = string(raw.modelRevision, 'model revision');
|
|
116
|
+
const GlobalId = string(raw.GlobalId, 'IFC GlobalId');
|
|
117
|
+
assertIri(resourceId);
|
|
118
|
+
assertRevisionIdentifier(modelRevision);
|
|
119
|
+
if (!declaredRevisions.has(modelRevision))
|
|
120
|
+
throw new Error('Resource identity link refers to an undeclared revision');
|
|
121
|
+
if (!new RegExp(GUID_PATTERN).test(GlobalId))
|
|
122
|
+
throw new Error('Invalid linked IFC GlobalId');
|
|
123
|
+
return { resourceId, modelRevision, GlobalId };
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return { version: 1, datasets, queries, revisions, ...(resourceLinks ? { resourceLinks } : {}) };
|
|
127
|
+
}
|
|
128
|
+
/** Whitelist the portable contract: credentials, grants and loaded model ids never cross sessions. */
|
|
129
|
+
export function exportWorkspace(workspace) {
|
|
130
|
+
const serialized = JSON.stringify(parseWorkspace(workspace), null, 2);
|
|
131
|
+
if (new TextEncoder().encode(serialized).length > LIMITS.bytes)
|
|
132
|
+
throw new Error('Workspace exceeds byte limit');
|
|
133
|
+
return serialized;
|
|
134
|
+
}
|
|
135
|
+
export function importWorkspace(serialized) {
|
|
136
|
+
if (new TextEncoder().encode(serialized).length > LIMITS.bytes)
|
|
137
|
+
throw new Error('Workspace exceeds byte limit');
|
|
138
|
+
return { workspace: parseWorkspace(JSON.parse(serialized)), grants: [], associations: new Map() };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ifc-lite/semantic",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Portable semantic datasets, profiles, validation and IFC identity resolution",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./server": {
|
|
14
|
+
"types": "./dist/server.d.ts",
|
|
15
|
+
"import": "./dist/server.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@traqula/parser-sparql-1-1": "^1.3.1",
|
|
20
|
+
"ajv": "^8.17.1",
|
|
21
|
+
"jsonld": "^9.0.0",
|
|
22
|
+
"n3": "^2.0.3",
|
|
23
|
+
"rdf-validate-shacl": "^0.6.5",
|
|
24
|
+
"@ifc-lite/sandbox": "^2.10.0",
|
|
25
|
+
"@ifc-lite/extensions": "^0.10.1"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"typescript": "^6.0.3",
|
|
29
|
+
"vitest": "^5.0.2",
|
|
30
|
+
"@types/jsonld": "^1.5.15",
|
|
31
|
+
"@types/n3": "^1.26.1",
|
|
32
|
+
"@types/node": "^26.6.2"
|
|
33
|
+
},
|
|
34
|
+
"license": "MPL-2.0",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/LTplus-AG/ifc-lite.git",
|
|
38
|
+
"directory": "packages/semantic"
|
|
39
|
+
},
|
|
40
|
+
"publishConfig": {
|
|
41
|
+
"access": "public"
|
|
42
|
+
},
|
|
43
|
+
"files": [
|
|
44
|
+
"dist",
|
|
45
|
+
"README.md"
|
|
46
|
+
],
|
|
47
|
+
"scripts": {
|
|
48
|
+
"build": "pnpm exec tsc",
|
|
49
|
+
"typecheck": "node ../../scripts/typecheck-tests.mjs",
|
|
50
|
+
"test": "vitest run"
|
|
51
|
+
}
|
|
52
|
+
}
|