@oml/owl 0.14.14 → 0.14.16
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/out/index.d.ts +1 -0
- package/out/index.js +1 -0
- package/out/index.js.map +1 -1
- package/out/owl/owl-closure.d.ts +33 -0
- package/out/owl/owl-closure.js +537 -0
- package/out/owl/owl-closure.js.map +1 -0
- package/out/owl/owl-service.d.ts +4 -1
- package/out/owl/owl-service.js +56 -1
- package/out/owl/owl-service.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/owl/owl-closure.ts +624 -0
- package/src/owl/owl-service.ts +60 -2
package/out/index.d.ts
CHANGED
package/out/index.js
CHANGED
package/out/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Quad } from '@rdfjs/types';
|
|
2
|
+
import type { Ontology, VocabularyBundle } from '@oml/language';
|
|
3
|
+
export declare class VocabularyBundleClosureBuilder {
|
|
4
|
+
private readonly ontologyByNamespace;
|
|
5
|
+
constructor(ontologyByNamespace: ReadonlyMap<string, Ontology>);
|
|
6
|
+
buildClosureQuads(bundle: VocabularyBundle): Quad[];
|
|
7
|
+
private collectBundledVocabularies;
|
|
8
|
+
private collectClosureMembers;
|
|
9
|
+
private collectNamedEdges;
|
|
10
|
+
private transitiveReduce;
|
|
11
|
+
private rootAtUniversal;
|
|
12
|
+
private treeify;
|
|
13
|
+
private bypassIsolate;
|
|
14
|
+
private reduceChild;
|
|
15
|
+
private generateClosureAxioms;
|
|
16
|
+
private serializeAxioms;
|
|
17
|
+
private createTaxonomy;
|
|
18
|
+
private cloneTaxonomy;
|
|
19
|
+
private ensureNode;
|
|
20
|
+
private addEdge;
|
|
21
|
+
private childrenOf;
|
|
22
|
+
private parentsOf;
|
|
23
|
+
private ancestorsOf;
|
|
24
|
+
private directParentsOf;
|
|
25
|
+
private lowestMultiParentChild;
|
|
26
|
+
private named;
|
|
27
|
+
private complement;
|
|
28
|
+
private intersection;
|
|
29
|
+
private difference;
|
|
30
|
+
private combine;
|
|
31
|
+
private memberIri;
|
|
32
|
+
private importedOntologyNamespace;
|
|
33
|
+
}
|
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
|
+
import { DataFactory } from 'n3';
|
|
3
|
+
import { isConcept, isRelationEntity, isVocabulary, isVocabularyBundle } from '@oml/language';
|
|
4
|
+
const RDF_TYPE_IRI = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';
|
|
5
|
+
const RDF_FIRST_IRI = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#first';
|
|
6
|
+
const RDF_REST_IRI = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest';
|
|
7
|
+
const RDF_NIL_IRI = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil';
|
|
8
|
+
const RDFS_SUBCLASS_OF_IRI = 'http://www.w3.org/2000/01/rdf-schema#subClassOf';
|
|
9
|
+
const OWL_CLASS_IRI = 'http://www.w3.org/2002/07/owl#Class';
|
|
10
|
+
const OWL_THING_IRI = 'http://www.w3.org/2002/07/owl#Thing';
|
|
11
|
+
const OWL_NOTHING_IRI = 'http://www.w3.org/2002/07/owl#Nothing';
|
|
12
|
+
const OWL_COMPLEMENT_OF_IRI = 'http://www.w3.org/2002/07/owl#complementOf';
|
|
13
|
+
const OWL_INTERSECTION_OF_IRI = 'http://www.w3.org/2002/07/owl#intersectionOf';
|
|
14
|
+
const OWL_UNION_OF_IRI = 'http://www.w3.org/2002/07/owl#unionOf';
|
|
15
|
+
const OWL_DISJOINT_WITH_IRI = 'http://www.w3.org/2002/07/owl#disjointWith';
|
|
16
|
+
const OWL_ALL_DISJOINT_CLASSES_IRI = 'http://www.w3.org/2002/07/owl#AllDisjointClasses';
|
|
17
|
+
const OWL_MEMBERS_IRI = 'http://www.w3.org/2002/07/owl#members';
|
|
18
|
+
const { blankNode, namedNode, quad } = DataFactory;
|
|
19
|
+
const UNIVERSAL = { kind: 'universal', key: 'U' };
|
|
20
|
+
const EMPTY = { kind: 'empty', key: 'E' };
|
|
21
|
+
export class VocabularyBundleClosureBuilder {
|
|
22
|
+
constructor(ontologyByNamespace) {
|
|
23
|
+
this.ontologyByNamespace = ontologyByNamespace;
|
|
24
|
+
}
|
|
25
|
+
buildClosureQuads(bundle) {
|
|
26
|
+
const vocabularies = this.collectBundledVocabularies(bundle);
|
|
27
|
+
const members = this.collectClosureMembers(vocabularies);
|
|
28
|
+
if (members.length < 2) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
const memberIris = new Set(members.map((member) => this.memberIri(member)));
|
|
32
|
+
const vertices = members
|
|
33
|
+
.map((member) => this.named(this.memberIri(member)))
|
|
34
|
+
.sort((left, right) => left.key.localeCompare(right.key));
|
|
35
|
+
const edges = this.transitiveReduce(this.collectNamedEdges(members, memberIris));
|
|
36
|
+
const rooted = this.rootAtUniversal(this.createTaxonomy(vertices, edges));
|
|
37
|
+
const tree = this.treeify(rooted);
|
|
38
|
+
const axioms = this.generateClosureAxioms(tree);
|
|
39
|
+
return this.serializeAxioms(axioms);
|
|
40
|
+
}
|
|
41
|
+
collectBundledVocabularies(bundle) {
|
|
42
|
+
const vocabularies = new Map();
|
|
43
|
+
const visitedBundles = new Set();
|
|
44
|
+
const visitedVocabularies = new Set();
|
|
45
|
+
const visitVocabulary = (vocabulary) => {
|
|
46
|
+
const iri = normalizeNamespace(vocabulary.namespace);
|
|
47
|
+
if (visitedVocabularies.has(iri)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
visitedVocabularies.add(iri);
|
|
51
|
+
vocabularies.set(iri, vocabulary);
|
|
52
|
+
for (const ownedImport of vocabulary.ownedImports ?? []) {
|
|
53
|
+
if (ownedImport.kind !== 'extends') {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const imported = ownedImport.imported?.ref;
|
|
57
|
+
if (imported && isVocabulary(imported)) {
|
|
58
|
+
visitVocabulary(imported);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
const visitBundle = (vocabularyBundle) => {
|
|
63
|
+
const iri = normalizeNamespace(vocabularyBundle.namespace);
|
|
64
|
+
if (visitedBundles.has(iri)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
visitedBundles.add(iri);
|
|
68
|
+
for (const ownedImport of vocabularyBundle.ownedImports ?? []) {
|
|
69
|
+
const imported = ownedImport.imported?.ref;
|
|
70
|
+
if (!imported) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (ownedImport.kind === 'includes' && isVocabulary(imported)) {
|
|
74
|
+
visitVocabulary(imported);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (ownedImport.kind === 'extends' && isVocabularyBundle(imported)) {
|
|
78
|
+
visitBundle(imported);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const importedNamespace = this.importedOntologyNamespace(imported);
|
|
82
|
+
if (!importedNamespace) {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const resolved = this.ontologyByNamespace.get(importedNamespace);
|
|
86
|
+
if (!resolved) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (ownedImport.kind === 'includes' && isVocabulary(resolved)) {
|
|
90
|
+
visitVocabulary(resolved);
|
|
91
|
+
}
|
|
92
|
+
else if (ownedImport.kind === 'extends' && isVocabularyBundle(resolved)) {
|
|
93
|
+
visitBundle(resolved);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
visitBundle(bundle);
|
|
98
|
+
return [...vocabularies.values()];
|
|
99
|
+
}
|
|
100
|
+
collectClosureMembers(vocabularies) {
|
|
101
|
+
const members = new Map();
|
|
102
|
+
for (const vocabulary of vocabularies) {
|
|
103
|
+
for (const statement of vocabulary.ownedStatements ?? []) {
|
|
104
|
+
if (!isConcept(statement) && !isRelationEntity(statement)) {
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
members.set(this.memberIri(statement), statement);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return [...members.values()];
|
|
111
|
+
}
|
|
112
|
+
collectNamedEdges(members, memberIris) {
|
|
113
|
+
const edges = new Map();
|
|
114
|
+
for (const member of members) {
|
|
115
|
+
const childIri = this.memberIri(member);
|
|
116
|
+
for (const specialization of member.ownedSpecializations ?? []) {
|
|
117
|
+
const superTerm = specialization.superTerm?.ref;
|
|
118
|
+
if (!superTerm || (!isConcept(superTerm) && !isRelationEntity(superTerm))) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const parentIri = this.memberIri(superTerm);
|
|
122
|
+
if (!memberIris.has(parentIri)) {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
edges.set(`${parentIri}|${childIri}`, { parent: parentIri, child: childIri });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return [...edges.values()].sort((left, right) => `${left.parent}|${left.child}`.localeCompare(`${right.parent}|${right.child}`));
|
|
129
|
+
}
|
|
130
|
+
transitiveReduce(edges) {
|
|
131
|
+
const vertices = new Set();
|
|
132
|
+
const childrenByParent = new Map();
|
|
133
|
+
for (const edge of edges) {
|
|
134
|
+
vertices.add(edge.parent);
|
|
135
|
+
vertices.add(edge.child);
|
|
136
|
+
const children = childrenByParent.get(edge.parent) ?? new Set();
|
|
137
|
+
children.add(edge.child);
|
|
138
|
+
childrenByParent.set(edge.parent, children);
|
|
139
|
+
}
|
|
140
|
+
const hasAlternatePath = (parent, child) => {
|
|
141
|
+
const visited = new Set([parent]);
|
|
142
|
+
const worklist = [...(childrenByParent.get(parent) ?? [])].filter((candidate) => candidate !== child);
|
|
143
|
+
while (worklist.length > 0) {
|
|
144
|
+
const next = worklist.pop();
|
|
145
|
+
if (next === child) {
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
if (visited.has(next)) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
visited.add(next);
|
|
152
|
+
worklist.push(...(childrenByParent.get(next) ?? []));
|
|
153
|
+
}
|
|
154
|
+
return false;
|
|
155
|
+
};
|
|
156
|
+
return edges.filter((edge) => !hasAlternatePath(edge.parent, edge.child));
|
|
157
|
+
}
|
|
158
|
+
rootAtUniversal(taxonomy) {
|
|
159
|
+
const rooted = this.cloneTaxonomy(taxonomy);
|
|
160
|
+
this.ensureNode(rooted, UNIVERSAL);
|
|
161
|
+
const roots = [...rooted.values()]
|
|
162
|
+
.filter((node) => node.expr.kind !== 'universal' && node.parents.size === 0)
|
|
163
|
+
.map((node) => node.expr);
|
|
164
|
+
for (const root of roots) {
|
|
165
|
+
this.addEdge(rooted, UNIVERSAL, root);
|
|
166
|
+
}
|
|
167
|
+
return rooted;
|
|
168
|
+
}
|
|
169
|
+
treeify(taxonomy) {
|
|
170
|
+
const child = this.lowestMultiParentChild(taxonomy);
|
|
171
|
+
if (!child) {
|
|
172
|
+
return taxonomy;
|
|
173
|
+
}
|
|
174
|
+
return this.treeify(this.reduceChild(this.bypassIsolate(taxonomy, child), child));
|
|
175
|
+
}
|
|
176
|
+
bypassIsolate(taxonomy, child) {
|
|
177
|
+
const next = new Map();
|
|
178
|
+
const parents = this.parentsOf(taxonomy, child);
|
|
179
|
+
const parentKeys = new Set(parents.map((parent) => parent.key));
|
|
180
|
+
const grandparents = new Map();
|
|
181
|
+
for (const parent of parents) {
|
|
182
|
+
for (const grandparent of this.parentsOf(taxonomy, parent)) {
|
|
183
|
+
grandparents.set(grandparent.key, grandparent);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
const replacements = new Map();
|
|
187
|
+
for (const parent of parents) {
|
|
188
|
+
replacements.set(parent.key, this.difference(parent, child));
|
|
189
|
+
}
|
|
190
|
+
for (const node of taxonomy.values()) {
|
|
191
|
+
if (!parentKeys.has(node.expr.key)) {
|
|
192
|
+
this.ensureNode(next, node.expr);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
for (const replacement of replacements.values()) {
|
|
196
|
+
this.ensureNode(next, replacement);
|
|
197
|
+
}
|
|
198
|
+
for (const node of taxonomy.values()) {
|
|
199
|
+
for (const childKey of node.children) {
|
|
200
|
+
const source = node.expr;
|
|
201
|
+
const target = taxonomy.get(childKey)?.expr;
|
|
202
|
+
if (!target) {
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if (parentKeys.has(source.key)) {
|
|
206
|
+
if (target.key !== child.key) {
|
|
207
|
+
this.addEdge(next, replacements.get(source.key), target);
|
|
208
|
+
}
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (parentKeys.has(target.key)) {
|
|
212
|
+
this.addEdge(next, source, replacements.get(target.key));
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
this.addEdge(next, source, target);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
for (const grandparent of grandparents.values()) {
|
|
219
|
+
this.addEdge(next, grandparent, child);
|
|
220
|
+
}
|
|
221
|
+
return next;
|
|
222
|
+
}
|
|
223
|
+
reduceChild(taxonomy, child) {
|
|
224
|
+
const next = new Map();
|
|
225
|
+
for (const node of taxonomy.values()) {
|
|
226
|
+
this.ensureNode(next, node.expr);
|
|
227
|
+
}
|
|
228
|
+
for (const node of taxonomy.values()) {
|
|
229
|
+
for (const childKey of node.children) {
|
|
230
|
+
const target = taxonomy.get(childKey)?.expr;
|
|
231
|
+
if (!target || target.key === child.key) {
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
this.addEdge(next, node.expr, target);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
for (const parent of this.directParentsOf(taxonomy, child)) {
|
|
238
|
+
this.addEdge(next, parent, child);
|
|
239
|
+
}
|
|
240
|
+
return next;
|
|
241
|
+
}
|
|
242
|
+
generateClosureAxioms(taxonomy) {
|
|
243
|
+
const axioms = new Map();
|
|
244
|
+
const orderedParents = [...taxonomy.values()]
|
|
245
|
+
.filter((node) => node.children.size > 0)
|
|
246
|
+
.map((node) => node.expr)
|
|
247
|
+
.sort((left, right) => left.key.localeCompare(right.key));
|
|
248
|
+
for (const parent of orderedParents) {
|
|
249
|
+
const children = this.childrenOf(taxonomy, parent)
|
|
250
|
+
.sort((left, right) => left.key.localeCompare(right.key));
|
|
251
|
+
for (const child of children) {
|
|
252
|
+
axioms.set(`subclass|${child.key}|${parent.key}`, { kind: 'subclass', sub: child, sup: parent });
|
|
253
|
+
}
|
|
254
|
+
if (children.length > 1) {
|
|
255
|
+
axioms.set(`disjoint|${children.map((child) => child.key).join('|')}`, { kind: 'disjoint', expressions: children });
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return [...axioms.values()];
|
|
259
|
+
}
|
|
260
|
+
serializeAxioms(axioms) {
|
|
261
|
+
const quads = [];
|
|
262
|
+
const expressionNodes = new Map();
|
|
263
|
+
const listNodes = new Map();
|
|
264
|
+
const termForExpression = (expr) => {
|
|
265
|
+
const cached = expressionNodes.get(expr.key);
|
|
266
|
+
if (cached) {
|
|
267
|
+
return cached;
|
|
268
|
+
}
|
|
269
|
+
if (expr.kind === 'named') {
|
|
270
|
+
const node = namedNode(expr.iri);
|
|
271
|
+
expressionNodes.set(expr.key, node);
|
|
272
|
+
return node;
|
|
273
|
+
}
|
|
274
|
+
if (expr.kind === 'universal') {
|
|
275
|
+
const node = namedNode(OWL_THING_IRI);
|
|
276
|
+
expressionNodes.set(expr.key, node);
|
|
277
|
+
return node;
|
|
278
|
+
}
|
|
279
|
+
if (expr.kind === 'empty') {
|
|
280
|
+
const node = namedNode(OWL_NOTHING_IRI);
|
|
281
|
+
expressionNodes.set(expr.key, node);
|
|
282
|
+
return node;
|
|
283
|
+
}
|
|
284
|
+
const node = blankNode();
|
|
285
|
+
expressionNodes.set(expr.key, node);
|
|
286
|
+
quads.push(quad(node, namedNode(RDF_TYPE_IRI), namedNode(OWL_CLASS_IRI)));
|
|
287
|
+
if (expr.kind === 'complement') {
|
|
288
|
+
quads.push(quad(node, namedNode(OWL_COMPLEMENT_OF_IRI), termForExpression(expr.operand)));
|
|
289
|
+
return node;
|
|
290
|
+
}
|
|
291
|
+
const predicate = expr.kind === 'intersection' ? OWL_INTERSECTION_OF_IRI : OWL_UNION_OF_IRI;
|
|
292
|
+
quads.push(quad(node, namedNode(predicate), listForExpressions(expr.operands)));
|
|
293
|
+
return node;
|
|
294
|
+
};
|
|
295
|
+
const listForExpressions = (expressions) => {
|
|
296
|
+
const key = expressions.map((expr) => expr.key).join('|');
|
|
297
|
+
const cached = listNodes.get(key);
|
|
298
|
+
if (cached) {
|
|
299
|
+
return cached;
|
|
300
|
+
}
|
|
301
|
+
if (expressions.length === 0) {
|
|
302
|
+
return namedNode(RDF_NIL_IRI);
|
|
303
|
+
}
|
|
304
|
+
const head = blankNode();
|
|
305
|
+
listNodes.set(key, head);
|
|
306
|
+
let current = head;
|
|
307
|
+
expressions.forEach((expr, index) => {
|
|
308
|
+
quads.push(quad(current, namedNode(RDF_FIRST_IRI), termForExpression(expr)));
|
|
309
|
+
const isLast = index === expressions.length - 1;
|
|
310
|
+
const restNode = isLast ? namedNode(RDF_NIL_IRI) : blankNode();
|
|
311
|
+
quads.push(quad(current, namedNode(RDF_REST_IRI), restNode));
|
|
312
|
+
if (!isLast && restNode.termType === 'BlankNode') {
|
|
313
|
+
current = restNode;
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
return head;
|
|
317
|
+
};
|
|
318
|
+
for (const axiom of axioms) {
|
|
319
|
+
if (axiom.kind === 'subclass') {
|
|
320
|
+
quads.push(quad(termForExpression(axiom.sub), namedNode(RDFS_SUBCLASS_OF_IRI), termForExpression(axiom.sup)));
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
if (axiom.expressions.length === 2) {
|
|
324
|
+
quads.push(quad(termForExpression(axiom.expressions[0]), namedNode(OWL_DISJOINT_WITH_IRI), termForExpression(axiom.expressions[1])));
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
const node = blankNode();
|
|
328
|
+
quads.push(quad(node, namedNode(RDF_TYPE_IRI), namedNode(OWL_ALL_DISJOINT_CLASSES_IRI)));
|
|
329
|
+
quads.push(quad(node, namedNode(OWL_MEMBERS_IRI), listForExpressions(axiom.expressions)));
|
|
330
|
+
}
|
|
331
|
+
return quads;
|
|
332
|
+
}
|
|
333
|
+
createTaxonomy(vertices, edges) {
|
|
334
|
+
const taxonomy = new Map();
|
|
335
|
+
for (const vertex of vertices) {
|
|
336
|
+
this.ensureNode(taxonomy, vertex);
|
|
337
|
+
}
|
|
338
|
+
for (const edge of edges) {
|
|
339
|
+
this.addEdge(taxonomy, this.named(edge.parent), this.named(edge.child));
|
|
340
|
+
}
|
|
341
|
+
return taxonomy;
|
|
342
|
+
}
|
|
343
|
+
cloneTaxonomy(taxonomy) {
|
|
344
|
+
const clone = new Map();
|
|
345
|
+
for (const node of taxonomy.values()) {
|
|
346
|
+
clone.set(node.expr.key, {
|
|
347
|
+
expr: node.expr,
|
|
348
|
+
parents: new Set(node.parents),
|
|
349
|
+
children: new Set(node.children),
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
return clone;
|
|
353
|
+
}
|
|
354
|
+
ensureNode(taxonomy, expr) {
|
|
355
|
+
const existing = taxonomy.get(expr.key);
|
|
356
|
+
if (existing) {
|
|
357
|
+
return existing;
|
|
358
|
+
}
|
|
359
|
+
const created = {
|
|
360
|
+
expr,
|
|
361
|
+
parents: new Set(),
|
|
362
|
+
children: new Set(),
|
|
363
|
+
};
|
|
364
|
+
taxonomy.set(expr.key, created);
|
|
365
|
+
return created;
|
|
366
|
+
}
|
|
367
|
+
addEdge(taxonomy, parent, child) {
|
|
368
|
+
if (parent.key === child.key) {
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
const parentNode = this.ensureNode(taxonomy, parent);
|
|
372
|
+
const childNode = this.ensureNode(taxonomy, child);
|
|
373
|
+
parentNode.children.add(child.key);
|
|
374
|
+
childNode.parents.add(parent.key);
|
|
375
|
+
}
|
|
376
|
+
childrenOf(taxonomy, expr) {
|
|
377
|
+
const node = taxonomy.get(expr.key);
|
|
378
|
+
if (!node) {
|
|
379
|
+
return [];
|
|
380
|
+
}
|
|
381
|
+
return [...node.children]
|
|
382
|
+
.map((key) => taxonomy.get(key)?.expr)
|
|
383
|
+
.filter((entry) => !!entry);
|
|
384
|
+
}
|
|
385
|
+
parentsOf(taxonomy, expr) {
|
|
386
|
+
const node = taxonomy.get(expr.key);
|
|
387
|
+
if (!node) {
|
|
388
|
+
return [];
|
|
389
|
+
}
|
|
390
|
+
return [...node.parents]
|
|
391
|
+
.map((key) => taxonomy.get(key)?.expr)
|
|
392
|
+
.filter((entry) => !!entry);
|
|
393
|
+
}
|
|
394
|
+
ancestorsOf(taxonomy, expr) {
|
|
395
|
+
const ancestors = new Set();
|
|
396
|
+
const worklist = this.parentsOf(taxonomy, expr);
|
|
397
|
+
while (worklist.length > 0) {
|
|
398
|
+
const next = worklist.pop();
|
|
399
|
+
if (ancestors.has(next.key)) {
|
|
400
|
+
continue;
|
|
401
|
+
}
|
|
402
|
+
ancestors.add(next.key);
|
|
403
|
+
worklist.push(...this.parentsOf(taxonomy, next));
|
|
404
|
+
}
|
|
405
|
+
return ancestors;
|
|
406
|
+
}
|
|
407
|
+
directParentsOf(taxonomy, expr) {
|
|
408
|
+
const parents = this.parentsOf(taxonomy, expr);
|
|
409
|
+
const ancestorParents = new Set();
|
|
410
|
+
for (const parent of parents) {
|
|
411
|
+
for (const ancestor of this.ancestorsOf(taxonomy, parent)) {
|
|
412
|
+
ancestorParents.add(ancestor);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
return parents.filter((parent) => !ancestorParents.has(parent.key));
|
|
416
|
+
}
|
|
417
|
+
lowestMultiParentChild(taxonomy) {
|
|
418
|
+
const roots = [...taxonomy.values()]
|
|
419
|
+
.filter((node) => node.parents.size === 0)
|
|
420
|
+
.map((node) => node.expr)
|
|
421
|
+
.sort((left, right) => left.key.localeCompare(right.key));
|
|
422
|
+
const visited = new Set();
|
|
423
|
+
const postorder = [];
|
|
424
|
+
const visit = (expr) => {
|
|
425
|
+
if (visited.has(expr.key)) {
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
visited.add(expr.key);
|
|
429
|
+
const children = this.childrenOf(taxonomy, expr).sort((left, right) => left.key.localeCompare(right.key));
|
|
430
|
+
for (const child of children) {
|
|
431
|
+
visit(child);
|
|
432
|
+
}
|
|
433
|
+
postorder.push(expr);
|
|
434
|
+
};
|
|
435
|
+
for (const root of roots) {
|
|
436
|
+
visit(root);
|
|
437
|
+
}
|
|
438
|
+
return postorder.find((expr) => this.directParentsOf(taxonomy, expr).length > 1);
|
|
439
|
+
}
|
|
440
|
+
named(iri) {
|
|
441
|
+
return { kind: 'named', iri, key: `N:${iri}` };
|
|
442
|
+
}
|
|
443
|
+
complement(expr) {
|
|
444
|
+
if (expr.kind === 'universal') {
|
|
445
|
+
return EMPTY;
|
|
446
|
+
}
|
|
447
|
+
if (expr.kind === 'empty') {
|
|
448
|
+
return UNIVERSAL;
|
|
449
|
+
}
|
|
450
|
+
if (expr.kind === 'complement') {
|
|
451
|
+
return expr.operand;
|
|
452
|
+
}
|
|
453
|
+
return { kind: 'complement', operand: expr, key: `C:${expr.key}` };
|
|
454
|
+
}
|
|
455
|
+
intersection(left, right) {
|
|
456
|
+
return this.combine('intersection', left, right);
|
|
457
|
+
}
|
|
458
|
+
difference(left, right) {
|
|
459
|
+
if (left.kind === 'empty' || right.kind === 'universal' || left.key === right.key) {
|
|
460
|
+
return EMPTY;
|
|
461
|
+
}
|
|
462
|
+
if (right.kind === 'empty') {
|
|
463
|
+
return left;
|
|
464
|
+
}
|
|
465
|
+
return this.intersection(left, this.complement(right));
|
|
466
|
+
}
|
|
467
|
+
combine(kind, left, right) {
|
|
468
|
+
const isIntersection = kind === 'intersection';
|
|
469
|
+
if (left.key === right.key) {
|
|
470
|
+
return left;
|
|
471
|
+
}
|
|
472
|
+
if (isIntersection && (left.kind === 'empty' || right.kind === 'empty')) {
|
|
473
|
+
return EMPTY;
|
|
474
|
+
}
|
|
475
|
+
if (!isIntersection && (left.kind === 'universal' || right.kind === 'universal')) {
|
|
476
|
+
return UNIVERSAL;
|
|
477
|
+
}
|
|
478
|
+
if (isIntersection && left.kind === 'universal') {
|
|
479
|
+
return right;
|
|
480
|
+
}
|
|
481
|
+
if (isIntersection && right.kind === 'universal') {
|
|
482
|
+
return left;
|
|
483
|
+
}
|
|
484
|
+
if (!isIntersection && left.kind === 'empty') {
|
|
485
|
+
return right;
|
|
486
|
+
}
|
|
487
|
+
if (!isIntersection && right.kind === 'empty') {
|
|
488
|
+
return left;
|
|
489
|
+
}
|
|
490
|
+
const operands = new Map();
|
|
491
|
+
const addOperand = (expr) => {
|
|
492
|
+
if (expr.kind === kind) {
|
|
493
|
+
for (const operand of expr.operands) {
|
|
494
|
+
operands.set(operand.key, operand);
|
|
495
|
+
}
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
operands.set(expr.key, expr);
|
|
499
|
+
};
|
|
500
|
+
addOperand(left);
|
|
501
|
+
addOperand(right);
|
|
502
|
+
const sorted = [...operands.values()].sort((a, b) => a.key.localeCompare(b.key));
|
|
503
|
+
if (sorted.length === 1) {
|
|
504
|
+
return sorted[0];
|
|
505
|
+
}
|
|
506
|
+
if (isIntersection) {
|
|
507
|
+
const operandKeys = new Set(sorted.map((expr) => expr.key));
|
|
508
|
+
if (sorted.some((expr) => expr.kind === 'complement' && operandKeys.has(expr.operand.key))) {
|
|
509
|
+
return EMPTY;
|
|
510
|
+
}
|
|
511
|
+
return {
|
|
512
|
+
kind: 'intersection',
|
|
513
|
+
operands: sorted,
|
|
514
|
+
key: `I:${sorted.map((expr) => expr.key).join('&')}`,
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
return {
|
|
518
|
+
kind: 'union',
|
|
519
|
+
operands: sorted,
|
|
520
|
+
key: `U:${sorted.map((expr) => expr.key).join('|')}`,
|
|
521
|
+
};
|
|
522
|
+
}
|
|
523
|
+
memberIri(member) {
|
|
524
|
+
const namespace = normalizeNamespace(member.$container.namespace);
|
|
525
|
+
return `${namespace}${member.name}`;
|
|
526
|
+
}
|
|
527
|
+
importedOntologyNamespace(ontology) {
|
|
528
|
+
const namespace = ontology.namespace;
|
|
529
|
+
return typeof namespace === 'string' && namespace.length > 0
|
|
530
|
+
? normalizeNamespace(namespace)
|
|
531
|
+
: undefined;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
function normalizeNamespace(value) {
|
|
535
|
+
return value.replace(/^<|>$/g, '');
|
|
536
|
+
}
|
|
537
|
+
//# sourceMappingURL=owl-closure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owl-closure.js","sourceRoot":"","sources":["../../src/owl/owl-closure.ts"],"names":[],"mappings":"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"}
|
package/out/owl/owl-service.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type LangiumDocument } from 'langium';
|
|
2
|
-
import type
|
|
2
|
+
import { type Quad } from 'n3';
|
|
3
3
|
import { type OmlServices } from '@oml/language';
|
|
4
4
|
import { type ChainingResult } from './owl-abox.js';
|
|
5
5
|
import type { OwlImportGraph, OwlReasoningDependencies, OwlSparqlService, OwlStore } from './owl-interfaces.js';
|
|
@@ -58,6 +58,9 @@ export declare class ReasoningService {
|
|
|
58
58
|
private isModelLoaded;
|
|
59
59
|
private ensureOwnTboxIndexesForDependencies;
|
|
60
60
|
private notifySemanticChanged;
|
|
61
|
+
private mapOntologyToQuads;
|
|
62
|
+
private createVocabularyBundleClosureBuilder;
|
|
63
|
+
private refreshDependentVocabularyBundleModels;
|
|
61
64
|
}
|
|
62
65
|
export interface PreparedReasonedModel {
|
|
63
66
|
modelUri: string;
|