Xenkeyとは?
Xenkeyは現実世界の対象—ビジネス、製品、サービス、場所、人、プロセス、イベント—についての原子レベルの意味単位です。マーケティングの説得ではなく、AIの理解のために書かれています。
各Xenkeyは単一の最小・反証可能なアイデアを表します。仕様バージョンは各ドキュメントに宣言されます:
{ "spec": "1.0" }設計目標
説得より真実
宣伝ではなく現実を記述する。
文脈性
いつ、どこで、誰に適用されるかを捉える。
合成可能性
多数のXenkeyで一つの対象を記述する。
AI可読性
検索とインデックスのための厳格な構造。
識別
| 項目 | 型 | 説明 |
|---|---|---|
| id | string | 主識別子。形式:xk_ + ULID |
| ulid | string | 任意。idのサフィックスから導出(存在する場合は一致が必要) |
| spec | "1.0" | 仕様バージョン |
ライフサイクルと可変性
Xenkeyはデータの整合性と信頼性を保証する厳密なライフサイクルに従います。
可変性ルール
- •Draft — 自由に編集可能
- •Published — 不変。変更には新しいXenkeyが必要
- •もし
published_atが設定されている場合、ステータスはdraft
| 項目 | 型 | 説明 |
|---|---|---|
| status | enum | draft | unpublished | published | archived |
| created_at | datetime | 作成タイムスタンプ(RFC 3339) |
| published_at | datetime | Xenkeyが公開された時刻 |
| updated_at | datetime | 内部/読み取り専用、APIが設定 |
| etag | string | 内部/読み取り専用、同時実行制御用 |
意味コア
Xenkeyの心臓部。構造化された真実を捉える4つの必須フィールド。
| 項目 | 型 | 説明 |
|---|---|---|
| title | string | 体験の短く記述的な識別子 |
| fact | string | 現実に関する事実で検証可能な記述 |
| meaning | string | この事実が人にとってなぜ重要か |
| context | string | いつ、どこで、誰に適用されるか |
| constraints | string | 構造化フィールドで捉えられない自由記述のニュアンス |
スコープとアンカー
アンカーはXenkeyを現実のエンティティに結び付けます。各Xenkeyは少なくとも1つのアンカーを持つ必要があります。マルチアンカー対応により、複数オブジェクトの交差を記述できます。
| 項目 | 型 | 説明 |
|---|---|---|
| organization_id | string | 所有組織 |
| base_id | string | 論理グルーピング(ワークスペース/プロジェクト) |
| unit_id | string | 構造化入力エントリへの任意参照 |
| anchors[] | array | アンカーオブジェクトの配列(最小1) |
{
"anchor_id": "anchor_001",
"anchor_type": "product",
"role": "primary"
}| 項目 | 型 | 説明 |
|---|---|---|
| tags | string[] | 分類タグ(例:booking_required, wifi) |
| emotions | string[] | 感情コンテキストコード(emotion-codes.json) |
| vibe | string | 雰囲気/ムードの記述 |
| seasons | string[] | 適用季節 |
| time_of_day | string[] | 適用時間帯 |
| meal | string[] | 適用食事時間 |
デモグラフィック
| 項目 | 型 | 説明 |
|---|---|---|
| age_min | integer | 推奨最小年齢 |
| age_max | integer | 推奨最大年齢(age_min以上) |
| gender | string | 対象性別(該当する場合) |
地理
Xenkeyはグローバルにも地理的にも適用できます。フィールド geo_scope が必要な地理フィールドを決定します。
| 項目 | 型 | 説明 |
|---|---|---|
| geo_scope | enum | 地理精度レベル |
| country | string | ISO 3166-1 alpha-2 国コード |
| region | string | 地域/州/県 |
| city | string | 都市名 |
| timezone | string | IANA タイムゾーン(例:Europe/Rome) |
| geo | [lng, lat] | 座標 [経度, 緯度] |
| availability_countries | string[] | 利用可能な国(場所ではない) |
スコープルール: もし geo_scope=country なら country が必須。 もし geo_scope=region なら country と region (or city) が必須。 もし geo_scope=point なら geo が必須。
ローカリゼーション
| 項目 | 型 | 説明 |
|---|---|---|
| locale | string | 言語タグ(例:en-US, ja-JP) |
| source_locale | string | コンテンツの元言語 |
| translation_group | string | 翻訳をグループ化。形式:tg_ + ULID |
| is_source_locale | boolean | 元言語版であれば true |
ルール: もし is_source_locale = true, なら locale は source_locale. と同一である必要があります。翻訳は同じ translation_group を使用します。
整合性
公開されたXenkeyには公開時に計算された暗号学的ハッシュが含まれ、内容の整合性を保証します。
| 項目 | 型 | 説明 |
|---|---|---|
| hash_alg | "sha256" | 使用するハッシュアルゴリズム |
| hash_id | string | 一意なハッシュID。形式:hash_ + ULID |
| hash | string | 正規化ペイロードのSHA-256ハッシュ |
インデックスとプライバシー
Xenkeyは複数のチャネルに公開できます。各チャネルは異なる検索機能を提供します。
| 項目 | 型 | 説明 |
|---|---|---|
| publication | string[] | チャネル:vector, graph, aidex |
| is_published | boolean | 少なくとも1チャネルに公開されていれば true |
| is_vector | boolean | ベクトルストアに索引(Qdrant) |
| is_graph | boolean | 知識グラフに投影(Neo4j) |
| is_aidex | boolean | ロボット指向のWiki層 Aidex に公開 |
| is_private | boolean | 組織スコープのみ閲覧可能 |
ルール:
- •
aidexはvectorを要求(publicationに両方必要) - • もし
is_published=trueなら publication に少なくとも1つのエントリが必要 - • Aidexはベクトル索引より厳しいクォータを持つロボット指向のWiki層
ベクトル/グラフ検索
公開されたXenkeyは自動的に二つの補完的データ表現へ変換され、AIのハイブリッド検索を可能にします。
ベクトルインデックス(Qdrant)
- • テキストソース:
fact + meaning + context - • 高次元埋め込みに変換
- • 意味的類似検索を可能にする
- • ペイロードフィルタ:status, geo, tags, emotions, time
- • 冪等性:キー(id, version)
知識グラフ(Neo4j)
- • ノード:Xenkey, Organization, Object, Tag, Emotion
- • エッジ:OWNS, DESCRIBED_BY, TAGS, EXPRESSES
- • 関係と構造を可視化
- • 自然キーでの冪等MERGE
- • グラフ探索クエリを可能にする
ハイブリッド検索 はベクトル類似とグラフ構造フィルタを組み合わせ、根拠のある説明可能なAI回答を可能にします。 インデックスパイプラインはリトライとデッドレターキューを備えた非同期処理です。
不変条件
- ✓
anchorsは必須で空であってはならない - ✓もし
age_minとage_maxがあるなら age_max >= age_min - ✓もし
geoがあるなら[longitude, latitude]であること - ✓
geo_scope=countryはcountryを要求 - ✓
geo_scope=regionはcountry + region (or city)を要求 - ✓
geo_scope=pointはgeoを要求 - ✓
aidexが publication にある場合はvectorも必要 - ✓
is_published=trueはpublication[] 非空を要求
サンプルペイロード
ドラフトXenkey(最小)
{
"spec": "1.0",
"id": "xk_01J8Y6S4V9ZQ3M9K2W2M8JQY5C",
"status": "draft",
"created_at": "2026-01-21T12:00:00Z",
"organization_id": "org_123",
"base_id": "base_123",
"anchors": [
{ "anchor_id": "anchor_1", "anchor_type": "product", "role": "primary" }
],
"title": "Fresh espresso",
"fact": "A 30 ml espresso shot made from 100% Arabica beans.",
"meaning": "Represents the cafe's standard espresso offering.",
"context": "Default menu item available all day.",
"locale": "en-US",
"source_locale": "en-US",
"translation_group": "tg_01J8Y6S6Q4K8FKJ1PS2H0WQ1B8",
"is_source_locale": true,
"hash_alg": "sha256",
"hash_id": "hash_01J8Y6S6Q4K8FKJ1PS2H0WQ1B9",
"hash": "6e4f8c9d8b0f7a6d3b3a0f3c1f8e9d6e...",
"is_vector": false,
"is_graph": false,
"is_aidex": false,
"publication": [],
"is_published": false,
"is_private": false
}公開Xenkey(geo + ベクトル索引)
{
"spec": "1.0",
"id": "xk_01J8Y6S9QH8P2G8P6X1K3R2H5A",
"status": "published",
"created_at": "2026-01-21T12:05:00Z",
"published_at": "2026-01-21T12:10:00Z",
"organization_id": "org_123",
"base_id": "base_123",
"unit_id": "unit_456",
"anchors": [
{ "anchor_id": "anchor_1", "anchor_type": "product", "role": "primary" }
],
"title": "Fresh espresso",
"fact": "A 30 ml espresso shot made from 100% Arabica beans.",
"meaning": "Represents the cafe's standard espresso offering.",
"context": "Default menu item available all day.",
"tags": ["coffee", "espresso", "menu_item"],
"time_of_day": ["morning", "afternoon"],
"meal": ["breakfast", "coffee_time"],
"vibe": "energetic",
"geo_scope": "point",
"country": "IT",
"city": "Milan",
"timezone": "Europe/Rome",
"geo": [9.1900, 45.4642],
"locale": "en-US",
"source_locale": "en-US",
"translation_group": "tg_01J8Y6S6Q4K8FKJ1PS2H0WQ1B8",
"is_source_locale": true,
"hash_alg": "sha256",
"hash_id": "hash_01J8Y6S6Q4K8FKJ1PS2H0WQ1B9",
"hash": "6e4f8c9d8b0f7a6d3b3a0f3c1f8e9d6e...",
"is_vector": true,
"is_graph": false,
"is_aidex": false,
"publication": ["vector"],
"is_published": true,
"is_private": false
}この仕様はXenkeyの正準リファレンスです spec=1.0.
正準JSONスキーマ: xenkey_schema_v1_0.json