@oml/language 0.7.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.
Files changed (91) hide show
  1. package/README.md +44 -0
  2. package/out/oml/generated/ast.d.ts +2109 -0
  3. package/out/oml/generated/ast.js +1807 -0
  4. package/out/oml/generated/ast.js.map +1 -0
  5. package/out/oml/generated/grammar.d.ts +6 -0
  6. package/out/oml/generated/grammar.js +6885 -0
  7. package/out/oml/generated/grammar.js.map +1 -0
  8. package/out/oml/generated/module.d.ts +13 -0
  9. package/out/oml/generated/module.js +21 -0
  10. package/out/oml/generated/module.js.map +1 -0
  11. package/out/oml/index.d.ts +17 -0
  12. package/out/oml/index.js +19 -0
  13. package/out/oml/index.js.map +1 -0
  14. package/out/oml/oml-candidates.d.ts +27 -0
  15. package/out/oml/oml-candidates.js +146 -0
  16. package/out/oml/oml-candidates.js.map +1 -0
  17. package/out/oml/oml-code-actions.d.ts +6 -0
  18. package/out/oml/oml-code-actions.js +79 -0
  19. package/out/oml/oml-code-actions.js.map +1 -0
  20. package/out/oml/oml-completion.d.ts +50 -0
  21. package/out/oml/oml-completion.js +188 -0
  22. package/out/oml/oml-completion.js.map +1 -0
  23. package/out/oml/oml-converter.d.ts +10 -0
  24. package/out/oml/oml-converter.js +62 -0
  25. package/out/oml/oml-converter.js.map +1 -0
  26. package/out/oml/oml-document-validator.d.ts +10 -0
  27. package/out/oml/oml-document-validator.js +31 -0
  28. package/out/oml/oml-document-validator.js.map +1 -0
  29. package/out/oml/oml-document.d.ts +9 -0
  30. package/out/oml/oml-document.js +18 -0
  31. package/out/oml/oml-document.js.map +1 -0
  32. package/out/oml/oml-edit.d.ts +72 -0
  33. package/out/oml/oml-edit.js +1155 -0
  34. package/out/oml/oml-edit.js.map +1 -0
  35. package/out/oml/oml-formatter.d.ts +22 -0
  36. package/out/oml/oml-formatter.js +357 -0
  37. package/out/oml/oml-formatter.js.map +1 -0
  38. package/out/oml/oml-hover.d.ts +13 -0
  39. package/out/oml/oml-hover.js +71 -0
  40. package/out/oml/oml-hover.js.map +1 -0
  41. package/out/oml/oml-index-manager.d.ts +10 -0
  42. package/out/oml/oml-index-manager.js +48 -0
  43. package/out/oml/oml-index-manager.js.map +1 -0
  44. package/out/oml/oml-index.d.ts +20 -0
  45. package/out/oml/oml-index.js +133 -0
  46. package/out/oml/oml-index.js.map +1 -0
  47. package/out/oml/oml-module.d.ts +42 -0
  48. package/out/oml/oml-module.js +76 -0
  49. package/out/oml/oml-module.js.map +1 -0
  50. package/out/oml/oml-rename.d.ts +14 -0
  51. package/out/oml/oml-rename.js +114 -0
  52. package/out/oml/oml-rename.js.map +1 -0
  53. package/out/oml/oml-scope.d.ts +30 -0
  54. package/out/oml/oml-scope.js +225 -0
  55. package/out/oml/oml-scope.js.map +1 -0
  56. package/out/oml/oml-serializer.d.ts +2 -0
  57. package/out/oml/oml-serializer.js +883 -0
  58. package/out/oml/oml-serializer.js.map +1 -0
  59. package/out/oml/oml-utils.d.ts +53 -0
  60. package/out/oml/oml-utils.js +241 -0
  61. package/out/oml/oml-utils.js.map +1 -0
  62. package/out/oml/oml-validator.d.ts +49 -0
  63. package/out/oml/oml-validator.js +668 -0
  64. package/out/oml/oml-validator.js.map +1 -0
  65. package/out/oml/oml-workspace.d.ts +23 -0
  66. package/out/oml/oml-workspace.js +68 -0
  67. package/out/oml/oml-workspace.js.map +1 -0
  68. package/package.json +50 -0
  69. package/src/oml/generated/ast.ts +2641 -0
  70. package/src/oml/generated/grammar.ts +6887 -0
  71. package/src/oml/generated/module.ts +25 -0
  72. package/src/oml/index.ts +19 -0
  73. package/src/oml/oml-candidates.ts +176 -0
  74. package/src/oml/oml-code-actions.ts +120 -0
  75. package/src/oml/oml-completion.ts +222 -0
  76. package/src/oml/oml-converter.ts +66 -0
  77. package/src/oml/oml-document-validator.ts +39 -0
  78. package/src/oml/oml-document.ts +24 -0
  79. package/src/oml/oml-edit.ts +1292 -0
  80. package/src/oml/oml-formatter.ts +390 -0
  81. package/src/oml/oml-hover.ts +93 -0
  82. package/src/oml/oml-index-manager.ts +56 -0
  83. package/src/oml/oml-index.ts +145 -0
  84. package/src/oml/oml-module.ts +105 -0
  85. package/src/oml/oml-rename.ts +140 -0
  86. package/src/oml/oml-scope.ts +279 -0
  87. package/src/oml/oml-serializer.ts +1080 -0
  88. package/src/oml/oml-utils.ts +294 -0
  89. package/src/oml/oml-validator.ts +725 -0
  90. package/src/oml/oml-workspace.ts +81 -0
  91. package/src/oml/oml.langium +594 -0
@@ -0,0 +1,225 @@
1
+ // Copyright (c) 2026 Modelware. All rights reserved.
2
+ /**
3
+ * OML Scope Provider
4
+ * Handles cross-file reference resolution, IRI abbreviation, and qualified name scoping
5
+ *
6
+ * Provides enhanced scope resolution for references across imported ontologies and abbreviated IRI names.
7
+ */
8
+ import { AstUtils, DefaultScopeComputation, DefaultScopeProvider, EMPTY_SCOPE, URI, stream } from 'langium';
9
+ import { isOntology, isRelationBase, isRelationEntity } from './generated/ast.js';
10
+ import { getOntologyModelIndex } from './oml-index.js';
11
+ import { normalizeNamespace, } from './oml-utils.js';
12
+ export class OmlScopeComputation extends DefaultScopeComputation {
13
+ constructor(services) {
14
+ super(services);
15
+ }
16
+ async collectExportedSymbols(document, cancelToken) {
17
+ let exported;
18
+ try {
19
+ exported = await super.collectExportedSymbols(document, cancelToken);
20
+ }
21
+ catch {
22
+ return [];
23
+ }
24
+ const root = document.parseResult?.value;
25
+ if (!root || !isOntology(root)) {
26
+ return exported;
27
+ }
28
+ const namespace = (root.namespace ?? '').toString().replace(/^<|>$/g, '').trim();
29
+ if (!namespace) {
30
+ return exported;
31
+ }
32
+ const exportedNames = new Set(exported.filter((desc) => desc.node === root).map((desc) => desc.name));
33
+ const rawName = `<${namespace}>`;
34
+ if (!exportedNames.has(rawName)) {
35
+ exported.push(this.descriptions.createDescription(root, rawName, document));
36
+ }
37
+ // Default Langium exports only the root and its direct children. OML also needs
38
+ // nested forward/reverse relations exported so workspace-wide completion and
39
+ // cross-document linking can resolve them as SemanticProperty references.
40
+ const nestedExportKeys = new Set(exported.map((desc) => `${desc.path}|${desc.name}`));
41
+ const statements = root.ownedStatements ?? [];
42
+ for (const statement of statements) {
43
+ if (!statement || typeof statement !== 'object') {
44
+ continue;
45
+ }
46
+ const forwardRelation = statement.forwardRelation;
47
+ if (forwardRelation?.name) {
48
+ const key = `${document.uri.toString()}#${forwardRelation.$cstNode?.offset ?? ''}|${forwardRelation.name}`;
49
+ if (!nestedExportKeys.has(key)) {
50
+ exported.push(this.descriptions.createDescription(forwardRelation, forwardRelation.name, document));
51
+ nestedExportKeys.add(key);
52
+ }
53
+ }
54
+ if (isRelationBase(statement) && statement.reverseRelation?.name) {
55
+ const reverseRelation = statement.reverseRelation;
56
+ const key = `${document.uri.toString()}#${reverseRelation.$cstNode?.offset ?? ''}|${reverseRelation.name}`;
57
+ if (!nestedExportKeys.has(key)) {
58
+ exported.push(this.descriptions.createDescription(reverseRelation, reverseRelation.name, document));
59
+ nestedExportKeys.add(key);
60
+ }
61
+ }
62
+ }
63
+ return exported;
64
+ }
65
+ }
66
+ /**
67
+ * OML-specific scope provider for resolving cross-document references.
68
+ */
69
+ export class OmlScopeProvider extends DefaultScopeProvider {
70
+ constructor(services) {
71
+ super(services);
72
+ this.services = services;
73
+ }
74
+ getScope(context) {
75
+ let referenceType = '';
76
+ // Determine the expected reference type
77
+ try {
78
+ referenceType = this.reflection.getReferenceType(context);
79
+ }
80
+ catch {
81
+ return EMPTY_SCOPE;
82
+ }
83
+ const document = AstUtils.getDocument(context.container);
84
+ const localSymbols = document?.localSymbols;
85
+ // Linking should stay local/import-based. Workspace-global scope is only for ontology imports.
86
+ let result = referenceType === 'Ontology'
87
+ ? this.getGlobalScope(referenceType, context)
88
+ : EMPTY_SCOPE;
89
+ // Add lexical local symbols (same behavior as DefaultScopeProvider, minus workspace-global fallback).
90
+ if (localSymbols) {
91
+ const scopes = [];
92
+ let currentNode = context.container;
93
+ do {
94
+ if (localSymbols.has(currentNode)) {
95
+ scopes.push(localSymbols.getStream(currentNode).filter((desc) => this.reflection.isSubtype(desc.type, referenceType)));
96
+ }
97
+ currentNode = currentNode.$container;
98
+ } while (currentNode);
99
+ for (let i = scopes.length - 1; i >= 0; i--) {
100
+ result = this.createScope(scopes[i], result);
101
+ }
102
+ }
103
+ // Enhance with cross-document IRI abbreviations from imports
104
+ const ontology = document?.parseResult?.value;
105
+ if (ontology) {
106
+ result = this.addCurrentOntologyEntries(result, document, ontology);
107
+ result = this.addImportedOntologyEntries(result, ontology);
108
+ }
109
+ return result;
110
+ }
111
+ getExportedSymbols(ontology) {
112
+ const symbols = [];
113
+ const statements = ontology.ownedStatements || ontology.ownedMembers || [];
114
+ for (const statement of statements) {
115
+ if (!statement || typeof statement !== 'object') {
116
+ continue;
117
+ }
118
+ if ('name' in statement && statement.name) {
119
+ symbols.push({ node: statement, name: statement.name, relationAlias: false });
120
+ }
121
+ if (isRelationEntity(statement) && statement.forwardRelation?.name) {
122
+ symbols.push({
123
+ node: statement.forwardRelation,
124
+ name: statement.forwardRelation.name,
125
+ relationAlias: true
126
+ });
127
+ }
128
+ if (isRelationBase(statement) && statement.reverseRelation?.name) {
129
+ symbols.push({
130
+ node: statement.reverseRelation,
131
+ name: statement.reverseRelation.name,
132
+ relationAlias: true
133
+ });
134
+ }
135
+ }
136
+ return symbols;
137
+ }
138
+ getImportNamespace(imp) {
139
+ // IMPORTANT: never dereference `imp.imported.ref` while building scopes,
140
+ // otherwise linking can recursively try to resolve the same import.
141
+ const raw = imp.imported?.$refText
142
+ ?? imp?.imported
143
+ ?? '';
144
+ return typeof raw === 'string' ? raw.replace(/^<|>$/g, '') : '';
145
+ }
146
+ resolveOntologyDocument(modelUri) {
147
+ const document = this.services.shared.workspace.LangiumDocuments.getDocument(URI.parse(modelUri));
148
+ if (!document) {
149
+ return undefined;
150
+ }
151
+ const root = document.parseResult?.value;
152
+ if (!root || !isOntology(root)) {
153
+ return undefined;
154
+ }
155
+ const namespace = (root.namespace ?? '').toString().replace(/^<|>$/g, '');
156
+ if (!namespace) {
157
+ return undefined;
158
+ }
159
+ return {
160
+ document,
161
+ ontology: root,
162
+ namespace
163
+ };
164
+ }
165
+ findOntologyByNamespace(normalizedNamespace) {
166
+ const index = getOntologyModelIndex(this.services.shared);
167
+ const modelUri = index.resolveModelUri(normalizedNamespace);
168
+ return modelUri ? this.resolveOntologyDocument(modelUri) : undefined;
169
+ }
170
+ resolveImports(ontology) {
171
+ const imports = (ontology.ownedImports ?? []);
172
+ const resolved = [];
173
+ for (const imp of imports) {
174
+ const ns = this.getImportNamespace(imp);
175
+ const normalized = normalizeNamespace(ns);
176
+ if (!normalized) {
177
+ continue;
178
+ }
179
+ const target = this.findOntologyByNamespace(normalized);
180
+ if (!target) {
181
+ continue;
182
+ }
183
+ resolved.push({ prefix: imp.prefix, target });
184
+ }
185
+ return resolved;
186
+ }
187
+ addDescription(scope, node, name, document) {
188
+ try {
189
+ const desc = this.descriptions.createDescription(node, name, document);
190
+ return this.createScope(stream([desc]), scope);
191
+ }
192
+ catch {
193
+ return scope;
194
+ }
195
+ }
196
+ addCurrentOntologyEntries(scope, document, ontology) {
197
+ let result = scope;
198
+ const prefix = ontology.prefix;
199
+ for (const symbol of this.getExportedSymbols(ontology)) {
200
+ if (prefix) {
201
+ result = this.addDescription(result, symbol.node, `${prefix}:${symbol.name}`, document);
202
+ }
203
+ if (symbol.relationAlias) {
204
+ result = this.addDescription(result, symbol.node, symbol.name, document);
205
+ }
206
+ }
207
+ return result;
208
+ }
209
+ addImportedOntologyEntries(scope, current) {
210
+ let result = scope;
211
+ for (const resolvedImport of this.resolveImports(current)) {
212
+ const imported = resolvedImport.target;
213
+ const importedSymbols = this.getExportedSymbols(imported.ontology);
214
+ for (const symbol of importedSymbols) {
215
+ if (resolvedImport.prefix) {
216
+ result = this.addDescription(result, symbol.node, `${resolvedImport.prefix}:${symbol.name}`, imported.document);
217
+ }
218
+ const separator = imported.namespace.endsWith('#') || imported.namespace.endsWith('/') ? '' : '#';
219
+ result = this.addDescription(result, symbol.node, `<${imported.namespace}${separator}${symbol.name}>`, imported.document);
220
+ }
221
+ }
222
+ return result;
223
+ }
224
+ }
225
+ //# sourceMappingURL=oml-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oml-scope.js","sourceRoot":"","sources":["../../src/oml/oml-scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Ontology } from './generated/ast.js';
2
+ export declare const serializeOntology: (ontology: Ontology) => string;