Technische Dokumentation

Xenkey Spezifikation v1.0

Die maßgebliche, lesbare Spezifikation für Xenkey spec=1.0. Schema, Bedeutungsmodell, Lebenszyklusregeln, Indexierung und technisches Verhalten.

Was ist ein Xenkey?

Ein Xenkey ist eine atomare Bedeutungseinheit über ein Objekt der realen Welt — ein Unternehmen, Produkt, eine Dienstleistung, ein Ort, eine Person, ein Prozess oder ein Ereignis. Er ist für KI-Verständnis geschrieben, nicht für Marketing-Persuasion.

Jeder Xenkey repräsentiert eine einzige, minimale, falsifizierbare Idee. Die Spezifikationsversion wird in jedem Dokument angegeben:

Schema-Header
{ "spec": "1.0" }

Designziele

Wahrheit statt Überzeugung

Beschreibe Realität, nicht Promotion.

Kontextualität

Erfasse, wann, wo und für wen es gilt.

Komponierbarkeit

Viele Xenkeys beschreiben ein Objekt.

KI-Lesbarkeit

Strenge Struktur für Retrieval und Indexierung.

Identität

FeldTypBeschreibung
idstringPrimärer Identifier. Format: xk_ + ULID
ulidstringOptional. Abgeleitet vom id-Suffix (muss übereinstimmen, falls vorhanden)
spec"1.0"Spezifikationsversion

Lebenszyklus & Mutabilität

Xenkeys folgen einem strengen Lebenszyklus, der Datenintegrität und Vertrauen sicherstellt.

Status:
draftunpublishedpublishedarchived

Mutabilitätsregeln

  • Draft — kann frei bearbeitet werden
  • Published — unveränderlich. Änderungen erfordern einen neuen Xenkey
  • Wenn published_at gesetzt ist, kann der Status nicht draft
FeldTypBeschreibung
statusenumdraft | unpublished | published | archived
created_atdatetimeErstellungszeitstempel (RFC 3339)
published_atdatetimeWann der Xenkey veröffentlicht wurde
updated_atdatetimeIntern/Read-only, von der API gesetzt
etagstringIntern/Read-only, für Concurrency-Control

Bedeutungskern

Das Herz jedes Xenkey. Vier Pflichtfelder, die eine strukturierte Einheit der Wahrheit erfassen.

FeldTypBeschreibung
titlestringKurzer, beschreibender Identifier für die Erfahrung
factstringFaktische, überprüfbare Aussage über die Realität
meaningstringWarum dieser Fakt für Menschen wichtig ist
contextstringWann, wo und für wen dies gilt
constraintsstringFreiform-Nuancen, die nicht durch strukturierte Felder erfasst werden

Umfang & Anker

Anker verbinden Xenkeys mit realen Entitäten. Jeder Xenkey muss mindestens einen Anker haben. Multi-Anker-Support ermöglicht es, dass ein Xenkey die Schnittmenge mehrerer Objekte beschreibt.

FeldTypBeschreibung
organization_idstringBesitzende Organisation
base_idstringLogische Gruppierung (Workspace/Projekt)
unit_idstringOptionale Referenz auf strukturierte Dateneinträge
anchors[]arrayArray von Anker-Objekten (mind. 1)
Anker-Objekt
{
  "anchor_id": "anchor_001",
  "anchor_type": "product",
  "role": "primary"
}
Anker-Typen:
productservicepersonlocationeventprocessresource

Tags, Emotionen & Vibe

FeldTypBeschreibung
tagsstring[]Klassifikations-Tags (z. B. booking_required, wifi)
emotionsstring[]Emotionskontext-Codes (aus emotion-codes.json)
vibestringAtmosphäre / Stimmung
seasonsstring[]Anwendbare Jahreszeiten
time_of_daystring[]Anwendbare Tageszeiten
mealstring[]Anwendbare Mahlzeiten
Jahreszeiten:
springsummerautumnwinterall_yearholidaynew_yearchristmasorient_new_year
Tageszeit:
all_dayearly_morningmorningnoonafternooneveningnightlate_night
Mahlzeit:
breakfastbrunchlunchdinnersuppertea_timecoffee_timesnack_time

Demografie

FeldTypBeschreibung
age_minintegerEmpfohlenes Mindestalter
age_maxintegerEmpfohlenes Höchstalter (muss >= age_min sein)
genderstringZielgeschlecht (falls anwendbar)

Geografie

Xenkeys können global sein oder geospezifisch. Das Feld geo_scope bestimmt, welche geografischen Felder erforderlich sind.

Geo-Scopes:
globalcountryregionpoint
FeldTypBeschreibung
geo_scopeenumGrad der geografischen Genauigkeit
countrystringISO 3166-1 alpha-2 Ländercode
regionstringRegion / Bundesland / Provinz
citystringStadtname
timezonestringIANA-Zeitzone (z. B. Europe/Rome)
geo[lng, lat]Koordinaten als [Longitude, Latitude]
availability_countriesstring[]Länder, in denen verfügbar (nicht Standort)

Scope-Regeln: Wenn geo_scope=country dann ist country erforderlich. Wenn geo_scope=region dann sind country und region (oder city) erforderlich. Wenn geo_scope=point dann ist geo erforderlich.

Lokalisierung

FeldTypBeschreibung
localestringSprach-Tag (z. B. en-US, ja-JP)
source_localestringOriginalsprache des Inhalts
translation_groupstringGruppiert Übersetzungen. Format: tg_ + ULID
is_source_localebooleanTrue, wenn dies die Originalsprach-Version ist

Regel: Wenn is_source_locale = true, dann muss locale gleich source_locale. sein. Übersetzungen verwenden dasselbe translation_group.

Integrität

Veröffentlichte Xenkeys enthalten einen kryptografischen Hash, der zum Zeitpunkt der Veröffentlichung berechnet wird und die Inhaltsintegrität sicherstellt.

FeldTypBeschreibung
hash_alg"sha256"Verwendeter Hash-Algorithmus
hash_idstringEindeutige Hash-ID. Format: hash_ + ULID
hashstringSHA-256 Hash des kanonischen Payloads

Indexierung & Privatsphäre

Xenkeys können in mehreren Kanälen veröffentlicht werden. Jeder Kanal ermöglicht unterschiedliche Retrieval-Fähigkeiten.

FeldTypBeschreibung
publicationstring[]Kanäle: vector, graph, aidex
is_publishedbooleanTrue, wenn in mindestens einem Kanal veröffentlicht
is_vectorbooleanIn Vektor-Store indexiert (Qdrant)
is_graphbooleanIn Wissensgraph projiziert (Neo4j)
is_aidexbooleanIn Aidex veröffentlicht, einer robot-orientierten Wiki-Schicht
is_privatebooleanSichtbar nur für org-spezifischen Zugriff

Regeln:

  • aidex erfordert vector (beide müssen in publication sein)
  • • Wennis_published=true muss publication mindestens einen Eintrag haben
  • • Aidex ist eine robot-orientierte Wiki-Schicht mit strengeren Quoten als die Vektor-Indexierung

Vektor- & Graph-Retrieval

Veröffentlichte Xenkeys transformieren sich automatisch in zwei komplementäre Datenrepräsentationen und ermöglichen hybrides KI-Retrieval.

Vektorindex (Qdrant)

  • • Textquelle:fact + meaning + context
  • • In hochdimensionale Embeddings umgewandelt
  • • Ermöglicht semantische Ähnlichkeitssuche
  • • Payload-Filter: status, geo, tags, emotions, time
  • • Idempotenz: (id, version) Schlüssel

Wissensgraph (Neo4j)

  • • Knoten: Xenkey, Organization, Object, Tag, Emotion
  • • Kanten: OWNS, DESCRIBED_BY, TAGS, EXPRESSES
  • • Zeigt Beziehungen und Struktur
  • • Idempotentes MERGE auf natürlichen Schlüsseln
  • • Ermöglicht Graph-Traversal-Queries

Hybrides Retrieval kombiniert Vektorähnlichkeit mit strukturellen Graph-Filtern und ermöglicht fundierte, erklärbare KI-Antworten. Die Indexing-Pipeline ist asynchron mit Retries und Dead-Letter-Queues.

Invarianten

  • anchors müssen vorhanden und nicht leer sein
  • Wenn sowohlage_min und age_max vorhanden sind: age_max >= age_min
  • Wenngeo vorhanden ist, muss es [longitude, latitude]
  • geo_scope=country erfordert country
  • geo_scope=region erfordert country + region (or city)
  • geo_scope=point erfordert geo
  • aidex in publication impliziert vector in publication
  • is_published=true erfordert nicht-leere publication[]

Beispiel-Payloads

Entwurf Xenkey (minimal)

draft-xenkey.json
{
  "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
}

Veröffentlichter Xenkey (mit geo + Vektorindexierung)

published-xenkey.json
{
  "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
}

Diese Spezifikation ist die kanonische Referenz für Xenkey spec=1.0.

Kanonisches JSON-Schema: xenkey_schema_v1_0.json