Skip to main content

GMEOW ontology tooling: refine, validate, reason over, document, and publish the Global Metadata and Entity Ontology for the Web.

Project description

GMEOW logo — a black cat holding a linked knowledge graph

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.

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 coverage reports 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.0pip 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/preferredForDisplay term. 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-Lemon ontolex:LexicalEntry (gmeow:fullName close-matches ontolex: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+Hanija-Hani). Properties like gmeow:nameLanguage close-match LIME's metadata property lime:language to 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:WritingSystemUsage relator (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:knowsLanguage renderings 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 with gmeow: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 Person subclasses, 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 to schema: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 from gmeow:wasAttributedTo (which source recorded it) and gmeow: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 (a gmeow: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:standpointModality spans □/◊ 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:Agreement reuses gmeow:hasParty; gmeow:copyrightHolder / trademarkHolder specialise gmeow:wasAttributedTo — no parallel models. A reified gmeow:Copyright, gmeow:Trademark (mark × holder × registration × ™/®/status) and gmeow:RightsStatement carry the structure; flat gmeow:hasLicense / hasCopyright covers the 80 % case.
  • The deontic logic, not just the structure. gmeow:RightsStatement is an ODRL-superset policy: gmeow:Permission / gmeow:Prohibition / gmeow:Duty over 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:Location is 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. JurisdictionTenure and ContainmentTenure reify sovereignty and border changes as gufo:SituationType relators; contested claims (Crimea-class) coexist as standpoint-indexed instances, none privileged (Principle 9). Superseded places (Constantinople → Istanbul) are retained with gmeow:displayable false, never deleted (Principle 10).
  • Pose, motion, and trajectories. A gmeow:Pose carries position + orientation as peers (quaternion, Euler angles, heading/bearing, or homogeneous matrix). LocationState captures position, velocity, and pose at an instant; Trajectory chains 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. ProximityMeasurement records frame-relative distance with an explicit MetricKind (geodesic, Euclidean, cosine, graph-hops). SpatialAggregation computes 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, and SpatialMeasurement + CoordinateObservation capture 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 epistemic gmeow: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

  1. DOI (CrossRef). Blackcat Informatics mints the DOI as a CrossRef member (its own prefix). make crossref generates dist/crossref-deposit.xml (CrossRef deposit schema 5.4.0) from the ontology metadata, registering the DOI against the landing page https://blackcatinformatics.ca/gmeow. Set CROSSREF_DOI_PREFIX (and the depositor email) in src/gmeow_tools/config.py once 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.cff carries the DOI for GitHub's "Cite this repository" box once minted.
  2. LOD Cloud. Submit via https://lod-cloud.net/. The metadata/void.ttl linksets supply the cross-dataset links the diagram needs (the ≥50-link rule).
  3. Content negotiation. Include apache/gmeow.conf from the blackcatinformatics.ca vhost; it negotiates Accept → 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: the gmeow PyPI client with the five-minute time-to-first-claim CI gate (#296), the grounded-memory MCP triad + flagship docs (#297), the productised GTS ai-package with 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gmeow-1.0.2.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gmeow-1.0.2-py3-none-any.whl (870.8 kB view details)

Uploaded Python 3

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

Hashes for gmeow-1.0.2.tar.gz
Algorithm Hash digest
SHA256 23016ff9c7cae0f98428bfbb36af8d899f10fff0a024dff3e4ab90adbc3d05b6
MD5 474a3d6be456c5c2bf7f0dbd6ea54cc6
BLAKE2b-256 d350ed74fa70550f53d8632509adc1dd41348746253041f65b6616f208b1e47f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gmeow-1.0.2.tar.gz:

Publisher: pypi-publish-gmeow.yml on Blackcat-Informatics/gmeow-ontology

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for gmeow-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7c3de3e2d8713ef36439cc59931a0b1d2c432a3a0f4ba86d64b56878f3551cb4
MD5 a34a7212fdd20996d0f4530de12c3258
BLAKE2b-256 bdfb871a9a6828d57425be84808f667cbff37f23a18056d002b7b38ca7125f5c

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page