@oml/cli 0.14.13 → 0.14.15
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 +12 -7
- package/out/cli.js.map +1 -1
- package/out/commands/export.d.ts +1 -1
- package/out/commands/export.js +15 -7
- package/out/commands/export.js.map +1 -1
- package/out/commands/lint.d.ts +0 -3
- package/out/commands/lint.js +0 -5
- package/out/commands/lint.js.map +1 -1
- package/out/commands/reason.d.ts +9 -0
- package/out/commands/reason.js +197 -28
- package/out/commands/reason.js.map +1 -1
- package/out/commands/render.d.ts +1 -0
- package/out/commands/render.js +3 -2
- package/out/commands/render.js.map +1 -1
- package/out/commands/validate.js +0 -21
- package/out/commands/validate.js.map +1 -1
- package/package.json +2 -2
- package/src/cli.ts +12 -7
- package/src/commands/export.ts +39 -31
- package/src/commands/lint.ts +0 -8
- package/src/commands/reason.ts +241 -41
- package/src/commands/render.ts +9 -7
- package/src/commands/validate.ts +0 -22
package/out/cli.js
CHANGED
|
@@ -22,17 +22,17 @@ export function getWorkspaceCommands() {
|
|
|
22
22
|
{
|
|
23
23
|
name: 'render [options]',
|
|
24
24
|
description: 'lint the workspace, then render markdown files to static html',
|
|
25
|
-
usage: 'render -m <input-folder> -b <output-folder> [-c <ontology-iri>]'
|
|
25
|
+
usage: 'render -m <input-folder> -b <output-folder> [--clean] [-c <ontology-iri>]'
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
name: 'export [options]',
|
|
29
|
-
description: 'export OWL files
|
|
29
|
+
description: 'export asserted OWL files (no reasoning)',
|
|
30
30
|
usage: 'export [-o <dir>] [-f <ext>] [--clean] [--pretty]'
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
name: 'reason [options]',
|
|
34
|
-
description: 'run workspace consistency checks
|
|
35
|
-
usage: 'reason [-e <true|false>]'
|
|
34
|
+
description: 'run workspace consistency checks (or persist assertions/entailments with --owl)',
|
|
35
|
+
usage: 'reason [-o <dir>] [-f <ext>] [--clean] [--pretty] [-e <true|false>]'
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
name: 'validate [options]',
|
|
@@ -129,7 +129,8 @@ export async function runCli(argv = process.argv) {
|
|
|
129
129
|
.command('render')
|
|
130
130
|
.requiredOption('-m, --md <input-folder>', 'folder containing markdown files to render')
|
|
131
131
|
.requiredOption('-b, --web <output-folder>', 'folder where rendered static site files are written')
|
|
132
|
-
.option('
|
|
132
|
+
.option('--clean', 'remove output folder before render')
|
|
133
|
+
.option('-c, --context <model-path>', 'workspace-relative .oml model path used as default navigation context for wikilinks')
|
|
133
134
|
.description('lint the workspace, then render markdown files to static html')
|
|
134
135
|
.action(async (...args) => {
|
|
135
136
|
const done = trackCommand('oml-render');
|
|
@@ -152,7 +153,7 @@ export async function runCli(argv = process.argv) {
|
|
|
152
153
|
.option('-f, --format <ext>', 'RDF format extension: ttl, trig, nt, nq, or n3', 'ttl')
|
|
153
154
|
.option('--clean', 'remove output folder before export')
|
|
154
155
|
.option('--pretty', 'pretty-print Turtle/TriG output with blank lines between top-level blocks')
|
|
155
|
-
.description('export OWL files
|
|
156
|
+
.description('export asserted OWL files (no reasoning)')
|
|
156
157
|
.action(async (...args) => {
|
|
157
158
|
const done = trackCommand('oml-export');
|
|
158
159
|
try {
|
|
@@ -170,8 +171,12 @@ export async function runCli(argv = process.argv) {
|
|
|
170
171
|
});
|
|
171
172
|
program
|
|
172
173
|
.command('reason')
|
|
174
|
+
.option('-o, --owl <dir>', 'persist assertions/entailments to folder (default: check-only with no persistence)')
|
|
175
|
+
.option('-f, --format <ext>', 'RDF format extension: ttl, trig, nt, nq, or n3', 'ttl')
|
|
176
|
+
.option('--clean', 'remove output folder before reason (only when --owl is provided)')
|
|
177
|
+
.option('--pretty', 'pretty-print Turtle/TriG output with blank lines between top-level blocks (only when --owl is provided)')
|
|
173
178
|
.option('-e, --explanation [value]', 'enable or disable inconsistency explanations', parseBooleanOption, true)
|
|
174
|
-
.description('run workspace consistency checks
|
|
179
|
+
.description('run workspace consistency checks (or persist entailments with --owl)')
|
|
175
180
|
.action(async (opts) => {
|
|
176
181
|
const done = trackCommand('oml-reason');
|
|
177
182
|
try {
|
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.d.ts
CHANGED
package/out/commands/export.js
CHANGED
|
@@ -4,21 +4,29 @@ import * as path from 'node:path';
|
|
|
4
4
|
import { failCli } from '../cli-error.js';
|
|
5
5
|
import { formatDuration } from '../util.js';
|
|
6
6
|
import { restPost } from './server/rest.js';
|
|
7
|
+
function normalizeRdfFormat(value) {
|
|
8
|
+
const normalized = String(value ?? 'ttl').trim().toLowerCase();
|
|
9
|
+
if (normalized === 'trig' || normalized === 'nt' || normalized === 'nq' || normalized === 'n3') {
|
|
10
|
+
return normalized;
|
|
11
|
+
}
|
|
12
|
+
return 'ttl';
|
|
13
|
+
}
|
|
7
14
|
export const exportAction = async (opts) => {
|
|
8
15
|
const startedAt = Date.now();
|
|
16
|
+
const format = normalizeRdfFormat(opts.format);
|
|
9
17
|
const result = await restPost('/v0/export', {
|
|
10
|
-
|
|
18
|
+
owl: opts.owl,
|
|
19
|
+
format,
|
|
20
|
+
clean: opts.clean,
|
|
21
|
+
pretty: opts.pretty === true,
|
|
11
22
|
}, opts.authToken);
|
|
12
23
|
if (!result.success) {
|
|
13
|
-
failCli(chalk.red(result.error?.trim() ||
|
|
24
|
+
failCli(chalk.red(result.error?.trim() || 'export failed.'));
|
|
14
25
|
}
|
|
15
|
-
|
|
16
|
-
if (written === 0) {
|
|
26
|
+
if (result.filesWritten <= 0) {
|
|
17
27
|
console.log(chalk.yellow('No .oml files found in server workspace.'));
|
|
18
28
|
return;
|
|
19
29
|
}
|
|
20
|
-
|
|
21
|
-
const reasoned = Number(result.reason?.ontologiesReasoned ?? written);
|
|
22
|
-
console.log(chalk.green(`export: ${written} OML file(s) exported with entailments (${reasoned} ontology checks) in ${path.relative(process.cwd(), outputDir) || outputDir} [${formatDuration(Date.now() - startedAt)}]`));
|
|
30
|
+
console.log(chalk.green(`export: ${result.filesWritten} OML file(s) exported in ${path.relative(process.cwd(), result.outputDir) || result.outputDir} [${formatDuration(Date.now() - startedAt)}]`));
|
|
23
31
|
};
|
|
24
32
|
//# sourceMappingURL=export.js.map
|
|
@@ -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,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAmB5C,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,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/lint.d.ts
CHANGED
package/out/commands/lint.js
CHANGED
|
@@ -20,11 +20,6 @@ export function printLintDiagnostics(result) {
|
|
|
20
20
|
: chalk.cyan(kind));
|
|
21
21
|
console.log(`${location} ${kindLabel} ${String(problem.message ?? '').trim()}`);
|
|
22
22
|
}
|
|
23
|
-
if (result.truncated) {
|
|
24
|
-
const returned = Number(result.returnedProblems ?? problems.length);
|
|
25
|
-
const total = Number(result.totalProblems ?? returned);
|
|
26
|
-
console.log(chalk.yellow(`lint: showing ${returned} of ${total} problem(s); increase lint limit to see all.`));
|
|
27
|
-
}
|
|
28
23
|
}
|
|
29
24
|
export function formatLintSummary(result, elapsedMs) {
|
|
30
25
|
if (result.errors > 0 || result.warnings > 0) {
|
package/out/commands/lint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,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":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"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"}
|
package/out/commands/reason.d.ts
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
type RdfFormat = 'ttl' | 'trig' | 'nt' | 'nq' | 'n3';
|
|
1
2
|
export type ReasonOptions = {
|
|
3
|
+
owl?: string;
|
|
4
|
+
format?: RdfFormat | string;
|
|
5
|
+
clean?: boolean;
|
|
6
|
+
pretty?: boolean;
|
|
2
7
|
explanation?: boolean;
|
|
8
|
+
uniqueNamesAssumption?: boolean;
|
|
9
|
+
profile?: boolean;
|
|
10
|
+
timeout?: number;
|
|
3
11
|
authToken?: string;
|
|
4
12
|
};
|
|
5
13
|
export declare const reasonAction: (opts: ReasonOptions) => Promise<void>;
|
|
14
|
+
export {};
|
package/out/commands/reason.js
CHANGED
|
@@ -1,51 +1,220 @@
|
|
|
1
1
|
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
|
+
import { checkConsistency } from '@oml/reasoner';
|
|
2
3
|
import chalk from 'chalk';
|
|
4
|
+
import * as fs from 'node:fs/promises';
|
|
5
|
+
import * as os from 'node:os';
|
|
3
6
|
import * as path from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
import { Parser, Writer } from 'n3';
|
|
4
9
|
import { failCli } from '../cli-error.js';
|
|
5
10
|
import { formatDuration } from '../util.js';
|
|
6
11
|
import { restPost } from './server/rest.js';
|
|
7
|
-
|
|
12
|
+
function normalizeRdfFormat(value) {
|
|
13
|
+
const normalized = String(value ?? 'ttl').trim().toLowerCase();
|
|
14
|
+
if (normalized === 'trig' || normalized === 'nt' || normalized === 'nq' || normalized === 'n3') {
|
|
15
|
+
return normalized;
|
|
16
|
+
}
|
|
17
|
+
return 'ttl';
|
|
18
|
+
}
|
|
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
|
+
function prettyPrintRdf(serialized, format) {
|
|
56
|
+
if (format !== 'ttl' && format !== 'trig') {
|
|
57
|
+
return serialized;
|
|
58
|
+
}
|
|
59
|
+
const lines = serialized.split('\n');
|
|
60
|
+
const out = [];
|
|
61
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
62
|
+
const line = lines[i];
|
|
63
|
+
out.push(line);
|
|
64
|
+
if (line.trim() === '.') {
|
|
65
|
+
const next = lines[i + 1];
|
|
66
|
+
if (next !== undefined && next.trim().length > 0) {
|
|
67
|
+
out.push('');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return out.join('\n');
|
|
72
|
+
}
|
|
73
|
+
async function convertSerializedRdf(serialized, sourceFormat, targetFormat, pretty) {
|
|
74
|
+
if (sourceFormat === targetFormat && !pretty) {
|
|
75
|
+
return serialized;
|
|
76
|
+
}
|
|
77
|
+
if (sourceFormat === targetFormat) {
|
|
78
|
+
return prettyPrintRdf(serialized, targetFormat);
|
|
79
|
+
}
|
|
80
|
+
const quads = await parseRdf(serialized, sourceFormat);
|
|
81
|
+
return await serializeRdf(quads, targetFormat, pretty);
|
|
82
|
+
}
|
|
83
|
+
function replaceRdfExtension(filePath, format) {
|
|
84
|
+
const parsed = path.parse(filePath);
|
|
85
|
+
return path.join(parsed.dir, `${parsed.name}.${format}`);
|
|
86
|
+
}
|
|
87
|
+
function entailmentsArtifactPath(assertedPath, format) {
|
|
88
|
+
const parsed = path.parse(assertedPath);
|
|
89
|
+
return path.join(parsed.dir, `${parsed.name}__entailments.${format}`);
|
|
90
|
+
}
|
|
91
|
+
function resolveEntailmentsSourcePath(uri) {
|
|
92
|
+
if (typeof uri !== 'string' || uri.trim().length === 0) {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
const trimmed = uri.trim();
|
|
96
|
+
if (trimmed.startsWith('file://')) {
|
|
97
|
+
try {
|
|
98
|
+
return fileURLToPath(trimmed);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return trimmed;
|
|
105
|
+
}
|
|
106
|
+
function inferRdfFormatFromPath(filePath) {
|
|
107
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
108
|
+
if (extension === '.trig') {
|
|
109
|
+
return 'trig';
|
|
110
|
+
}
|
|
111
|
+
if (extension === '.nt') {
|
|
112
|
+
return 'nt';
|
|
113
|
+
}
|
|
114
|
+
if (extension === '.nq') {
|
|
115
|
+
return 'nq';
|
|
116
|
+
}
|
|
117
|
+
if (extension === '.n3') {
|
|
118
|
+
return 'n3';
|
|
119
|
+
}
|
|
120
|
+
return 'ttl';
|
|
121
|
+
}
|
|
8
122
|
export const reasonAction = async (opts) => {
|
|
9
123
|
const startedAt = Date.now();
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
124
|
+
const outputFormat = normalizeRdfFormat(opts.format);
|
|
125
|
+
const pretty = opts.pretty === true;
|
|
126
|
+
const assertions = await restPost('/v0/assertions', {}, opts.authToken);
|
|
127
|
+
if (!assertions.success) {
|
|
128
|
+
failCli(chalk.red(assertions.error?.trim() || 'reason failed.'));
|
|
129
|
+
}
|
|
130
|
+
if (assertions.files.length === 0) {
|
|
131
|
+
console.log(chalk.yellow(`No .oml files found under ${path.resolve('.')}.`));
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const outputDir = typeof opts.owl === 'string' && opts.owl.trim().length > 0
|
|
135
|
+
? path.resolve(opts.owl.trim())
|
|
136
|
+
: undefined;
|
|
137
|
+
const tempRoot = outputDir ?? await fs.mkdtemp(path.join(os.tmpdir(), 'oml-reason-cli-'));
|
|
138
|
+
if (outputDir) {
|
|
139
|
+
if (opts.clean === true) {
|
|
140
|
+
await fs.rm(outputDir, { recursive: true, force: true });
|
|
141
|
+
}
|
|
142
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
143
|
+
}
|
|
144
|
+
const inconsistent = [];
|
|
145
|
+
const failed = [];
|
|
146
|
+
let entailmentsPersisted = 0;
|
|
147
|
+
try {
|
|
148
|
+
for (const file of assertions.files) {
|
|
149
|
+
const target = path.join(tempRoot, file.path);
|
|
150
|
+
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
151
|
+
await fs.writeFile(target, file.content, 'utf-8');
|
|
152
|
+
}
|
|
153
|
+
for (const file of assertions.files) {
|
|
154
|
+
const target = path.join(tempRoot, file.path);
|
|
155
|
+
try {
|
|
156
|
+
const result = await checkConsistency({
|
|
157
|
+
input: target,
|
|
158
|
+
inputRoot: tempRoot,
|
|
159
|
+
explanations: opts.explanation !== false,
|
|
160
|
+
uniqueNamesAssumption: opts.uniqueNamesAssumption === true,
|
|
161
|
+
checkOnly: outputDir === undefined,
|
|
162
|
+
profile: opts.profile === true,
|
|
163
|
+
timeout: typeof opts.timeout === 'number' && Number.isFinite(opts.timeout) && opts.timeout > 0
|
|
164
|
+
? Math.floor(opts.timeout)
|
|
165
|
+
: 120000,
|
|
166
|
+
});
|
|
167
|
+
if (outputDir) {
|
|
168
|
+
const assertedArtifactPath = replaceRdfExtension(path.join(outputDir, file.path), outputFormat);
|
|
169
|
+
await fs.mkdir(path.dirname(assertedArtifactPath), { recursive: true });
|
|
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.');
|
|
175
|
+
}
|
|
176
|
+
const entailmentsSerialized = await fs.readFile(entailmentsSourcePath, 'utf-8');
|
|
177
|
+
const entailmentsArtifact = entailmentsArtifactPath(assertedArtifactPath, outputFormat);
|
|
178
|
+
await fs.mkdir(path.dirname(entailmentsArtifact), { recursive: true });
|
|
179
|
+
const entailmentsContent = await convertSerializedRdf(entailmentsSerialized, inferRdfFormatFromPath(entailmentsSourcePath), outputFormat, pretty);
|
|
180
|
+
await fs.writeFile(entailmentsArtifact, entailmentsContent, 'utf-8');
|
|
181
|
+
entailmentsPersisted += 1;
|
|
182
|
+
}
|
|
183
|
+
if (!result.consistent) {
|
|
184
|
+
inconsistent.push({
|
|
185
|
+
modelUri: file.modelUri,
|
|
186
|
+
validationWarnings: Array.isArray(result.reports) ? result.reports : [],
|
|
187
|
+
});
|
|
188
|
+
}
|
|
24
189
|
}
|
|
25
|
-
|
|
26
|
-
|
|
190
|
+
catch (error) {
|
|
191
|
+
failed.push({
|
|
192
|
+
modelUri: file.modelUri,
|
|
193
|
+
error: error instanceof Error ? error.message : String(error),
|
|
194
|
+
});
|
|
27
195
|
}
|
|
28
|
-
console.log(chalk.green(lintSummary));
|
|
29
196
|
}
|
|
30
197
|
}
|
|
31
|
-
|
|
32
|
-
|
|
198
|
+
finally {
|
|
199
|
+
if (!outputDir) {
|
|
200
|
+
await fs.rm(tempRoot, { recursive: true, force: true });
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (failed.length > 0 || inconsistent.length > 0) {
|
|
204
|
+
for (const item of failed) {
|
|
33
205
|
const modelUri = String(item.modelUri ?? '').trim();
|
|
34
206
|
console.log(chalk.red(`reason failed: ${modelUri || '<workspace>'}: ${item.error}`));
|
|
35
207
|
}
|
|
36
|
-
for (const item of
|
|
208
|
+
for (const item of inconsistent) {
|
|
37
209
|
const warnings = item.validationWarnings.length > 0 ? ` warnings=${item.validationWarnings.join('; ')}` : '';
|
|
38
210
|
console.log(chalk.red(`reason inconsistency detected: ${item.modelUri}.${warnings}`));
|
|
39
211
|
}
|
|
40
|
-
failCli(chalk.red(
|
|
212
|
+
failCli(chalk.red('reason failed.'));
|
|
41
213
|
}
|
|
42
|
-
if (
|
|
43
|
-
console.log(chalk.
|
|
214
|
+
if (outputDir) {
|
|
215
|
+
console.log(chalk.green(`reason: ${assertions.files.length} ontology file(s) reasoned in ${path.relative(process.cwd(), outputDir) || outputDir} (${entailmentsPersisted} entailment artifact file(s) written) [${formatDuration(Date.now() - startedAt)}]`));
|
|
44
216
|
return;
|
|
45
217
|
}
|
|
46
|
-
|
|
47
|
-
? result.elapsedMs
|
|
48
|
-
: Date.now() - startedAt;
|
|
49
|
-
console.log(chalk.green(`reason: ${result.ontologiesReasoned} ontology file(s) checked [${formatDuration(reasonElapsedMs)}]`));
|
|
218
|
+
console.log(chalk.green(`reason: ${assertions.files.length} ontology file(s) checked [${formatDuration(Date.now() - startedAt)}]`));
|
|
50
219
|
};
|
|
51
220
|
//# sourceMappingURL=reason.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reason.js","sourceRoot":"","sources":["../../src/commands/reason.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":"reason.js","sourceRoot":"","sources":["../../src/commands/reason.ts"],"names":[],"mappings":"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"}
|
package/out/commands/render.d.ts
CHANGED
package/out/commands/render.js
CHANGED
|
@@ -13,9 +13,10 @@ export const renderAction = async (opts) => {
|
|
|
13
13
|
failCli(chalk.red(result.error?.trim() || 'render failed.'));
|
|
14
14
|
}
|
|
15
15
|
if (result.filesRendered === 0) {
|
|
16
|
-
console.log(chalk.yellow(
|
|
16
|
+
console.log(chalk.yellow('No markdown files found.'));
|
|
17
17
|
return;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
const outputDir = result.outputDir ?? opts.web;
|
|
20
|
+
console.log(chalk.green(`render: ${result.filesRendered} markdown file(s) rendered in ${path.relative(process.cwd(), outputDir) || outputDir} [${formatDuration(Date.now() - renderStartedAt)}]`));
|
|
20
21
|
};
|
|
21
22
|
//# sourceMappingURL=render.js.map
|
|
@@ -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;
|
|
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,CAK1B,YAAY,EAAE;QACb,GAAG,IAAI;KAC4B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAEzD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,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
|
@@ -3,30 +3,9 @@ import chalk from 'chalk';
|
|
|
3
3
|
import { failCli } from '../cli-error.js';
|
|
4
4
|
import { formatDuration } from '../util.js';
|
|
5
5
|
import { restPost } from './server/rest.js';
|
|
6
|
-
import { formatLintSummary, printLintDiagnostics } from './lint.js';
|
|
7
6
|
export const validateAction = async (opts) => {
|
|
8
7
|
const startedAt = Date.now();
|
|
9
8
|
const result = await restPost('/v0/validate', {}, opts.authToken);
|
|
10
|
-
if (result.lint) {
|
|
11
|
-
const lint = result.lint;
|
|
12
|
-
if (lint.filesChecked <= 0) {
|
|
13
|
-
console.log(chalk.yellow('No .oml files found in server workspace.'));
|
|
14
|
-
}
|
|
15
|
-
else {
|
|
16
|
-
printLintDiagnostics(lint);
|
|
17
|
-
const lintElapsedMs = typeof lint.elapsedMs === 'number' && Number.isFinite(lint.elapsedMs) && lint.elapsedMs >= 0
|
|
18
|
-
? lint.elapsedMs
|
|
19
|
-
: Date.now() - startedAt;
|
|
20
|
-
const lintSummary = formatLintSummary(lint, lintElapsedMs);
|
|
21
|
-
if (lint.errors > 0) {
|
|
22
|
-
failCli(chalk.red(lintSummary));
|
|
23
|
-
}
|
|
24
|
-
if (lint.warnings > 0) {
|
|
25
|
-
failCli(chalk.yellow(lintSummary));
|
|
26
|
-
}
|
|
27
|
-
console.log(chalk.green(lintSummary));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
9
|
if (!result.success) {
|
|
31
10
|
failCli(chalk.red(result.error?.trim() || 'validate failed.'));
|
|
32
11
|
}
|
|
@@ -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;
|
|
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,CAO1B,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAEvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,kBAAkB,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACzF,OAAO;IACX,CAAC;IACD,MAAM,iBAAiB,GAAG,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC;QACxH,CAAC,CAAC,MAAM,CAAC,SAAS;QAClB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,YAAY,yBAAyB,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,QAAQ,iBAAiB,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IACpL,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,MAAM,CAAC,YAAY,yBAAyB,MAAM,CAAC,QAAQ,iBAAiB,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IACzJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,YAAY,sBAAsB,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;AACzH,CAAC,CAAC"}
|
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.15",
|
|
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.15",
|
|
27
27
|
"chalk": "~5.3.0",
|
|
28
28
|
"chevrotain": "11.1.2",
|
|
29
29
|
"commander": "~11.1.0",
|
package/src/cli.ts
CHANGED
|
@@ -31,17 +31,17 @@ export function getWorkspaceCommands(): CliCommandInfo[] {
|
|
|
31
31
|
{
|
|
32
32
|
name: 'render [options]',
|
|
33
33
|
description: 'lint the workspace, then render markdown files to static html',
|
|
34
|
-
usage: 'render -m <input-folder> -b <output-folder> [-c <ontology-iri>]'
|
|
34
|
+
usage: 'render -m <input-folder> -b <output-folder> [--clean] [-c <ontology-iri>]'
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
37
|
name: 'export [options]',
|
|
38
|
-
description: 'export OWL files
|
|
38
|
+
description: 'export asserted OWL files (no reasoning)',
|
|
39
39
|
usage: 'export [-o <dir>] [-f <ext>] [--clean] [--pretty]'
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
name: 'reason [options]',
|
|
43
|
-
description: 'run workspace consistency checks
|
|
44
|
-
usage: 'reason [-e <true|false>]'
|
|
43
|
+
description: 'run workspace consistency checks (or persist assertions/entailments with --owl)',
|
|
44
|
+
usage: 'reason [-o <dir>] [-f <ext>] [--clean] [--pretty] [-e <true|false>]'
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
name: 'validate [options]',
|
|
@@ -148,7 +148,8 @@ export async function runCli(argv: string[] = process.argv): Promise<void> {
|
|
|
148
148
|
.command('render')
|
|
149
149
|
.requiredOption('-m, --md <input-folder>', 'folder containing markdown files to render')
|
|
150
150
|
.requiredOption('-b, --web <output-folder>', 'folder where rendered static site files are written')
|
|
151
|
-
.option('
|
|
151
|
+
.option('--clean', 'remove output folder before render')
|
|
152
|
+
.option('-c, --context <model-path>', 'workspace-relative .oml model path used as default navigation context for wikilinks')
|
|
152
153
|
.description('lint the workspace, then render markdown files to static html')
|
|
153
154
|
.action(async (...args: unknown[]) => {
|
|
154
155
|
const done = trackCommand('oml-render');
|
|
@@ -171,7 +172,7 @@ export async function runCli(argv: string[] = process.argv): Promise<void> {
|
|
|
171
172
|
.option('-f, --format <ext>', 'RDF format extension: ttl, trig, nt, nq, or n3', 'ttl')
|
|
172
173
|
.option('--clean', 'remove output folder before export')
|
|
173
174
|
.option('--pretty', 'pretty-print Turtle/TriG output with blank lines between top-level blocks')
|
|
174
|
-
.description('export OWL files
|
|
175
|
+
.description('export asserted OWL files (no reasoning)')
|
|
175
176
|
.action(async (...args: unknown[]) => {
|
|
176
177
|
const done = trackCommand('oml-export');
|
|
177
178
|
try {
|
|
@@ -189,8 +190,12 @@ export async function runCli(argv: string[] = process.argv): Promise<void> {
|
|
|
189
190
|
|
|
190
191
|
program
|
|
191
192
|
.command('reason')
|
|
193
|
+
.option('-o, --owl <dir>', 'persist assertions/entailments to folder (default: check-only with no persistence)')
|
|
194
|
+
.option('-f, --format <ext>', 'RDF format extension: ttl, trig, nt, nq, or n3', 'ttl')
|
|
195
|
+
.option('--clean', 'remove output folder before reason (only when --owl is provided)')
|
|
196
|
+
.option('--pretty', 'pretty-print Turtle/TriG output with blank lines between top-level blocks (only when --owl is provided)')
|
|
192
197
|
.option('-e, --explanation [value]', 'enable or disable inconsistency explanations', parseBooleanOption, true)
|
|
193
|
-
.description('run workspace consistency checks
|
|
198
|
+
.description('run workspace consistency checks (or persist entailments with --owl)')
|
|
194
199
|
.action(async (opts) => {
|
|
195
200
|
const done = trackCommand('oml-reason');
|
|
196
201
|
try {
|
package/src/commands/export.ts
CHANGED
|
@@ -7,45 +7,53 @@ import { formatDuration } from '../util.js';
|
|
|
7
7
|
import { restPost } from './server/rest.js';
|
|
8
8
|
|
|
9
9
|
export type ExportOptions = {
|
|
10
|
-
owl?: string
|
|
11
|
-
format?: string
|
|
12
|
-
clean?: boolean
|
|
13
|
-
pretty?: boolean
|
|
14
|
-
authToken?: string
|
|
10
|
+
owl?: string;
|
|
11
|
+
format?: 'ttl' | 'trig' | 'nt' | 'nq' | 'n3' | string;
|
|
12
|
+
clean?: boolean;
|
|
13
|
+
pretty?: boolean;
|
|
14
|
+
authToken?: string;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
+
type ExportPayload = {
|
|
18
|
+
success: boolean;
|
|
19
|
+
filesWritten: number;
|
|
20
|
+
outputDir: string;
|
|
21
|
+
format: 'ttl' | 'trig' | 'nt' | 'nq' | 'n3';
|
|
22
|
+
pretty: boolean;
|
|
23
|
+
error?: string;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
function normalizeRdfFormat(value: string | undefined): 'ttl' | 'trig' | 'nt' | 'nq' | 'n3' {
|
|
27
|
+
const normalized = String(value ?? 'ttl').trim().toLowerCase();
|
|
28
|
+
if (normalized === 'trig' || normalized === 'nt' || normalized === 'nq' || normalized === 'n3') {
|
|
29
|
+
return normalized;
|
|
30
|
+
}
|
|
31
|
+
return 'ttl';
|
|
32
|
+
}
|
|
33
|
+
|
|
17
34
|
export const exportAction = async (opts: ExportOptions): Promise<void> => {
|
|
18
35
|
const startedAt = Date.now();
|
|
19
|
-
|
|
20
|
-
const result = await restPost<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
reason?: {
|
|
31
|
-
success: boolean;
|
|
32
|
-
ontologiesReasoned: number;
|
|
33
|
-
inconsistent: Array<{ modelUri: string; validationWarnings: string[] }>;
|
|
34
|
-
failed: Array<{ modelUri: string; error: string }>;
|
|
35
|
-
};
|
|
36
|
-
}>('/v0/export', {
|
|
37
|
-
...opts,
|
|
38
|
-
} as unknown as Record<string, unknown>, opts.authToken);
|
|
36
|
+
const format = normalizeRdfFormat(opts.format);
|
|
37
|
+
const result = await restPost<ExportPayload>(
|
|
38
|
+
'/v0/export',
|
|
39
|
+
{
|
|
40
|
+
owl: opts.owl,
|
|
41
|
+
format,
|
|
42
|
+
clean: opts.clean,
|
|
43
|
+
pretty: opts.pretty === true,
|
|
44
|
+
} as Record<string, unknown>,
|
|
45
|
+
opts.authToken,
|
|
46
|
+
);
|
|
39
47
|
|
|
40
48
|
if (!result.success) {
|
|
41
|
-
failCli(chalk.red(result.error?.trim() ||
|
|
49
|
+
failCli(chalk.red(result.error?.trim() || 'export failed.'));
|
|
42
50
|
}
|
|
43
|
-
|
|
44
|
-
if (written === 0) {
|
|
51
|
+
if (result.filesWritten <= 0) {
|
|
45
52
|
console.log(chalk.yellow('No .oml files found in server workspace.'));
|
|
46
53
|
return;
|
|
47
54
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
|
|
56
|
+
console.log(chalk.green(
|
|
57
|
+
`export: ${result.filesWritten} OML file(s) exported in ${path.relative(process.cwd(), result.outputDir) || result.outputDir} [${formatDuration(Date.now() - startedAt)}]`
|
|
58
|
+
));
|
|
51
59
|
};
|
package/src/commands/lint.ts
CHANGED
|
@@ -21,9 +21,6 @@ export type LintPayload = {
|
|
|
21
21
|
errors: number;
|
|
22
22
|
warnings: number;
|
|
23
23
|
elapsedMs?: number;
|
|
24
|
-
returnedProblems?: number;
|
|
25
|
-
totalProblems?: number;
|
|
26
|
-
truncated?: boolean;
|
|
27
24
|
problems?: LintProblem[];
|
|
28
25
|
error?: string;
|
|
29
26
|
};
|
|
@@ -47,11 +44,6 @@ export function printLintDiagnostics(result: LintPayload): void {
|
|
|
47
44
|
: chalk.cyan(kind));
|
|
48
45
|
console.log(`${location} ${kindLabel} ${String(problem.message ?? '').trim()}`);
|
|
49
46
|
}
|
|
50
|
-
if (result.truncated) {
|
|
51
|
-
const returned = Number(result.returnedProblems ?? problems.length);
|
|
52
|
-
const total = Number(result.totalProblems ?? returned);
|
|
53
|
-
console.log(chalk.yellow(`lint: showing ${returned} of ${total} problem(s); increase lint limit to see all.`));
|
|
54
|
-
}
|
|
55
47
|
}
|
|
56
48
|
|
|
57
49
|
export function formatLintSummary(result: LintPayload, elapsedMs: number): string {
|
package/src/commands/reason.ts
CHANGED
|
@@ -1,69 +1,269 @@
|
|
|
1
1
|
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
2
|
|
|
3
|
+
import { checkConsistency } from '@oml/reasoner';
|
|
3
4
|
import chalk from 'chalk';
|
|
5
|
+
import * as fs from 'node:fs/promises';
|
|
6
|
+
import * as os from 'node:os';
|
|
4
7
|
import * as path from 'node:path';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
import { Parser, Writer } from 'n3';
|
|
5
10
|
import { failCli } from '../cli-error.js';
|
|
6
11
|
import { formatDuration } from '../util.js';
|
|
7
12
|
import { restPost } from './server/rest.js';
|
|
8
|
-
|
|
13
|
+
|
|
14
|
+
type RdfFormat = 'ttl' | 'trig' | 'nt' | 'nq' | 'n3';
|
|
9
15
|
|
|
10
16
|
export type ReasonOptions = {
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
owl?: string;
|
|
18
|
+
format?: RdfFormat | string;
|
|
19
|
+
clean?: boolean;
|
|
20
|
+
pretty?: boolean;
|
|
21
|
+
explanation?: boolean;
|
|
22
|
+
uniqueNamesAssumption?: boolean;
|
|
23
|
+
profile?: boolean;
|
|
24
|
+
timeout?: number;
|
|
25
|
+
authToken?: string;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
type AssertionsPayload = {
|
|
29
|
+
success: boolean;
|
|
30
|
+
error?: string;
|
|
31
|
+
files: Array<{
|
|
32
|
+
modelUri: string;
|
|
33
|
+
ontologyIri: string;
|
|
34
|
+
path: string;
|
|
35
|
+
content: string;
|
|
36
|
+
}>;
|
|
13
37
|
};
|
|
14
38
|
|
|
39
|
+
function normalizeRdfFormat(value: string | undefined): RdfFormat {
|
|
40
|
+
const normalized = String(value ?? 'ttl').trim().toLowerCase();
|
|
41
|
+
if (normalized === 'trig' || normalized === 'nt' || normalized === 'nq' || normalized === 'n3') {
|
|
42
|
+
return normalized;
|
|
43
|
+
}
|
|
44
|
+
return 'ttl';
|
|
45
|
+
}
|
|
46
|
+
|
|
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
|
+
function prettyPrintRdf(serialized: string, format: RdfFormat): string {
|
|
88
|
+
if (format !== 'ttl' && format !== 'trig') {
|
|
89
|
+
return serialized;
|
|
90
|
+
}
|
|
91
|
+
const lines = serialized.split('\n');
|
|
92
|
+
const out: string[] = [];
|
|
93
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
94
|
+
const line = lines[i];
|
|
95
|
+
out.push(line);
|
|
96
|
+
if (line.trim() === '.') {
|
|
97
|
+
const next = lines[i + 1];
|
|
98
|
+
if (next !== undefined && next.trim().length > 0) {
|
|
99
|
+
out.push('');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return out.join('\n');
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async function convertSerializedRdf(serialized: string, sourceFormat: RdfFormat, targetFormat: RdfFormat, pretty: boolean): Promise<string> {
|
|
107
|
+
if (sourceFormat === targetFormat && !pretty) {
|
|
108
|
+
return serialized;
|
|
109
|
+
}
|
|
110
|
+
if (sourceFormat === targetFormat) {
|
|
111
|
+
return prettyPrintRdf(serialized, targetFormat);
|
|
112
|
+
}
|
|
113
|
+
const quads = await parseRdf(serialized, sourceFormat);
|
|
114
|
+
return await serializeRdf(quads, targetFormat, pretty);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function replaceRdfExtension(filePath: string, format: RdfFormat): string {
|
|
118
|
+
const parsed = path.parse(filePath);
|
|
119
|
+
return path.join(parsed.dir, `${parsed.name}.${format}`);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function entailmentsArtifactPath(assertedPath: string, format: RdfFormat): string {
|
|
123
|
+
const parsed = path.parse(assertedPath);
|
|
124
|
+
return path.join(parsed.dir, `${parsed.name}__entailments.${format}`);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function resolveEntailmentsSourcePath(uri: string | undefined): string | undefined {
|
|
128
|
+
if (typeof uri !== 'string' || uri.trim().length === 0) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
const trimmed = uri.trim();
|
|
132
|
+
if (trimmed.startsWith('file://')) {
|
|
133
|
+
try {
|
|
134
|
+
return fileURLToPath(trimmed);
|
|
135
|
+
} catch {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return trimmed;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function inferRdfFormatFromPath(filePath: string): RdfFormat {
|
|
143
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
144
|
+
if (extension === '.trig') {
|
|
145
|
+
return 'trig';
|
|
146
|
+
}
|
|
147
|
+
if (extension === '.nt') {
|
|
148
|
+
return 'nt';
|
|
149
|
+
}
|
|
150
|
+
if (extension === '.nq') {
|
|
151
|
+
return 'nq';
|
|
152
|
+
}
|
|
153
|
+
if (extension === '.n3') {
|
|
154
|
+
return 'n3';
|
|
155
|
+
}
|
|
156
|
+
return 'ttl';
|
|
157
|
+
}
|
|
158
|
+
|
|
15
159
|
export const reasonAction = async (opts: ReasonOptions): Promise<void> => {
|
|
16
160
|
const startedAt = Date.now();
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
error
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
161
|
+
const outputFormat = normalizeRdfFormat(opts.format);
|
|
162
|
+
const pretty = opts.pretty === true;
|
|
163
|
+
const assertions = await restPost<AssertionsPayload>(
|
|
164
|
+
'/v0/assertions',
|
|
165
|
+
{} as Record<string, unknown>,
|
|
166
|
+
opts.authToken,
|
|
167
|
+
);
|
|
168
|
+
if (!assertions.success) {
|
|
169
|
+
failCli(chalk.red(assertions.error?.trim() || 'reason failed.'));
|
|
170
|
+
}
|
|
171
|
+
if (assertions.files.length === 0) {
|
|
172
|
+
console.log(chalk.yellow(`No .oml files found under ${path.resolve('.')}.`));
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
const outputDir = typeof opts.owl === 'string' && opts.owl.trim().length > 0
|
|
177
|
+
? path.resolve(opts.owl.trim())
|
|
178
|
+
: undefined;
|
|
179
|
+
const tempRoot = outputDir ?? await fs.mkdtemp(path.join(os.tmpdir(), 'oml-reason-cli-'));
|
|
180
|
+
if (outputDir) {
|
|
181
|
+
if (opts.clean === true) {
|
|
182
|
+
await fs.rm(outputDir, { recursive: true, force: true });
|
|
183
|
+
}
|
|
184
|
+
await fs.mkdir(outputDir, { recursive: true });
|
|
185
|
+
}
|
|
186
|
+
const inconsistent: Array<{ modelUri: string; validationWarnings: string[] }> = [];
|
|
187
|
+
const failed: Array<{ modelUri: string; error: string }> = [];
|
|
188
|
+
let entailmentsPersisted = 0;
|
|
189
|
+
try {
|
|
190
|
+
for (const file of assertions.files) {
|
|
191
|
+
const target = path.join(tempRoot, file.path);
|
|
192
|
+
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
193
|
+
await fs.writeFile(target, file.content, 'utf-8');
|
|
194
|
+
}
|
|
195
|
+
for (const file of assertions.files) {
|
|
196
|
+
const target = path.join(tempRoot, file.path);
|
|
197
|
+
try {
|
|
198
|
+
const result = await checkConsistency({
|
|
199
|
+
input: target,
|
|
200
|
+
inputRoot: tempRoot,
|
|
201
|
+
explanations: opts.explanation !== false,
|
|
202
|
+
uniqueNamesAssumption: opts.uniqueNamesAssumption === true,
|
|
203
|
+
checkOnly: outputDir === undefined,
|
|
204
|
+
profile: opts.profile === true,
|
|
205
|
+
timeout: typeof opts.timeout === 'number' && Number.isFinite(opts.timeout) && opts.timeout > 0
|
|
206
|
+
? Math.floor(opts.timeout)
|
|
207
|
+
: 120_000,
|
|
208
|
+
});
|
|
209
|
+
if (outputDir) {
|
|
210
|
+
const assertedArtifactPath = replaceRdfExtension(path.join(outputDir, file.path), outputFormat);
|
|
211
|
+
await fs.mkdir(path.dirname(assertedArtifactPath), { recursive: true });
|
|
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.');
|
|
218
|
+
}
|
|
219
|
+
const entailmentsSerialized = await fs.readFile(entailmentsSourcePath, 'utf-8');
|
|
220
|
+
const entailmentsArtifact = entailmentsArtifactPath(assertedArtifactPath, outputFormat);
|
|
221
|
+
await fs.mkdir(path.dirname(entailmentsArtifact), { recursive: true });
|
|
222
|
+
const entailmentsContent = await convertSerializedRdf(
|
|
223
|
+
entailmentsSerialized,
|
|
224
|
+
inferRdfFormatFromPath(entailmentsSourcePath),
|
|
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
|
+
});
|
|
236
|
+
}
|
|
237
|
+
} catch (error) {
|
|
238
|
+
failed.push({
|
|
239
|
+
modelUri: file.modelUri,
|
|
240
|
+
error: error instanceof Error ? error.message : String(error),
|
|
241
|
+
});
|
|
43
242
|
}
|
|
44
|
-
|
|
243
|
+
}
|
|
244
|
+
} finally {
|
|
245
|
+
if (!outputDir) {
|
|
246
|
+
await fs.rm(tempRoot, { recursive: true, force: true });
|
|
45
247
|
}
|
|
46
248
|
}
|
|
47
249
|
|
|
48
|
-
if (
|
|
49
|
-
for (const item of
|
|
250
|
+
if (failed.length > 0 || inconsistent.length > 0) {
|
|
251
|
+
for (const item of failed) {
|
|
50
252
|
const modelUri = String(item.modelUri ?? '').trim();
|
|
51
253
|
console.log(chalk.red(`reason failed: ${modelUri || '<workspace>'}: ${item.error}`));
|
|
52
254
|
}
|
|
53
|
-
for (const item of
|
|
255
|
+
for (const item of inconsistent) {
|
|
54
256
|
const warnings = item.validationWarnings.length > 0 ? ` warnings=${item.validationWarnings.join('; ')}` : '';
|
|
55
257
|
console.log(chalk.red(`reason inconsistency detected: ${item.modelUri}.${warnings}`));
|
|
56
258
|
}
|
|
57
|
-
failCli(chalk.red(
|
|
259
|
+
failCli(chalk.red('reason failed.'));
|
|
58
260
|
}
|
|
59
261
|
|
|
60
|
-
if (
|
|
61
|
-
console.log(chalk.
|
|
262
|
+
if (outputDir) {
|
|
263
|
+
console.log(chalk.green(
|
|
264
|
+
`reason: ${assertions.files.length} ontology file(s) reasoned in ${path.relative(process.cwd(), outputDir) || outputDir} (${entailmentsPersisted} entailment artifact file(s) written) [${formatDuration(Date.now() - startedAt)}]`
|
|
265
|
+
));
|
|
62
266
|
return;
|
|
63
267
|
}
|
|
64
|
-
|
|
65
|
-
const reasonElapsedMs = typeof result.elapsedMs === 'number' && Number.isFinite(result.elapsedMs) && result.elapsedMs >= 0
|
|
66
|
-
? result.elapsedMs
|
|
67
|
-
: Date.now() - startedAt;
|
|
68
|
-
console.log(chalk.green(`reason: ${result.ontologiesReasoned} ontology file(s) checked [${formatDuration(reasonElapsedMs)}]`));
|
|
268
|
+
console.log(chalk.green(`reason: ${assertions.files.length} ontology file(s) checked [${formatDuration(Date.now() - startedAt)}]`));
|
|
69
269
|
};
|
package/src/commands/render.ts
CHANGED
|
@@ -7,10 +7,11 @@ import { formatDuration } from '../util.js';
|
|
|
7
7
|
import { restPost } from './server/rest.js';
|
|
8
8
|
|
|
9
9
|
export type RenderOptions = {
|
|
10
|
-
md: string
|
|
11
|
-
web: string
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
md: string;
|
|
11
|
+
web: string;
|
|
12
|
+
clean?: boolean;
|
|
13
|
+
context?: string;
|
|
14
|
+
authToken?: string;
|
|
14
15
|
};
|
|
15
16
|
|
|
16
17
|
export const renderAction = async (opts: RenderOptions): Promise<void> => {
|
|
@@ -18,7 +19,7 @@ export const renderAction = async (opts: RenderOptions): Promise<void> => {
|
|
|
18
19
|
const result = await restPost<{
|
|
19
20
|
success: boolean;
|
|
20
21
|
filesRendered: number;
|
|
21
|
-
outputDir
|
|
22
|
+
outputDir?: string;
|
|
22
23
|
error?: string;
|
|
23
24
|
}>('/v0/render', {
|
|
24
25
|
...opts,
|
|
@@ -28,8 +29,9 @@ export const renderAction = async (opts: RenderOptions): Promise<void> => {
|
|
|
28
29
|
failCli(chalk.red(result.error?.trim() || 'render failed.'));
|
|
29
30
|
}
|
|
30
31
|
if (result.filesRendered === 0) {
|
|
31
|
-
console.log(chalk.yellow(
|
|
32
|
+
console.log(chalk.yellow('No markdown files found.'));
|
|
32
33
|
return;
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
+
const outputDir = result.outputDir ?? opts.web;
|
|
36
|
+
console.log(chalk.green(`render: ${result.filesRendered} markdown file(s) rendered in ${path.relative(process.cwd(), outputDir) || outputDir} [${formatDuration(Date.now() - renderStartedAt)}]`));
|
|
35
37
|
};
|
package/src/commands/validate.ts
CHANGED
|
@@ -4,7 +4,6 @@ import chalk from 'chalk';
|
|
|
4
4
|
import { failCli } from '../cli-error.js';
|
|
5
5
|
import { formatDuration } from '../util.js';
|
|
6
6
|
import { restPost } from './server/rest.js';
|
|
7
|
-
import { formatLintSummary, printLintDiagnostics, type LintPayload } from './lint.js';
|
|
8
7
|
|
|
9
8
|
export type ValidateOptions = {
|
|
10
9
|
authToken?: string;
|
|
@@ -18,30 +17,9 @@ export const validateAction = async (opts: ValidateOptions): Promise<void> => {
|
|
|
18
17
|
errors: number;
|
|
19
18
|
warnings: number;
|
|
20
19
|
elapsedMs?: number;
|
|
21
|
-
lint?: LintPayload;
|
|
22
20
|
error?: string;
|
|
23
21
|
}>('/v0/validate', {}, opts.authToken);
|
|
24
22
|
|
|
25
|
-
if (result.lint) {
|
|
26
|
-
const lint = result.lint;
|
|
27
|
-
if (lint.filesChecked <= 0) {
|
|
28
|
-
console.log(chalk.yellow('No .oml files found in server workspace.'));
|
|
29
|
-
} else {
|
|
30
|
-
printLintDiagnostics(lint);
|
|
31
|
-
const lintElapsedMs = typeof lint.elapsedMs === 'number' && Number.isFinite(lint.elapsedMs) && lint.elapsedMs >= 0
|
|
32
|
-
? lint.elapsedMs
|
|
33
|
-
: Date.now() - startedAt;
|
|
34
|
-
const lintSummary = formatLintSummary(lint, lintElapsedMs);
|
|
35
|
-
if (lint.errors > 0) {
|
|
36
|
-
failCli(chalk.red(lintSummary));
|
|
37
|
-
}
|
|
38
|
-
if (lint.warnings > 0) {
|
|
39
|
-
failCli(chalk.yellow(lintSummary));
|
|
40
|
-
}
|
|
41
|
-
console.log(chalk.green(lintSummary));
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
23
|
if (!result.success) {
|
|
46
24
|
failCli(chalk.red(result.error?.trim() || 'validate failed.'));
|
|
47
25
|
}
|