@oml/cli 0.14.15 → 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/cli.js +2 -1
- package/out/cli.js.map +1 -1
- package/out/commands/export.js +8 -0
- package/out/commands/export.js.map +1 -1
- package/out/commands/reason.js +125 -121
- package/out/commands/reason.js.map +1 -1
- package/out/commands/render.js +8 -0
- package/out/commands/render.js.map +1 -1
- package/out/commands/validate.js +48 -4
- package/out/commands/validate.js.map +1 -1
- package/package.json +2 -2
- package/src/cli.ts +2 -1
- package/src/commands/export.ts +12 -0
- package/src/commands/reason.ts +135 -130
- package/src/commands/render.ts +12 -0
- package/src/commands/validate.ts +56 -4
package/out/cli.js
CHANGED
|
@@ -175,7 +175,8 @@ export async function runCli(argv = process.argv) {
|
|
|
175
175
|
.option('-f, --format <ext>', 'RDF format extension: ttl, trig, nt, nq, or n3', 'ttl')
|
|
176
176
|
.option('--clean', 'remove output folder before reason (only when --owl is provided)')
|
|
177
177
|
.option('--pretty', 'pretty-print Turtle/TriG output with blank lines between top-level blocks (only when --owl is provided)')
|
|
178
|
-
.option('-
|
|
178
|
+
.option('-u, --unique-names-assumption [value]', 'enable or disable the unique names assumption', parseBooleanOption, true)
|
|
179
|
+
.option('-e, --explanation [value]', 'enable or disable inconsistency explanations', parseBooleanOption, false)
|
|
179
180
|
.description('run workspace consistency checks (or persist entailments with --owl)')
|
|
180
181
|
.action(async (opts) => {
|
|
181
182
|
const done = trackCommand('oml-reason');
|
package/out/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/out/commands/export.js
CHANGED
|
@@ -3,6 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
import { failCli } from '../cli-error.js';
|
|
5
5
|
import { formatDuration } from '../util.js';
|
|
6
|
+
import { printLintDiagnostics } from './lint.js';
|
|
6
7
|
import { restPost } from './server/rest.js';
|
|
7
8
|
function normalizeRdfFormat(value) {
|
|
8
9
|
const normalized = String(value ?? 'ttl').trim().toLowerCase();
|
|
@@ -21,6 +22,13 @@ export const exportAction = async (opts) => {
|
|
|
21
22
|
pretty: opts.pretty === true,
|
|
22
23
|
}, opts.authToken);
|
|
23
24
|
if (!result.success) {
|
|
25
|
+
printLintDiagnostics({
|
|
26
|
+
success: false,
|
|
27
|
+
filesChecked: Number(result.filesChecked ?? 0),
|
|
28
|
+
errors: Number(result.errors ?? 0),
|
|
29
|
+
warnings: Number(result.warnings ?? 0),
|
|
30
|
+
problems: result.problems,
|
|
31
|
+
});
|
|
24
32
|
failCli(chalk.red(result.error?.trim() || 'export failed.'));
|
|
25
33
|
}
|
|
26
34
|
if (result.filesWritten <= 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAoB,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAuB5C,SAAS,kBAAkB,CAAC,KAAyB;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/D,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC7F,OAAO,UAAU,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAmB,EAAiB,EAAE;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,QAAQ,CACzB,YAAY,EACZ;QACI,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;KACJ,EAC5B,IAAI,CAAC,SAAS,CACjB,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,oBAAoB,CAAC;YACjB,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;YAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;YAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;YACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC5B,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACtE,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CACnB,WAAW,MAAM,CAAC,YAAY,4BAA4B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,CAC7K,CAAC,CAAC;AACP,CAAC,CAAC"}
|
package/out/commands/reason.js
CHANGED
|
@@ -5,10 +5,11 @@ import * as fs from 'node:fs/promises';
|
|
|
5
5
|
import * as os from 'node:os';
|
|
6
6
|
import * as path from 'node:path';
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
8
|
-
import { Parser, Writer } from 'n3';
|
|
9
8
|
import { failCli } from '../cli-error.js';
|
|
10
9
|
import { formatDuration } from '../util.js';
|
|
10
|
+
import { printLintDiagnostics } from './lint.js';
|
|
11
11
|
import { restPost } from './server/rest.js';
|
|
12
|
+
const OWL_IMPORTS_IRI = '<http://www.w3.org/2002/07/owl#imports>';
|
|
12
13
|
function normalizeRdfFormat(value) {
|
|
13
14
|
const normalized = String(value ?? 'ttl').trim().toLowerCase();
|
|
14
15
|
if (normalized === 'trig' || normalized === 'nt' || normalized === 'nq' || normalized === 'n3') {
|
|
@@ -16,42 +17,6 @@ function normalizeRdfFormat(value) {
|
|
|
16
17
|
}
|
|
17
18
|
return 'ttl';
|
|
18
19
|
}
|
|
19
|
-
function rdfWriterFormat(format) {
|
|
20
|
-
if (format === 'ttl') {
|
|
21
|
-
return 'text/turtle';
|
|
22
|
-
}
|
|
23
|
-
if (format === 'trig') {
|
|
24
|
-
return 'application/trig';
|
|
25
|
-
}
|
|
26
|
-
if (format === 'nt') {
|
|
27
|
-
return 'N-Triples';
|
|
28
|
-
}
|
|
29
|
-
if (format === 'nq') {
|
|
30
|
-
return 'N-Quads';
|
|
31
|
-
}
|
|
32
|
-
return 'application/n3';
|
|
33
|
-
}
|
|
34
|
-
function rdfParserFormat(format) {
|
|
35
|
-
return rdfWriterFormat(format);
|
|
36
|
-
}
|
|
37
|
-
async function parseRdf(serialized, format) {
|
|
38
|
-
const parser = new Parser({ format: rdfParserFormat(format) });
|
|
39
|
-
return parser.parse(serialized);
|
|
40
|
-
}
|
|
41
|
-
async function serializeRdf(quads, format, pretty) {
|
|
42
|
-
const writer = new Writer({ format: rdfWriterFormat(format) });
|
|
43
|
-
writer.addQuads(quads);
|
|
44
|
-
const serialized = await new Promise((resolve, reject) => {
|
|
45
|
-
writer.end((error, result) => {
|
|
46
|
-
if (error) {
|
|
47
|
-
reject(error);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
resolve(result);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
return pretty ? prettyPrintRdf(serialized, format) : serialized;
|
|
54
|
-
}
|
|
55
20
|
function prettyPrintRdf(serialized, format) {
|
|
56
21
|
if (format !== 'ttl' && format !== 'trig') {
|
|
57
22
|
return serialized;
|
|
@@ -61,7 +26,7 @@ function prettyPrintRdf(serialized, format) {
|
|
|
61
26
|
for (let i = 0; i < lines.length; i += 1) {
|
|
62
27
|
const line = lines[i];
|
|
63
28
|
out.push(line);
|
|
64
|
-
if (line.trim()
|
|
29
|
+
if (line.trim().endsWith('.')) {
|
|
65
30
|
const next = lines[i + 1];
|
|
66
31
|
if (next !== undefined && next.trim().length > 0) {
|
|
67
32
|
out.push('');
|
|
@@ -70,62 +35,102 @@ function prettyPrintRdf(serialized, format) {
|
|
|
70
35
|
}
|
|
71
36
|
return out.join('\n');
|
|
72
37
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
38
|
+
function extractImports(serialized) {
|
|
39
|
+
const imports = new Set();
|
|
40
|
+
const statementPattern = /(?:<http:\/\/www\.w3\.org\/2002\/07\/owl#imports>|owl:imports)\s+([^;.]*)[;.]/gms;
|
|
41
|
+
let statementMatch;
|
|
42
|
+
while ((statementMatch = statementPattern.exec(serialized)) !== null) {
|
|
43
|
+
const tail = statementMatch[1] ?? '';
|
|
44
|
+
const iriPattern = /<([^>]+)>/g;
|
|
45
|
+
let iriMatch;
|
|
46
|
+
while ((iriMatch = iriPattern.exec(tail)) !== null) {
|
|
47
|
+
const iri = iriMatch[1]?.trim();
|
|
48
|
+
if (iri) {
|
|
49
|
+
imports.add(iri);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
76
52
|
}
|
|
77
|
-
|
|
78
|
-
|
|
53
|
+
// Handle compact single-line N-Triples cases defensively.
|
|
54
|
+
if (imports.size === 0 && serialized.includes(OWL_IMPORTS_IRI)) {
|
|
55
|
+
const linePattern = /<http:\/\/www\.w3\.org\/2002\/07\/owl#imports>\s+<([^>]+)>/g;
|
|
56
|
+
let lineMatch;
|
|
57
|
+
while ((lineMatch = linePattern.exec(serialized)) !== null) {
|
|
58
|
+
const iri = lineMatch[1]?.trim();
|
|
59
|
+
if (iri) {
|
|
60
|
+
imports.add(iri);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
79
63
|
}
|
|
80
|
-
|
|
81
|
-
return await serializeRdf(quads, targetFormat, pretty);
|
|
64
|
+
return Array.from(imports);
|
|
82
65
|
}
|
|
83
|
-
function
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
66
|
+
function sortFilesLeafToRoot(files) {
|
|
67
|
+
const filesByOntologyIri = new Map();
|
|
68
|
+
for (const file of files) {
|
|
69
|
+
filesByOntologyIri.set(file.ontologyIri, file);
|
|
70
|
+
}
|
|
71
|
+
const importsByOntologyIri = new Map();
|
|
72
|
+
for (const file of files) {
|
|
73
|
+
importsByOntologyIri.set(file.ontologyIri, extractImports(file.content));
|
|
74
|
+
}
|
|
75
|
+
const sorted = [];
|
|
76
|
+
const state = new Map();
|
|
77
|
+
const sortedRoots = [...filesByOntologyIri.keys()].sort((a, b) => a.localeCompare(b));
|
|
78
|
+
const visit = (ontologyIri) => {
|
|
79
|
+
const current = state.get(ontologyIri) ?? 0;
|
|
80
|
+
if (current === 2) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (current === 1) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
state.set(ontologyIri, 1);
|
|
87
|
+
for (const importedIri of importsByOntologyIri.get(ontologyIri) ?? []) {
|
|
88
|
+
if (filesByOntologyIri.has(importedIri)) {
|
|
89
|
+
visit(importedIri);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
state.set(ontologyIri, 2);
|
|
93
|
+
const file = filesByOntologyIri.get(ontologyIri);
|
|
94
|
+
if (file) {
|
|
95
|
+
sorted.push(file);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
for (const ontologyIri of sortedRoots) {
|
|
99
|
+
visit(ontologyIri);
|
|
94
100
|
}
|
|
101
|
+
return sorted;
|
|
102
|
+
}
|
|
103
|
+
function resolveEntailmentsPath(uri) {
|
|
95
104
|
const trimmed = uri.trim();
|
|
96
105
|
if (trimmed.startsWith('file://')) {
|
|
97
|
-
|
|
98
|
-
return fileURLToPath(trimmed);
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
return undefined;
|
|
102
|
-
}
|
|
106
|
+
return fileURLToPath(trimmed);
|
|
103
107
|
}
|
|
104
108
|
return trimmed;
|
|
105
109
|
}
|
|
106
|
-
function
|
|
107
|
-
const
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return 'nt';
|
|
113
|
-
}
|
|
114
|
-
if (extension === '.nq') {
|
|
115
|
-
return 'nq';
|
|
116
|
-
}
|
|
117
|
-
if (extension === '.n3') {
|
|
118
|
-
return 'n3';
|
|
110
|
+
function modelUriToRelativePath(modelUri) {
|
|
111
|
+
const trimmed = modelUri.trim();
|
|
112
|
+
if (trimmed.startsWith('file://')) {
|
|
113
|
+
const absolute = fileURLToPath(trimmed);
|
|
114
|
+
const relative = path.relative(process.cwd(), absolute);
|
|
115
|
+
return relative.length > 0 ? relative : path.basename(absolute);
|
|
119
116
|
}
|
|
120
|
-
return
|
|
117
|
+
return trimmed;
|
|
121
118
|
}
|
|
122
119
|
export const reasonAction = async (opts) => {
|
|
123
120
|
const startedAt = Date.now();
|
|
124
121
|
const outputFormat = normalizeRdfFormat(opts.format);
|
|
125
122
|
const pretty = opts.pretty === true;
|
|
126
|
-
const assertions = await restPost('/v0/assertions', {}, opts.authToken);
|
|
123
|
+
const assertions = await restPost('/v0/assertions', { format: outputFormat, pretty }, opts.authToken);
|
|
127
124
|
if (!assertions.success) {
|
|
128
|
-
|
|
125
|
+
printLintDiagnostics({
|
|
126
|
+
success: false,
|
|
127
|
+
filesChecked: Number(assertions.filesChecked ?? 0),
|
|
128
|
+
errors: Number(assertions.errors ?? 0),
|
|
129
|
+
warnings: Number(assertions.warnings ?? 0),
|
|
130
|
+
problems: assertions.problems,
|
|
131
|
+
});
|
|
132
|
+
const summary = assertions.error?.trim() || 'reason failed.';
|
|
133
|
+
failCli(chalk.red(summary));
|
|
129
134
|
}
|
|
130
135
|
if (assertions.files.length === 0) {
|
|
131
136
|
console.log(chalk.yellow(`No .oml files found under ${path.resolve('.')}.`));
|
|
@@ -134,85 +139,84 @@ export const reasonAction = async (opts) => {
|
|
|
134
139
|
const outputDir = typeof opts.owl === 'string' && opts.owl.trim().length > 0
|
|
135
140
|
? path.resolve(opts.owl.trim())
|
|
136
141
|
: undefined;
|
|
137
|
-
const tempRoot =
|
|
142
|
+
const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'oml-reason-cli-'));
|
|
138
143
|
if (outputDir) {
|
|
139
144
|
if (opts.clean === true) {
|
|
140
145
|
await fs.rm(outputDir, { recursive: true, force: true });
|
|
141
146
|
}
|
|
142
|
-
await fs.mkdir(outputDir, { recursive: true });
|
|
143
147
|
}
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
let
|
|
148
|
+
const orderedFiles = sortFilesLeafToRoot(assertions.files);
|
|
149
|
+
let firstInconsistent;
|
|
150
|
+
let firstFailure;
|
|
151
|
+
let entailmentsProduced = 0;
|
|
147
152
|
try {
|
|
148
|
-
for (const file of
|
|
153
|
+
for (const file of orderedFiles) {
|
|
149
154
|
const target = path.join(tempRoot, file.path);
|
|
150
155
|
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
151
|
-
await fs.writeFile(target, file.content, 'utf-8');
|
|
156
|
+
await fs.writeFile(target, prettyPrintRdf(file.content, outputFormat), 'utf-8');
|
|
152
157
|
}
|
|
153
|
-
for (const file of
|
|
158
|
+
for (const file of orderedFiles) {
|
|
154
159
|
const target = path.join(tempRoot, file.path);
|
|
155
160
|
try {
|
|
156
161
|
const result = await checkConsistency({
|
|
157
162
|
input: target,
|
|
158
163
|
inputRoot: tempRoot,
|
|
159
|
-
explanations: opts.explanation
|
|
160
|
-
uniqueNamesAssumption: opts.uniqueNamesAssumption
|
|
164
|
+
explanations: opts.explanation === true,
|
|
165
|
+
uniqueNamesAssumption: opts.uniqueNamesAssumption !== false,
|
|
161
166
|
checkOnly: outputDir === undefined,
|
|
162
167
|
profile: opts.profile === true,
|
|
163
168
|
timeout: typeof opts.timeout === 'number' && Number.isFinite(opts.timeout) && opts.timeout > 0
|
|
164
169
|
? Math.floor(opts.timeout)
|
|
165
170
|
: 120000,
|
|
166
171
|
});
|
|
172
|
+
if (!result.consistent) {
|
|
173
|
+
firstInconsistent = {
|
|
174
|
+
file,
|
|
175
|
+
result: result,
|
|
176
|
+
};
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
167
179
|
if (outputDir) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
const assertedContent = await convertSerializedRdf(file.content, 'nt', outputFormat, pretty);
|
|
171
|
-
await fs.writeFile(assertedArtifactPath, assertedContent, 'utf-8');
|
|
172
|
-
const entailmentsSourcePath = resolveEntailmentsSourcePath(result.entailmentsUri);
|
|
173
|
-
if (!entailmentsSourcePath) {
|
|
174
|
-
throw new Error('Reasoner did not return an entailments URI.');
|
|
180
|
+
if (typeof result.entailmentsUri !== 'string' || result.entailmentsUri.trim().length === 0) {
|
|
181
|
+
throw new Error('Reasoner returned a consistent result but did not provide entailments URI.');
|
|
175
182
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
if (!result.consistent) {
|
|
184
|
-
inconsistent.push({
|
|
185
|
-
modelUri: file.modelUri,
|
|
186
|
-
validationWarnings: Array.isArray(result.reports) ? result.reports : [],
|
|
187
|
-
});
|
|
183
|
+
if (pretty) {
|
|
184
|
+
const entailmentsPath = resolveEntailmentsPath(result.entailmentsUri);
|
|
185
|
+
const entailmentsContent = await fs.readFile(entailmentsPath, 'utf-8');
|
|
186
|
+
await fs.writeFile(entailmentsPath, prettyPrintRdf(entailmentsContent, outputFormat), 'utf-8');
|
|
187
|
+
}
|
|
188
|
+
entailmentsProduced += 1;
|
|
188
189
|
}
|
|
189
190
|
}
|
|
190
191
|
catch (error) {
|
|
191
|
-
|
|
192
|
+
firstFailure = {
|
|
192
193
|
modelUri: file.modelUri,
|
|
193
194
|
error: error instanceof Error ? error.message : String(error),
|
|
194
|
-
}
|
|
195
|
+
};
|
|
196
|
+
break;
|
|
195
197
|
}
|
|
196
198
|
}
|
|
197
199
|
}
|
|
198
200
|
finally {
|
|
199
|
-
if (!
|
|
200
|
-
await fs.
|
|
201
|
+
if (outputDir && !firstFailure && !firstInconsistent) {
|
|
202
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
203
|
+
await fs.cp(tempRoot, outputDir, { recursive: true, force: true });
|
|
201
204
|
}
|
|
205
|
+
await fs.rm(tempRoot, { recursive: true, force: true });
|
|
202
206
|
}
|
|
203
|
-
if (
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
207
|
+
if (firstFailure) {
|
|
208
|
+
const modelUri = String(firstFailure.modelUri ?? '').trim() || '<workspace>';
|
|
209
|
+
failCli(chalk.red(`reason failed: ${modelUri}: ${firstFailure.error}`));
|
|
210
|
+
}
|
|
211
|
+
if (firstInconsistent) {
|
|
212
|
+
const where = modelUriToRelativePath(firstInconsistent.file.modelUri);
|
|
213
|
+
if (opts.explanation === true) {
|
|
214
|
+
failCli(chalk.red(`Inconsistency found in: ${where}\n${JSON.stringify(firstInconsistent.result, null, 2)}`));
|
|
211
215
|
}
|
|
212
|
-
failCli(chalk.red(
|
|
216
|
+
failCli(chalk.red(`Inconsistency found in: ${where}`));
|
|
213
217
|
}
|
|
214
218
|
if (outputDir) {
|
|
215
|
-
console.log(chalk.green(`reason: ${assertions.files.length} ontology file(s) reasoned in ${path.relative(process.cwd(), outputDir) || outputDir} (${
|
|
219
|
+
console.log(chalk.green(`reason: ${assertions.files.length} ontology file(s) reasoned in ${path.relative(process.cwd(), outputDir) || outputDir} (${entailmentsProduced} entailment artifact file(s) written) [${formatDuration(Date.now() - startedAt)}]`));
|
|
216
220
|
return;
|
|
217
221
|
}
|
|
218
222
|
console.log(chalk.green(`reason: ${assertions.files.length} ontology file(s) checked [${formatDuration(Date.now() - startedAt)}]`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reason.js","sourceRoot":"","sources":["../../src/commands/reason.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"reason.js","sourceRoot":"","sources":["../../src/commands/reason.ts"],"names":[],"mappings":"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"}
|
package/out/commands/render.js
CHANGED
|
@@ -3,6 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import * as path from 'node:path';
|
|
4
4
|
import { failCli } from '../cli-error.js';
|
|
5
5
|
import { formatDuration } from '../util.js';
|
|
6
|
+
import { printLintDiagnostics } from './lint.js';
|
|
6
7
|
import { restPost } from './server/rest.js';
|
|
7
8
|
export const renderAction = async (opts) => {
|
|
8
9
|
const renderStartedAt = Date.now();
|
|
@@ -10,6 +11,13 @@ export const renderAction = async (opts) => {
|
|
|
10
11
|
...opts,
|
|
11
12
|
}, opts.authToken);
|
|
12
13
|
if (!result.success) {
|
|
14
|
+
printLintDiagnostics({
|
|
15
|
+
success: false,
|
|
16
|
+
filesChecked: Number(result.filesChecked ?? 0),
|
|
17
|
+
errors: Number(result.errors ?? 0),
|
|
18
|
+
warnings: Number(result.warnings ?? 0),
|
|
19
|
+
problems: result.problems,
|
|
20
|
+
});
|
|
13
21
|
failCli(chalk.red(result.error?.trim() || 'render failed.'));
|
|
14
22
|
}
|
|
15
23
|
if (result.filesRendered === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAU5C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAmB,EAAiB,EAAE;IACrE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAoB,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAU5C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAmB,EAAiB,EAAE;IACrE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAS1B,YAAY,EAAE;QACb,GAAG,IAAI;KAC4B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAEzD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,oBAAoB,CAAC;YACjB,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;YAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;YAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;YACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC5B,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACtD,OAAO;IACX,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,aAAa,iCAAiC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,IAAI,SAAS,KAAK,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AACvM,CAAC,CAAC"}
|
package/out/commands/validate.js
CHANGED
|
@@ -2,26 +2,70 @@
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { failCli } from '../cli-error.js';
|
|
4
4
|
import { formatDuration } from '../util.js';
|
|
5
|
+
import { printLintDiagnostics } from './lint.js';
|
|
5
6
|
import { restPost } from './server/rest.js';
|
|
6
7
|
export const validateAction = async (opts) => {
|
|
7
8
|
const startedAt = Date.now();
|
|
8
9
|
const result = await restPost('/v0/validate', {}, opts.authToken);
|
|
9
|
-
if (!result.success) {
|
|
10
|
-
failCli(chalk.red(result.error?.trim() || 'validate failed.'));
|
|
11
|
-
}
|
|
12
10
|
if (result.filesChecked === 0) {
|
|
13
11
|
console.log(chalk.yellow('No markdown/table-editor targets found in server workspace.'));
|
|
14
12
|
return;
|
|
15
13
|
}
|
|
14
|
+
printLintDiagnostics({
|
|
15
|
+
success: false,
|
|
16
|
+
filesChecked: result.filesChecked,
|
|
17
|
+
errors: result.errors,
|
|
18
|
+
warnings: result.warnings,
|
|
19
|
+
elapsedMs: result.elapsedMs,
|
|
20
|
+
problems: result.problems,
|
|
21
|
+
});
|
|
22
|
+
const validationProblems = Array.isArray(result.validationProblems) ? result.validationProblems : [];
|
|
23
|
+
if (validationProblems.length > 0) {
|
|
24
|
+
const groups = new Map();
|
|
25
|
+
for (const problem of validationProblems) {
|
|
26
|
+
const key = String(problem.modelUri ?? '').trim() || '<unknown>';
|
|
27
|
+
const existing = groups.get(key) ?? [];
|
|
28
|
+
existing.push({
|
|
29
|
+
element: String(problem.element ?? '-'),
|
|
30
|
+
property: String(problem.property ?? '-'),
|
|
31
|
+
message: String(problem.message ?? ''),
|
|
32
|
+
});
|
|
33
|
+
groups.set(key, existing);
|
|
34
|
+
}
|
|
35
|
+
for (const [modelUri, issues] of groups.entries()) {
|
|
36
|
+
console.log(chalk.red(`Model: ${modelUri}`));
|
|
37
|
+
for (const issue of issues) {
|
|
38
|
+
console.log(chalk.red(` element: ${issue.element}`));
|
|
39
|
+
console.log(chalk.red(` property: ${issue.property}`));
|
|
40
|
+
console.log(chalk.red(` message: ${issue.message}`));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
const details = Array.isArray(result.details) ? result.details : [];
|
|
46
|
+
for (const detail of details) {
|
|
47
|
+
if (String(detail).trim().length > 0) {
|
|
48
|
+
console.log(chalk.red(String(detail)));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
16
52
|
const validateElapsedMs = typeof result.elapsedMs === 'number' && Number.isFinite(result.elapsedMs) && result.elapsedMs >= 0
|
|
17
53
|
? result.elapsedMs
|
|
18
54
|
: Date.now() - startedAt;
|
|
19
55
|
if (result.errors > 0) {
|
|
56
|
+
const failingItems = Number(result.failingItems ?? 0);
|
|
57
|
+
if (failingItems > 0) {
|
|
58
|
+
failCli(chalk.red(`validate: ${result.filesChecked} table-editor block(s) scanned [${formatDuration(validateElapsedMs)}]; ${failingItems} failing block(s), ${result.errors} error(s), ${result.warnings} warning(s)`));
|
|
59
|
+
}
|
|
20
60
|
failCli(chalk.red(`validate: ${result.filesChecked} item(s) checked with ${result.errors} error(s) and ${result.warnings} warning(s). [${formatDuration(validateElapsedMs)}]`));
|
|
21
61
|
}
|
|
22
62
|
if (result.warnings > 0) {
|
|
63
|
+
const failingItems = Number(result.failingItems ?? 0);
|
|
64
|
+
if (failingItems > 0) {
|
|
65
|
+
failCli(chalk.yellow(`validate: ${result.filesChecked} table-editor block(s) scanned [${formatDuration(validateElapsedMs)}]; ${failingItems} failing block(s), ${result.errors} error(s), ${result.warnings} warning(s)`));
|
|
66
|
+
}
|
|
23
67
|
failCli(chalk.yellow(`validate: ${result.filesChecked} item(s) checked with ${result.warnings} warning(s). [${formatDuration(validateElapsedMs)}]`));
|
|
24
68
|
}
|
|
25
|
-
console.log(chalk.green(`validate: ${result.filesChecked}
|
|
69
|
+
console.log(chalk.green(`validate: ${result.filesChecked} table-editor block(s) scanned [${formatDuration(validateElapsedMs)}]`));
|
|
26
70
|
};
|
|
27
71
|
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAM5C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,IAAqB,EAAiB,EAAE;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oml/cli",
|
|
3
3
|
"description": "The cli specific package",
|
|
4
|
-
"version": "0.14.
|
|
4
|
+
"version": "0.14.16",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=20.10.0",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@oml/platform": "^0.7.0",
|
|
25
25
|
"@oml/reasoner": "^0.3.0",
|
|
26
|
-
"@oml/server": "0.14.
|
|
26
|
+
"@oml/server": "0.14.16",
|
|
27
27
|
"chalk": "~5.3.0",
|
|
28
28
|
"chevrotain": "11.1.2",
|
|
29
29
|
"commander": "~11.1.0",
|
package/src/cli.ts
CHANGED
|
@@ -194,7 +194,8 @@ export async function runCli(argv: string[] = process.argv): Promise<void> {
|
|
|
194
194
|
.option('-f, --format <ext>', 'RDF format extension: ttl, trig, nt, nq, or n3', 'ttl')
|
|
195
195
|
.option('--clean', 'remove output folder before reason (only when --owl is provided)')
|
|
196
196
|
.option('--pretty', 'pretty-print Turtle/TriG output with blank lines between top-level blocks (only when --owl is provided)')
|
|
197
|
-
.option('-
|
|
197
|
+
.option('-u, --unique-names-assumption [value]', 'enable or disable the unique names assumption', parseBooleanOption, true)
|
|
198
|
+
.option('-e, --explanation [value]', 'enable or disable inconsistency explanations', parseBooleanOption, false)
|
|
198
199
|
.description('run workspace consistency checks (or persist entailments with --owl)')
|
|
199
200
|
.action(async (opts) => {
|
|
200
201
|
const done = trackCommand('oml-reason');
|
package/src/commands/export.ts
CHANGED
|
@@ -4,6 +4,7 @@ import chalk from 'chalk';
|
|
|
4
4
|
import * as path from 'node:path';
|
|
5
5
|
import { failCli } from '../cli-error.js';
|
|
6
6
|
import { formatDuration } from '../util.js';
|
|
7
|
+
import { printLintDiagnostics, type LintProblem } from './lint.js';
|
|
7
8
|
import { restPost } from './server/rest.js';
|
|
8
9
|
|
|
9
10
|
export type ExportOptions = {
|
|
@@ -20,6 +21,10 @@ type ExportPayload = {
|
|
|
20
21
|
outputDir: string;
|
|
21
22
|
format: 'ttl' | 'trig' | 'nt' | 'nq' | 'n3';
|
|
22
23
|
pretty: boolean;
|
|
24
|
+
filesChecked?: number;
|
|
25
|
+
errors?: number;
|
|
26
|
+
warnings?: number;
|
|
27
|
+
problems?: LintProblem[];
|
|
23
28
|
error?: string;
|
|
24
29
|
};
|
|
25
30
|
|
|
@@ -46,6 +51,13 @@ export const exportAction = async (opts: ExportOptions): Promise<void> => {
|
|
|
46
51
|
);
|
|
47
52
|
|
|
48
53
|
if (!result.success) {
|
|
54
|
+
printLintDiagnostics({
|
|
55
|
+
success: false,
|
|
56
|
+
filesChecked: Number(result.filesChecked ?? 0),
|
|
57
|
+
errors: Number(result.errors ?? 0),
|
|
58
|
+
warnings: Number(result.warnings ?? 0),
|
|
59
|
+
problems: result.problems,
|
|
60
|
+
});
|
|
49
61
|
failCli(chalk.red(result.error?.trim() || 'export failed.'));
|
|
50
62
|
}
|
|
51
63
|
if (result.filesWritten <= 0) {
|
package/src/commands/reason.ts
CHANGED
|
@@ -6,9 +6,9 @@ import * as fs from 'node:fs/promises';
|
|
|
6
6
|
import * as os from 'node:os';
|
|
7
7
|
import * as path from 'node:path';
|
|
8
8
|
import { fileURLToPath } from 'node:url';
|
|
9
|
-
import { Parser, Writer } from 'n3';
|
|
10
9
|
import { failCli } from '../cli-error.js';
|
|
11
10
|
import { formatDuration } from '../util.js';
|
|
11
|
+
import { printLintDiagnostics, type LintPayload, type LintProblem } from './lint.js';
|
|
12
12
|
import { restPost } from './server/rest.js';
|
|
13
13
|
|
|
14
14
|
type RdfFormat = 'ttl' | 'trig' | 'nt' | 'nq' | 'n3';
|
|
@@ -28,6 +28,11 @@ export type ReasonOptions = {
|
|
|
28
28
|
type AssertionsPayload = {
|
|
29
29
|
success: boolean;
|
|
30
30
|
error?: string;
|
|
31
|
+
format?: RdfFormat;
|
|
32
|
+
filesChecked?: number;
|
|
33
|
+
errors?: number;
|
|
34
|
+
warnings?: number;
|
|
35
|
+
problems?: LintProblem[];
|
|
31
36
|
files: Array<{
|
|
32
37
|
modelUri: string;
|
|
33
38
|
ontologyIri: string;
|
|
@@ -36,6 +41,8 @@ type AssertionsPayload = {
|
|
|
36
41
|
}>;
|
|
37
42
|
};
|
|
38
43
|
|
|
44
|
+
const OWL_IMPORTS_IRI = '<http://www.w3.org/2002/07/owl#imports>';
|
|
45
|
+
|
|
39
46
|
function normalizeRdfFormat(value: string | undefined): RdfFormat {
|
|
40
47
|
const normalized = String(value ?? 'ttl').trim().toLowerCase();
|
|
41
48
|
if (normalized === 'trig' || normalized === 'nt' || normalized === 'nq' || normalized === 'n3') {
|
|
@@ -44,46 +51,6 @@ function normalizeRdfFormat(value: string | undefined): RdfFormat {
|
|
|
44
51
|
return 'ttl';
|
|
45
52
|
}
|
|
46
53
|
|
|
47
|
-
function rdfWriterFormat(format: RdfFormat): 'text/turtle' | 'application/trig' | 'N-Triples' | 'N-Quads' | 'application/n3' {
|
|
48
|
-
if (format === 'ttl') {
|
|
49
|
-
return 'text/turtle';
|
|
50
|
-
}
|
|
51
|
-
if (format === 'trig') {
|
|
52
|
-
return 'application/trig';
|
|
53
|
-
}
|
|
54
|
-
if (format === 'nt') {
|
|
55
|
-
return 'N-Triples';
|
|
56
|
-
}
|
|
57
|
-
if (format === 'nq') {
|
|
58
|
-
return 'N-Quads';
|
|
59
|
-
}
|
|
60
|
-
return 'application/n3';
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function rdfParserFormat(format: RdfFormat): 'text/turtle' | 'application/trig' | 'N-Triples' | 'N-Quads' | 'application/n3' {
|
|
64
|
-
return rdfWriterFormat(format);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
async function parseRdf(serialized: string, format: RdfFormat): Promise<any[]> {
|
|
68
|
-
const parser = new Parser({ format: rdfParserFormat(format) });
|
|
69
|
-
return parser.parse(serialized);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
async function serializeRdf(quads: any[], format: RdfFormat, pretty: boolean): Promise<string> {
|
|
73
|
-
const writer = new Writer({ format: rdfWriterFormat(format) });
|
|
74
|
-
writer.addQuads(quads);
|
|
75
|
-
const serialized = await new Promise<string>((resolve, reject) => {
|
|
76
|
-
writer.end((error, result) => {
|
|
77
|
-
if (error) {
|
|
78
|
-
reject(error);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
resolve(result);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
return pretty ? prettyPrintRdf(serialized, format) : serialized;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
54
|
function prettyPrintRdf(serialized: string, format: RdfFormat): string {
|
|
88
55
|
if (format !== 'ttl' && format !== 'trig') {
|
|
89
56
|
return serialized;
|
|
@@ -93,7 +60,7 @@ function prettyPrintRdf(serialized: string, format: RdfFormat): string {
|
|
|
93
60
|
for (let i = 0; i < lines.length; i += 1) {
|
|
94
61
|
const line = lines[i];
|
|
95
62
|
out.push(line);
|
|
96
|
-
if (line.trim()
|
|
63
|
+
if (line.trim().endsWith('.')) {
|
|
97
64
|
const next = lines[i + 1];
|
|
98
65
|
if (next !== undefined && next.trim().length > 0) {
|
|
99
66
|
out.push('');
|
|
@@ -103,57 +70,94 @@ function prettyPrintRdf(serialized: string, format: RdfFormat): string {
|
|
|
103
70
|
return out.join('\n');
|
|
104
71
|
}
|
|
105
72
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
73
|
+
function extractImports(serialized: string): string[] {
|
|
74
|
+
const imports = new Set<string>();
|
|
75
|
+
const statementPattern = /(?:<http:\/\/www\.w3\.org\/2002\/07\/owl#imports>|owl:imports)\s+([^;.]*)[;.]/gms;
|
|
76
|
+
let statementMatch: RegExpExecArray | null;
|
|
77
|
+
while ((statementMatch = statementPattern.exec(serialized)) !== null) {
|
|
78
|
+
const tail = statementMatch[1] ?? '';
|
|
79
|
+
const iriPattern = /<([^>]+)>/g;
|
|
80
|
+
let iriMatch: RegExpExecArray | null;
|
|
81
|
+
while ((iriMatch = iriPattern.exec(tail)) !== null) {
|
|
82
|
+
const iri = iriMatch[1]?.trim();
|
|
83
|
+
if (iri) {
|
|
84
|
+
imports.add(iri);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
109
87
|
}
|
|
110
|
-
|
|
111
|
-
|
|
88
|
+
// Handle compact single-line N-Triples cases defensively.
|
|
89
|
+
if (imports.size === 0 && serialized.includes(OWL_IMPORTS_IRI)) {
|
|
90
|
+
const linePattern = /<http:\/\/www\.w3\.org\/2002\/07\/owl#imports>\s+<([^>]+)>/g;
|
|
91
|
+
let lineMatch: RegExpExecArray | null;
|
|
92
|
+
while ((lineMatch = linePattern.exec(serialized)) !== null) {
|
|
93
|
+
const iri = lineMatch[1]?.trim();
|
|
94
|
+
if (iri) {
|
|
95
|
+
imports.add(iri);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
112
98
|
}
|
|
113
|
-
|
|
114
|
-
return await serializeRdf(quads, targetFormat, pretty);
|
|
99
|
+
return Array.from(imports);
|
|
115
100
|
}
|
|
116
101
|
|
|
117
|
-
function
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
102
|
+
function sortFilesLeafToRoot(
|
|
103
|
+
files: AssertionsPayload['files'],
|
|
104
|
+
): AssertionsPayload['files'] {
|
|
105
|
+
const filesByOntologyIri = new Map<string, AssertionsPayload['files'][number]>();
|
|
106
|
+
for (const file of files) {
|
|
107
|
+
filesByOntologyIri.set(file.ontologyIri, file);
|
|
108
|
+
}
|
|
121
109
|
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
}
|
|
110
|
+
const importsByOntologyIri = new Map<string, string[]>();
|
|
111
|
+
for (const file of files) {
|
|
112
|
+
importsByOntologyIri.set(file.ontologyIri, extractImports(file.content));
|
|
113
|
+
}
|
|
126
114
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
115
|
+
const sorted: AssertionsPayload['files'] = [];
|
|
116
|
+
const state = new Map<string, 0 | 1 | 2>();
|
|
117
|
+
const sortedRoots = [...filesByOntologyIri.keys()].sort((a, b) => a.localeCompare(b));
|
|
118
|
+
const visit = (ontologyIri: string): void => {
|
|
119
|
+
const current = state.get(ontologyIri) ?? 0;
|
|
120
|
+
if (current === 2) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (current === 1) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
state.set(ontologyIri, 1);
|
|
127
|
+
for (const importedIri of importsByOntologyIri.get(ontologyIri) ?? []) {
|
|
128
|
+
if (filesByOntologyIri.has(importedIri)) {
|
|
129
|
+
visit(importedIri);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
state.set(ontologyIri, 2);
|
|
133
|
+
const file = filesByOntologyIri.get(ontologyIri);
|
|
134
|
+
if (file) {
|
|
135
|
+
sorted.push(file);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
for (const ontologyIri of sortedRoots) {
|
|
140
|
+
visit(ontologyIri);
|
|
130
141
|
}
|
|
142
|
+
return sorted;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function resolveEntailmentsPath(uri: string): string {
|
|
131
146
|
const trimmed = uri.trim();
|
|
132
147
|
if (trimmed.startsWith('file://')) {
|
|
133
|
-
|
|
134
|
-
return fileURLToPath(trimmed);
|
|
135
|
-
} catch {
|
|
136
|
-
return undefined;
|
|
137
|
-
}
|
|
148
|
+
return fileURLToPath(trimmed);
|
|
138
149
|
}
|
|
139
150
|
return trimmed;
|
|
140
151
|
}
|
|
141
152
|
|
|
142
|
-
function
|
|
143
|
-
const
|
|
144
|
-
if (
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return 'nt';
|
|
149
|
-
}
|
|
150
|
-
if (extension === '.nq') {
|
|
151
|
-
return 'nq';
|
|
152
|
-
}
|
|
153
|
-
if (extension === '.n3') {
|
|
154
|
-
return 'n3';
|
|
153
|
+
function modelUriToRelativePath(modelUri: string): string {
|
|
154
|
+
const trimmed = modelUri.trim();
|
|
155
|
+
if (trimmed.startsWith('file://')) {
|
|
156
|
+
const absolute = fileURLToPath(trimmed);
|
|
157
|
+
const relative = path.relative(process.cwd(), absolute);
|
|
158
|
+
return relative.length > 0 ? relative : path.basename(absolute);
|
|
155
159
|
}
|
|
156
|
-
return
|
|
160
|
+
return trimmed;
|
|
157
161
|
}
|
|
158
162
|
|
|
159
163
|
export const reasonAction = async (opts: ReasonOptions): Promise<void> => {
|
|
@@ -162,11 +166,19 @@ export const reasonAction = async (opts: ReasonOptions): Promise<void> => {
|
|
|
162
166
|
const pretty = opts.pretty === true;
|
|
163
167
|
const assertions = await restPost<AssertionsPayload>(
|
|
164
168
|
'/v0/assertions',
|
|
165
|
-
{} as Record<string, unknown>,
|
|
169
|
+
{ format: outputFormat, pretty } as Record<string, unknown>,
|
|
166
170
|
opts.authToken,
|
|
167
171
|
);
|
|
168
172
|
if (!assertions.success) {
|
|
169
|
-
|
|
173
|
+
printLintDiagnostics({
|
|
174
|
+
success: false,
|
|
175
|
+
filesChecked: Number(assertions.filesChecked ?? 0),
|
|
176
|
+
errors: Number(assertions.errors ?? 0),
|
|
177
|
+
warnings: Number(assertions.warnings ?? 0),
|
|
178
|
+
problems: assertions.problems,
|
|
179
|
+
} satisfies LintPayload);
|
|
180
|
+
const summary = assertions.error?.trim() || 'reason failed.';
|
|
181
|
+
failCli(chalk.red(summary));
|
|
170
182
|
}
|
|
171
183
|
if (assertions.files.length === 0) {
|
|
172
184
|
console.log(chalk.yellow(`No .oml files found under ${path.resolve('.')}.`));
|
|
@@ -176,92 +188,85 @@ export const reasonAction = async (opts: ReasonOptions): Promise<void> => {
|
|
|
176
188
|
const outputDir = typeof opts.owl === 'string' && opts.owl.trim().length > 0
|
|
177
189
|
? path.resolve(opts.owl.trim())
|
|
178
190
|
: undefined;
|
|
179
|
-
const tempRoot =
|
|
191
|
+
const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'oml-reason-cli-'));
|
|
180
192
|
if (outputDir) {
|
|
181
193
|
if (opts.clean === true) {
|
|
182
194
|
await fs.rm(outputDir, { recursive: true, force: true });
|
|
183
195
|
}
|
|
184
|
-
await fs.mkdir(outputDir, { recursive: true });
|
|
185
196
|
}
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
let
|
|
197
|
+
const orderedFiles = sortFilesLeafToRoot(assertions.files);
|
|
198
|
+
let firstInconsistent: { file: AssertionsPayload['files'][number]; result: Record<string, unknown> } | undefined;
|
|
199
|
+
let firstFailure: { modelUri: string; error: string } | undefined;
|
|
200
|
+
let entailmentsProduced = 0;
|
|
189
201
|
try {
|
|
190
|
-
for (const file of
|
|
202
|
+
for (const file of orderedFiles) {
|
|
191
203
|
const target = path.join(tempRoot, file.path);
|
|
192
204
|
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
193
|
-
await fs.writeFile(target, file.content, 'utf-8');
|
|
205
|
+
await fs.writeFile(target, prettyPrintRdf(file.content, outputFormat), 'utf-8');
|
|
194
206
|
}
|
|
195
|
-
for (const file of
|
|
207
|
+
for (const file of orderedFiles) {
|
|
196
208
|
const target = path.join(tempRoot, file.path);
|
|
197
209
|
try {
|
|
198
210
|
const result = await checkConsistency({
|
|
199
211
|
input: target,
|
|
200
212
|
inputRoot: tempRoot,
|
|
201
|
-
explanations: opts.explanation
|
|
202
|
-
uniqueNamesAssumption: opts.uniqueNamesAssumption
|
|
213
|
+
explanations: opts.explanation === true,
|
|
214
|
+
uniqueNamesAssumption: opts.uniqueNamesAssumption !== false,
|
|
203
215
|
checkOnly: outputDir === undefined,
|
|
204
216
|
profile: opts.profile === true,
|
|
205
217
|
timeout: typeof opts.timeout === 'number' && Number.isFinite(opts.timeout) && opts.timeout > 0
|
|
206
218
|
? Math.floor(opts.timeout)
|
|
207
219
|
: 120_000,
|
|
208
220
|
});
|
|
221
|
+
if (!result.consistent) {
|
|
222
|
+
firstInconsistent = {
|
|
223
|
+
file,
|
|
224
|
+
result: result as unknown as Record<string, unknown>,
|
|
225
|
+
};
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
209
228
|
if (outputDir) {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
const assertedContent = await convertSerializedRdf(file.content, 'nt', outputFormat, pretty);
|
|
213
|
-
await fs.writeFile(assertedArtifactPath, assertedContent, 'utf-8');
|
|
214
|
-
|
|
215
|
-
const entailmentsSourcePath = resolveEntailmentsSourcePath(result.entailmentsUri);
|
|
216
|
-
if (!entailmentsSourcePath) {
|
|
217
|
-
throw new Error('Reasoner did not return an entailments URI.');
|
|
229
|
+
if (typeof result.entailmentsUri !== 'string' || result.entailmentsUri.trim().length === 0) {
|
|
230
|
+
throw new Error('Reasoner returned a consistent result but did not provide entailments URI.');
|
|
218
231
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
outputFormat,
|
|
226
|
-
pretty,
|
|
227
|
-
);
|
|
228
|
-
await fs.writeFile(entailmentsArtifact, entailmentsContent, 'utf-8');
|
|
229
|
-
entailmentsPersisted += 1;
|
|
230
|
-
}
|
|
231
|
-
if (!result.consistent) {
|
|
232
|
-
inconsistent.push({
|
|
233
|
-
modelUri: file.modelUri,
|
|
234
|
-
validationWarnings: Array.isArray(result.reports) ? result.reports : [],
|
|
235
|
-
});
|
|
232
|
+
if (pretty) {
|
|
233
|
+
const entailmentsPath = resolveEntailmentsPath(result.entailmentsUri);
|
|
234
|
+
const entailmentsContent = await fs.readFile(entailmentsPath, 'utf-8');
|
|
235
|
+
await fs.writeFile(entailmentsPath, prettyPrintRdf(entailmentsContent, outputFormat), 'utf-8');
|
|
236
|
+
}
|
|
237
|
+
entailmentsProduced += 1;
|
|
236
238
|
}
|
|
237
239
|
} catch (error) {
|
|
238
|
-
|
|
240
|
+
firstFailure = {
|
|
239
241
|
modelUri: file.modelUri,
|
|
240
242
|
error: error instanceof Error ? error.message : String(error),
|
|
241
|
-
}
|
|
243
|
+
};
|
|
244
|
+
break;
|
|
242
245
|
}
|
|
243
246
|
}
|
|
244
247
|
} finally {
|
|
245
|
-
if (!
|
|
246
|
-
await fs.
|
|
248
|
+
if (outputDir && !firstFailure && !firstInconsistent) {
|
|
249
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
250
|
+
await fs.cp(tempRoot, outputDir, { recursive: true, force: true });
|
|
247
251
|
}
|
|
252
|
+
await fs.rm(tempRoot, { recursive: true, force: true });
|
|
248
253
|
}
|
|
249
254
|
|
|
250
|
-
if (
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
255
|
+
if (firstFailure) {
|
|
256
|
+
const modelUri = String(firstFailure.modelUri ?? '').trim() || '<workspace>';
|
|
257
|
+
failCli(chalk.red(`reason failed: ${modelUri}: ${firstFailure.error}`));
|
|
258
|
+
}
|
|
259
|
+
if (firstInconsistent) {
|
|
260
|
+
const where = modelUriToRelativePath(firstInconsistent.file.modelUri);
|
|
261
|
+
if (opts.explanation === true) {
|
|
262
|
+
failCli(chalk.red(`Inconsistency found in: ${where}\n${JSON.stringify(firstInconsistent.result, null, 2)}`));
|
|
258
263
|
}
|
|
259
|
-
failCli(chalk.red(
|
|
264
|
+
failCli(chalk.red(`Inconsistency found in: ${where}`));
|
|
260
265
|
}
|
|
261
266
|
|
|
262
267
|
if (outputDir) {
|
|
263
268
|
console.log(chalk.green(
|
|
264
|
-
`reason: ${assertions.files.length} ontology file(s) reasoned in ${path.relative(process.cwd(), outputDir) || outputDir} (${
|
|
269
|
+
`reason: ${assertions.files.length} ontology file(s) reasoned in ${path.relative(process.cwd(), outputDir) || outputDir} (${entailmentsProduced} entailment artifact file(s) written) [${formatDuration(Date.now() - startedAt)}]`
|
|
265
270
|
));
|
|
266
271
|
return;
|
|
267
272
|
}
|
package/src/commands/render.ts
CHANGED
|
@@ -4,6 +4,7 @@ import chalk from 'chalk';
|
|
|
4
4
|
import * as path from 'node:path';
|
|
5
5
|
import { failCli } from '../cli-error.js';
|
|
6
6
|
import { formatDuration } from '../util.js';
|
|
7
|
+
import { printLintDiagnostics, type LintProblem } from './lint.js';
|
|
7
8
|
import { restPost } from './server/rest.js';
|
|
8
9
|
|
|
9
10
|
export type RenderOptions = {
|
|
@@ -20,12 +21,23 @@ export const renderAction = async (opts: RenderOptions): Promise<void> => {
|
|
|
20
21
|
success: boolean;
|
|
21
22
|
filesRendered: number;
|
|
22
23
|
outputDir?: string;
|
|
24
|
+
filesChecked?: number;
|
|
25
|
+
errors?: number;
|
|
26
|
+
warnings?: number;
|
|
27
|
+
problems?: LintProblem[];
|
|
23
28
|
error?: string;
|
|
24
29
|
}>('/v0/render', {
|
|
25
30
|
...opts,
|
|
26
31
|
} as unknown as Record<string, unknown>, opts.authToken);
|
|
27
32
|
|
|
28
33
|
if (!result.success) {
|
|
34
|
+
printLintDiagnostics({
|
|
35
|
+
success: false,
|
|
36
|
+
filesChecked: Number(result.filesChecked ?? 0),
|
|
37
|
+
errors: Number(result.errors ?? 0),
|
|
38
|
+
warnings: Number(result.warnings ?? 0),
|
|
39
|
+
problems: result.problems,
|
|
40
|
+
});
|
|
29
41
|
failCli(chalk.red(result.error?.trim() || 'render failed.'));
|
|
30
42
|
}
|
|
31
43
|
if (result.filesRendered === 0) {
|
package/src/commands/validate.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { failCli } from '../cli-error.js';
|
|
5
5
|
import { formatDuration } from '../util.js';
|
|
6
|
+
import { printLintDiagnostics, type LintProblem } from './lint.js';
|
|
6
7
|
import { restPost } from './server/rest.js';
|
|
7
8
|
|
|
8
9
|
export type ValidateOptions = {
|
|
@@ -16,25 +17,76 @@ export const validateAction = async (opts: ValidateOptions): Promise<void> => {
|
|
|
16
17
|
filesChecked: number;
|
|
17
18
|
errors: number;
|
|
18
19
|
warnings: number;
|
|
20
|
+
failingItems?: number;
|
|
21
|
+
details?: string[];
|
|
22
|
+
validationProblems?: Array<{
|
|
23
|
+
modelUri: string;
|
|
24
|
+
element: string;
|
|
25
|
+
property: string;
|
|
26
|
+
message: string;
|
|
27
|
+
}>;
|
|
19
28
|
elapsedMs?: number;
|
|
29
|
+
problems?: LintProblem[];
|
|
20
30
|
error?: string;
|
|
21
31
|
}>('/v0/validate', {}, opts.authToken);
|
|
22
32
|
|
|
23
|
-
if (!result.success) {
|
|
24
|
-
failCli(chalk.red(result.error?.trim() || 'validate failed.'));
|
|
25
|
-
}
|
|
26
33
|
if (result.filesChecked === 0) {
|
|
27
34
|
console.log(chalk.yellow('No markdown/table-editor targets found in server workspace.'));
|
|
28
35
|
return;
|
|
29
36
|
}
|
|
37
|
+
printLintDiagnostics({
|
|
38
|
+
success: false,
|
|
39
|
+
filesChecked: result.filesChecked,
|
|
40
|
+
errors: result.errors,
|
|
41
|
+
warnings: result.warnings,
|
|
42
|
+
elapsedMs: result.elapsedMs,
|
|
43
|
+
problems: result.problems,
|
|
44
|
+
});
|
|
45
|
+
const validationProblems = Array.isArray(result.validationProblems) ? result.validationProblems : [];
|
|
46
|
+
if (validationProblems.length > 0) {
|
|
47
|
+
const groups = new Map<string, Array<{ element: string; property: string; message: string }>>();
|
|
48
|
+
for (const problem of validationProblems) {
|
|
49
|
+
const key = String(problem.modelUri ?? '').trim() || '<unknown>';
|
|
50
|
+
const existing = groups.get(key) ?? [];
|
|
51
|
+
existing.push({
|
|
52
|
+
element: String(problem.element ?? '-'),
|
|
53
|
+
property: String(problem.property ?? '-'),
|
|
54
|
+
message: String(problem.message ?? ''),
|
|
55
|
+
});
|
|
56
|
+
groups.set(key, existing);
|
|
57
|
+
}
|
|
58
|
+
for (const [modelUri, issues] of groups.entries()) {
|
|
59
|
+
console.log(chalk.red(`Model: ${modelUri}`));
|
|
60
|
+
for (const issue of issues) {
|
|
61
|
+
console.log(chalk.red(` element: ${issue.element}`));
|
|
62
|
+
console.log(chalk.red(` property: ${issue.property}`));
|
|
63
|
+
console.log(chalk.red(` message: ${issue.message}`));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
} else {
|
|
67
|
+
const details = Array.isArray(result.details) ? result.details : [];
|
|
68
|
+
for (const detail of details) {
|
|
69
|
+
if (String(detail).trim().length > 0) {
|
|
70
|
+
console.log(chalk.red(String(detail)));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
30
74
|
const validateElapsedMs = typeof result.elapsedMs === 'number' && Number.isFinite(result.elapsedMs) && result.elapsedMs >= 0
|
|
31
75
|
? result.elapsedMs
|
|
32
76
|
: Date.now() - startedAt;
|
|
33
77
|
if (result.errors > 0) {
|
|
78
|
+
const failingItems = Number(result.failingItems ?? 0);
|
|
79
|
+
if (failingItems > 0) {
|
|
80
|
+
failCli(chalk.red(`validate: ${result.filesChecked} table-editor block(s) scanned [${formatDuration(validateElapsedMs)}]; ${failingItems} failing block(s), ${result.errors} error(s), ${result.warnings} warning(s)`));
|
|
81
|
+
}
|
|
34
82
|
failCli(chalk.red(`validate: ${result.filesChecked} item(s) checked with ${result.errors} error(s) and ${result.warnings} warning(s). [${formatDuration(validateElapsedMs)}]`));
|
|
35
83
|
}
|
|
36
84
|
if (result.warnings > 0) {
|
|
85
|
+
const failingItems = Number(result.failingItems ?? 0);
|
|
86
|
+
if (failingItems > 0) {
|
|
87
|
+
failCli(chalk.yellow(`validate: ${result.filesChecked} table-editor block(s) scanned [${formatDuration(validateElapsedMs)}]; ${failingItems} failing block(s), ${result.errors} error(s), ${result.warnings} warning(s)`));
|
|
88
|
+
}
|
|
37
89
|
failCli(chalk.yellow(`validate: ${result.filesChecked} item(s) checked with ${result.warnings} warning(s). [${formatDuration(validateElapsedMs)}]`));
|
|
38
90
|
}
|
|
39
|
-
console.log(chalk.green(`validate: ${result.filesChecked}
|
|
91
|
+
console.log(chalk.green(`validate: ${result.filesChecked} table-editor block(s) scanned [${formatDuration(validateElapsedMs)}]`));
|
|
40
92
|
};
|