8 KiB
Interlingua Standard
Version: 0.1-draft
The Weksa interlingua is the language-neutral meaning contract between clients, setting surfaces, authoring tools, language projects, ontology projection, and renderers.
It is not English. It is not a grammar tree. It is not a target-language ontology. It is the smallest structured packet that says what is meant, who is involved, what the context is, and which facts are stable enough for a language project to reinterpret.
Objective
Give every Weksa client one shared way to submit meaning without forcing all settings through one worldview.
The interlingua should support:
- game telemetry and commentary intents
- naming briefs for places, species, institutions, artifacts, and ecological structures
- dialogue and narration authoring
- corpus examples
- model-assisted semantic decomposition
- deterministic runtime rendering
- traceable ontology projection
Prior Art
Weksa should learn from existing semantic annotation work without becoming a research format clone.
- AMR gives a useful model for abstract graph meaning that is not a surface parse.
- UMR extends that direction with cross-linguistic and document-level concerns such as coreference, temporal relations, modal dependencies, aspect, and multilingual diversity.
- FrameNet keeps scenes and roles central.
- Universal Dependencies shows a useful governance pattern: common categories with language-specific extensions when needed.
Weksa's difference is purpose. It is a rendering contract for constructed languages and alien ontologies, not a general-purpose annotation benchmark.
Ownership
The interlingua owns:
- referents
- events, states, and relations
- roles between referents and predicates
- time, aspect, modality, evidence, and polarity when known
- discourse function and speaker intent
- context needed for rendering
- provenance and confidence
- extension slots with explicit namespaces
The interlingua does not own:
- target-language concept splits or collapses
- grammar obligations
- morphology
- phonology
- diachronic history
- final wording
- culture-specific metaphors unless the source meaning explicitly contains them
Those belong downstream.
Design Principles
- Meaning before words.
- Graph before sentence.
- Explicit uncertainty beats fake precision.
- Use common fields for common meaning.
- Use namespaced extensions for client or setting pressure.
- Extensions are evidence, not authority, until a language project consumes them.
- Runtime packets must be deterministic and serializable.
- The renderer must be able to trace every target-language decision back to a packet field, ontology rule, or language-project rule.
Packet Shape
The canonical packet is an object with these top-level families:
interlingua_version:
packet_id:
kind:
provenance:
context:
discourse:
referents:
predications:
relations:
constraints:
extensions:
trace:
Only interlingua_version, packet_id, kind, and at least one semantic
payload family are required. The rest should be present when known.
Top-Level Fields
kind
The packet's broad use case.
Initial values:
utterancename_requestcommentary_intentnarrationdialogue_linecorpus_exampledebug_probe
provenance
Where the packet came from.
provenance:
source_type: authored | model_decomposition | game_telemetry | imported_corpus
source_ref:
author:
created_at:
confidence:
context
World and situation information that is not itself the main semantic claim.
context:
setting:
scene:
time:
location:
participants:
audience:
medium:
discourse
Why this packet is being said, rendered, or named.
discourse:
speech_act:
intent:
tone:
register_hint:
addressee:
audience_function:
This is not target-language register. It is source-side communicative pressure.
referents
Entities, groups, locations, abstract objects, institutions, ecological actors, routes, memories, artifacts, and other nodes that can participate in meaning.
referents:
- id:
kind:
label:
ontology_hint:
animacy:
agency:
number:
definiteness:
salience:
attributes:
extensions:
Initial broad kinds:
persongrouporganismplaceartifactinstitutionecologyroutememoryeventabstract
predications
Events, states, processes, properties, and frame-like scenes.
predications:
- id:
predicate:
frame:
aspect:
tense:
polarity:
modality:
evidentiality:
roles:
agent:
patient:
experiencer:
instrument:
source:
goal:
location:
beneficiary:
attributes:
extensions:
predicate is a broad source-side claim. frame is optional but recommended
when a scene model is known. Roles may use common names or namespaced frame
roles.
relations
Edges that are not naturally owned by one predication.
relations:
- type:
from:
to:
attributes:
extensions:
Initial relation families:
coreferencepart_ofmember_oflocated_atnearbeforeaftercausesenablespreventsownsowesknowsnamesrepresentscontrasts_with
constraints
Hard requirements the downstream renderer must respect.
constraints:
preserve_referents:
preserve_relations:
required_outputs:
forbidden_outputs:
max_latency_ms:
deterministic:
These are engineering and content constraints, not ontology rules.
extensions
Namespaced setting or client data.
extensions:
zyphos.memory_relation:
zyphos.boundary_permeability:
rtd.aesthetic_reading:
game.priority:
Extension rules:
- Namespaces must be explicit.
- Extensions must not replace common fields when common fields are sufficient.
- A downstream language project may choose to ignore an extension.
- If an extension becomes broadly required across clients, promote it into the standard in a later version.
trace
Optional authoring/debug data.
trace:
notes:
decomposition_steps:
uncertainty:
rejected_readings:
Runtime may strip trace from compiled packets when latency or size matters.
Minimal Examples
Name Request
interlingua_version: 0.1-draft
packet_id: zyphos-name-001
kind: name_request
provenance:
source_type: authored
context:
setting: Eusocial Interbeing
referents:
- id: target
kind: ecology
label: disconnected tree network
- id: namer
kind: group
label: Airawa imperial surveyor
relations:
- type: names
from: namer
to: target
extensions:
zyphos.memory_relation: severed_from_saturated_substrate
zyphos.boundary_permeability: hidden_refusal
Commentary Intent
interlingua_version: 0.1-draft
packet_id: rtd-commentary-001
kind: commentary_intent
context:
setting: Rust to Dust
medium: broadcast
discourse:
speech_act: commentary
audience_function: spectacle
referents:
- id: actor
kind: person
- id: target
kind: person
predications:
- id: event
predicate: eliminate
frame: combat
roles:
agent: actor
patient: target
extensions:
rtd.aesthetic_reading:
form: raw
spectacle_value: high
Promotion Rule
The interlingua should stay boring. When a new requirement appears:
- Put it in a namespaced extension.
- Use it in at least two real packets.
- Ask which invariant it protects.
- Promote it only if multiple clients or language projects need it.
No generic bucket earns permanence by sounding useful. That is how a schema becomes a junk drawer with a hat.