GMEOW ontology tooling: refine, validate, reason over, document, and publish the Global Metadata and Entity Ontology for the Web.
Project description
GMEOW — Global Metadata and Entity Ontology for the Web
An LLM output is a claim, not a truth.
GMEOW is a substrate for grounded agent memory and claim provenance. Every fact an AI system stores, recalls, or emits is held as what it actually is: an attributed, time-scoped, confidence-weighted, evidence-linked claim — open to contradiction (two models that disagree coexist, standpoint-indexed, never adjudicated by rank), revised by suppression instead of deletion (the agent that stops believing X keeps an auditable record that it believed X, on whose say-so, and why it stopped), and grounded in content-addressed evidence spans that make "is this hallucinated?" a mechanical check, not a vibe.
Today's agent memory is an unattributed text-or-vector blob. GMEOW is the opposite bet: durable memory for real personal, organizational, and institutional data is a semantic-substrate problem before it is a retrieval problem — and the substrate must be able to answer the question every institution must answer: how do you know, and who says?
One engine, three products (v0.2.0 realignment, epic #300):
| Product | What it is | Status |
|---|---|---|
gmeow (PyPI) |
The five-minute client: pip install → store / recall / revise one attributed claim, no Docker, no reasoner, no RDF |
in development (#296) |
| Grounded-memory MCP server | store_claim / recall / revise_belief tool-calls for agents, atop the live retrieval tools (object_search, graph_explore, …) |
retrieval live; memory triad in development (#297) |
GTS ai-package |
A content-addressed, append-only, signable single-file agent memory — belief revision as suppression frames; portable across sessions, models, and vendors (spec) | format specified; Python reader/writer shipped; signing in progress (#272) |
The engine underneath is a reasoning-centric, OWL 2 DL, upper-ontology-grounded super-vocabulary for modelling digital existence — people, organizations, documents, agreements, contacts, observations, measurements, locations, rights, identity, and contested facts — grounded in gUFO, projected down to 15+ consumer vocabularies (schema.org, FOAF, GeoSPARQL, vCard, iCalendar, OWL-Time, ODRL, …) and aligned by reference to dozens more (PROV-O, ORG, OntoLex-Lemon, Wikidata, BFO, QUDT, FALDO, IVOA, CIDOC-CRM, …) — see the projection and alignment tables below. No consumer is ever required to learn RDF to benefit (Principle 13); the deep model is there when you need it — typically the first time two models disagree about a fact. The full guide set is indexed in the documentation map.
Why does this exist? Because LLM and RAG outputs are stored as truth — no provenance,
no evidence, no confidence, no time, no way to disagree — and that is a category error with
compounding costs. See docs/RATIONALE.md for the long form, and
the position paper in progress: "An LLM Output Is a Claim, Not a Truth: A Substrate for
Grounded Agent Memory."
Principles. Every design decision and pull request is measured against
CONSTITUTION.md — sixteen normative principles (claim-not-truth,
the-product-is-a-tool, RDF-1.2-first, one-canonical-source, maximal bridging, greenfield,
verified-by-construction, frame-relativity, suppression-never-erasure, …).
Cite them by number in issues and PRs.
- Canonical IRI: https://blackcatinformatics.ca/gmeow (slash namespace, term IRIs
like
…/gmeow/Person) - Vocabulary license: CC BY 4.0 (dual-licensed — see Licensing)
- Tooling license: Apache-2.0 (dual-licensed — see Licensing)
- Copyright: © 2026 Blackcat Informatics® Inc.
Four things GMEOW does that no agent-memory store does:
- Statement-level provenance & confidence. RDF 1.2 / RDF*-first: every fact is an attributed, confidence-weighted, time-scoped claim, downcast losslessly to OWL axiom annotations for reasoners (Principles 2–3; see RDF 1.2 below). A sensor reading, a human assertion, and a model output are the same reified construct.
- Contested facts without a winner. Disputed facts — including two models disagreeing —
are recorded as coexisting, standpoint-indexed claims, never collapsed to a preferred,
ranked, or latest value (
docs/standpoints.md). - Forgetting with an audit trail. Belief revision is supersession + suppression
(
gmeow:displayable false), never deletion: the superseded belief is withheld from every projection and recall path, and retained — with when, on whose say-so, and why — forever (Principle 10). - Identity, naming & display safety — for human and digital subjects. Names and
identity are reified, co-equal and self-asserted — no
primaryName/preferredGender, deadnames suppressed-not-deleted, a 7-axis orthogonality matrix (pronouns ⟂ honorifics ⟂ gender identity ⟂ expression ⟂ sex ⟂ sexual ⟂ romantic orientation) enforced by tests — and self-assertion outranks any inference, for people and for AI entities alike (Principles 9 & 16;slices/core/names/docs.md,docs/identity-mapping.md). Identity and deception epistemics ship in the core, by commitment — a memory substrate that makes "what is a person" an optional add-on has already answered the question, badly.
Status. GMEOW is built incrementally, one slice of digital existence at a time — and the foundation is now broad. 50 modules are modelled, aligned, and reasoned: identity (entities, names, gender, sexuality, languages), social & contact (genealogy, organization, contacts, email, accounts), content & evidence (documents, sources, software), trust & crypto (trust, messaging-trust), skills & legal (expertise, agreements, rights), place / time / events (places, temporal, events, with Location now a universal reference-frame spanning 13+ realms), the unified epistemics & measurement spine (provenance, standpoint, observation — where a standpoint-indexed claim is an observation-from-a-vantage), and cross-cutting foundations (frame-relativity, determinacy, granularity, privacy, accessibility, spatial aggregation, regulatory overlays, data quality, attestation). Recent work has sharply expanded GMEOW's scientific utility — Observation (SOSA/SensorThings), QUDT quantities, and frame-relative measurement across astronomy, genomics, robotics and n-D mathematics (see Scientific & measurement utility). The reasoning stack is in place — axiomatized doctrine (disjointness, relator mediation, kinship/containment property chains), the OWL-infers / SHACL-validates split with entailment-based competency tests, and a gUFO↔BFO foundational bridge. Constitution Principles 11 (frame-relativity) and 12 (solver boundary) are ratified. Each slice adds canonical terms, SSSOM alignment tables, projections, and a vendored fixture, and
make coveragereports how much GMEOW covers and what gaps remain. The full toolchain (validate → reason → mappings → coverage → build → docs → publish) runs green at every step. Where it's heading next is tracked as issues — see the Roadmap.
Documentation map
Every guide under docs/ (plus the two root governance documents). Doctrine
docs explain a cross-cutting design commitment; domain guides (*-mapping.md) teach one
slice's model and how it aligns/projects.
| Guide | Kind | What it covers |
|---|---|---|
CONSTITUTION.md |
Governance | The sixteen normative principles every design decision and PR is measured against |
docs/REALIGNMENT-v0.2.0.md |
Governance | The v0.2.0 realignment: one engine, three products — positioning, recast inventory, deliverables D1–D7 |
docs/RATIONALE.md |
Doctrine | Why GMEOW exists — the nine challenges of digital existence and the architectural answers |
docs/mcp-server.md |
Product | The MCP server: the grounded-memory triad (store_claim/recall/revise_belief) + the ontology toolchain tools; one-line install |
docs/hallucination-resistant-kg.md |
Doctrine | The claim-extraction spine done right — fixture, prompt, audit gates, gmeow audit; scored across models on the eval leaderboard |
docs/GTS-SPEC.md |
Specification | The Graph Transport Substrate — the content-addressed, append-only single-file format behind the ai-package memory and the narrow-waist exports |
docs/cli-extensions.md |
Specification | The gmeow CLI extension roll-up — subcommand discovery from slice manifests, GTS profile gating, solver-layer transforms (implementation deferred per P15) |
docs/reasoning.md |
Doctrine | The OWL-infers / SHACL-validates split, the four verification lanes, and why OWL cardinality is avoided |
docs/projections.md |
Doctrine | The four-artifact alignment stack (SSSOM / EDOAL / FnO / SPARQL) and how lossy down-projection works |
docs/foundational-bridging.md |
Doctrine | The gUFO ↔ BFO 2020 foundational-spine bridge, by reference (Principle 5 applied recursively) |
docs/import-provenance.md |
Doctrine | How external vocabularies are sourced; the IMPORT_OK vs reference-only license policy and carrier-time |
docs/standpoints.md |
Doctrine | Contested facts as coexisting, standpoint-indexed claims — no privileged winner |
docs/rights.md |
Doctrine | Rights / IP / licensing as reified, temporally-bound, machine-readable claims (ODRL superset) |
docs/temporal-queries.md |
Reference | TQL — the parameterized temporal query algebra (Allen relations) over the events/temporal model |
slices/core/names/docs.md |
Domain guide | Names as reified, co-equal, anti-colonial relationships; pronouns & honorifics as first-class facets |
docs/identity-mapping.md |
Domain guide | Gender & sexuality as orthogonal, self-asserted, co-equal facets (the 7-axis matrix) |
slices/extensions/languages/docs.md |
Domain guide | Languages as registry-independent first-class entities; co-mingled writing systems; proficiency |
slices/extensions/email/docs.md |
Domain guide | Email message/header structure, participants, and RFC 5322 mapping; time-scoped address tenure |
docs/location-mapping.md |
Domain guide | The universal reference-frame: 13+ realms, RCC-8 topology, pose/trajectory, frame-relativity |
slices/core/attestation/docs.md |
Domain guide | Signed-claim envelopes, verification results, and append-only transparency logs (cross-cutting) |
slices/core/rights/docs.md |
Domain guide | Alignment/projection companion to rights.md — ODRL, CC REL, Dublin Core, SPDX, schema.org |
slices/core/standpoint/docs.md |
Domain guide | Alignment/projection companion to standpoints.md — CRMinf, PROV-O, Web Annotation, schema:Claim |
slices/core/versions/docs.md |
Domain guide | Versions as standpoint-scoped claims (latest / stable / yanked / canonical are not intrinsic) |
docs/wikidata-mapping.md |
Domain guide | The Wikidata integration policy — wd: / wdt: / ps: / pq: semantics; QID/PID syntax gates |
docs/BRAND.md |
Brand | Logo usage and trademark guidelines |
Quick start
Using GMEOW (storing/recalling claims, agent memory): the consumer surfaces ship with
v0.2.0 — pip install gmeow (#296) and the memory MCP
server (#297). Watch epic #300; the five-minute quickstart will live right here.
Working on the engine (the ontology, compilers, and gates):
make install # sync the uv environment
make check # full local gate: lint, validate, reason (ELK), mappings, wikidata, tests
make check requires Docker (for ROBOT). Everything else (validate, mappings,
wikidata, metadata, apache, docs via pyLODE, tests) is pure Python.
The pipeline
| Command | What it does |
|---|---|
make validate |
Turtle syntax + term-annotation lint + SHACL (pure Python) |
make reason |
Merge import closure → OWL 2 DL profile check → ELK consistency (Docker/ROBOT) |
make explain |
Explain unsatisfiable classes with HermiT |
make verify |
Reasoned-graph SPARQL QC (ROBOT verify over queries/verify/) — the closed-world half of the OWL-infers / SHACL-validates split |
make regenerate |
Rebuild EVERY committed artifact under generated/ via the registered-generator framework (#279): mappings, projections, statements, schemas, lpg, metadata, apache, the module-status matrix |
make check-generated |
Drift + orphan + internal-tag-leak gate over every registered generator |
make mappings |
SSSOM → OWL/SKOS alignment axioms + VoID linksets; validates Wikidata QID syntax |
make wikidata / wikidata-live |
Wikidata QID/PID syntax gate (offline) / + existence check (network) |
make crossref |
Generate the CrossRef DOI deposit XML (deposit schema 5.4.0) |
make docs / docs-full |
pyLODE HTML / + WIDOCO (diagrams, changelog, OOPS!) |
make build |
All serializations (ttl/rdf/nt/jsonld) + JSON-LD context → dist/ (ephemeral) |
make rdf12 |
Emit the RDF 1.2 / RDF* lead artifact + its OWL-form downcast via Apache Jena (required — fails if absent) |
make quality |
OOPS! pitfall scan (network, best-effort) |
make release |
Reasoned closure (HermiT) + build + metadata + RDF 1.2 / RDF* lead artifact + OWL-form downcast |
The Java tools (ROBOT, WIDOCO, Jena) run as pinned Docker images (see
src/gmeow_tools/config.py); make pull-images pre-pulls them. Containers run as the
invoking user, so generated files are never owned by root.
Architecture
The one rule (#287): under generated/, a registered generator owns it; under
dist/, it is ephemeral; everything else is authored. The unit of the ontology is
the slice — identical anatomy for core and extensions, with the manifest as the
sole source of identity and tier (Principles 15–16).
slices/<group>/<name>/ A slice: manifest.ttl (IRI + tier + deps + consumer),
module.ttl, shapes.ttl, mappings/, queries/, tests/,
docs.md. The <group> dir (core/, extensions/) is human
organization only — the build reads manifests.
slices/vocabulary.ttl The slice-manifest authoring vocabulary (spec layer)
ontology/gmeow.ttl Root ontology: metadata + owl:imports (gUFO + slices)
dsl/mappings/ Mapping DSL: vocabulary, foundational gUFO↔BFO bridge,
per-target projections, transforms.fno.ttl
dsl/statements/ The canonical RDF 1.2 / RDF* statement-metadata source
shapes/ Authored SHACL (incl. the slice-manifest shapes)
queries/ Authored SPARQL: competency/, verify/, qc/, codecs/
imports/ Vendored gUFO + validation-only axiom snapshots
catalog-v001.xml Offline IRI→file resolution for ROBOT/Protégé
src/gmeow_tools/ The toolchain (CLI: `gmeow …`)
generated/ EVERY committed generated artifact — one root, every
path owned by a registered generator (drift-, orphan-,
and internal-tag-leak-gated):
mappings/ (SSSOM) · projections/ (EDOAL+FnO) ·
queries/ (projection CONSTRUCTs) · statements/
(RDF 1.2 lead + OWL downcast) · schemas/ · lpg/ ·
metadata/ (VoID+DCAT) · apache/ · module-status.md
dist/ Ephemeral build products (never committed)
The per-slice audit state — tier, dependencies, term counts, documentation
status — is the generated generated/module-status.md.
Reasoning: merge first
The pipeline always merges the import closure into one ontology, then reasons/validates
that product. ROBOT's validate-profile reports spurious "undeclared entity" violations
when terms are declared in a sibling imported module; collapsing to a single ontology
resolves it. ELK gates every push (fast); HermiT gates releases (sound + complete OWL 2 DL).
Upper-ontology spine
- gUFO (MIT) is imported whole as the foundational categories.
- UMBEL (CC-BY-3.0) is intended as a curated, extracted reference-concept layer — never
imported whole (it is too large for DL reasoning). Extraction is via ROBOT
extract(SLME). - DOLCE/DUL (LGPL) is link-only — referenced, never imported.
- Foundational bridging (the spine reaches outward). gUFO's nature categories are aligned
by reference to BFO 2020 (ISO/IEC 21838-2) —
skos:closeMatch, never imported — so GMEOW interoperates with the OBO-Foundry / ISO top-level world. This is Principle 5 applied recursively to the foundational layer; the emitted BFO IRIs are verified against a vendored class snapshot (imports/targets/bfo.ttl), kept out of the reasoned closure. DOLCE/SUMO are planned next. Authoring source:mapping-dsl/foundational/; full guide:docs/foundational-bridging.md.
Linking & the license policy
Alignments are authored once in the mapping DSL (mapping-dsl/) and compiled
(gmeow compile-mappings) to SSSOM + EDOAL + FnO + SPARQL — see § The mapping
compiler. Asserting a link (owl:equivalentClass,
skos:exactMatch, …) to any external term is always permitted — it copies nothing.
Copying axioms in (via owl:imports / ROBOT extract) is license-gated: a
reference-only source (NC/ND/share-alike/copyleft/proprietary) is refused
(gmeow extract --target …). The policy is classified by license family in
config.py, so new targets are classified correctly by default.
The mapping compiler
GMEOW's doctrine — one canonical source, everything else a generated lossy
projection (Principle 4) — applies to the alignment layer
itself. Every mapping is authored
once as a gmeow:-grounded Turtle cell in mapping-dsl/, and gmeow compile-mappings renders the four standard artifacts (SSSOM term links, EDOAL
complex cells, FnO transform functions, SPARQL CONSTRUCT executors). Drift is
impossible by construction; gmeow compile-mappings --check is the CI no-drift
gate. The compiler uses each target language to its full extent (EDOAL
compose/inverse relation paths, FnO fnom implementation linkage, SSSOM
provenance + labels, the full SPARQL path/expression algebra) — all expressed as
GMEOW vocabulary, never raw SPARQL. Full reference + authoring guide:
docs/projections.md.
Projection targets
GMEOW projects down to the vocabularies people actually consume — a deliberately lossy,
directional export that downgrades the rich canonical model into a target consumer's terms
without corrupting it (Principle 4). Each target below is authored in
mapping-dsl/projections/, compiled to an EDOAL spec (projections/*.edoal.ttl) + a SPARQL
CONSTRUCT executor (queries/projections/*.rq), and run by gmeow project /
make project. The full set with worked examples lives in
docs/projections.md.
| Target | Spec | GMEOW exports… |
|---|---|---|
| schema.org | https://schema.org | The flat contact-card surface: Person/Organization/Place, reconstructed name/birthDate/jobTitle/gender from reified structures, plus accessibilityFeature/accessibilityHazard from the accessibility facet layer |
| FOAF | http://xmlns.com/foaf/0.1/ | The lowest-common-denominator person/agent graph: name, nick, homepage, mbox, knows |
| vCard (RDF) | https://www.w3.org/TR/vcard-rdf/ | Contact cards: fn, given-name/family-name, nickname, bday, title, hasAddress, hasURL, hasGeo, and free-text vcardx:pronouns (RFC 9554) |
| GeoSPARQL | https://www.ogc.org/standard/geosparql/ | geo:asWKT geometry literals and topology from Place/Location + frame-relative coordinates |
| iCalendar (RDF) | https://www.w3.org/TR/rdfcal/ | Calendar projections of events — Vevent, dtstart/dtend, summary |
| OWL-Time | https://www.w3.org/TR/owl-time/ | time:Instant/Interval and Allen relations from the temporal model |
| ODRL | https://www.w3.org/TR/odrl-model/ | Pure ODRL policies — Permission/Prohibition/Duty, the action vocabulary + constraint algebra |
| Creative Commons REL | https://creativecommons.org/ns | cc:license/cc:permits/cc:prohibits/cc:requires from rights statements |
| SPDX | https://spdx.org/rdf/terms/ | SPDX license identifiers and licensing facts for software/data artifacts |
| Dublin Core Terms | https://www.dublincore.org/specifications/dublin-core/dcmi-terms/ | dcterms: metadata — title, creator, date, rights, license |
| BOT | https://w3id.org/bot | Building-topology projection of indoor places — bot:Zone/Element/hasSpace |
| RDF Data Cube | https://www.w3.org/TR/vocab-data-cube/ | Well-formed qb:Observation + qb:DataSet + qb:DataStructureDefinition — a statistical-cube projection of spatial aggregations (IC-1, IC-2) |
| OntoLex-Lemon | https://www.w3.org/2016/05/ontolex/ | ontolex:LexicalEntry/Form/writtenRep from appellations and language data |
| W3C Web Annotation | https://www.w3.org/TR/annotation-vocab/ | oa:Annotation body/target projection (tags, standpoints) |
| Standpoint projections | docs/standpoints.md |
Five frame-preserving exports of contested claims: CRMinf, PROV-O, schema:Claim, Web Annotation, Standpoint-OWL 2 — never one that picks a winner |
Aligned by reference
Beyond what it projects, GMEOW aligns by reference (skos:exactMatch / closeMatch /
owl:equivalentClass, copying no axioms — Principle 5) to dozens more
vocabularies, so data already published elsewhere is covered without rewriting. The
exhaustive, authoritative list is the SSSOM tables in
mappings/*.sssom.tsv (one per module); this is a representative, grouped
sample:
| Domain | Aligned vocabularies (by reference) |
|---|---|
| Foundational | gUFO, BFO 2020 (ISO/IEC 21838-2), DOLCE/SUMO (planned) |
| Hub & coreference | Wikidata, schema.org, FOAF, ORG, PROV-O |
| Identity & language | GSSO, Homosaurus, FHIR, FOAF, OntoLex-Lemon, LIME, Glottolog, CEFR/ILR/ACTFL |
| Geospatial & place | GeoSPARQL, CIDOC-CRM + CRMgeo, BOT/ifcOWL, LADM, INSPIRE, AIXM, UNCLOS, MRGID, OGC GeoPose, OGC Moving Features |
| Scientific & measurement | QUDT, SOSA/SSN + SensorThings, IVOA/UAT/SWEET (astronomy), FALDO/Sequence Ontology/GFF3 (genomics), IEEE 1872-2015 (robotics), OpenMath/MEX (mathematics), W3C DQV + ISO 19157 (data quality) |
| Rights & provenance | ODRL, CC REL, Dublin Core, SPDX, RightsStatements.org (all 12), PREMIS 3, WIPO, W3C Media Resources |
| Trust & attestation | PROV-O, in-toto, SLSA, DSSE, Sigstore/Rekor, SCITT, nanopublications |
| Privacy & content | W3C DPV, SKOS, MOAT, Web Annotation, RDF Data Cube |
| Finance (seed) | FIBO (by reference; the full Finance slice is planned) |
RDF 1.2 / RDF* — the canonical statement-level model
GMEOW is RDF 1.2 / RDF*-first (Principles 2–3): statement-level
metadata — provenance, confidence, temporal scope — is authored once as native RDF 1.2 /
RDF* content in statement-dsl/, the canonical source. From it gmeow compile-statements
generates two verified artifacts: the RDF 1.2 / RDF* serialization (the lead form, via
Apache Jena — the only engine that emits triple terms today) and the OWL 2 axiom-annotation
form (owl:Axiom + owl:annotatedSource/Property/Target) — the generated,
reasoning-lossless downcast that the OWL 2 DL reasoners GMEOW gates on actually consume. The
OWL form is the downgrade for legacy tooling — the same lossy-compatibility-as-projection
principle GMEOW applies to schema.org / vCard / FOAF (Principle 4), not a
competing source of truth — and it recedes as RDF-1.2-native reasoners and stores arrive. Both
downcasts are guarded by a no-drift gmeow compile-statements --check
(Principle 7). The scope is exact: the logical TBox stays OWL 2 DL —
triple-terms are not OWL 2 DL, and GMEOW never claims otherwise.
Names: first-class, multi-culture, inclusive
Most vocabularies treat a name as a flat string (familyName). GMEOW models it as a
reified, time-bounded, context-scoped, source-attributed relationship — a
gmeow:Appellation borne by an entity, with the gmeow:NameUsage relator binding who is
named × which name × toward whom × in what register × over what period. That makes naming
non-standard in deliberate, useful ways (full rationale in
slices/core/names/docs.md):
- Co-equal, anti-colonial. A person's names in different languages/scripts (e.g.
Patrick Colm Audley and 欧德理) are co-equal full names — neither is the other's
alternate or romanization, and there is no
primaryName/preferredForDisplayterm. Display selection is locale-relative and symmetric; self-asserted names are top authority. - Genuinely multi-cultural. Name parts are an open value vocabulary — patronymic, Arabic ism/kunya/nasab/laqab/nisba, Spanish double surname, East-Asian generation & clan names, Balinese birth-order, Roman nomina, mononyms — with no forced given+family order.
- Contextual & temporal. "Aunt Genny" (family) vs "Mrs Smith" (students) coexist via
NameUsage; name changes, and deadnames are recorded yet suppressed from display. - Pronouns & honorifics are first-class, contextual, and independent of sex/gender.
Pronoun sets are a maximal, source-cited anchor inventory (21 stably-declinable English
sets — she/her … fae/faer, ze/zir, thon, xe/xem, …; declensions verified against
pronouns.page) plus an explicit name-only / no-pronouns value,
with open minting for anything unseeded. They link to Wikidata's personal pronoun set
(
wd:Q65067284/wdt:P6553) and project to the vCard 4 PRONOUNS property (RFC 9554). Appellations subclass OntoLex-Lemonontolex:LexicalEntry(gmeow:fullNameclose-matchesontolex:writtenRep), projecting to OntoLex Form/writtenRep structures.
Languages: registry-independent, conlang- & AI-ready
Most vocabularies treat a language as an opaque tag (inLanguage "ja") — a language is
its ISO/BCP-47 code. GMEOW inverts that: a gmeow:Language has a self-minted IRI,
registry codes are optional alignments (never identity), and internal string literals use private-use BCP-47 tags (e.g., @x-gmeow-japanese) to isolate GMEOW graphs from external registries. Standard BCP-47 tags are reconstructed on-demand during down-projection. Full rationale is in
slices/extensions/languages/docs.md:
- Registry-independent. A code-less conlang (Ithkuil), a fast-versioning AI-minted
interlingua, an under-coded sign/minority language, and a programming language are all
co-equal first-class languages. BCP-47/ISO/Glottolog/Wikidata attach when they exist,
as
gmeow:authorityLink/skos:exactMatch— and standard BCP-47 tags are reconstructed on demand by the projection layer (ja+Hani→ja-Hani). Properties likegmeow:nameLanguageclose-match LIME's metadata propertylime:languageto map first-class language objects to standard tags on demand. - Co-mingled writing systems. A language uses many co-equal scripts at once: Japanese
interleaves kanji, hiragana, katakana and rōmaji, each in a distinct role, via the reified
gmeow:WritingSystemUsagerelator (which also models script changes over time). Bespoke and non-linear conlang scripts are first-class. - First-class version lineage (Ithkuil 1993/2011/New; AI v1→v2), AI/software creators, and reified per-skill proficiency (CEFR/ILR/ACTFL — "native overall" and "B2 writing" coexist).
- Transformations are functions. Transliteration/transcription/translation (Hepburn,
Pinyin, IPA, …) are declarative FnO functions, so a romanization records how it was
derived. Flat "First Last" /
schema:knowsLanguagerenderings are downcast projections, never canonical clutter.
Gender & sexuality: orthogonal, self-asserted, inclusive
Most data models cram a person into one gender string — conflating things that are
independent and erasing self-determination and change. GMEOW models gender and
sexuality as reified, self-asserted, co-equal facets on a shared
gmeow:IdentityFacet (a gufo:Relator, the NameUsage idiom), across two modules
(full rationale in docs/identity-mapping.md):
- Orthogonal axes, proven. Address (pronouns/honorifics — in the names module), gender identity, gender expression, sex assigned at birth, and — split apart — sexual and romantic orientation are independent. A 7-axis orthogonality matrix is enforced by tests: no axis is inferred from another. What you want to be called ≠ what you are; sex ≠ gender; asexual yet biromantic is expressible.
- Self-assertion is the top authority, and identities are co-equal — bigender
is two facets, neither primary. There is no
primaryGender; a superseded label (a former gender, like a deadname) is kept withgmeow:displayable false— recorded yet never displayed, never deleted. - Inclusive without overtyping. Gender and orientation are open value
vocabularies of individuals (woman, non-binary, agender, Two-Spirit, …;
bi/pan/ace/aro/…) — never per-value
Personsubclasses, never a forced enum. An identity not yet seeded is a fresh value individual with a label, the single path — no flat-literal shortcut. - Honestly interoperable. Values align (lossily) to GSSO, Homosaurus, Wikidata
(
P21/P91), schema.org, FOAF and FHIR — every identifier verified against the source. Displayable gender projects toschema:gender/foaf:gender; suppressed labels never leak, and orientation is a documented lossy drop.
Standpoints: contested facts that coexist, no winner
A flat model gives a disputed fact one slot two parties must both own — so they
edit-war over it. GMEOW records a contested fact as several standpoint-indexed
claims that coexist, none privileged (full rationale in
docs/standpoints.md):
- Three orthogonal axes.
gmeow:accordingTo(whose frame — the standpoint) is held apart fromgmeow:wasAttributedTo(which source recorded it) andgmeow:confidence(how sure we are); a neutral source can record a partisan claim. The axis is an annotation property, so the OWL downcast stays OWL 2 DL. - Two clocks. Fact-time (
validFrom/validUntil, when the fact holds) is kept distinct from standpoint-time (agmeow:StandpointTenure, when the frame held the position — recognition granted then withdrawn, suppressed not deleted). - No single slot to win. There is no
preferredRank/primary*— refused three ways (a SHACL shape, a statement-DSL lint, and a term-absence test). Crimea contained-in Russia and Ukraine coexist, neither privileged, and the reasoned graph stays consistent. - At least as expressive as CRMinf, formally grounded, projected losslessly. The
facility realises Standpoint Logic (
gmeow:standpointModalityspans □/◊ and the CRMinf belief value true/probable/possible/false, so a standpoint's denial is first-class;gmeow:sharpens= the standpoint poset;gmeow:universalStandpoint= the universal*). Five projections — Standpoint-OWL 2 (standpointLabel, for a standpoint reasoner), CRMinf (the CIDOC-CRM argumentation/belief model), PROV-O (qualified attribution), W3C Web Annotation, and schema.org Claim — each preserve every frame. There is deliberately no projection that selects one standpoint: collapsing a contested fact to a chosen frame is picking a winner.
Rights & IP: instance-level, machine-readable, temporally bound
Most vocabularies record rights as a flat license URL or a rights string. GMEOW
models the rights of any instance — a work, image, brand, dataset, software project —
as a reified, attributed, temporally-bound, machine-readable facility, distinct from
the build-time LinkPolicy that governs copying axioms into GMEOW (full rationale in
docs/rights.md):
- A licence is an agreement, a holder is an agent.
gmeow:License ⊑ gmeow:Agreementreusesgmeow:hasParty;gmeow:copyrightHolder/trademarkHolderspecialisegmeow:wasAttributedTo— no parallel models. A reifiedgmeow:Copyright,gmeow:Trademark(mark × holder × registration × ™/®/status) andgmeow:RightsStatementcarry the structure; flatgmeow:hasLicense/hasCopyrightcovers the 80 % case. - The deontic logic, not just the structure.
gmeow:RightsStatementis an ODRL-superset policy:gmeow:Permission/gmeow:Prohibition/gmeow:Dutyover the full ODRL action vocabulary, the constraint algebra (atomic dateTime ≤ 2036 / spatial = EU + logical and/or/xone), conflict-resolution strategy and consequence/ remedy chaining. Licences are temporally bound (validFrom/validUntil+ dateTime constraints); claims carry provenance/confidence/standpoint (the RDF-1.2 layer); expired rights are suppressed, never deleted. - Maximal superset, by reference. One canonical term per concept, aligned to ODRL, CC REL, Dublin Core, schema.org, SPDX, RightsStatements.org (all 12), PREMIS 3, W3C Media Resources, WIPO/Wikidata (every QID curl-validated) — and projected to pure ODRL, CC REL, schema.org, Dublin Core and SPDX. IPROnto and MPEG-21 REL are bridged by reference (no fabricated IRIs). Foundational: the Images and Employment blocks build on it.
Locations: universal reference-frame
Most vocabularies model location as a flat geographic point (latitude, longitude).
GMEOW treats Location as a relationship between an entity and a reference frame — one
kernel locates a coffee cup, a satellite, a neural embedding, a gene on a genome, and a
wizard's tower (full rationale in docs/location-mapping.md):
- Universal reference-frame kernel.
gmeow:Locationis the umbrella; structural kinds (Place,VirtualLocation,StorageLocation,CelestialLocation,BiologicalSequenceLocation) are subclasses where structure differs. Kinds within each kind are open value vocabularies (placeType,celestialObjectType,sequenceFeatureType), not subclasses — any granularity from country to room, from star to galaxy cluster, or from chromosome to SNP, can be a first-class entity. - Frame-relativity by construction (Principle 11). Every coordinate, measurement, or pose
is expressed in an explicit
gmeow:ReferenceFrame— a self-describing Profile with closed descriptors (frameRealm,frameKind,hasAxis,dimensionCount,hasMetricKind,determinacyModel) and open values. Seed frames span terrestrial (WGS-84), indoor (Cartesian grid), celestial (ICRS, FK5, Galactic), virtual/network (IP/DNS topology), robotic (C-space, TF), mathematical/n-D (Hilbert, latent vector, phase space), biological-sequence (GRCh38), geocoding (Plus Codes, what3words), psychological/cognitive, and fictional/narrative realms. A new realm is data, never a schema change. - Time-scoped, contested, never a winner. A place's name, jurisdiction, boundary, and
parent containment are time-indexed and disputed.
JurisdictionTenureandContainmentTenurereify sovereignty and border changes asgufo:SituationTyperelators; contested claims (Crimea-class) coexist as standpoint-indexed instances, none privileged (Principle 9). Superseded places (Constantinople → Istanbul) are retained withgmeow:displayable false, never deleted (Principle 10). - Pose, motion, and trajectories. A
gmeow:Posecarries position + orientation as peers (quaternion, Euler angles, heading/bearing, or homogeneous matrix).LocationStatecaptures position, velocity, and pose at an instant;Trajectorychains states into a space-time path. Interpolation and frame transforms live in the solver layer (Principle 12). - Topology, proximity, and aggregation. RCC-8 relations (
rcc8po,rcc8tpp,rcc8ntpp,rcc8ec,rcc8dc,rcc8eq) model qualitative spatial topology.ProximityMeasurementrecords frame-relative distance with an explicitMetricKind(geodesic, Euclidean, cosine, graph-hops).SpatialAggregationcomputes count, density, centroid, and k-anonymity over a region — all in the solver layer. - Cross-cutting facets. Regulatory overlays (zoning, airspace, maritime zones, sanctions)
bind a place, authority, regulation type, and optional 3D bounds. Accessibility features and
barriers are orthogonal facets over places and routes. Privacy coarsening (
coarsenTo+GranularityLevel) withholds or generalizes sensitive locations at projection time. - Maximal bridging, by reference. Aligned to GeoSPARQL, BOT, CIDOC-CRM+CRMgeo, IVOA, UAT, SWEET, FALDO, Sequence Ontology, LADM, AIXM, UNCLOS, IEEE 1872-2015, OGC GeoPose, schema.org, vCard, WGS84, Wikidata — all by reference, never imported (Principle 5).
Scientific & measurement utility
What began as a person-and-document vocabulary has, over the recent Location/Observation epics, become a genuine frame-relative observation and measurement ontology — GMEOW can now carry scientific data as first-class, attributed, frame-aware claims, not afterthoughts. This is the fastest-growing edge of the project, and it composes cleanly with the provenance/confidence/standpoint layer every other slice already uses:
- Observation as a top-level claim-from-a-vantage.
gmeow:Observation(aligned to SOSA/SSN and SensorThings) makes every measurement an attributed claim with a result, a procedure, a time, and a vantage — so a sensor reading, a survey, and a model output are all first-class and comparable. Standpoint-indexed claims are themselves a specialization of observation (claim-from-a-vantage), unifying the epistemics spine. - Quantities carry their units and their uncertainty. A universal
gmeow:Quantity/MeasuredValue(value × unit × determinacy × provenance) aligns to QUDT, so "5 nm" and "5 µm" are never confused, andSpatialMeasurement+CoordinateObservationcapture position in an explicit reference frame. - Frame-relativity is the law, not a convention (Principle 11). Every
coordinate, date, price, colour, or measurement is expressed against an explicit
gmeow:ReferenceFrame(CRS, calendar + timescale, currency, colourspace, unit system), and heavy conversion is delegated to an external solver, never asserted into the logic (Principle 12). The reasoned graph stays decidable while the data stays honest about its frame. - Two orthogonal uncertainty axes. Ontic
gmeow:Determinacy(the thing itself is vague/indeterminate) is held apart from epistemicgmeow:confidence(how sure the recorder is) — a distinction scientific data needs and most vocabularies collapse. - Quality is measured, not assumed. A data-quality layer aligned to W3C DQV and ISO 19157 records completeness, accuracy, and lineage as structured, queryable claims.
- Domain realms for real disciplines. The reference-frame kernel now spans astronomy (celestial frames ICRS/FK5/Galactic; IVOA/UAT/SWEET), genomics (biological-sequence locations on GRCh38; FALDO/Sequence Ontology/GFF3, with liftover left to the solver), robotics (C-space, TF transform trees, SLAM occupancy grids; IEEE 1872-2015), and mathematics/n-D (Hilbert spaces, latent vectors, phase spaces; OpenMath/MEX) — each data over the same kernel, never a schema fork. Forthcoming domain-specific Observation profiles (archaeology, astronomy, clinical, media) extend this further — see the roadmap.
Publishing
- DOI (CrossRef). Blackcat Informatics mints the DOI as a CrossRef member (its own prefix).
make crossrefgeneratesdist/crossref-deposit.xml(CrossRef deposit schema 5.4.0) from the ontology metadata, registering the DOI against the landing pagehttps://blackcatinformatics.ca/gmeow. SetCROSSREF_DOI_PREFIX(and the depositor email) insrc/gmeow_tools/config.pyonce membership is finalized — they are placeholders until then. Validate the deposit against the CrossRef XSD and submit on the CrossRef test system before depositing to production; the deposit is a deliberate manual step.CITATION.cffcarries the DOI for GitHub's "Cite this repository" box once minted. - LOD Cloud. Submit via https://lod-cloud.net/. The
metadata/void.ttllinksets supply the cross-dataset links the diagram needs (the ≥50-link rule). - Content negotiation. Include
apache/gmeow.conffrom the blackcatinformatics.ca vhost; it negotiatesAccept→ Turtle / RDF-XML / JSON-LD with an HTML fallback and per-term slash dereferencing. Releases are immutable — fix issues in a new version, never in place (Principle 6).
Roadmap
GMEOW grows one slice at a time; the direction is tracked entirely in GitHub issues. The current themes (cite the issue number in PRs):
- v0.2.0 — The Realignment Release (the front of the queue) — the three products of
docs/REALIGNMENT-v0.2.0.md, tracked by epic #300: thegmeowPyPI client with the five-minute time-to-first-claim CI gate (#296), the grounded-memory MCP triad + flagship docs (#297), the productised GTSai-packagewith COSE signing (#267/#272), the claim spine cookbook (#55), and a mechanically-scored claim-extraction eval suite across frontier models (#298). - Compliance-by-construction — derive enforcement from declarations (epic #278): the generator registry (#279), the core/extensions repository re-layout (#287, Principle 16), constitution-as-code (#280), and annotation-driven invariants for suppression, co-equal facets, and frame-relativity (#281–#284).
- Deepen Languages → diachronic, sociolinguistic, symbolic, archaeological — language varieties/states/change events (#170), lexical items, forms, usage attestations & etymology (#171), notation and symbolic systems (#172), and archaeological evidence, inscriptions & cultural-heritage readings (#173), under the strengthening umbrella (#169); canonical private-use tags with public BCP 47 projection (#164) and an exhaustive reference language catalog (#111).
- Complete the Email ontology — full coverage of stored mail (#141): mailbox hierarchy (#132), MIME body parts (#133), address structure & envelope headers (#134), provenance & raw bytes (#135), versioning/variants (#136), status/bounces/auto-generated (#137), thread subject normalization (#138), calendar-invite seam (#139), JMAP body structure (#140), and mailing-list vocabulary (#131).
- Scientific Observation profiles & unification — domain-specific Observation profiles for archaeology, astronomy, media, and clinical data (#129), Event–Observation unification (#128), and the sensory-environment module (#126). (Standpoint-Claim-as-Observation #127 — merged.)
- New domain slices — Finance (accounts, transactions, REA/double-entry; FIBO/ISO 20022) (#64), Calendar & scheduling (#62), Notes / PKM with Web Annotation (#63), Employment / CV (#23), Images as a layered super-ontology (#22), Books (works/releases/serials) (#156), and Projects / software / verifiable git provenance (#47).
- AI / RAG, hallucination-resistant knowledge graphs — the full claim layer beneath the v0.2.0 products: LLM output as claim-not-truth with evidence-bound claims and contradiction-as-standpoint (#54), and a maximally-interlinked multi-ontology transpiler from a canonical A-Box (#34).
- Broad-consumption tooling & FAIR reach — ML-dataset & research-object interop
(Croissant + RO-Crate + DataCite/DCAT) as
gts→*surfaces (#58), a maximal DOI strategy (concept+version chains, Signposting) (#44), and broadly-consumable export variants re-triaged as GTS shims (#12). (Already shipped: LinkML → JSON Schema / Pydantic / TypeScript / GraphQL schemas; labeled-property-graph export; the MCP retrieval server.)
Licensing
GMEOW is dual-licensed. Blackcat Informatics® Inc. is the sole copyright holder (© 2026) and makes the work available under open-source terms and reserves the right to grant separate commercial/proprietary licenses.
- Tooling code (this repository, excluding the vocabulary): Apache License 2.0.
- GMEOW vocabulary (the ontology in
ontology/and its published serializations): CC BY 4.0. - Proprietary licensing. The open licenses above are offered in addition to — not in
place of — Blackcat Informatics' right to license either part under separate commercial
terms. Contact
licensing@blackcatinformatics.ca.
Trademarks. "Blackcat Informatics®" is a registered trademark of Blackcat Informatics Inc. Neither open license grants any right to use these names, logos, or marks (Apache-2.0 §6; CC BY 4.0 §2(b)).
Contributions are accepted under the same open licenses; for the dual-licensing reservation to extend to contributed material, contributors license their contributions to Blackcat Informatics Inc. under terms permitting that relicensing.
Third-party. imports/gufo.ttl (gUFO) is vendored under the MIT License; its copyright
and permission notice are preserved in that file.
Full terms are in LICENSING.md; the propagating attribution and
trademark notice are in NOTICE.
Conventions
uv for deps, ruff (format + lint) and mypy --strict, Google-style docstrings,
pathlib.Path everywhere, the Makefile as the canonical task runner. Missing required tools
fail loudly; the license guard and Wikidata validator error rather than silently degrade.
AI and Agentic Development. This ontology and its toolchain are developed and maintained with the assistance of AI coding agents (such as Google Antigravity and Claude Code). Workspace-specific rules and skills (AGENTS.md) are defined to ensure agents strictly adhere to GMEOW's Constitution and compile pipelines.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gmeow-1.0.2.tar.gz.
File metadata
- Download URL: gmeow-1.0.2.tar.gz
- Upload date:
- Size: 3.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23016ff9c7cae0f98428bfbb36af8d899f10fff0a024dff3e4ab90adbc3d05b6
|
|
| MD5 |
474a3d6be456c5c2bf7f0dbd6ea54cc6
|
|
| BLAKE2b-256 |
d350ed74fa70550f53d8632509adc1dd41348746253041f65b6616f208b1e47f
|
Provenance
The following attestation bundles were made for gmeow-1.0.2.tar.gz:
Publisher:
pypi-publish-gmeow.yml on Blackcat-Informatics/gmeow-ontology
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gmeow-1.0.2.tar.gz -
Subject digest:
23016ff9c7cae0f98428bfbb36af8d899f10fff0a024dff3e4ab90adbc3d05b6 - Sigstore transparency entry: 1808140879
- Sigstore integration time:
-
Permalink:
Blackcat-Informatics/gmeow-ontology@479ae23d436e40ebc410331ff7a70bd4ac1ff7b2 -
Branch / Tag:
refs/tags/py/gmeow/v1.0.2 - Owner: https://github.com/Blackcat-Informatics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish-gmeow.yml@479ae23d436e40ebc410331ff7a70bd4ac1ff7b2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file gmeow-1.0.2-py3-none-any.whl.
File metadata
- Download URL: gmeow-1.0.2-py3-none-any.whl
- Upload date:
- Size: 870.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c3de3e2d8713ef36439cc59931a0b1d2c432a3a0f4ba86d64b56878f3551cb4
|
|
| MD5 |
a34a7212fdd20996d0f4530de12c3258
|
|
| BLAKE2b-256 |
bdfb871a9a6828d57425be84808f667cbff37f23a18056d002b7b38ca7125f5c
|
Provenance
The following attestation bundles were made for gmeow-1.0.2-py3-none-any.whl:
Publisher:
pypi-publish-gmeow.yml on Blackcat-Informatics/gmeow-ontology
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gmeow-1.0.2-py3-none-any.whl -
Subject digest:
7c3de3e2d8713ef36439cc59931a0b1d2c432a3a0f4ba86d64b56878f3551cb4 - Sigstore transparency entry: 1808140887
- Sigstore integration time:
-
Permalink:
Blackcat-Informatics/gmeow-ontology@479ae23d436e40ebc410331ff7a70bd4ac1ff7b2 -
Branch / Tag:
refs/tags/py/gmeow/v1.0.2 - Owner: https://github.com/Blackcat-Informatics
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish-gmeow.yml@479ae23d436e40ebc410331ff7a70bd4ac1ff7b2 -
Trigger Event:
push
-
Statement type: