モデルストーミング(DV / Dimensional)で生まれるビジネスメタデータを W3C 標準 (SKOS / OWL / JSON-LD) で 1 箇所に保存し、 MCP 経由で Claude が直接読み書き することで、 dbt / Semantic Layer / AI/LLM すべてに同じ意味を届けるフレームワーク。
metamesh はドメイン非依存の OSS。実装例は別リポジトリで管理する。 現在の参照実装: vtuber-analytics (VTuber 配信メタデータをこのフレームワークで構造化したもの)。
立ち位置を一文で: 業務担当者と AI が同じ「業務概念の SSoT」を共有するための、 モデルストーミング駆動のワークフロー OSS。隣接する semantic layer / catalog / GraphRAG エコシステムとは 競合ではなく上流補完 の関係。詳細は
POSITIONING.md。
データ基盤の下流に行くほど ビジネスメタデータ(人間の頭の中の知識)が削られていく。
モデルストーミング成果物 (情報量 100%)
→ DV/Mart 実装 (情報量 30%: 定義が削れる)
→ Semantic Layer (情報量 15%: ビジネス定義が消える)
→ Data Catalog (情報量 10%)
→ AI / LLM (情報量 5%: 構造は分かるが意味が分からない)
「得意先別売上」と「顧客別売上」が同じクエリにならない、配信者と チャンネルとサブチャンネルの関係が AI に伝わらない、といった現象は、 5 つの断絶点 で同義語・階層・関係性の意味・実装の対応がそれぞれ 失われることが原因。
詳細: docs/PROJECT_CONTEXT.md(フレームワーク
全体)。
| 原則 | 帰結 |
|---|---|
| Single Source of Truth = W3C 標準のオントロジー | 独自フォーマットは作らない。ontology/concepts/*.jsonld と ontology/relationships/*.jsonld だけが信じる対象 |
| MCP は薄く、データは厚く | 書き込み 2 / 読み取り 1 が core。残りは optional な bulk export |
| ワークフローは Skills へ | CBC インタビュー・NBR 設計・DV 実装方針などは Claude Skills として配布。コードに固めない |
| 下流生成はクライアント側で都度合成 | 「Mermaid で可視化」「dbt schema.yml に変換」は Claude が SPARQL で取って即時生成すれば済む |
| ドメインデータは外部に持つ | metamesh 自身は概念・関係性を保持しない。ユーザーが METAMESH_ONTOLOGY_ROOT で自分のオントロジーディレクトリを指す |
┌──────────────────────────────────────────────────┐
│ ユーザー (データエンジニア / 研究者) │
│ ↕ 自然言語 │
│ Claude Desktop / Code │
│ ├─ Skills (.claude/skills/) │
│ │ ├─ cbc-modeling-interview (DV) │
│ │ ├─ nbr-identification (DV) │
│ │ ├─ dv-implementation-design (DV) │
│ │ ├─ beam-modeling-interview (Kimball) │
│ │ ├─ dimension-fact-identification (Kimball) │
│ │ ├─ star-schema-design (Kimball) │
│ │ ├─ ontology-visualize (汎用) │
│ │ └─ ontology-review (汎用) │
│ ↕ MCP │
│ metamesh server (薄い primitive) │
│ ├─ Write : add_concept, add_relationship │
│ └─ Read : query_concept (SPARQL: SELECT/ │
│ CONSTRUCT/DESCRIBE/ASK) │
│ ↕ METAMESH_ONTOLOGY_ROOT │
│ ontology/ (ユーザー自身が用意するディレクトリ) │
│ ├── concepts/*.jsonld │
│ └── relationships/*.jsonld │
└──────────────────────────────────────────────────┘
git clone https://github.com/Islanders-Treasure0969/metamesh.git
cd metamesh
uv sync --extra dev
uv run pytest # 動作確認 (69 tests)metamesh 自身はドメインデータを持たない。自分のオントロジーディレクトリを
作る (空でも OK、最初の add_concept で生成される):
mkdir -p ~/my-ontology/{concepts,relationships}
export METAMESH_ONTOLOGY_ROOT=~/my-ontologyまたは既存の例を借りる:
git clone https://github.com/Islanders-Treasure0969/vtuber-analytics
export METAMESH_ONTOLOGY_ROOT=$PWD/vtuber-analytics/ontology~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"metamesh": {
"command": "/path/to/uv",
"args": [
"--directory", "/path/to/metamesh",
"run", "python", "-m", "metamesh.server"
],
"env": {
"METAMESH_ONTOLOGY_ROOT": "/path/to/your/ontology"
}
}
}
}uv のフルパスは which uv で取得 (PATH を継承しない環境があるため絶対パス推奨)。
Claude にこう話しかけるだけ:
「Streamer って概念を metamesh に追加して」
cbc-modeling-interview Skill が起動して、Claude が CBC Form 相当の
質問を順番に投げてくれる。回答すれば自動的に
<METAMESH_ONTOLOGY_ROOT>/concepts/Streamer.jsonld が生成される。
書き込みと検索の最小セット。通常はこれだけで完結する。
| Tool | 用途 |
|---|---|
add_concept |
概念 (skos:Concept) を 1 件登録。多言語ラベル・同義語・階層・関連・DV/Kimball 拡張に対応 |
add_relationship |
関係性 (owl:ObjectProperty) を 1 件登録。domain / range / 逆関係 / 拡張 |
query_concept |
キーワード or SPARQL で検索。SPARQL は SELECT / CONSTRUCT / DESCRIBE / ASK をサポート |
CI で一括書き出しする等の用途には便利。通常運用では query_concept で
都度引いて Claude が必要な形に変換すれば足りるので、必須ではない。
| Tool | 用途 |
|---|---|
generate_dbt_yaml |
オントロジー → schema.yml (description + meta) |
generate_semantic_layer |
オントロジー → MetricFlow YAML (semantic_models + entities) |
export_llm_context |
オントロジー → Markdown digest (LLM プロンプト貼付用) |
実出力サンプルは vtuber-analytics の output/
を参照。
query_concept(sparql=...) で叩ける。CONSTRUCT / DESCRIBE は subgraph を
triples で返すので、Claude が即座に Mermaid やテーブルに変換可能。
PREFIX dv: <https://metamesh.dev/ext/dv/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?label ?hub ?bk WHERE {
?c dv:hub ?hub ;
dv:business_key ?bk ;
skos:prefLabel ?label .
FILTER(LANG(?label) = "ja")
}
ORDER BY ?hubPREFIX skos: <http://www.w3.org/2004/02/skos/core#>
CONSTRUCT { ?s ?p ?o }
WHERE {
{ <https://metamesh.dev/ontology/Streamer> ?p ?o . BIND(<https://metamesh.dev/ontology/Streamer> AS ?s) }
UNION
{ ?s ?p <https://metamesh.dev/ontology/Streamer> . BIND(<https://metamesh.dev/ontology/Streamer> AS ?o) }
}→ Claude が triples を Mermaid に変換して即時可視化。
PREFIX dv: <https://metamesh.dev/ext/dv/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?rel ?domain ?range WHERE {
?rel dv:cardinality "N:M" ;
rdfs:domain ?domain ;
rdfs:range ?range .
}metamesh は組み込みの可視化コマンドを持たない。理由:
- SPARQL (CONSTRUCT) で subgraph を取れば、Claude が文脈に応じた最適な 形式 (Mermaid / Graphviz / 表 / Cytoscape JSON) で都度レンダリングできる
- オントロジー編集の標準ツール (Protégé / WebVOWL) は metamesh の 出力する JSON-LD を直接食える。深い分析はそちらに任せた方が劣化しない
この設計の具体実装が ontology-visualize Skill。「Mermaid で見せて」「N:M
関係だけ図示して」「Streamer 周辺だけ」等の自然言語要求を SPARQL CONSTRUCT
に変換 → triples を Mermaid に変換 → チャットに直貼り、を 1 プロンプトで
完結する。.claude/skills/ontology-visualize/SKILL.md 参照。
オントロジーは生 JSON-LD ファイルなので、好きなツールで開いて手で書ける:
- Protégé で
<METAMESH_ONTOLOGY_ROOT>/concepts/*.jsonldを順次 import - WebVOWL に JSON-LD をアップロードして可視化
- 任意のテキストエディタ + git diff レビュー
add_concept / add_relationship は rdflib で round-trip 検証してから
保存するので、これらツール経由で書いた場合は別途整合性確認を推奨
(uv run pytest で構造テスト)。
Islanders-Treasure0969/vtuber-analytics は metamesh のフレームワークを VTuber 分析に適用したリポジトリ。
- 7 概念 + 6 関係性のオントロジー (Streamer / Channel / Stream / Org / Collaboration / Clip / Topic)
- metamesh が生成した dbt / MetricFlow / LLM context のサンプル
- Holodex API でオントロジーの
dv:business_keyを実データ検証するスクリプト
「metamesh をどう使うか」の具体例として、また自身の VTuber 分析プロジェクト として、独立したリポジトリで運用される。
uv sync --extra dev # ruff / pytest / pytest-asyncio
uv run pytest -v # 69 tests
uv run ruff check .| Step | スコープ | 状態 |
|---|---|---|
| 1 | add_concept ツール |
✅ |
| 2 | add_relationship / generate_dbt_yaml |
✅ |
| 3a | generate_semantic_layer / export_llm_context / query_concept |
✅ |
| 3b | cbc-modeling-interview Skill |
✅ |
| 3c | nbr-identification Skill |
✅ |
| 3d | ontology-visualize Skill |
✅ |
| 3e | ontology-review Skill |
✅ |
| 3f | dv-implementation-design Skill |
✅ |
| 3g | beam-modeling-interview Skill (Kimball 系入口) |
✅ |
| 4a | dimension-fact-identification Skill (#19) |
✅ |
| 4b | star-schema-design Skill (#20) |
✅ |
| 4c | 複数 extension サポート (#21) | ✅ |
| 5a | OSI (Open Semantic Interchange) export — オントロジー → OSI YAML (現状の core-spec タグは v0.1.1、v1.0 系として公式アナウンス済み) | 未着手 |
| 5b | PyPI 公開 (pip install metamesh) |
未着手 |
| 6a | SHACL バリデーション | 未着手 |
| 6b | add_metric (MetricFlow メトリクス定義のオントロジー化) |
未着手 |
| 6c | Neo4j / LPG export — オントロジー → Neo4j n10s / LPG (GraphRAG 連携) | 未着手 |
| 7 | OSI bidirectional (import) / GraphRAG bridge | 構想中 |
POSITIONING.md— metamesh の立ち位置 / 隣接 OSS との関係 / 非ゴールdocs/PROJECT_CONTEXT.md— フレームワーク全体の設計根拠docs/references/— Data Vault / SKOS / OWL の参考資料- vtuber-analytics — 参照実装
Apache-2.0