GMEOW Profile Meta-pattern Module

What This Slice Covers

This slice owns 8 terms and contributes 1 mapping or projection rows. Use it when its terms match the native fact you want to preserve; use the linkage tables to see how those facts leave GMEOW for consumer vocabularies.

Dependencies

Consumers

Local Map

profiles map

Examples

Named Profile Membership

# SPDX-FileCopyrightText: 2026 Blackcat Informatics® Inc. <paudley@blackcatinformatics.ca>
# SPDX-License-Identifier: CC-BY-4.0
#
# Worked example — the Profile meta-pattern in use: a closed descriptor schema
# over an open value vocabulary, and an instance that claims conformance to it.
#
# A consumer declares a self-describing facet for a TAGGING (the reified
# tagger × tagged × tag × scheme relator) WITHOUT minting per-tag subclasses.
# It mints one gmeow:Profile that names (a) the class it applies to (the existing
# gmeow:Tagging), (b) the descriptor properties that constitute the facet, and
# (c) the open value vocabulary those descriptors draw from (the existing
# gmeow:Tag, whose members are individuals, never subclasses — P9). Extension
# happens by adding Tag INDIVIDUALS — each referenced as the value of the
# gmeow:taggingTag descriptor — never by altering the closed descriptor set. A
# concrete Tagging points at the Profile with gmeow:hasProfile, so a consumer
# holding only the data can dereference the Profile and learn the complete
# schema — the self-description that makes "extensible by construction" a
# structure, not a slogan. The example mints no classes of its own (it reuses
# gmeow:Tagging / gmeow:Tag / gmeow:TagScheme), and asserts no Expression-typed
# value, so no P11 frame is required.

@prefix gmeow: <https://blackcatinformatics.ca/gmeow/> .
@prefix ex:    <https://blackcatinformatics.ca/gmeow/examples/profiles/> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix skos:  <http://www.w3.org/2004/02/skos/core#> .

# --- The Profile: a closed descriptor schema for a tagging. It SELF-DESCRIBES —
#     naming the class it governs (profileAppliesTo gmeow:Tagging), the
#     descriptor properties (profileDescriptor), and the open value class
#     (profileOpenValue gmeow:Tag) — so tooling reads the graph, not code. A
#     Profile MUST carry a skos:definition.
ex:profileTagging a gmeow:Profile ;
    rdfs:label "Tagging Profile"@en ;
    skos:definition "The closed descriptor schema for a reified tagging: the entity tagged, the tag applied (drawn from the open gmeow:Tag vocabulary), the agent who applied it, and the scheme it belongs to. New tags extend the facet as data added to the open value class, with this descriptor set unchanged."@en ;
    gmeow:profileAppliesTo gmeow:Tagging ;
    gmeow:profileDescriptor
        gmeow:taggingTagged ,
        gmeow:taggingTag ,
        gmeow:taggingTagger ,
        gmeow:taggingScheme ;
    gmeow:profileOpenValue gmeow:Tag .

# --- The OPEN value vocabulary in use: gmeow:Tag individuals, referenced below
#     as the value of the gmeow:taggingTag descriptor. New tags are added HERE,
#     as data — the descriptor schema above is never touched.
ex:scheme a gmeow:TagScheme ; rdfs:label "Research topic keywords"@en .
ex:tagML a gmeow:Tag ;
    rdfs:label "machine-learning"@en ;
    gmeow:tagInScheme ex:scheme .

ex:alice a gmeow:Person ; gmeow:name "Alice"@en .
ex:paper a gmeow:CreativeWork ;
    gmeow:title "A Survey of Transformer Architectures"@en .

# --- A concrete Tagging that CLAIMS CONFORMANCE: it carries gmeow:hasProfile
#     pointing at the Profile whose descriptor schema governs it, and supplies
#     descriptor values — including the open-vocabulary tag as the value of
#     gmeow:taggingTag. A consumer can now validate this tagging's shape by
#     dereferencing the Profile alone.
ex:taggingML a gmeow:Tagging ;
    gmeow:hasProfile ex:profileTagging ;
    gmeow:taggingTagged ex:paper ;
    gmeow:taggingTag    ex:tagML ;
    gmeow:taggingTagger ex:alice ;
    gmeow:taggingScheme ex:scheme .

Terms

Classes

Term Label Definition
gmeow:Profile Profile A closed descriptor schema for an open-but-structured facet. A Profile self-describes the properties that constitute the facet and the open value vocabularies...

Properties

Term Label Definition
gmeow:hasProfile has profile Links an entity, value or frame to the Profile that governs its structure.
gmeow:profileAppliesTo profile applies to The class of entities to which this Profile applies.
gmeow:profileDescriptor profile descriptor A property that is part of this Profile's closed descriptor schema.
gmeow:profileOpenValue profile open value An open value-vocabulary class (instances are individuals, never subclasses) used by this Profile.

Individuals

Term Label Definition
gmeow:profileReferenceFrame Reference Frame Profile The closed descriptor schema for gmeow:ReferenceFrame instances: realm, axes, dimensionality, kind, host-dependence, determinacy, metric, and transform descrip...
gmeow:profileTemporalFrame Temporal Frame Profile The closed descriptor schema for gmeow:TemporalFrame instances: the reference-frame spine plus time scale, calendar system, and reference position.
gmeow:profileTemporalProvenance Temporal Provenance Profile (four clocks) The closed descriptor schema for statement-level temporal provenance: valid-from, valid-until, asserted-at, and recorded-no-later-than. Applies to statements,...

Linkages

Source Kind Profile Predicate/Relation Target Evidence
gmeow:Profile equivalence - skos:relatedMatch prof:Profile gmeow-classes.sssom.tsv; gmeow:eqClasses047; confidence 0.8

Guide

Profiles — closed descriptor schemas over open value vocabularies

Slice: https://blackcatinformatics.ca/gmeow/slices/profiles · tier: core The meta-pattern that makes "extensible by construction" a structure, not a slogan.

Most vocabularies face a false choice: close a facet down (an enum — dead on arrival, Principle 9 forbids it) or leave it a free-for-all (anything goes, nothing is checkable). The Profile meta-pattern is GMEOW's third way: a closed descriptor schema (the fixed set of properties that constitute a facet) over open value vocabularies (the individuals those properties draw from — extended by minting data, never by schema change). A Profile self-describes: it is an InformationObject in the graph that names its own descriptors and value classes, so tooling can validate, render, and extend a facet by reading the graph rather than reading code.

This is the load-bearing pattern beneath Principle 11 (frame-relativity): every ReferenceFrame — temporal, spatial, currency, even instrument-tuning frames (pitch frames) — is governed by a Profile, which is what makes "a value asserted without its self-describing frame is ill-formed" enforceable by construction (the kernel's gmeow:requiresFrame generates the shapes; this slice supplies the schema they check).

The meta-pattern

gmeow:Profile

A closed descriptor schema for an open-but-structured facet — a gufo:Kind under InformationObject. A Profile instance bundles: the class it applies to, the properties that constitute the facet, and the open value vocabularies those properties draw from. Mint one whenever a new family of self-describing things (a new frame realm, a new descriptor cluster) enters the ontology; never mint per-value subclasses instead.

gmeow:hasProfile

Links an entity, value, or frame to the Profile that governs its structure. The instance side of self-description: a consumer holding only the data can dereference the Profile and learn the complete descriptor schema without any out-of-band documentation.

gmeow:profileAppliesTo

The class of entities this Profile governs (e.g. profileReferenceFrame applies to gmeow:ReferenceFrame). The hook validation tooling uses to find which instances a Profile's schema constrains.

gmeow:profileDescriptor

A property belonging to this Profile's closed descriptor schema. An owl:AnnotationProperty deliberately: it points at properties (metamodelling), and the annotation form keeps the ontology in OWL 2 DL (Principle 3). Closure of the descriptor set is documentation-and-SHACL discipline, not an OWL axiom.

gmeow:profileOpenValue

An open value-vocabulary class used by this Profile — a class whose instances are individuals, never subclasses (Principle 9). This is where the openness lives: adding a new calendar, axis, or metric kind is data added to a profileOpenValue class, with the descriptor schema unchanged.

The seed profiles — worked examples

gmeow:profileReferenceFrame · gmeow:profileTemporalFrame · gmeow:profileTemporalProvenance

Three seeds prove the pattern at three scales. profileReferenceFrame is the spine: realm, axes, dimensionality, kind, host-dependence, determinacy model, parent frame, transforms, solver, and metric kind — the full self-description of any gmeow:ReferenceFrame. profileTemporalFrame shows specialization: the same spine plus the temporal descriptors (frameTimeScale, frameCalendarSystem, frameReferencePosition) and their open vocabularies. profileTemporalProvenance shows the pattern applied to statements rather than frames: the four clocks (validFrom / validUntil / assertedAt / recordedNoLaterThan) as a closed descriptor schema with no profileAppliesTo — it governs annotations on any reified statement, not instances of one class.

Boundaries

Frame transformation — converting between frames a Profile describes — is solver-layer computation (Principle 12): transformsTo and frameSolver are descriptors naming the relationship and the engine, never axioms performing it. The pattern has no good external alignment target (DCAT application profiles and SHACL node shapes are adjacent but neither self-describes open value vocabularies); it stays unaligned rather than forcing a weak match (Principle 5). Depends on kernel, places, and temporal — the slices whose frames the seed profiles describe; consumed by every reference frame in the system.