@nahisaho/musubix-mcp-server 1.3.0 → 1.4.5
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/__tests__/ontology-tools.test.d.ts +6 -0
- package/dist/__tests__/ontology-tools.test.d.ts.map +1 -0
- package/dist/__tests__/ontology-tools.test.js +126 -0
- package/dist/__tests__/ontology-tools.test.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/ontology-tools.d.ts +33 -0
- package/dist/tools/ontology-tools.d.ts.map +1 -0
- package/dist/tools/ontology-tools.js +485 -0
- package/dist/tools/ontology-tools.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ontology-tools.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/ontology-tools.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Tests for Ontology Tools
|
|
3
|
+
* @traceability REQ-INT-003
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it, expect } from 'vitest';
|
|
6
|
+
import { consistencyValidateTool, validateTripleTool, checkCircularTool, ontologyTools, getOntologyTools, } from '../tools/ontology-tools.js';
|
|
7
|
+
describe('Ontology Tools', () => {
|
|
8
|
+
describe('consistencyValidateTool', () => {
|
|
9
|
+
it('should have correct definition', () => {
|
|
10
|
+
expect(consistencyValidateTool.name).toBe('consistency_validate');
|
|
11
|
+
expect(consistencyValidateTool.description).toContain('OWL');
|
|
12
|
+
expect(consistencyValidateTool.inputSchema.properties).toHaveProperty('triples');
|
|
13
|
+
});
|
|
14
|
+
it('should validate valid triples', async () => {
|
|
15
|
+
const result = await consistencyValidateTool.handler({
|
|
16
|
+
triples: [
|
|
17
|
+
{ subject: 'user:1', predicate: 'hasName', object: 'Alice' },
|
|
18
|
+
{ subject: 'user:2', predicate: 'hasName', object: 'Bob' },
|
|
19
|
+
],
|
|
20
|
+
});
|
|
21
|
+
expect(result.isError).toBe(false);
|
|
22
|
+
expect(result.content[0]).toHaveProperty('text');
|
|
23
|
+
const text = result.content[0].text;
|
|
24
|
+
expect(text).toContain('VALID');
|
|
25
|
+
});
|
|
26
|
+
it('should detect duplicate triples', async () => {
|
|
27
|
+
const result = await consistencyValidateTool.handler({
|
|
28
|
+
triples: [
|
|
29
|
+
{ subject: 'user:1', predicate: 'hasName', object: 'Alice' },
|
|
30
|
+
],
|
|
31
|
+
existingTriples: [
|
|
32
|
+
{ subject: 'user:1', predicate: 'hasName', object: 'Alice' },
|
|
33
|
+
],
|
|
34
|
+
});
|
|
35
|
+
expect(result.isError).toBe(false);
|
|
36
|
+
const text = result.content[0].text;
|
|
37
|
+
expect(text).toContain('duplicate');
|
|
38
|
+
});
|
|
39
|
+
it('should detect circular dependencies', async () => {
|
|
40
|
+
const result = await consistencyValidateTool.handler({
|
|
41
|
+
triples: [
|
|
42
|
+
{ subject: 'A', predicate: 'dependsOn', object: 'B' },
|
|
43
|
+
{ subject: 'B', predicate: 'dependsOn', object: 'C' },
|
|
44
|
+
{ subject: 'C', predicate: 'dependsOn', object: 'A' },
|
|
45
|
+
],
|
|
46
|
+
checkTypes: ['circular'],
|
|
47
|
+
});
|
|
48
|
+
expect(result.isError).toBe(false);
|
|
49
|
+
const text = result.content[0].text;
|
|
50
|
+
expect(text).toContain('circular');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('validateTripleTool', () => {
|
|
54
|
+
it('should have correct definition', () => {
|
|
55
|
+
expect(validateTripleTool.name).toBe('validate_triple');
|
|
56
|
+
expect(validateTripleTool.inputSchema.required).toContain('subject');
|
|
57
|
+
expect(validateTripleTool.inputSchema.required).toContain('predicate');
|
|
58
|
+
expect(validateTripleTool.inputSchema.required).toContain('object');
|
|
59
|
+
});
|
|
60
|
+
it('should validate single triple', async () => {
|
|
61
|
+
const result = await validateTripleTool.handler({
|
|
62
|
+
subject: 'entity:1',
|
|
63
|
+
predicate: 'hasType',
|
|
64
|
+
object: 'Person',
|
|
65
|
+
});
|
|
66
|
+
expect(result.isError).toBe(false);
|
|
67
|
+
const text = result.content[0].text;
|
|
68
|
+
expect(text).toContain('VALID');
|
|
69
|
+
});
|
|
70
|
+
it('should detect duplicate in context', async () => {
|
|
71
|
+
const result = await validateTripleTool.handler({
|
|
72
|
+
subject: 'entity:1',
|
|
73
|
+
predicate: 'hasType',
|
|
74
|
+
object: 'Person',
|
|
75
|
+
context: [
|
|
76
|
+
{ subject: 'entity:1', predicate: 'hasType', object: 'Person' },
|
|
77
|
+
],
|
|
78
|
+
});
|
|
79
|
+
expect(result.isError).toBe(false);
|
|
80
|
+
const text = result.content[0].text;
|
|
81
|
+
expect(text).toContain('Duplicate');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe('checkCircularTool', () => {
|
|
85
|
+
it('should have correct definition', () => {
|
|
86
|
+
expect(checkCircularTool.name).toBe('check_circular');
|
|
87
|
+
expect(checkCircularTool.inputSchema.properties).toHaveProperty('relationships');
|
|
88
|
+
});
|
|
89
|
+
it('should detect no cycles in acyclic graph', async () => {
|
|
90
|
+
const result = await checkCircularTool.handler({
|
|
91
|
+
relationships: [
|
|
92
|
+
{ from: 'A', to: 'B' },
|
|
93
|
+
{ from: 'B', to: 'C' },
|
|
94
|
+
{ from: 'A', to: 'C' },
|
|
95
|
+
],
|
|
96
|
+
});
|
|
97
|
+
expect(result.isError).toBe(false);
|
|
98
|
+
const text = result.content[0].text;
|
|
99
|
+
expect(text).toContain('No circular dependencies');
|
|
100
|
+
});
|
|
101
|
+
it('should detect cycle', async () => {
|
|
102
|
+
const result = await checkCircularTool.handler({
|
|
103
|
+
relationships: [
|
|
104
|
+
{ from: 'A', to: 'B' },
|
|
105
|
+
{ from: 'B', to: 'C' },
|
|
106
|
+
{ from: 'C', to: 'A' },
|
|
107
|
+
],
|
|
108
|
+
});
|
|
109
|
+
expect(result.isError).toBe(false);
|
|
110
|
+
const text = result.content[0].text;
|
|
111
|
+
expect(text).toContain('cycle');
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
describe('tool exports', () => {
|
|
115
|
+
it('should export array of ontology tools', () => {
|
|
116
|
+
expect(ontologyTools).toBeInstanceOf(Array);
|
|
117
|
+
expect(ontologyTools.length).toBe(3);
|
|
118
|
+
});
|
|
119
|
+
it('should have getOntologyTools function', () => {
|
|
120
|
+
const tools = getOntologyTools();
|
|
121
|
+
expect(tools).toBeInstanceOf(Array);
|
|
122
|
+
expect(tools.length).toBe(3);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=ontology-tools.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ontology-tools.test.js","sourceRoot":"","sources":["../../src/__tests__/ontology-tools.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export { DEFAULT_SERVER_CONFIG } from './types.js';
|
|
|
24
24
|
export { MCPServer, createMCPServer, type MCPServerEvents } from './server.js';
|
|
25
25
|
export { sddTools, getSddTools, createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, } from './tools/index.js';
|
|
26
26
|
export { symbolicTools, getSymbolicTools, filterCodeTool, detectHallucinationsTool, checkConstitutionTool, estimateConfidenceTool, getPipelineInfoTool, } from './tools/index.js';
|
|
27
|
+
export { ontologyTools, getOntologyTools, consistencyValidateTool, validateTripleTool, checkCircularTool, } from './tools/index.js';
|
|
27
28
|
export { sddPrompts, getSddPrompts, requirementsAnalysisPrompt, requirementsReviewPrompt, designGenerationPrompt, designReviewPrompt, taskDecompositionPrompt, projectSteeringPrompt, } from './prompts/index.js';
|
|
28
29
|
export { sddResources, sddResourceTemplates, getSddResources, getSddResourceTemplates, constitutionResource, earsPatternsResource, c4PatternsResource, adrTemplateResource, requirementDocTemplate, designDocTemplate, taskDocTemplate, } from './resources/index.js';
|
|
29
30
|
export { PlatformAdapter, createPlatformAdapter, getSupportedPlatforms, getPlatformConfig, type PlatformType, type PlatformCapabilities, type PlatformConfig, type PlatformDetectionResult, PLATFORM_CONFIGS, } from './platform/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EACL,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,aAAa,EACb,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAG/E,OAAO,EACL,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,aAAa,EACb,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDjF"}
|
package/dist/index.js
CHANGED
|
@@ -27,6 +27,8 @@ export { MCPServer, createMCPServer } from './server.js';
|
|
|
27
27
|
export { sddTools, getSddTools, createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, } from './tools/index.js';
|
|
28
28
|
// Symbolic Tools
|
|
29
29
|
export { symbolicTools, getSymbolicTools, filterCodeTool, detectHallucinationsTool, checkConstitutionTool, estimateConfidenceTool, getPipelineInfoTool, } from './tools/index.js';
|
|
30
|
+
// Ontology Tools
|
|
31
|
+
export { ontologyTools, getOntologyTools, consistencyValidateTool, validateTripleTool, checkCircularTool, } from './tools/index.js';
|
|
30
32
|
// SDD Prompts
|
|
31
33
|
export { sddPrompts, getSddPrompts, requirementsAnalysisPrompt, requirementsReviewPrompt, designGenerationPrompt, designReviewPrompt, taskDecompositionPrompt, projectSteeringPrompt, } from './prompts/index.js';
|
|
32
34
|
// SDD Resources
|
|
@@ -56,6 +58,8 @@ export async function startServer(options = {}) {
|
|
|
56
58
|
});
|
|
57
59
|
// Import symbolic tools
|
|
58
60
|
const { symbolicTools } = await import('./tools/index.js');
|
|
61
|
+
// Import ontology tools
|
|
62
|
+
const { ontologyTools } = await import('./tools/index.js');
|
|
59
63
|
// Register all SDD tools, prompts, and resources
|
|
60
64
|
for (const tool of sddTools) {
|
|
61
65
|
server.registerTool(tool);
|
|
@@ -64,6 +68,10 @@ export async function startServer(options = {}) {
|
|
|
64
68
|
for (const tool of symbolicTools) {
|
|
65
69
|
server.registerTool(tool);
|
|
66
70
|
}
|
|
71
|
+
// Register ontology tools
|
|
72
|
+
for (const tool of ontologyTools) {
|
|
73
|
+
server.registerTool(tool);
|
|
74
|
+
}
|
|
67
75
|
for (const prompt of sddPrompts) {
|
|
68
76
|
server.registerPrompt(prompt);
|
|
69
77
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,UAAU;AACV,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AA2B/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,SAAS;AACT,OAAO,EAAE,SAAS,EAAE,eAAe,EAAwB,MAAM,aAAa,CAAC;AAE/E,YAAY;AACZ,OAAO,EACL,QAAQ,EACR,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,iBAAiB;AACjB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,cAAc;AACd,OAAO,EACL,UAAU,EACV,aAAa,EACb,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EAKjB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAoC7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAA8B,EAAE;IAChE,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAoB,CAAC;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAElC,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,KAAK,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,GAAG,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEvF,+BAA+B;IAC/B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACtD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC1D,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAEpF,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;QAChB,SAAS;QACT,IAAI;KACL,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAE3D,wBAAwB;IACxB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAE3D,iDAAiD;IACjD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,0BAA0B;IAC1B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,oBAAoB,EAAE,CAAC;QAC5C,MAAM,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,mBAAmB;IACnB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAC1D,CAAC"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
export { createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, sddTools, getSddTools, } from './sdd-tools.js';
|
|
8
8
|
export { filterCodeTool, detectHallucinationsTool, checkConstitutionTool, estimateConfidenceTool, getPipelineInfoTool, symbolicTools, getSymbolicTools, } from './symbolic-tools.js';
|
|
9
9
|
export { learnPatternTool, consolidatePatternsTool, queryPatternRelationsTool, searchPatternsTool, getLearningStatsTool, importToKnowledgeGraphTool, exportKnowledgeGraphTool, patternIntegrationTools, getPatternIntegrationTools, handlePatternIntegrationTool, resetPatternIntegration, } from './pattern-tools.js';
|
|
10
|
+
export { consistencyValidateTool, validateTripleTool, checkCircularTool, ontologyTools, getOntologyTools, } from './ontology-tools.js';
|
|
10
11
|
/**
|
|
11
12
|
* Get all available tools
|
|
12
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,wBAAgB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,wBAAgB,WAAW,UAM1B"}
|
package/dist/tools/index.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
export { createRequirementsTool, validateRequirementsTool, createDesignTool, validateDesignTool, createTasksTool, queryKnowledgeTool, updateKnowledgeTool, validateConstitutionTool, validateTraceabilityTool, sddTools, getSddTools, } from './sdd-tools.js';
|
|
8
8
|
export { filterCodeTool, detectHallucinationsTool, checkConstitutionTool, estimateConfidenceTool, getPipelineInfoTool, symbolicTools, getSymbolicTools, } from './symbolic-tools.js';
|
|
9
9
|
export { learnPatternTool, consolidatePatternsTool, queryPatternRelationsTool, searchPatternsTool, getLearningStatsTool, importToKnowledgeGraphTool, exportKnowledgeGraphTool, patternIntegrationTools, getPatternIntegrationTools, handlePatternIntegrationTool, resetPatternIntegration, } from './pattern-tools.js';
|
|
10
|
+
export { consistencyValidateTool, validateTripleTool, checkCircularTool, ontologyTools, getOntologyTools, } from './ontology-tools.js';
|
|
10
11
|
/**
|
|
11
12
|
* Get all available tools
|
|
12
13
|
*/
|
|
@@ -14,6 +15,7 @@ export function getAllTools() {
|
|
|
14
15
|
const { getSddTools } = require('./sdd-tools.js');
|
|
15
16
|
const { getSymbolicTools } = require('./symbolic-tools.js');
|
|
16
17
|
const { getPatternIntegrationTools } = require('./pattern-tools.js');
|
|
17
|
-
|
|
18
|
+
const { getOntologyTools } = require('./ontology-tools.js');
|
|
19
|
+
return [...getSddTools(), ...getSymbolicTools(), ...getPatternIntegrationTools(), ...getOntologyTools()];
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClD,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,MAAM,EAAE,0BAA0B,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,WAAW,EAAE,EAAE,GAAG,gBAAgB,EAAE,EAAE,GAAG,0BAA0B,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClD,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,MAAM,EAAE,0BAA0B,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrE,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,WAAW,EAAE,EAAE,GAAG,gBAAgB,EAAE,EAAE,GAAG,0BAA0B,EAAE,EAAE,GAAG,gBAAgB,EAAE,CAAC,CAAC;AAC3G,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Ontology Tools - Consistency Validation
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module tools/ontology-tools
|
|
6
|
+
* @traceability REQ-INT-003
|
|
7
|
+
*/
|
|
8
|
+
import type { ToolDefinition } from '../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Consistency Validate Tool
|
|
11
|
+
*
|
|
12
|
+
* Validates knowledge graph consistency using OWL constraints.
|
|
13
|
+
*/
|
|
14
|
+
export declare const consistencyValidateTool: ToolDefinition;
|
|
15
|
+
/**
|
|
16
|
+
* Validate Triple Tool
|
|
17
|
+
*
|
|
18
|
+
* Validate a single triple before adding to knowledge graph.
|
|
19
|
+
*/
|
|
20
|
+
export declare const validateTripleTool: ToolDefinition;
|
|
21
|
+
/**
|
|
22
|
+
* Check Circular Dependencies Tool
|
|
23
|
+
*/
|
|
24
|
+
export declare const checkCircularTool: ToolDefinition;
|
|
25
|
+
/**
|
|
26
|
+
* Array of all ontology tools
|
|
27
|
+
*/
|
|
28
|
+
export declare const ontologyTools: ToolDefinition[];
|
|
29
|
+
/**
|
|
30
|
+
* Get all ontology tools
|
|
31
|
+
*/
|
|
32
|
+
export declare function getOntologyTools(): ToolDefinition[];
|
|
33
|
+
//# sourceMappingURL=ontology-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ontology-tools.d.ts","sourceRoot":"","sources":["../../src/tools/ontology-tools.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAwC,MAAM,aAAa,CAAC;AA4BxF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAqFrC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAwDhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAyC/B,CAAC;AAwVF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cAAc,EAIzC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAEnD"}
|
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Ontology Tools - Consistency Validation
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module tools/ontology-tools
|
|
6
|
+
* @traceability REQ-INT-003
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Consistency Validate Tool
|
|
10
|
+
*
|
|
11
|
+
* Validates knowledge graph consistency using OWL constraints.
|
|
12
|
+
*/
|
|
13
|
+
export const consistencyValidateTool = {
|
|
14
|
+
name: 'consistency_validate',
|
|
15
|
+
description: `Validate knowledge graph consistency using OWL constraints.
|
|
16
|
+
|
|
17
|
+
Checks for:
|
|
18
|
+
- Duplicate triples (exact and semantic)
|
|
19
|
+
- Circular dependencies
|
|
20
|
+
- Disjoint class violations
|
|
21
|
+
- Functional property violations
|
|
22
|
+
- Inverse functional property violations
|
|
23
|
+
- Asymmetric property violations
|
|
24
|
+
- Irreflexive property violations
|
|
25
|
+
|
|
26
|
+
Use this tool to ensure data quality before adding to knowledge graph.`,
|
|
27
|
+
inputSchema: {
|
|
28
|
+
type: 'object',
|
|
29
|
+
properties: {
|
|
30
|
+
triples: {
|
|
31
|
+
type: 'array',
|
|
32
|
+
description: 'Array of triples to validate. Each triple has subject, predicate, object.',
|
|
33
|
+
items: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
properties: {
|
|
36
|
+
subject: { type: 'string', description: 'Subject URI or identifier' },
|
|
37
|
+
predicate: { type: 'string', description: 'Predicate URI or identifier' },
|
|
38
|
+
object: { type: 'string', description: 'Object URI, identifier, or literal value' },
|
|
39
|
+
},
|
|
40
|
+
required: ['subject', 'predicate', 'object'],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
checkTypes: {
|
|
44
|
+
type: 'array',
|
|
45
|
+
description: 'Types of checks to perform. Default: all checks.',
|
|
46
|
+
items: {
|
|
47
|
+
type: 'string',
|
|
48
|
+
enum: ['duplicate', 'circular', 'disjoint', 'functional', 'inverse-functional', 'asymmetric', 'irreflexive'],
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
existingTriples: {
|
|
52
|
+
type: 'array',
|
|
53
|
+
description: 'Optional existing triples to check against.',
|
|
54
|
+
items: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
subject: { type: 'string' },
|
|
58
|
+
predicate: { type: 'string' },
|
|
59
|
+
object: { type: 'string' },
|
|
60
|
+
},
|
|
61
|
+
required: ['subject', 'predicate', 'object'],
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
required: ['triples'],
|
|
66
|
+
},
|
|
67
|
+
handler: async (args) => {
|
|
68
|
+
const { triples, checkTypes, existingTriples = [] } = args;
|
|
69
|
+
try {
|
|
70
|
+
// Perform validation
|
|
71
|
+
const result = validateConsistency(triples, existingTriples, checkTypes);
|
|
72
|
+
const content = {
|
|
73
|
+
type: 'text',
|
|
74
|
+
text: formatValidationResult(result),
|
|
75
|
+
};
|
|
76
|
+
return {
|
|
77
|
+
content: [content],
|
|
78
|
+
isError: false,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
const content = {
|
|
83
|
+
type: 'text',
|
|
84
|
+
text: `Error during validation: ${error instanceof Error ? error.message : String(error)}`,
|
|
85
|
+
};
|
|
86
|
+
return {
|
|
87
|
+
content: [content],
|
|
88
|
+
isError: true,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Validate Triple Tool
|
|
95
|
+
*
|
|
96
|
+
* Validate a single triple before adding to knowledge graph.
|
|
97
|
+
*/
|
|
98
|
+
export const validateTripleTool = {
|
|
99
|
+
name: 'validate_triple',
|
|
100
|
+
description: `Validate a single triple before adding to knowledge graph.
|
|
101
|
+
|
|
102
|
+
Quick validation for individual data entries. Returns pass/fail with details.`,
|
|
103
|
+
inputSchema: {
|
|
104
|
+
type: 'object',
|
|
105
|
+
properties: {
|
|
106
|
+
subject: {
|
|
107
|
+
type: 'string',
|
|
108
|
+
description: 'Subject URI or identifier',
|
|
109
|
+
},
|
|
110
|
+
predicate: {
|
|
111
|
+
type: 'string',
|
|
112
|
+
description: 'Predicate URI or identifier',
|
|
113
|
+
},
|
|
114
|
+
object: {
|
|
115
|
+
type: 'string',
|
|
116
|
+
description: 'Object URI, identifier, or literal value',
|
|
117
|
+
},
|
|
118
|
+
context: {
|
|
119
|
+
type: 'array',
|
|
120
|
+
description: 'Optional context triples to check against',
|
|
121
|
+
items: {
|
|
122
|
+
type: 'object',
|
|
123
|
+
properties: {
|
|
124
|
+
subject: { type: 'string' },
|
|
125
|
+
predicate: { type: 'string' },
|
|
126
|
+
object: { type: 'string' },
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
required: ['subject', 'predicate', 'object'],
|
|
132
|
+
},
|
|
133
|
+
handler: async (args) => {
|
|
134
|
+
const { subject, predicate, object, context = [] } = args;
|
|
135
|
+
const triple = { subject, predicate, object };
|
|
136
|
+
const result = validateSingleTriple(triple, context);
|
|
137
|
+
const content = {
|
|
138
|
+
type: 'text',
|
|
139
|
+
text: formatSingleValidation(triple, result),
|
|
140
|
+
};
|
|
141
|
+
return {
|
|
142
|
+
content: [content],
|
|
143
|
+
isError: false,
|
|
144
|
+
};
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Check Circular Dependencies Tool
|
|
149
|
+
*/
|
|
150
|
+
export const checkCircularTool = {
|
|
151
|
+
name: 'check_circular',
|
|
152
|
+
description: `Check for circular dependencies in relationships.
|
|
153
|
+
|
|
154
|
+
Detects cycles in dependency graphs that could cause infinite loops or inconsistencies.`,
|
|
155
|
+
inputSchema: {
|
|
156
|
+
type: 'object',
|
|
157
|
+
properties: {
|
|
158
|
+
relationships: {
|
|
159
|
+
type: 'array',
|
|
160
|
+
description: 'Array of relationships to check for cycles',
|
|
161
|
+
items: {
|
|
162
|
+
type: 'object',
|
|
163
|
+
properties: {
|
|
164
|
+
from: { type: 'string', description: 'Source node' },
|
|
165
|
+
to: { type: 'string', description: 'Target node' },
|
|
166
|
+
type: { type: 'string', description: 'Relationship type (optional)' },
|
|
167
|
+
},
|
|
168
|
+
required: ['from', 'to'],
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
required: ['relationships'],
|
|
173
|
+
},
|
|
174
|
+
handler: async (args) => {
|
|
175
|
+
const { relationships } = args;
|
|
176
|
+
const cycles = findCycles(relationships);
|
|
177
|
+
const content = {
|
|
178
|
+
type: 'text',
|
|
179
|
+
text: formatCycleResult(cycles),
|
|
180
|
+
};
|
|
181
|
+
return {
|
|
182
|
+
content: [content],
|
|
183
|
+
isError: false,
|
|
184
|
+
};
|
|
185
|
+
},
|
|
186
|
+
};
|
|
187
|
+
// ============= Helper Functions =============
|
|
188
|
+
/**
|
|
189
|
+
* Validate consistency of triples
|
|
190
|
+
*/
|
|
191
|
+
function validateConsistency(triples, existingTriples, checkTypes) {
|
|
192
|
+
const violations = [];
|
|
193
|
+
const allTriples = [...existingTriples, ...triples];
|
|
194
|
+
const checks = checkTypes || ['duplicate', 'circular', 'disjoint', 'functional', 'inverse-functional', 'asymmetric', 'irreflexive'];
|
|
195
|
+
// Check for duplicates
|
|
196
|
+
if (checks.includes('duplicate')) {
|
|
197
|
+
const duplicates = findDuplicates(triples, existingTriples);
|
|
198
|
+
violations.push(...duplicates);
|
|
199
|
+
}
|
|
200
|
+
// Check for circular dependencies
|
|
201
|
+
if (checks.includes('circular')) {
|
|
202
|
+
const circular = findCircularViolations(allTriples);
|
|
203
|
+
violations.push(...circular);
|
|
204
|
+
}
|
|
205
|
+
// Check functional properties
|
|
206
|
+
if (checks.includes('functional')) {
|
|
207
|
+
const functionalViolations = checkFunctionalProperties(allTriples);
|
|
208
|
+
violations.push(...functionalViolations);
|
|
209
|
+
}
|
|
210
|
+
// Count errors and warnings
|
|
211
|
+
const errors = violations.filter(v => v.severity === 'error').length;
|
|
212
|
+
const warnings = violations.filter(v => v.severity === 'warning').length;
|
|
213
|
+
return {
|
|
214
|
+
valid: errors === 0,
|
|
215
|
+
violations,
|
|
216
|
+
statistics: {
|
|
217
|
+
totalTriples: triples.length,
|
|
218
|
+
checkedConstraints: checks.length,
|
|
219
|
+
errors,
|
|
220
|
+
warnings,
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Validate a single triple
|
|
226
|
+
*/
|
|
227
|
+
function validateSingleTriple(triple, context) {
|
|
228
|
+
const issues = [];
|
|
229
|
+
// Check if duplicate
|
|
230
|
+
for (const existing of context) {
|
|
231
|
+
if (existing.subject === triple.subject &&
|
|
232
|
+
existing.predicate === triple.predicate &&
|
|
233
|
+
existing.object === triple.object) {
|
|
234
|
+
issues.push('Duplicate: Exact same triple already exists');
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Check for self-reference (simple irreflexive check)
|
|
238
|
+
if (triple.subject === triple.object && triple.predicate.includes('parent')) {
|
|
239
|
+
issues.push('Irreflexive violation: Entity cannot be its own parent');
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
valid: issues.length === 0,
|
|
243
|
+
issues,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Find duplicate triples
|
|
248
|
+
*/
|
|
249
|
+
function findDuplicates(newTriples, existingTriples) {
|
|
250
|
+
const violations = [];
|
|
251
|
+
const seen = new Set();
|
|
252
|
+
// Add existing triples to seen set
|
|
253
|
+
for (const t of existingTriples) {
|
|
254
|
+
seen.add(`${t.subject}|${t.predicate}|${t.object}`);
|
|
255
|
+
}
|
|
256
|
+
// Check new triples
|
|
257
|
+
for (const t of newTriples) {
|
|
258
|
+
const key = `${t.subject}|${t.predicate}|${t.object}`;
|
|
259
|
+
if (seen.has(key)) {
|
|
260
|
+
violations.push({
|
|
261
|
+
type: 'duplicate-triple',
|
|
262
|
+
severity: 'error',
|
|
263
|
+
message: `Duplicate triple detected`,
|
|
264
|
+
affectedTriples: [t],
|
|
265
|
+
suggestion: 'Remove or update the existing triple instead',
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
seen.add(key);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return violations;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Find circular dependency violations
|
|
276
|
+
*/
|
|
277
|
+
function findCircularViolations(triples) {
|
|
278
|
+
const violations = [];
|
|
279
|
+
// Build adjacency graph
|
|
280
|
+
const graph = new Map();
|
|
281
|
+
for (const t of triples) {
|
|
282
|
+
if (!graph.has(t.subject)) {
|
|
283
|
+
graph.set(t.subject, []);
|
|
284
|
+
}
|
|
285
|
+
graph.get(t.subject).push(t.object);
|
|
286
|
+
}
|
|
287
|
+
// DFS for cycle detection
|
|
288
|
+
const visited = new Set();
|
|
289
|
+
const inStack = new Set();
|
|
290
|
+
function dfs(node, path) {
|
|
291
|
+
if (inStack.has(node)) {
|
|
292
|
+
return path;
|
|
293
|
+
}
|
|
294
|
+
if (visited.has(node)) {
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
visited.add(node);
|
|
298
|
+
inStack.add(node);
|
|
299
|
+
const neighbors = graph.get(node) || [];
|
|
300
|
+
for (const neighbor of neighbors) {
|
|
301
|
+
const cycle = dfs(neighbor, [...path, node]);
|
|
302
|
+
if (cycle) {
|
|
303
|
+
return cycle;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
inStack.delete(node);
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
for (const node of graph.keys()) {
|
|
310
|
+
if (!visited.has(node)) {
|
|
311
|
+
const cycle = dfs(node, []);
|
|
312
|
+
if (cycle) {
|
|
313
|
+
violations.push({
|
|
314
|
+
type: 'circular-dependency',
|
|
315
|
+
severity: 'error',
|
|
316
|
+
message: `Circular dependency detected: ${cycle.join(' → ')} → ${node}`,
|
|
317
|
+
affectedTriples: triples.filter(t => cycle.includes(t.subject) || cycle.includes(t.object)),
|
|
318
|
+
suggestion: 'Break the cycle by removing one of the relationships',
|
|
319
|
+
});
|
|
320
|
+
break; // Report one cycle at a time
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return violations;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Check functional property violations (one value per subject+predicate)
|
|
328
|
+
*/
|
|
329
|
+
function checkFunctionalProperties(triples) {
|
|
330
|
+
const violations = [];
|
|
331
|
+
// Common functional properties
|
|
332
|
+
const functionalPredicates = ['hasId', 'hasParent', 'hasOwner', 'createdAt', 'modifiedAt'];
|
|
333
|
+
const subjectPredicateMap = new Map();
|
|
334
|
+
for (const t of triples) {
|
|
335
|
+
if (functionalPredicates.some(fp => t.predicate.includes(fp))) {
|
|
336
|
+
const key = `${t.subject}|${t.predicate}`;
|
|
337
|
+
if (!subjectPredicateMap.has(key)) {
|
|
338
|
+
subjectPredicateMap.set(key, []);
|
|
339
|
+
}
|
|
340
|
+
subjectPredicateMap.get(key).push(t);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
for (const [_key, tripleList] of subjectPredicateMap) {
|
|
344
|
+
if (tripleList.length > 1) {
|
|
345
|
+
violations.push({
|
|
346
|
+
type: 'functional-property-violation',
|
|
347
|
+
severity: 'error',
|
|
348
|
+
message: `Functional property has multiple values`,
|
|
349
|
+
affectedTriples: tripleList,
|
|
350
|
+
suggestion: 'Functional properties should have exactly one value per subject',
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return violations;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Find cycles in relationships
|
|
358
|
+
*/
|
|
359
|
+
function findCycles(relationships) {
|
|
360
|
+
const cycles = [];
|
|
361
|
+
const graph = new Map();
|
|
362
|
+
for (const rel of relationships) {
|
|
363
|
+
if (!graph.has(rel.from)) {
|
|
364
|
+
graph.set(rel.from, []);
|
|
365
|
+
}
|
|
366
|
+
graph.get(rel.from).push(rel.to);
|
|
367
|
+
}
|
|
368
|
+
const visited = new Set();
|
|
369
|
+
const recursionStack = new Set();
|
|
370
|
+
function dfs(node, path) {
|
|
371
|
+
visited.add(node);
|
|
372
|
+
recursionStack.add(node);
|
|
373
|
+
const neighbors = graph.get(node) || [];
|
|
374
|
+
for (const neighbor of neighbors) {
|
|
375
|
+
if (!visited.has(neighbor)) {
|
|
376
|
+
dfs(neighbor, [...path, node]);
|
|
377
|
+
}
|
|
378
|
+
else if (recursionStack.has(neighbor)) {
|
|
379
|
+
// Found cycle
|
|
380
|
+
const cycleStart = path.indexOf(neighbor);
|
|
381
|
+
if (cycleStart !== -1) {
|
|
382
|
+
cycles.push([...path.slice(cycleStart), node, neighbor]);
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
cycles.push([...path, node, neighbor]);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
recursionStack.delete(node);
|
|
390
|
+
}
|
|
391
|
+
for (const node of graph.keys()) {
|
|
392
|
+
if (!visited.has(node)) {
|
|
393
|
+
dfs(node, []);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
return cycles;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Format validation result as text
|
|
400
|
+
*/
|
|
401
|
+
function formatValidationResult(result) {
|
|
402
|
+
const lines = [];
|
|
403
|
+
lines.push('# Consistency Validation Report');
|
|
404
|
+
lines.push('');
|
|
405
|
+
lines.push(`**Status**: ${result.valid ? '✅ VALID' : '❌ INVALID'}`);
|
|
406
|
+
lines.push('');
|
|
407
|
+
lines.push('## Statistics');
|
|
408
|
+
lines.push(`- Total Triples: ${result.statistics.totalTriples}`);
|
|
409
|
+
lines.push(`- Checked Constraints: ${result.statistics.checkedConstraints}`);
|
|
410
|
+
lines.push(`- Errors: ${result.statistics.errors}`);
|
|
411
|
+
lines.push(`- Warnings: ${result.statistics.warnings}`);
|
|
412
|
+
if (result.violations.length > 0) {
|
|
413
|
+
lines.push('');
|
|
414
|
+
lines.push('## Violations');
|
|
415
|
+
for (const v of result.violations) {
|
|
416
|
+
const icon = v.severity === 'error' ? '❌' : v.severity === 'warning' ? '⚠️' : 'ℹ️';
|
|
417
|
+
lines.push(`### ${icon} ${v.type}`);
|
|
418
|
+
lines.push(`- ${v.message}`);
|
|
419
|
+
if (v.suggestion) {
|
|
420
|
+
lines.push(`- Suggestion: ${v.suggestion}`);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
return lines.join('\n');
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Format single triple validation result
|
|
428
|
+
*/
|
|
429
|
+
function formatSingleValidation(triple, result) {
|
|
430
|
+
const lines = [];
|
|
431
|
+
lines.push('# Triple Validation');
|
|
432
|
+
lines.push('');
|
|
433
|
+
lines.push('## Triple');
|
|
434
|
+
lines.push(`- Subject: \`${triple.subject}\``);
|
|
435
|
+
lines.push(`- Predicate: \`${triple.predicate}\``);
|
|
436
|
+
lines.push(`- Object: \`${triple.object}\``);
|
|
437
|
+
lines.push('');
|
|
438
|
+
lines.push(`**Status**: ${result.valid ? '✅ VALID' : '❌ INVALID'}`);
|
|
439
|
+
if (result.issues.length > 0) {
|
|
440
|
+
lines.push('');
|
|
441
|
+
lines.push('## Issues');
|
|
442
|
+
for (const issue of result.issues) {
|
|
443
|
+
lines.push(`- ❌ ${issue}`);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
return lines.join('\n');
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Format cycle detection result
|
|
450
|
+
*/
|
|
451
|
+
function formatCycleResult(cycles) {
|
|
452
|
+
const lines = [];
|
|
453
|
+
lines.push('# Circular Dependency Check');
|
|
454
|
+
lines.push('');
|
|
455
|
+
if (cycles.length === 0) {
|
|
456
|
+
lines.push('✅ No circular dependencies detected.');
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
lines.push(`❌ Found ${cycles.length} cycle(s):`);
|
|
460
|
+
lines.push('');
|
|
461
|
+
for (let i = 0; i < cycles.length; i++) {
|
|
462
|
+
lines.push(`### Cycle ${i + 1}`);
|
|
463
|
+
lines.push(`\`${cycles[i].join(' → ')}\``);
|
|
464
|
+
lines.push('');
|
|
465
|
+
}
|
|
466
|
+
lines.push('## Recommendation');
|
|
467
|
+
lines.push('Remove one relationship from each cycle to break the circular dependency.');
|
|
468
|
+
}
|
|
469
|
+
return lines.join('\n');
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Array of all ontology tools
|
|
473
|
+
*/
|
|
474
|
+
export const ontologyTools = [
|
|
475
|
+
consistencyValidateTool,
|
|
476
|
+
validateTripleTool,
|
|
477
|
+
checkCircularTool,
|
|
478
|
+
];
|
|
479
|
+
/**
|
|
480
|
+
* Get all ontology tools
|
|
481
|
+
*/
|
|
482
|
+
export function getOntologyTools() {
|
|
483
|
+
return [...ontologyTools];
|
|
484
|
+
}
|
|
485
|
+
//# sourceMappingURL=ontology-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ontology-tools.js","sourceRoot":"","sources":["../../src/tools/ontology-tools.ts"],"names":[],"mappings":"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"}
|