@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.
Files changed (42) hide show
  1. package/dist/index.d.ts +14 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +21 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/loader/index.d.ts +6 -0
  6. package/dist/loader/index.d.ts.map +1 -0
  7. package/dist/loader/index.js +6 -0
  8. package/dist/loader/index.js.map +1 -0
  9. package/dist/loader/ontology-loader.d.ts +38 -0
  10. package/dist/loader/ontology-loader.d.ts.map +1 -0
  11. package/dist/loader/ontology-loader.js +87 -0
  12. package/dist/loader/ontology-loader.js.map +1 -0
  13. package/dist/modules/c4.d.ts +32 -0
  14. package/dist/modules/c4.d.ts.map +1 -0
  15. package/dist/modules/c4.js +52 -0
  16. package/dist/modules/c4.js.map +1 -0
  17. package/dist/modules/core.d.ts +24 -0
  18. package/dist/modules/core.d.ts.map +1 -0
  19. package/dist/modules/core.js +33 -0
  20. package/dist/modules/core.js.map +1 -0
  21. package/dist/modules/ears.d.ts +28 -0
  22. package/dist/modules/ears.d.ts.map +1 -0
  23. package/dist/modules/ears.js +93 -0
  24. package/dist/modules/ears.js.map +1 -0
  25. package/dist/modules/traceability.d.ts +32 -0
  26. package/dist/modules/traceability.d.ts.map +1 -0
  27. package/dist/modules/traceability.js +58 -0
  28. package/dist/modules/traceability.js.map +1 -0
  29. package/dist/types.d.ts +106 -0
  30. package/dist/types.d.ts.map +1 -0
  31. package/dist/types.js +6 -0
  32. package/dist/types.js.map +1 -0
  33. package/dist/validator/index.d.ts +6 -0
  34. package/dist/validator/index.d.ts.map +1 -0
  35. package/dist/validator/index.js +6 -0
  36. package/dist/validator/index.js.map +1 -0
  37. package/dist/validator/ontology-validator.d.ts +23 -0
  38. package/dist/validator/ontology-validator.d.ts.map +1 -0
  39. package/dist/validator/ontology-validator.js +120 -0
  40. package/dist/validator/ontology-validator.js.map +1 -0
  41. package/package.json +50 -0
  42. package/ttl/sdd-core.ttl +493 -0
@@ -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,6 @@
1
+ /**
2
+ * @fileoverview Ontology loader module
3
+ * @traceability TSK-SDD-ONTO-005
4
+ */
5
+ export { OntologyLoader } from './ontology-loader.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -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,6 @@
1
+ /**
2
+ * @fileoverview Ontology loader module
3
+ * @traceability TSK-SDD-ONTO-005
4
+ */
5
+ export { OntologyLoader } from './ontology-loader.js';
6
+ //# sourceMappingURL=index.js.map
@@ -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"}