@nahisaho/musubix-sdd-ontology 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/loader/index.d.ts +6 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +6 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/loader/ontology-loader.d.ts +38 -0
- package/dist/loader/ontology-loader.d.ts.map +1 -0
- package/dist/loader/ontology-loader.js +87 -0
- package/dist/loader/ontology-loader.js.map +1 -0
- package/dist/modules/c4.d.ts +32 -0
- package/dist/modules/c4.d.ts.map +1 -0
- package/dist/modules/c4.js +52 -0
- package/dist/modules/c4.js.map +1 -0
- package/dist/modules/core.d.ts +24 -0
- package/dist/modules/core.d.ts.map +1 -0
- package/dist/modules/core.js +33 -0
- package/dist/modules/core.js.map +1 -0
- package/dist/modules/ears.d.ts +28 -0
- package/dist/modules/ears.d.ts.map +1 -0
- package/dist/modules/ears.js +93 -0
- package/dist/modules/ears.js.map +1 -0
- package/dist/modules/traceability.d.ts +32 -0
- package/dist/modules/traceability.d.ts.map +1 -0
- package/dist/modules/traceability.js +58 -0
- package/dist/modules/traceability.js.map +1 -0
- package/dist/types.d.ts +106 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/validator/index.d.ts +6 -0
- package/dist/validator/index.d.ts.map +1 -0
- package/dist/validator/index.js +6 -0
- package/dist/validator/index.js.map +1 -0
- package/dist/validator/ontology-validator.d.ts +23 -0
- package/dist/validator/ontology-validator.d.ts.map +1 -0
- package/dist/validator/ontology-validator.js +120 -0
- package/dist/validator/ontology-validator.js.map +1 -0
- package/package.json +50 -0
- package/ttl/sdd-core.ttl +493 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MUSUBIX SDD Ontology
|
|
3
|
+
* @module @nahisaho/musubix-sdd-ontology
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
* @traceability REQ-SDD-ONTO-001
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export * from './modules/core.js';
|
|
9
|
+
export * from './modules/ears.js';
|
|
10
|
+
export * from './modules/c4.js';
|
|
11
|
+
export * from './modules/traceability.js';
|
|
12
|
+
export * from './loader/index.js';
|
|
13
|
+
export * from './validator/index.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,YAAY,CAAC;AAG3B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,mBAAmB,CAAC;AAGlC,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MUSUBIX SDD Ontology
|
|
3
|
+
* @module @nahisaho/musubix-sdd-ontology
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
* @traceability REQ-SDD-ONTO-001
|
|
6
|
+
*/
|
|
7
|
+
// Types
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
// Core Module (TSK-SDD-ONTO-001)
|
|
10
|
+
export * from './modules/core.js';
|
|
11
|
+
// EARS Module (TSK-SDD-ONTO-002)
|
|
12
|
+
export * from './modules/ears.js';
|
|
13
|
+
// C4 Module (TSK-SDD-ONTO-003)
|
|
14
|
+
export * from './modules/c4.js';
|
|
15
|
+
// Traceability Module (TSK-SDD-ONTO-004)
|
|
16
|
+
export * from './modules/traceability.js';
|
|
17
|
+
// Loader (TSK-SDD-ONTO-005)
|
|
18
|
+
export * from './loader/index.js';
|
|
19
|
+
// Validator (TSK-SDD-ONTO-006)
|
|
20
|
+
export * from './validator/index.js';
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,iCAAiC;AACjC,cAAc,mBAAmB,CAAC;AAElC,iCAAiC;AACjC,cAAc,mBAAmB,CAAC;AAElC,+BAA+B;AAC/B,cAAc,iBAAiB,CAAC;AAEhC,yCAAyC;AACzC,cAAc,2BAA2B,CAAC;AAE1C,4BAA4B;AAC5B,cAAc,mBAAmB,CAAC;AAElC,+BAA+B;AAC/B,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loader/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loader/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Ontology loader for TTL files
|
|
3
|
+
* @traceability TSK-SDD-ONTO-005, REQ-SDD-ONTO-001-F005
|
|
4
|
+
*/
|
|
5
|
+
import type { OntologyModule } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Ontology loader for TTL files
|
|
8
|
+
*/
|
|
9
|
+
export declare class OntologyLoader {
|
|
10
|
+
private basePath;
|
|
11
|
+
private loadedModules;
|
|
12
|
+
constructor(basePath?: string);
|
|
13
|
+
/**
|
|
14
|
+
* Load single module by ID
|
|
15
|
+
*/
|
|
16
|
+
loadModule(moduleId: string): Promise<string | null>;
|
|
17
|
+
/**
|
|
18
|
+
* Load all modules
|
|
19
|
+
*/
|
|
20
|
+
loadAll(): Promise<Map<string, string>>;
|
|
21
|
+
/**
|
|
22
|
+
* Get module metadata
|
|
23
|
+
*/
|
|
24
|
+
getModuleMetadata(moduleId: string): OntologyModule | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* List all available modules
|
|
27
|
+
*/
|
|
28
|
+
listModules(): OntologyModule[];
|
|
29
|
+
/**
|
|
30
|
+
* Check if module is loaded
|
|
31
|
+
*/
|
|
32
|
+
isLoaded(moduleId: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Get loaded module count
|
|
35
|
+
*/
|
|
36
|
+
get loadedCount(): number;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ontology-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ontology-loader.d.ts","sourceRoot":"","sources":["../../src/loader/ontology-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAWlD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAA6B;gBAEtC,QAAQ,CAAC,EAAE,MAAM;IAK7B;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0B1D;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAO7C;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI/D;;OAEG;IACH,WAAW,IAAI,cAAc,EAAE;IAI/B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;CACF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Ontology loader for TTL files
|
|
3
|
+
* @traceability TSK-SDD-ONTO-005, REQ-SDD-ONTO-001-F005
|
|
4
|
+
*/
|
|
5
|
+
import { readFile } from 'node:fs/promises';
|
|
6
|
+
import { join, dirname } from 'node:path';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
import { coreModule } from '../modules/core.js';
|
|
9
|
+
import { earsModule } from '../modules/ears.js';
|
|
10
|
+
import { c4Module } from '../modules/c4.js';
|
|
11
|
+
import { traceModule } from '../modules/traceability.js';
|
|
12
|
+
/**
|
|
13
|
+
* All available ontology modules
|
|
14
|
+
*/
|
|
15
|
+
const allModules = [coreModule, earsModule, c4Module, traceModule];
|
|
16
|
+
/**
|
|
17
|
+
* Ontology loader for TTL files
|
|
18
|
+
*/
|
|
19
|
+
export class OntologyLoader {
|
|
20
|
+
basePath;
|
|
21
|
+
loadedModules = new Map();
|
|
22
|
+
constructor(basePath) {
|
|
23
|
+
// Default to package's ttl directory
|
|
24
|
+
this.basePath = basePath ?? join(dirname(fileURLToPath(import.meta.url)), '../../ttl');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Load single module by ID
|
|
28
|
+
*/
|
|
29
|
+
async loadModule(moduleId) {
|
|
30
|
+
const module = allModules.find(m => m.id === moduleId);
|
|
31
|
+
if (!module)
|
|
32
|
+
return null;
|
|
33
|
+
// Check cache
|
|
34
|
+
if (this.loadedModules.has(moduleId)) {
|
|
35
|
+
return this.loadedModules.get(moduleId) ?? null;
|
|
36
|
+
}
|
|
37
|
+
// Load dependencies first
|
|
38
|
+
for (const depId of module.dependencies) {
|
|
39
|
+
await this.loadModule(depId);
|
|
40
|
+
}
|
|
41
|
+
// Load module file
|
|
42
|
+
try {
|
|
43
|
+
const filePath = join(this.basePath, module.filePath.replace('ttl/', ''));
|
|
44
|
+
const content = await readFile(filePath, 'utf-8');
|
|
45
|
+
this.loadedModules.set(moduleId, content);
|
|
46
|
+
return content;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// File not found - module may be stub only
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Load all modules
|
|
55
|
+
*/
|
|
56
|
+
async loadAll() {
|
|
57
|
+
for (const module of allModules) {
|
|
58
|
+
await this.loadModule(module.id);
|
|
59
|
+
}
|
|
60
|
+
return new Map(this.loadedModules);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get module metadata
|
|
64
|
+
*/
|
|
65
|
+
getModuleMetadata(moduleId) {
|
|
66
|
+
return allModules.find(m => m.id === moduleId);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* List all available modules
|
|
70
|
+
*/
|
|
71
|
+
listModules() {
|
|
72
|
+
return [...allModules];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if module is loaded
|
|
76
|
+
*/
|
|
77
|
+
isLoaded(moduleId) {
|
|
78
|
+
return this.loadedModules.has(moduleId);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get loaded module count
|
|
82
|
+
*/
|
|
83
|
+
get loadedCount() {
|
|
84
|
+
return this.loadedModules.size;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=ontology-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ontology-loader.js","sourceRoot":"","sources":["../../src/loader/ontology-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview C4 model ontology module
|
|
3
|
+
* @traceability TSK-SDD-ONTO-003
|
|
4
|
+
*/
|
|
5
|
+
import type { OntologyModule, C4Level, C4Element } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* C4 ontology module
|
|
8
|
+
*/
|
|
9
|
+
export declare const c4Module: OntologyModule;
|
|
10
|
+
/**
|
|
11
|
+
* C4 namespace prefixes
|
|
12
|
+
*/
|
|
13
|
+
export declare const c4Prefixes: {
|
|
14
|
+
c4: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* C4 level hierarchy
|
|
18
|
+
*/
|
|
19
|
+
export declare const c4LevelHierarchy: C4Level[];
|
|
20
|
+
/**
|
|
21
|
+
* Validate C4 element parent-child relationship
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateC4Hierarchy(parent: C4Element, child: C4Element): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Get valid child level for a parent level
|
|
26
|
+
*/
|
|
27
|
+
export declare function getChildLevel(parentLevel: C4Level): C4Level | null;
|
|
28
|
+
/**
|
|
29
|
+
* Get C4 module metadata
|
|
30
|
+
*/
|
|
31
|
+
export declare function getC4Module(): OntologyModule;
|
|
32
|
+
//# sourceMappingURL=c4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"c4.d.ts","sourceRoot":"","sources":["../../src/modules/c4.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,cAQtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;CAEtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAAO,EAAkD,CAAC;AAEzF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAMhF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAMlE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,cAAc,CAE5C"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview C4 model ontology module
|
|
3
|
+
* @traceability TSK-SDD-ONTO-003
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* C4 ontology module
|
|
7
|
+
*/
|
|
8
|
+
export const c4Module = {
|
|
9
|
+
id: 'sdd-c4',
|
|
10
|
+
name: 'SDD C4 Model Ontology',
|
|
11
|
+
namespace: 'https://musubix.dev/ontology/sdd/c4#',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
description: 'C4 model (Context, Container, Component, Code) concepts',
|
|
14
|
+
dependencies: ['sdd-core'],
|
|
15
|
+
filePath: 'ttl/sdd-c4.ttl',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* C4 namespace prefixes
|
|
19
|
+
*/
|
|
20
|
+
export const c4Prefixes = {
|
|
21
|
+
'c4': 'https://musubix.dev/ontology/sdd/c4#',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* C4 level hierarchy
|
|
25
|
+
*/
|
|
26
|
+
export const c4LevelHierarchy = ['context', 'container', 'component', 'code'];
|
|
27
|
+
/**
|
|
28
|
+
* Validate C4 element parent-child relationship
|
|
29
|
+
*/
|
|
30
|
+
export function validateC4Hierarchy(parent, child) {
|
|
31
|
+
const parentIndex = c4LevelHierarchy.indexOf(parent.level);
|
|
32
|
+
const childIndex = c4LevelHierarchy.indexOf(child.level);
|
|
33
|
+
// Child must be exactly one level deeper
|
|
34
|
+
return childIndex === parentIndex + 1;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get valid child level for a parent level
|
|
38
|
+
*/
|
|
39
|
+
export function getChildLevel(parentLevel) {
|
|
40
|
+
const parentIndex = c4LevelHierarchy.indexOf(parentLevel);
|
|
41
|
+
if (parentIndex < 0 || parentIndex >= c4LevelHierarchy.length - 1) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return c4LevelHierarchy[parentIndex + 1];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get C4 module metadata
|
|
48
|
+
*/
|
|
49
|
+
export function getC4Module() {
|
|
50
|
+
return { ...c4Module };
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=c4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"c4.js","sourceRoot":"","sources":["../../src/modules/c4.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,uBAAuB;IAC7B,SAAS,EAAE,sCAAsC;IACjD,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,yDAAyD;IACtE,YAAY,EAAE,CAAC,UAAU,CAAC;IAC1B,QAAQ,EAAE,gBAAgB;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,sCAAsC;CAC7C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAc,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAEzF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,KAAgB;IACrE,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEzD,yCAAyC;IACzC,OAAO,UAAU,KAAK,WAAW,GAAG,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,WAAoB;IAChD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,gBAAgB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Core ontology module metadata
|
|
3
|
+
* @traceability TSK-SDD-ONTO-001
|
|
4
|
+
*/
|
|
5
|
+
import type { OntologyModule } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Core SDD ontology module
|
|
8
|
+
*/
|
|
9
|
+
export declare const coreModule: OntologyModule;
|
|
10
|
+
/**
|
|
11
|
+
* Core namespace prefixes
|
|
12
|
+
*/
|
|
13
|
+
export declare const corePrefixes: {
|
|
14
|
+
sdd: string;
|
|
15
|
+
owl: string;
|
|
16
|
+
rdf: string;
|
|
17
|
+
rdfs: string;
|
|
18
|
+
xsd: string;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Get core module metadata
|
|
22
|
+
*/
|
|
23
|
+
export declare function getCoreModule(): OntologyModule;
|
|
24
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/modules/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cAQxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;CAMxB,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,CAE9C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Core ontology module metadata
|
|
3
|
+
* @traceability TSK-SDD-ONTO-001
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Core SDD ontology module
|
|
7
|
+
*/
|
|
8
|
+
export const coreModule = {
|
|
9
|
+
id: 'sdd-core',
|
|
10
|
+
name: 'SDD Core Ontology',
|
|
11
|
+
namespace: 'https://musubix.dev/ontology/sdd#',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
description: 'Core concepts for SDD methodology',
|
|
14
|
+
dependencies: [],
|
|
15
|
+
filePath: 'sdd-core.ttl',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Core namespace prefixes
|
|
19
|
+
*/
|
|
20
|
+
export const corePrefixes = {
|
|
21
|
+
'sdd': 'https://musubix.dev/ontology/sdd/core#',
|
|
22
|
+
'owl': 'http://www.w3.org/2002/07/owl#',
|
|
23
|
+
'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
|
|
24
|
+
'rdfs': 'http://www.w3.org/2000/01/rdf-schema#',
|
|
25
|
+
'xsd': 'http://www.w3.org/2001/XMLSchema#',
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Get core module metadata
|
|
29
|
+
*/
|
|
30
|
+
export function getCoreModule() {
|
|
31
|
+
return { ...coreModule };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/modules/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,mBAAmB;IACzB,SAAS,EAAE,mCAAmC;IAC9C,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,mCAAmC;IAChD,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,wCAAwC;IAC/C,KAAK,EAAE,gCAAgC;IACvC,KAAK,EAAE,6CAA6C;IACpD,MAAM,EAAE,uCAAuC;IAC/C,KAAK,EAAE,mCAAmC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview EARS ontology module
|
|
3
|
+
* @traceability TSK-SDD-ONTO-002
|
|
4
|
+
*/
|
|
5
|
+
import type { OntologyModule, EarsPatternType, EarsRequirement } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* EARS ontology module
|
|
8
|
+
*/
|
|
9
|
+
export declare const earsModule: OntologyModule;
|
|
10
|
+
/**
|
|
11
|
+
* EARS namespace prefixes
|
|
12
|
+
*/
|
|
13
|
+
export declare const earsPrefixes: {
|
|
14
|
+
ears: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* EARS pattern templates
|
|
18
|
+
*/
|
|
19
|
+
export declare const earsTemplates: Record<EarsPatternType, string>;
|
|
20
|
+
/**
|
|
21
|
+
* Parse EARS requirement from text
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseEarsRequirement(text: string): Partial<EarsRequirement> | null;
|
|
24
|
+
/**
|
|
25
|
+
* Get EARS module metadata
|
|
26
|
+
*/
|
|
27
|
+
export declare function getEarsModule(): OntologyModule;
|
|
28
|
+
//# sourceMappingURL=ears.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ears.d.ts","sourceRoot":"","sources":["../../src/modules/ears.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cAQxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY;;CAExB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAMzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAuDlF;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,CAE9C"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview EARS ontology module
|
|
3
|
+
* @traceability TSK-SDD-ONTO-002
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* EARS ontology module
|
|
7
|
+
*/
|
|
8
|
+
export const earsModule = {
|
|
9
|
+
id: 'sdd-ears',
|
|
10
|
+
name: 'SDD EARS Ontology',
|
|
11
|
+
namespace: 'https://musubix.dev/ontology/sdd/ears#',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
description: 'EARS (Easy Approach to Requirements Syntax) patterns',
|
|
14
|
+
dependencies: ['sdd-core'],
|
|
15
|
+
filePath: 'ttl/sdd-ears.ttl',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* EARS namespace prefixes
|
|
19
|
+
*/
|
|
20
|
+
export const earsPrefixes = {
|
|
21
|
+
'ears': 'https://musubix.dev/ontology/sdd/ears#',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* EARS pattern templates
|
|
25
|
+
*/
|
|
26
|
+
export const earsTemplates = {
|
|
27
|
+
'ubiquitous': 'THE {system} SHALL {response}',
|
|
28
|
+
'event-driven': 'WHEN {trigger}, THE {system} SHALL {response}',
|
|
29
|
+
'state-driven': 'WHILE {condition}, THE {system} SHALL {response}',
|
|
30
|
+
'unwanted': 'THE {system} SHALL NOT {response}',
|
|
31
|
+
'optional': 'IF {condition}, THEN THE {system} SHALL {response}',
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Parse EARS requirement from text
|
|
35
|
+
*/
|
|
36
|
+
export function parseEarsRequirement(text) {
|
|
37
|
+
// Ubiquitous: THE [system] SHALL [response]
|
|
38
|
+
const ubiquitousMatch = text.match(/^THE\s+(.+?)\s+SHALL\s+(.+)$/i);
|
|
39
|
+
if (ubiquitousMatch && !text.includes('SHALL NOT')) {
|
|
40
|
+
return {
|
|
41
|
+
pattern: 'ubiquitous',
|
|
42
|
+
system: ubiquitousMatch[1],
|
|
43
|
+
response: ubiquitousMatch[2],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Event-driven: WHEN [trigger], THE [system] SHALL [response]
|
|
47
|
+
const eventMatch = text.match(/^WHEN\s+(.+?),\s+THE\s+(.+?)\s+SHALL\s+(.+)$/i);
|
|
48
|
+
if (eventMatch) {
|
|
49
|
+
return {
|
|
50
|
+
pattern: 'event-driven',
|
|
51
|
+
trigger: eventMatch[1],
|
|
52
|
+
system: eventMatch[2],
|
|
53
|
+
response: eventMatch[3],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// State-driven: WHILE [condition], THE [system] SHALL [response]
|
|
57
|
+
const stateMatch = text.match(/^WHILE\s+(.+?),\s+THE\s+(.+?)\s+SHALL\s+(.+)$/i);
|
|
58
|
+
if (stateMatch) {
|
|
59
|
+
return {
|
|
60
|
+
pattern: 'state-driven',
|
|
61
|
+
condition: stateMatch[1],
|
|
62
|
+
system: stateMatch[2],
|
|
63
|
+
response: stateMatch[3],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Unwanted: THE [system] SHALL NOT [behavior]
|
|
67
|
+
const unwantedMatch = text.match(/^THE\s+(.+?)\s+SHALL\s+NOT\s+(.+)$/i);
|
|
68
|
+
if (unwantedMatch) {
|
|
69
|
+
return {
|
|
70
|
+
pattern: 'unwanted',
|
|
71
|
+
system: unwantedMatch[1],
|
|
72
|
+
response: unwantedMatch[2],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// Optional: IF [condition], THEN THE [system] SHALL [response]
|
|
76
|
+
const optionalMatch = text.match(/^IF\s+(.+?),\s+THEN\s+THE\s+(.+?)\s+SHALL\s+(.+)$/i);
|
|
77
|
+
if (optionalMatch) {
|
|
78
|
+
return {
|
|
79
|
+
pattern: 'optional',
|
|
80
|
+
condition: optionalMatch[1],
|
|
81
|
+
system: optionalMatch[2],
|
|
82
|
+
response: optionalMatch[3],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get EARS module metadata
|
|
89
|
+
*/
|
|
90
|
+
export function getEarsModule() {
|
|
91
|
+
return { ...earsModule };
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=ears.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ears.js","sourceRoot":"","sources":["../../src/modules/ears.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,mBAAmB;IACzB,SAAS,EAAE,wCAAwC;IACnD,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,sDAAsD;IACnE,YAAY,EAAE,CAAC,UAAU,CAAC;IAC1B,QAAQ,EAAE,kBAAkB;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,MAAM,EAAE,wCAAwC;CACjD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAoC;IAC5D,YAAY,EAAE,+BAA+B;IAC7C,cAAc,EAAE,+CAA+C;IAC/D,cAAc,EAAE,kDAAkD;IAClE,UAAU,EAAE,mCAAmC;IAC/C,UAAU,EAAE,oDAAoD;CACjE,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,4CAA4C;IAC5C,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACpE,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;YAC1B,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;SAC7B,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/E,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;SACxB,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAChF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;YACrB,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;SACxB,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACxE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;YACxB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;YACxB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Traceability ontology module
|
|
3
|
+
* @traceability TSK-SDD-ONTO-004
|
|
4
|
+
*/
|
|
5
|
+
import type { OntologyModule, TraceLink, TraceLinkType } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Traceability ontology module
|
|
8
|
+
*/
|
|
9
|
+
export declare const traceModule: OntologyModule;
|
|
10
|
+
/**
|
|
11
|
+
* Traceability namespace prefixes
|
|
12
|
+
*/
|
|
13
|
+
export declare const tracePrefixes: {
|
|
14
|
+
trace: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Valid trace link types between artifact types
|
|
18
|
+
*/
|
|
19
|
+
export declare const validTracePaths: Record<string, TraceLinkType[]>;
|
|
20
|
+
/**
|
|
21
|
+
* Validate trace link between source and target types
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateTraceLink(sourceType: string, targetType: string, linkType: TraceLinkType): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Create trace link
|
|
26
|
+
*/
|
|
27
|
+
export declare function createTraceLink(source: string, target: string, type: TraceLinkType, rationale?: string): TraceLink;
|
|
28
|
+
/**
|
|
29
|
+
* Get traceability module metadata
|
|
30
|
+
*/
|
|
31
|
+
export declare function getTraceModule(): OntologyModule;
|
|
32
|
+
//# sourceMappingURL=traceability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceability.d.ts","sourceRoot":"","sources":["../../src/modules/traceability.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,cAQzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa;;CAEzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAM3D,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAIT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,SAAS,CAOX;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,cAAc,CAE/C"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Traceability ontology module
|
|
3
|
+
* @traceability TSK-SDD-ONTO-004
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Traceability ontology module
|
|
7
|
+
*/
|
|
8
|
+
export const traceModule = {
|
|
9
|
+
id: 'sdd-trace',
|
|
10
|
+
name: 'SDD Traceability Ontology',
|
|
11
|
+
namespace: 'https://musubix.dev/ontology/sdd/trace#',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
description: 'Traceability concepts for requirements tracking',
|
|
14
|
+
dependencies: ['sdd-core', 'sdd-ears', 'sdd-c4'],
|
|
15
|
+
filePath: 'ttl/sdd-trace.ttl',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Traceability namespace prefixes
|
|
19
|
+
*/
|
|
20
|
+
export const tracePrefixes = {
|
|
21
|
+
'trace': 'https://musubix.dev/ontology/sdd/trace#',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Valid trace link types between artifact types
|
|
25
|
+
*/
|
|
26
|
+
export const validTracePaths = {
|
|
27
|
+
'requirement->design': ['satisfies', 'derives-from'],
|
|
28
|
+
'design->task': ['implements', 'refines'],
|
|
29
|
+
'task->code': ['implements'],
|
|
30
|
+
'code->test': ['tests'],
|
|
31
|
+
'requirement->test': ['tests'],
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Validate trace link between source and target types
|
|
35
|
+
*/
|
|
36
|
+
export function validateTraceLink(sourceType, targetType, linkType) {
|
|
37
|
+
const path = `${sourceType}->${targetType}`;
|
|
38
|
+
const validTypes = validTracePaths[path];
|
|
39
|
+
return validTypes?.includes(linkType) ?? false;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create trace link
|
|
43
|
+
*/
|
|
44
|
+
export function createTraceLink(source, target, type, rationale) {
|
|
45
|
+
return {
|
|
46
|
+
source,
|
|
47
|
+
target,
|
|
48
|
+
type,
|
|
49
|
+
rationale,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get traceability module metadata
|
|
54
|
+
*/
|
|
55
|
+
export function getTraceModule() {
|
|
56
|
+
return { ...traceModule };
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=traceability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traceability.js","sourceRoot":"","sources":["../../src/modules/traceability.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,2BAA2B;IACjC,SAAS,EAAE,yCAAyC;IACpD,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,iDAAiD;IAC9D,YAAY,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;IAChD,QAAQ,EAAE,mBAAmB;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,yCAAyC;CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAoC;IAC9D,qBAAqB,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;IACpD,cAAc,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;IACzC,YAAY,EAAE,CAAC,YAAY,CAAC;IAC5B,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,mBAAmB,EAAE,CAAC,OAAO,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,UAAkB,EAClB,QAAuB;IAEvB,MAAM,IAAI,GAAG,GAAG,UAAU,KAAK,UAAU,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,MAAc,EACd,IAAmB,EACnB,SAAkB;IAElB,OAAO;QACL,MAAM;QACN,MAAM;QACN,IAAI;QACJ,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;AAC5B,CAAC"}
|