musubix 3.3.3 → 3.3.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/.github/AGENTS.md +949 -0
- package/.github/prompts/sdd-change-apply.prompt.md +283 -0
- package/.github/prompts/sdd-change-archive.prompt.md +241 -0
- package/.github/prompts/sdd-change-init.prompt.md +269 -0
- package/.github/prompts/sdd-design.prompt.md +250 -0
- package/.github/prompts/sdd-implement.prompt.md +387 -0
- package/.github/prompts/sdd-requirements.prompt.md +193 -0
- package/.github/prompts/sdd-review.prompt.md +155 -0
- package/.github/prompts/sdd-security.prompt.md +228 -0
- package/.github/prompts/sdd-steering.prompt.md +269 -0
- package/.github/prompts/sdd-tasks.prompt.md +255 -0
- package/.github/prompts/sdd-test.prompt.md +230 -0
- package/.github/prompts/sdd-validate.prompt.md +304 -0
- package/.github/skills/musubix-adr-generation/SKILL.md +209 -0
- package/.github/skills/musubix-best-practices/SKILL.md +315 -0
- package/.github/skills/musubix-c4-design/SKILL.md +162 -0
- package/.github/skills/musubix-code-generation/SKILL.md +237 -0
- package/.github/skills/musubix-domain-inference/SKILL.md +196 -0
- package/.github/skills/musubix-ears-validation/SKILL.md +161 -0
- package/.github/skills/musubix-sdd-workflow/SKILL.md +217 -0
- package/.github/skills/musubix-technical-writing/SKILL.md +444 -0
- package/.github/skills/musubix-test-generation/SKILL.md +212 -0
- package/.github/skills/musubix-traceability/SKILL.md +141 -0
- package/AGENTS.md +1065 -0
- package/LICENSE +21 -0
- package/README.ja.md +296 -0
- package/README.md +305 -50
- package/bin/musubix-mcp.js +15 -0
- package/bin/musubix.js +9 -1
- package/docs/API-REFERENCE.md +1425 -0
- package/docs/GITHUB-ACTIONS-NPM-SETUP.md +132 -0
- package/docs/INSTALL-GUIDE.ja.md +459 -0
- package/docs/INSTALL-GUIDE.md +459 -0
- package/docs/MIGRATION-v3.0.md +324 -0
- package/docs/MUSUBI-enhancement_roadmap_20260105.md +651 -0
- package/docs/MUSUBIX-v3.0-User-Guide.md +1357 -0
- package/docs/MUSUBIXv2.2.0-Manual-outline.md +136 -0
- package/docs/MUSUBIXv2.2.0-Manual.md +3123 -0
- package/docs/MUSUBIXv2.3.5-Refactering.md +1310 -0
- package/docs/MUSUBIv1.6.1-enhancement_roadmap_20260105.md +291 -0
- package/docs/MUSUBIv2.2.0-USERGUIDE.md +2079 -0
- package/docs/ROADMAP-v1.5.md +116 -0
- package/docs/SwarmCoding.md +1284 -0
- package/docs/Test-prompt.md +105 -0
- package/docs/USER-GUIDE-v1.8.0.md +2371 -0
- package/docs/USER-GUIDE.ja.md +2147 -0
- package/docs/USER-GUIDE.md +3022 -0
- package/docs/YATA-GLOBAL-GUIDE.ja.md +750 -0
- package/docs/YATA-GLOBAL-GUIDE.md +595 -0
- package/docs/YATA-LOCAL-GUIDE.ja.md +989 -0
- package/docs/YATA-LOCAL-GUIDE.md +730 -0
- package/docs/adr/0001-real-time-pattern-learning-architecture-for-v1-5-0.md +75 -0
- package/docs/adr/0002-pattern-sharing-protocol-for-cross-team-collaborat.md +79 -0
- package/docs/adr/0003-owl-2-rl-implementation-strategy-for-advanced-infe.md +90 -0
- package/docs/enterprise-knowledge-management.md +1737 -0
- package/docs/evolution-from-musubi-to-musubix.md +2170 -0
- package/docs/getting-started-with-sdd.md +1602 -0
- package/docs/moodle-refactering-codegraph-musubix.md +391 -0
- package/docs/moodle-refactering-codegraph.md +278 -0
- package/docs/overview/MUSUBIX-CodeGraph.md +322 -0
- package/docs/overview/MUSUBIX-Core.md +671 -0
- package/docs/overview/MUSUBIX-Decisions.md +494 -0
- package/docs/overview/MUSUBIX-FormalVerify.md +566 -0
- package/docs/overview/MUSUBIX-Knowledge.md +1231 -0
- package/docs/overview/MUSUBIX-Learning.md +837 -0
- package/docs/overview/MUSUBIX-MCP-Server.md +535 -0
- package/docs/overview/MUSUBIX-Overview.md +264 -0
- package/docs/overview/MUSUBIX-Phase1-Complete.md +271 -0
- package/docs/overview/MUSUBIX-Phase2-Complete.md +310 -0
- package/docs/overview/MUSUBIX-Policy.md +477 -0
- package/docs/overview/MUSUBIX-Roadmap-v2.md +399 -0
- package/docs/overview/MUSUBIX-Security-Plan.md +939 -0
- package/docs/overview/MUSUBIX-Security-v2.1.md +668 -0
- package/docs/overview/MUSUBIX-Security.md +891 -0
- package/docs/overview/MUSUBIX-YATA.md +666 -0
- package/docs/overview/MUSUBIX-v2.2.0-Advanced-Learning.md +513 -0
- package/docs/overview/Neuro-SymbolicAI.md +159 -0
- package/docs/packages/knowledge.md +594 -0
- package/docs/qiita-linux-kernel-knowledge-graph.md +596 -0
- package/package.json +55 -51
- package/scripts/generate-quality-gate-report.ts +106 -0
- package/scripts/postinstall.js +94 -0
- package/steering/.musubi-version +1 -0
- package/steering/product.ja.md +572 -0
- package/steering/project.yml +66 -0
- package/steering/rules/constitution.md +491 -0
- package/steering/structure.ja.md +503 -0
- package/steering/tech.ja.md +208 -0
- package/dist/index.d.ts +0 -25
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -74
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,666 @@
|
|
|
1
|
+
# MUSUBIX YATA パッケージ群
|
|
2
|
+
|
|
3
|
+
**関連パッケージ**:
|
|
4
|
+
- `@nahisaho/musubix-yata-client`
|
|
5
|
+
- `@nahisaho/yata-local`
|
|
6
|
+
- `@nahisaho/yata-global`
|
|
7
|
+
- `@nahisaho/yata-ui`
|
|
8
|
+
|
|
9
|
+
**バージョン**: 1.7.5
|
|
10
|
+
**最終更新**: 2026-01-06
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. YATA概要
|
|
15
|
+
|
|
16
|
+
**YATA (Yet Another Triple Architecture)** は、MUSUBIXの知識グラフシステムです。ローカルとグローバルの2層構造で知識を管理し、AIエージェントに構造化された知識を提供します。
|
|
17
|
+
|
|
18
|
+
### 1.1 YATAの役割
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
22
|
+
│ AI Agent │
|
|
23
|
+
│ (Claude, Copilot, etc.) │
|
|
24
|
+
└──────────────────────┬──────────────────────────────────────┘
|
|
25
|
+
│
|
|
26
|
+
┌──────────────────────▼──────────────────────────────────────┐
|
|
27
|
+
│ YATA Client │
|
|
28
|
+
│ 統一API・キャッシュ・同期 │
|
|
29
|
+
└──────────────────────┬──────────────────────────────────────┘
|
|
30
|
+
│
|
|
31
|
+
┌──────────────┴──────────────┐
|
|
32
|
+
│ │
|
|
33
|
+
┌───────▼────────┐ ┌────────▼───────┐
|
|
34
|
+
│ YATA Local │ ◄──同期──► │ YATA Global │
|
|
35
|
+
│ SQLite │ │ 分散型 │
|
|
36
|
+
│ ローカルKG │ │ グローバルKG │
|
|
37
|
+
└────────────────┘ └────────────────┘
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 1.2 パッケージ構成
|
|
41
|
+
|
|
42
|
+
| パッケージ | 役割 |
|
|
43
|
+
|-----------|------|
|
|
44
|
+
| **yata-client** | クライアントライブラリ(統一API) |
|
|
45
|
+
| **yata-local** | SQLiteベースローカル知識グラフ |
|
|
46
|
+
| **yata-global** | 分散型グローバル知識グラフ |
|
|
47
|
+
| **yata-ui** | Web可視化・管理UI |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 2. YATA Local
|
|
52
|
+
|
|
53
|
+
### 2.1 概要
|
|
54
|
+
|
|
55
|
+
`@nahisaho/yata-local` は、SQLiteベースのローカル知識グラフです。高速なクエリと永続化を提供します。
|
|
56
|
+
|
|
57
|
+
### 2.2 アーキテクチャ
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
packages/yata-local/src/
|
|
61
|
+
├── store/
|
|
62
|
+
│ ├── sqlite-store.ts # SQLiteストレージ
|
|
63
|
+
│ ├── triple-store.ts # トリプルストア
|
|
64
|
+
│ └── index-manager.ts # インデックス管理
|
|
65
|
+
├── query/
|
|
66
|
+
│ ├── sparql-parser.ts # SPARQLパーサー
|
|
67
|
+
│ ├── query-engine.ts # クエリエンジン
|
|
68
|
+
│ └── optimizer.ts # クエリ最適化
|
|
69
|
+
├── inference/
|
|
70
|
+
│ ├── reasoner.ts # 推論エンジン
|
|
71
|
+
│ ├── rules.ts # 推論ルール
|
|
72
|
+
│ └── transitive.ts # 推移的閉包
|
|
73
|
+
├── sync/
|
|
74
|
+
│ ├── change-log.ts # 変更ログ
|
|
75
|
+
│ └── delta-sync.ts # 差分同期
|
|
76
|
+
└── index.ts
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 2.3 主要機能
|
|
80
|
+
|
|
81
|
+
#### 2.3.1 トリプルストア
|
|
82
|
+
|
|
83
|
+
RDF形式の知識を格納・検索します。
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
import { YataLocal } from '@nahisaho/yata-local';
|
|
87
|
+
|
|
88
|
+
const yata = new YataLocal({
|
|
89
|
+
dbPath: './knowledge.db',
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// トリプル追加
|
|
93
|
+
await yata.addTriple({
|
|
94
|
+
subject: 'req:REQ-001',
|
|
95
|
+
predicate: 'rdf:type',
|
|
96
|
+
object: 'sdd:Requirement',
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// トリプル検索
|
|
100
|
+
const results = await yata.query({
|
|
101
|
+
subject: 'req:REQ-001',
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### 2.3.2 SPARQLクエリ
|
|
106
|
+
|
|
107
|
+
SPARQL形式でクエリを実行します。
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
const results = await yata.sparql(`
|
|
111
|
+
SELECT ?req ?pattern
|
|
112
|
+
WHERE {
|
|
113
|
+
?req rdf:type sdd:Requirement .
|
|
114
|
+
?req sdd:pattern ?pattern .
|
|
115
|
+
FILTER(?pattern = "event-driven")
|
|
116
|
+
}
|
|
117
|
+
`);
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### 2.3.3 推論エンジン
|
|
121
|
+
|
|
122
|
+
組み込みの推論ルールで暗黙知を導出します。
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
// 推論を有効化
|
|
126
|
+
const yata = new YataLocal({
|
|
127
|
+
inference: {
|
|
128
|
+
enabled: true,
|
|
129
|
+
rules: ['transitive', 'subclass', 'inverse'],
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
// 推移的閉包クエリ
|
|
134
|
+
const ancestors = await yata.inferTransitive({
|
|
135
|
+
subject: 'comp:UserService',
|
|
136
|
+
predicate: 'sdd:dependsOn',
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 2.4 スキーマ
|
|
141
|
+
|
|
142
|
+
```sql
|
|
143
|
+
-- トリプルテーブル
|
|
144
|
+
CREATE TABLE triples (
|
|
145
|
+
id INTEGER PRIMARY KEY,
|
|
146
|
+
subject TEXT NOT NULL,
|
|
147
|
+
predicate TEXT NOT NULL,
|
|
148
|
+
object TEXT NOT NULL,
|
|
149
|
+
graph TEXT DEFAULT 'default',
|
|
150
|
+
created_at TEXT NOT NULL,
|
|
151
|
+
UNIQUE(subject, predicate, object, graph)
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
-- インデックス
|
|
155
|
+
CREATE INDEX idx_subject ON triples(subject);
|
|
156
|
+
CREATE INDEX idx_predicate ON triples(predicate);
|
|
157
|
+
CREATE INDEX idx_object ON triples(object);
|
|
158
|
+
CREATE INDEX idx_spo ON triples(subject, predicate, object);
|
|
159
|
+
|
|
160
|
+
-- 変更ログ
|
|
161
|
+
CREATE TABLE change_log (
|
|
162
|
+
id INTEGER PRIMARY KEY,
|
|
163
|
+
operation TEXT NOT NULL, -- 'add' | 'remove'
|
|
164
|
+
subject TEXT NOT NULL,
|
|
165
|
+
predicate TEXT NOT NULL,
|
|
166
|
+
object TEXT NOT NULL,
|
|
167
|
+
timestamp TEXT NOT NULL,
|
|
168
|
+
synced INTEGER DEFAULT 0
|
|
169
|
+
);
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 3. YATA Global
|
|
175
|
+
|
|
176
|
+
### 3.1 概要
|
|
177
|
+
|
|
178
|
+
`@nahisaho/yata-global` は、分散型のグローバル知識グラフです。チーム間での知識共有と集合知を実現します。
|
|
179
|
+
|
|
180
|
+
### 3.2 アーキテクチャ
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
packages/yata-global/src/
|
|
184
|
+
├── network/
|
|
185
|
+
│ ├── peer-manager.ts # P2Pピア管理
|
|
186
|
+
│ ├── gossip.ts # ゴシッププロトコル
|
|
187
|
+
│ └── consensus.ts # 合意形成
|
|
188
|
+
├── store/
|
|
189
|
+
│ ├── distributed-store.ts # 分散ストア
|
|
190
|
+
│ ├── partition.ts # パーティション管理
|
|
191
|
+
│ └── replication.ts # レプリケーション
|
|
192
|
+
├── privacy/
|
|
193
|
+
│ ├── filter.ts # プライバシーフィルタ
|
|
194
|
+
│ ├── anonymizer.ts # 匿名化
|
|
195
|
+
│ └── consent.ts # 同意管理
|
|
196
|
+
├── api/
|
|
197
|
+
│ ├── server.ts # APIサーバー
|
|
198
|
+
│ └── routes.ts # APIルート
|
|
199
|
+
└── index.ts
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 3.3 主要機能
|
|
203
|
+
|
|
204
|
+
#### 3.3.1 分散ストレージ
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
import { YataGlobal } from '@nahisaho/yata-global';
|
|
208
|
+
|
|
209
|
+
const yataGlobal = new YataGlobal({
|
|
210
|
+
nodeId: 'node-001',
|
|
211
|
+
peers: ['https://yata-peer-1.example.com'],
|
|
212
|
+
replicationFactor: 3,
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// グローバルクエリ
|
|
216
|
+
const patterns = await yataGlobal.queryPatterns({
|
|
217
|
+
domain: 'authentication',
|
|
218
|
+
minConfidence: 0.9,
|
|
219
|
+
});
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
#### 3.3.2 プライバシー保護
|
|
223
|
+
|
|
224
|
+
機密情報を除外して共有します。
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
const yataGlobal = new YataGlobal({
|
|
228
|
+
privacy: {
|
|
229
|
+
level: 'strict', // 'strict' | 'moderate' | 'none'
|
|
230
|
+
excludePatterns: [
|
|
231
|
+
'*.password',
|
|
232
|
+
'*.apiKey',
|
|
233
|
+
'company.*',
|
|
234
|
+
],
|
|
235
|
+
anonymize: true,
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
#### 3.3.3 KGPR(Knowledge Graph Pull Request)
|
|
241
|
+
|
|
242
|
+
知識グラフへの変更をレビュー可能な形式で提案します。
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
// KGPR作成
|
|
246
|
+
const kgpr = await yataGlobal.createKGPR({
|
|
247
|
+
title: 'Add authentication patterns',
|
|
248
|
+
description: 'New patterns learned from Project-15',
|
|
249
|
+
changes: [
|
|
250
|
+
{ operation: 'add', triple: {...} },
|
|
251
|
+
],
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
// KGPR送信
|
|
255
|
+
await yataGlobal.submitKGPR(kgpr.id);
|
|
256
|
+
|
|
257
|
+
// KGPRレビュー
|
|
258
|
+
await yataGlobal.reviewKGPR(kgpr.id, {
|
|
259
|
+
decision: 'approve',
|
|
260
|
+
comment: 'LGTM',
|
|
261
|
+
});
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### 3.4 同期プロトコル
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
┌──────────────────────────────────────────────────────────────┐
|
|
268
|
+
│ 同期プロトコル │
|
|
269
|
+
└──────────────────────────────────────────────────────────────┘
|
|
270
|
+
|
|
271
|
+
1. 変更検出
|
|
272
|
+
Local KG → Change Log → Delta Calculation
|
|
273
|
+
|
|
274
|
+
2. プライバシーフィルタリング
|
|
275
|
+
Delta → Privacy Filter → Sanitized Delta
|
|
276
|
+
|
|
277
|
+
3. ゴシップ配信
|
|
278
|
+
Sanitized Delta → Gossip Protocol → Peers
|
|
279
|
+
|
|
280
|
+
4. 合意形成
|
|
281
|
+
Peers → Consensus → Global KG Update
|
|
282
|
+
|
|
283
|
+
5. 逆同期
|
|
284
|
+
Global Updates → Local KG
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## 4. YATA Client
|
|
290
|
+
|
|
291
|
+
### 4.1 概要
|
|
292
|
+
|
|
293
|
+
`@nahisaho/musubix-yata-client` は、YATAシステムへの統一アクセスを提供するクライアントライブラリです。
|
|
294
|
+
|
|
295
|
+
### 4.2 アーキテクチャ
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
packages/yata-client/src/
|
|
299
|
+
├── client.ts # メインクライアント
|
|
300
|
+
├── cache.ts # LRUキャッシュ
|
|
301
|
+
├── sync.ts # 同期マネージャー
|
|
302
|
+
├── query-builder.ts # クエリビルダー
|
|
303
|
+
├── types.ts # 型定義
|
|
304
|
+
└── index.ts
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### 4.3 主要API
|
|
308
|
+
|
|
309
|
+
#### 4.3.1 クライアント初期化
|
|
310
|
+
|
|
311
|
+
```typescript
|
|
312
|
+
import { YataClient } from '@nahisaho/musubix-yata-client';
|
|
313
|
+
|
|
314
|
+
const client = new YataClient({
|
|
315
|
+
local: {
|
|
316
|
+
dbPath: './knowledge.db',
|
|
317
|
+
},
|
|
318
|
+
global: {
|
|
319
|
+
enabled: true,
|
|
320
|
+
endpoint: 'https://yata.example.com',
|
|
321
|
+
apiKey: process.env.YATA_API_KEY,
|
|
322
|
+
},
|
|
323
|
+
cache: {
|
|
324
|
+
maxSize: 1000,
|
|
325
|
+
ttl: 3600,
|
|
326
|
+
},
|
|
327
|
+
});
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
#### 4.3.2 知識の追加
|
|
331
|
+
|
|
332
|
+
```typescript
|
|
333
|
+
// 単一トリプル追加
|
|
334
|
+
await client.add({
|
|
335
|
+
subject: 'req:REQ-001',
|
|
336
|
+
predicate: 'sdd:pattern',
|
|
337
|
+
object: 'event-driven',
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
// バッチ追加
|
|
341
|
+
await client.addBatch([
|
|
342
|
+
{ subject: 'req:REQ-001', predicate: 'rdf:type', object: 'sdd:Requirement' },
|
|
343
|
+
{ subject: 'req:REQ-001', predicate: 'sdd:priority', object: 'P0' },
|
|
344
|
+
]);
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
#### 4.3.3 知識のクエリ
|
|
348
|
+
|
|
349
|
+
```typescript
|
|
350
|
+
// シンプルクエリ
|
|
351
|
+
const results = await client.query({
|
|
352
|
+
subject: 'req:REQ-001',
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
// パターンクエリ
|
|
356
|
+
const requirements = await client.query({
|
|
357
|
+
predicate: 'rdf:type',
|
|
358
|
+
object: 'sdd:Requirement',
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
// クエリビルダー
|
|
362
|
+
const results = await client
|
|
363
|
+
.queryBuilder()
|
|
364
|
+
.select('?req', '?pattern')
|
|
365
|
+
.where('?req', 'rdf:type', 'sdd:Requirement')
|
|
366
|
+
.where('?req', 'sdd:pattern', '?pattern')
|
|
367
|
+
.filter('?pattern', '=', 'event-driven')
|
|
368
|
+
.execute();
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
#### 4.3.4 推論
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
// 関連知識の取得
|
|
375
|
+
const related = await client.infer({
|
|
376
|
+
subject: 'comp:UserService',
|
|
377
|
+
depth: 2, // 関係の深さ
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
// パス検索
|
|
381
|
+
const path = await client.findPath({
|
|
382
|
+
from: 'req:REQ-001',
|
|
383
|
+
to: 'code:UserService.ts',
|
|
384
|
+
});
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
#### 4.3.5 同期
|
|
388
|
+
|
|
389
|
+
```typescript
|
|
390
|
+
// 手動同期
|
|
391
|
+
await client.sync();
|
|
392
|
+
|
|
393
|
+
// 同期状態の確認
|
|
394
|
+
const status = await client.getSyncStatus();
|
|
395
|
+
console.log(status);
|
|
396
|
+
// { lastSync: '2026-01-06T12:00:00Z', pendingChanges: 5 }
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### 4.4 イベント
|
|
400
|
+
|
|
401
|
+
```typescript
|
|
402
|
+
client.on('sync:start', () => console.log('同期開始'));
|
|
403
|
+
client.on('sync:complete', (stats) => console.log('同期完了', stats));
|
|
404
|
+
client.on('sync:error', (error) => console.error('同期エラー', error));
|
|
405
|
+
client.on('change:local', (change) => console.log('ローカル変更', change));
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
## 5. YATA UI
|
|
411
|
+
|
|
412
|
+
### 5.1 概要
|
|
413
|
+
|
|
414
|
+
`@nahisaho/yata-ui` は、知識グラフの可視化・管理を行うWebインターフェースです。
|
|
415
|
+
|
|
416
|
+
### 5.2 アーキテクチャ
|
|
417
|
+
|
|
418
|
+
```
|
|
419
|
+
packages/yata-ui/src/
|
|
420
|
+
├── components/
|
|
421
|
+
│ ├── GraphViewer.tsx # グラフ可視化
|
|
422
|
+
│ ├── QueryEditor.tsx # SPARQLエディタ
|
|
423
|
+
│ ├── TripleEditor.tsx # トリプル編集
|
|
424
|
+
│ └── SyncStatus.tsx # 同期状態表示
|
|
425
|
+
├── pages/
|
|
426
|
+
│ ├── Dashboard.tsx # ダッシュボード
|
|
427
|
+
│ ├── Explorer.tsx # グラフ探索
|
|
428
|
+
│ ├── Query.tsx # クエリ実行
|
|
429
|
+
│ └── Settings.tsx # 設定
|
|
430
|
+
├── hooks/
|
|
431
|
+
│ └── useYata.ts # YATAフック
|
|
432
|
+
└── index.tsx
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
### 5.3 主要機能
|
|
436
|
+
|
|
437
|
+
#### 5.3.1 グラフ可視化
|
|
438
|
+
|
|
439
|
+
インタラクティブなグラフ表示を提供します。
|
|
440
|
+
|
|
441
|
+
```tsx
|
|
442
|
+
import { GraphViewer } from '@nahisaho/yata-ui';
|
|
443
|
+
|
|
444
|
+
function Explorer() {
|
|
445
|
+
return (
|
|
446
|
+
<GraphViewer
|
|
447
|
+
query={{
|
|
448
|
+
subject: 'req:REQ-001',
|
|
449
|
+
depth: 3,
|
|
450
|
+
}}
|
|
451
|
+
layout="force-directed"
|
|
452
|
+
onNodeClick={(node) => console.log(node)}
|
|
453
|
+
/>
|
|
454
|
+
);
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
#### 5.3.2 SPARQLエディタ
|
|
459
|
+
|
|
460
|
+
シンタックスハイライト付きのSPARQLエディタを提供します。
|
|
461
|
+
|
|
462
|
+
```tsx
|
|
463
|
+
import { QueryEditor } from '@nahisaho/yata-ui';
|
|
464
|
+
|
|
465
|
+
function QueryPage() {
|
|
466
|
+
const [results, setResults] = useState([]);
|
|
467
|
+
|
|
468
|
+
return (
|
|
469
|
+
<QueryEditor
|
|
470
|
+
defaultQuery={`SELECT * WHERE { ?s ?p ?o } LIMIT 10`}
|
|
471
|
+
onExecute={async (query) => {
|
|
472
|
+
const result = await yataClient.sparql(query);
|
|
473
|
+
setResults(result);
|
|
474
|
+
}}
|
|
475
|
+
/>
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
#### 5.3.3 トリプル管理
|
|
481
|
+
|
|
482
|
+
GUIでトリプルの追加・編集・削除が可能です。
|
|
483
|
+
|
|
484
|
+
```tsx
|
|
485
|
+
import { TripleEditor } from '@nahisaho/yata-ui';
|
|
486
|
+
|
|
487
|
+
function TriplePage() {
|
|
488
|
+
return (
|
|
489
|
+
<TripleEditor
|
|
490
|
+
onAdd={async (triple) => {
|
|
491
|
+
await yataClient.add(triple);
|
|
492
|
+
}}
|
|
493
|
+
onDelete={async (triple) => {
|
|
494
|
+
await yataClient.remove(triple);
|
|
495
|
+
}}
|
|
496
|
+
/>
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
### 5.4 起動方法
|
|
502
|
+
|
|
503
|
+
```bash
|
|
504
|
+
# 開発サーバー
|
|
505
|
+
cd packages/yata-ui
|
|
506
|
+
npm run dev
|
|
507
|
+
|
|
508
|
+
# ビルド
|
|
509
|
+
npm run build
|
|
510
|
+
|
|
511
|
+
# プロダクション
|
|
512
|
+
npm run start
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
---
|
|
516
|
+
|
|
517
|
+
## 6. データモデル
|
|
518
|
+
|
|
519
|
+
### 6.1 名前空間
|
|
520
|
+
|
|
521
|
+
| 接頭辞 | URI | 説明 |
|
|
522
|
+
|--------|-----|------|
|
|
523
|
+
| `rdf` | `http://www.w3.org/1999/02/22-rdf-syntax-ns#` | RDF基本 |
|
|
524
|
+
| `rdfs` | `http://www.w3.org/2000/01/rdf-schema#` | RDFスキーマ |
|
|
525
|
+
| `sdd` | `http://musubix.dev/sdd#` | SDD方法論 |
|
|
526
|
+
| `req` | `http://musubix.dev/requirements#` | 要件 |
|
|
527
|
+
| `des` | `http://musubix.dev/design#` | 設計 |
|
|
528
|
+
| `code` | `http://musubix.dev/code#` | コード |
|
|
529
|
+
| `test` | `http://musubix.dev/test#` | テスト |
|
|
530
|
+
| `pattern` | `http://musubix.dev/patterns#` | パターン |
|
|
531
|
+
|
|
532
|
+
### 6.2 クラス階層
|
|
533
|
+
|
|
534
|
+
```turtle
|
|
535
|
+
@prefix sdd: <http://musubix.dev/sdd#> .
|
|
536
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
537
|
+
|
|
538
|
+
# 基本クラス
|
|
539
|
+
sdd:Artifact rdfs:subClassOf rdfs:Resource .
|
|
540
|
+
|
|
541
|
+
# 成果物タイプ
|
|
542
|
+
sdd:Requirement rdfs:subClassOf sdd:Artifact .
|
|
543
|
+
sdd:Design rdfs:subClassOf sdd:Artifact .
|
|
544
|
+
sdd:Code rdfs:subClassOf sdd:Artifact .
|
|
545
|
+
sdd:Test rdfs:subClassOf sdd:Artifact .
|
|
546
|
+
|
|
547
|
+
# 要件パターン
|
|
548
|
+
sdd:UbiquitousRequirement rdfs:subClassOf sdd:Requirement .
|
|
549
|
+
sdd:EventDrivenRequirement rdfs:subClassOf sdd:Requirement .
|
|
550
|
+
sdd:StateDrivenRequirement rdfs:subClassOf sdd:Requirement .
|
|
551
|
+
sdd:UnwantedRequirement rdfs:subClassOf sdd:Requirement .
|
|
552
|
+
sdd:OptionalRequirement rdfs:subClassOf sdd:Requirement .
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
### 6.3 プロパティ
|
|
556
|
+
|
|
557
|
+
```turtle
|
|
558
|
+
@prefix sdd: <http://musubix.dev/sdd#> .
|
|
559
|
+
|
|
560
|
+
# トレーサビリティ
|
|
561
|
+
sdd:implements a rdf:Property ;
|
|
562
|
+
rdfs:domain sdd:Design ;
|
|
563
|
+
rdfs:range sdd:Requirement .
|
|
564
|
+
|
|
565
|
+
sdd:realizedBy a rdf:Property ;
|
|
566
|
+
rdfs:domain sdd:Requirement ;
|
|
567
|
+
rdfs:range sdd:Code .
|
|
568
|
+
|
|
569
|
+
sdd:testedBy a rdf:Property ;
|
|
570
|
+
rdfs:domain sdd:Code ;
|
|
571
|
+
rdfs:range sdd:Test .
|
|
572
|
+
|
|
573
|
+
# メタデータ
|
|
574
|
+
sdd:priority a rdf:Property ;
|
|
575
|
+
rdfs:domain sdd:Requirement ;
|
|
576
|
+
rdfs:range xsd:string .
|
|
577
|
+
|
|
578
|
+
sdd:pattern a rdf:Property ;
|
|
579
|
+
rdfs:domain sdd:Requirement ;
|
|
580
|
+
rdfs:range xsd:string .
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
## 7. 設定
|
|
586
|
+
|
|
587
|
+
### 7.1 環境変数
|
|
588
|
+
|
|
589
|
+
| 変数名 | 説明 | デフォルト |
|
|
590
|
+
|--------|------|-----------|
|
|
591
|
+
| `YATA_DB_PATH` | SQLiteデータベースパス | `~/.musubix/yata.db` |
|
|
592
|
+
| `YATA_GLOBAL_ENDPOINT` | グローバルAPIエンドポイント | - |
|
|
593
|
+
| `YATA_API_KEY` | APIキー | - |
|
|
594
|
+
| `YATA_PRIVACY_LEVEL` | プライバシーレベル | `moderate` |
|
|
595
|
+
| `YATA_SYNC_INTERVAL` | 同期間隔(秒) | `3600` |
|
|
596
|
+
|
|
597
|
+
### 7.2 設定ファイル
|
|
598
|
+
|
|
599
|
+
`yata.config.json`:
|
|
600
|
+
|
|
601
|
+
```json
|
|
602
|
+
{
|
|
603
|
+
"local": {
|
|
604
|
+
"dbPath": "./knowledge.db",
|
|
605
|
+
"inference": {
|
|
606
|
+
"enabled": true,
|
|
607
|
+
"rules": ["transitive", "subclass"]
|
|
608
|
+
}
|
|
609
|
+
},
|
|
610
|
+
"global": {
|
|
611
|
+
"enabled": true,
|
|
612
|
+
"endpoint": "https://yata.example.com",
|
|
613
|
+
"syncInterval": 3600
|
|
614
|
+
},
|
|
615
|
+
"privacy": {
|
|
616
|
+
"level": "moderate",
|
|
617
|
+
"excludePatterns": ["*.password", "*.secret"]
|
|
618
|
+
},
|
|
619
|
+
"cache": {
|
|
620
|
+
"maxSize": 1000,
|
|
621
|
+
"ttl": 3600
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
|
|
628
|
+
## 8. CLI コマンド
|
|
629
|
+
|
|
630
|
+
```bash
|
|
631
|
+
# ローカルKG操作
|
|
632
|
+
npx yata add "req:REQ-001" "rdf:type" "sdd:Requirement"
|
|
633
|
+
npx yata query --subject "req:REQ-001"
|
|
634
|
+
npx yata sparql "SELECT * WHERE { ?s ?p ?o } LIMIT 10"
|
|
635
|
+
|
|
636
|
+
# 同期
|
|
637
|
+
npx yata sync
|
|
638
|
+
npx yata sync --status
|
|
639
|
+
|
|
640
|
+
# KGPR
|
|
641
|
+
npx yata kgpr create --title "New patterns"
|
|
642
|
+
npx yata kgpr list
|
|
643
|
+
npx yata kgpr submit <id>
|
|
644
|
+
|
|
645
|
+
# エクスポート/インポート
|
|
646
|
+
npx yata export --format turtle --output knowledge.ttl
|
|
647
|
+
npx yata import --format turtle knowledge.ttl
|
|
648
|
+
|
|
649
|
+
# UI起動
|
|
650
|
+
npx yata ui
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
---
|
|
654
|
+
|
|
655
|
+
## 9. 関連ドキュメント
|
|
656
|
+
|
|
657
|
+
| ドキュメント | 説明 |
|
|
658
|
+
|-------------|------|
|
|
659
|
+
| [MUSUBIX-Overview.md](MUSUBIX-Overview.md) | 全体概要 |
|
|
660
|
+
| [MUSUBIX-Core.md](MUSUBIX-Core.md) | Coreパッケージ |
|
|
661
|
+
| [MUSUBIX-MCP-Server.md](MUSUBIX-MCP-Server.md) | MCPサーバー |
|
|
662
|
+
| [API-REFERENCE.md](API-REFERENCE.md) | APIリファレンス |
|
|
663
|
+
|
|
664
|
+
---
|
|
665
|
+
|
|
666
|
+
**© 2026 MUSUBIX Project**
|