@base .
@prefix owl: .
@prefix rdfs: .
@prefix xsd: .
@prefix dcterms: .
@prefix dcat: .
@prefix schema: .
@prefix vann: .
@prefix sflo: .
a owl:Ontology ;
dcterms:title "Semantic Flow Config Ontology" ;
dcterms:description "Vocabulary for Semantic Flow configuration resources, authored config attachment, resolver policy, derived resolved-config records, operational runtime-resolution policy, and resource-page presentation configuration. Content composition terms such as page regions, page sources, and direct target/current-byte locators remain in the core ontology." ;
dcterms:creator ;
dcterms:hasVersion ;
dcterms:modified "2026-05-18"^^xsd:date ;
owl:versionInfo "0.2.0" ;
owl:versionIRI ;
vann:preferredNamespacePrefix "sfcfg" ;
vann:preferredNamespaceUri "https://semantic-flow.github.io/sflo/config/" .
a owl:Ontology, sflo:HistoricalState ;
dcterms:isVersionOf ;
dcterms:issued "2026-05-24"^^xsd:date ;
owl:versionInfo "0.2.0" ;
schema:contentUrl ;
sflo:hasManifestation .
dcat:downloadURL .
#################################################################
#################################################################
# Generic configuration model
#################################################################
#################################################################
a rdfs:Class ;
rdfs:label "Config" ;
rdfs:comment "An RDF configuration description used to control or parameterize Semantic Flow behavior. A Config may be attached directly to a resource or realized as a separately managed ConfigArtifact. This ontology intentionally does not define a single global merge order, regex-based bulk template matching, or boolean policy switches for history and page generation." .
a rdfs:Class ;
rdfs:subClassOf , sflo:DigitalArtifact, sflo:RdfDocument ;
rdfs:label "Config artifact" ;
rdfs:comment "A named reusable Config that is also a mesh-manageable DigitalArtifact RdfDocument. Use when a config needs stable identity, revision history, working files, dereferenceability, or reuse across multiple configured resources." .
a rdfs:Class ;
rdfs:subClassOf ;
rdfs:label "Application config" ;
rdfs:comment "A Config describing application-level behavior defaults. Concrete implementation defaults, such as Weave's default profile, should be named config artifacts or bundles that use this class rather than implementation-specific default-config classes." .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has config resolution config" ;
rdfs:comment "Links an application, operational, or portable config to the ConfigResolutionConfig it includes, requests, or exposes. Portable uses remain subject to trusted bootstrap resolver policy and cannot expand their own trust boundary." .
a rdfs:Class ;
rdfs:subClassOf ;
rdfs:label "Knop config" ;
rdfs:comment "Optional scope marker for portable Config intended for use at a Knop scope. Knop-local and Knop-inheritable semantics are expressed by attachment properties, ConfigLayerRole values, and resolution context rather than by this class alone." .
a rdfs:Class ;
rdfs:subClassOf ;
rdfs:label "Mesh config" ;
rdfs:comment "A portable Config intended to travel with a Semantic Mesh, conventionally under mesh-owned config support such as _mesh/_config. MeshConfig may describe expected mesh behavior, config attachments, and local project layout, but it is not by itself host trust policy and must not grant arbitrary host access outside the active runtime trust boundary." .
a rdfs:Class ;
rdfs:label "Publication profile" ;
rdfs:comment "A controlled vocabulary of static-publication host profiles that can affect portable publication-surface files and validation expectations. Request-time values such as auto are resolution modes, not persisted PublicationProfile values; MeshConfig should record the resolved concrete profile such as none or GitHub Pages." .
a ;
rdfs:label "none" ;
rdfs:comment "No static-publication host profile is selected for the mesh." .
a ;
rdfs:label "GitHub Pages" ;
rdfs:comment "The mesh publication surface targets GitHub Pages behavior, including host controls such as .nojekyll." .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has publication profile" ;
rdfs:comment "Associates a Config, especially MeshConfig, with the resolved static-publication host profile for the mesh. Persist the concrete resolved profile rather than a request-time auto value so later operations do not need to re-infer host behavior from meshBase." .
a rdfs:Class ;
rdfs:subClassOf ;
rdfs:label "Operational config" ;
rdfs:comment "A trusted runtime input describing host/runtime policy rather than portable mesh-authored behavior. OperationalConfig gates resolution before portable mesh config participates; it is an input to config resolution, not the same thing as ResolvedConfig or an operation-specific effective config." .
a rdfs:Class ;
rdfs:subClassOf ;
rdfs:label "Workspace operational config" ;
rdfs:comment "OperationalConfig discovered inside an active workspace boundary. It may describe project-local layout and narrow behavior within the runtime-approved workspace, but it cannot expand host access beyond that boundary by itself." .
a rdfs:Class ;
rdfs:subClassOf ;
rdfs:label "Host-local operational config" ;
rdfs:comment "OperationalConfig intended to remain user-, machine-, daemon-, or session-local. Use for host-local preferences and trust decisions such as extra-workspace local-directory allowances, remote-access allowances, or user-specific operational restrictions/extensions that should not travel with a mesh by default." .
a owl:ObjectProperty ;
rdfs:domain rdfs:Resource ;
rdfs:range ;
owl:inverseOf ;
rdfs:label "has config" ;
rdfs:comment "Associates a resource with one or more configuration descriptions. Prefer role-specific subproperties when the attachment role affects merge or inheritance semantics." .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range rdfs:Resource ;
owl:inverseOf ;
rdfs:label "config for" ;
rdfs:comment "Inverse of hasConfig: identifies a resource that a Config is intended to configure." .
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain rdfs:Resource ;
rdfs:range ;
rdfs:label "has effective config" ;
rdfs:comment "Associates a resource with a computed effective Config. Treat this as a runtime, view, or debugging convenience rather than as authoritative portable source data." .
a owl:ObjectProperty ;
rdfs:domain rdfs:Resource ;
rdfs:range ;
owl:inverseOf ;
rdfs:label "has resolved config" ;
rdfs:comment "Associates a scope with derived resolver output. ResolvedConfig is inspectable runtime/application state and must not be treated as an authored config source that can authorize itself." .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range rdfs:Resource ;
owl:inverseOf ;
rdfs:label "has resolved config for" ;
rdfs:comment "Identifies the scope for which a ResolvedConfig was produced." .
#################################################################
#################################################################
# Authored config attachment and reusable config sources
#################################################################
#################################################################
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain sflo:SemanticMesh ;
rdfs:range ;
rdfs:label "has mesh config" ;
rdfs:comment "Associates a SemanticMesh with mesh-level authored config for the mesh surface and defaults that apply across the mesh." .
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain sflo:SemanticMesh ;
rdfs:range ;
rdfs:label "has mesh inheritable config" ;
rdfs:comment "Associates a SemanticMesh with authored defaults it offers to Knops, submeshes, or descendant scopes inside the mesh boundary." .
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain sflo:Knop ;
rdfs:range ;
rdfs:label "has Knop config" ;
rdfs:comment "Associates a Knop with portable authored config. Prefer hasKnopLocalConfig or hasKnopInheritableConfig when the local or inheritable role matters." .
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain sflo:Knop ;
rdfs:range ;
rdfs:label "has Knop local config" ;
rdfs:comment "Associates a Knop with config that applies locally to that Knop, its resource page, and artifacts governed at that Knop." .
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain sflo:Knop ;
rdfs:range ;
rdfs:label "has Knop inheritable config" ;
rdfs:comment "Associates a Knop with config offered to descendant Knops and subtrees. By default this is a descendant offer, not an implicit local override for the declaring Knop." .
a owl:ObjectProperty ;
rdfs:domain rdfs:Resource ;
rdfs:range sflo:ArtifactResolutionTarget ;
rdfs:label "has config source" ;
rdfs:comment "Associates a config layer, config-bearing resource, or authored config attachment with an ArtifactResolutionTarget that resolves a ConfigArtifact or config bytes. Reuse core artifact-resolution target properties for working, latest-state, exact target, fallback policy, and expected content digest behavior." .
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain sflo:SemanticMesh ;
rdfs:range sflo:ArtifactResolutionTarget ;
rdfs:label "has mesh config source" ;
rdfs:comment "Associates a SemanticMesh with a mesh-level config source, often a target pointing at _mesh/_config or a reusable ConfigArtifact." .
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain sflo:SemanticMesh ;
rdfs:range sflo:ArtifactResolutionTarget ;
rdfs:label "has mesh inheritable config source" ;
rdfs:comment "Associates a SemanticMesh with a config source it offers to descendant scopes inside the mesh boundary." .
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain sflo:Knop ;
rdfs:range sflo:ArtifactResolutionTarget ;
rdfs:label "has Knop local config source" ;
rdfs:comment "Associates a Knop with a config source that applies locally to that Knop." .
a owl:ObjectProperty ;
rdfs:subPropertyOf ;
rdfs:domain sflo:Knop ;
rdfs:range sflo:ArtifactResolutionTarget ;
rdfs:label "has Knop inheritable config source" ;
rdfs:comment "Associates a Knop with a config source it offers to descendants." .
#################################################################
#################################################################
# Policy vocabulary
#################################################################
#################################################################
a rdfs:Class ;
rdfs:label "Artifact role" ;
rdfs:comment "A controlled vocabulary of Semantic Flow artifact roles used when applying config defaults by role rather than by one exact artifact." .
a ;
rdfs:label "payload" .
a ;
rdfs:label "mesh inventory" .
a ;
rdfs:label "Knop inventory" .
a ;
rdfs:label "mesh metadata" .
a ;
rdfs:label "Knop metadata" .
a ;
rdfs:label "config" .
a ;
rdfs:label "reference catalog" .
a ;
rdfs:label "resource page definition" .
a ;
rdfs:label "resource page template" .
a ;
rdfs:label "resource page stylesheet" .
a ;
rdfs:label "runtime metadata" .
a rdfs:Class ;
rdfs:label "Artifact role policy" ;
rdfs:comment "A policy node that applies one or more policy values to artifacts with a specific ArtifactRole." .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has artifact role" ;
rdfs:comment "Identifies the ArtifactRole to which an ArtifactRolePolicy applies." .
a rdfs:Class ;
rdfs:label "History tracking policy" ;
rdfs:comment "A controlled vocabulary describing whether and how a DigitalArtifact should materialize history." .
a ;
rdfs:label "versioned" ;
rdfs:comment "Materialize ordinary artifact history when the artifact changes." .
a ;
rdfs:label "current only" ;
rdfs:comment "Keep only current working-surface facts unless another invariant requires history." .
a ;
rdfs:label "required" ;
rdfs:comment "History is required for this artifact role or scope and cannot be disabled by ordinary portable config or request overrides." .
a ;
rdfs:label "slim history" ;
rdfs:comment "Keep history with slimmed support surfaces, reduced generated pages, or metadata-focused representations as defined by the active application profile." .
a ;
rdfs:label "checkpoint only" ;
rdfs:comment "Record history only at explicit checkpoints or according to an application-defined checkpoint policy." .
a ;
rdfs:label "metadata only" ;
rdfs:comment "Record metadata or fingerprints for state transitions without necessarily preserving full public byte snapshots." .
a owl:ObjectProperty ;
rdfs:domain rdfs:Resource ;
rdfs:range ;
rdfs:label "has history tracking policy" ;
rdfs:comment "Assigns a HistoryTrackingPolicy to a config or role policy." .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has default history tracking policy" ;
rdfs:comment "Declares the default HistoryTrackingPolicy used when no more specific artifact-role, scope, or artifact policy applies." .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has history tracking default" ;
rdfs:comment "Associates a Config with an artifact-role-specific history tracking default." .
a rdfs:Class ;
rdfs:label "ResourcePage generation policy" ;
rdfs:comment "A controlled vocabulary describing whether ResourcePage files should be generated independently of whether artifact history is tracked." .
a ;
rdfs:label "generate" .
a ;
rdfs:label "suppress" .
a ;
rdfs:label "defer" .
a ;
rdfs:label "on request" .
a owl:ObjectProperty ;
rdfs:domain rdfs:Resource ;
rdfs:range ;
rdfs:label "has ResourcePage generation policy" ;
rdfs:comment "Assigns a ResourcePageGenerationPolicy to a config or role policy. Suppressed pages should omit sflo:hasResourcePage rather than promising a page that policy says should not exist." .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has default ResourcePage generation policy" ;
rdfs:comment "Declares the default ResourcePageGenerationPolicy used when no more specific policy applies." .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has ResourcePage generation default" ;
rdfs:comment "Associates a Config with an artifact-role-specific ResourcePage generation default." .
a rdfs:Class ;
rdfs:label "ResourcePage regeneration config policy" ;
rdfs:comment "A controlled vocabulary describing which configuration generation should use when regenerating historical ResourcePages." .
a ;
rdfs:label "config at the time" .
a ;
rdfs:label "current presentation" .
a ;
rdfs:label "current full config" .
a ;
rdfs:label "historical semantics, current presentation" .
a owl:ObjectProperty ;
rdfs:domain rdfs:Resource ;
rdfs:range ;
rdfs:label "has ResourcePage regeneration config policy" ;
rdfs:comment "Assigns the config-time mode for historical ResourcePage regeneration." .
a rdfs:Class ;
rdfs:label "History naming policy" ;
rdfs:comment "A controlled vocabulary describing default history-segment naming policy. This is config and hint vocabulary; allocator state such as sflo:nextHistoryOrdinal remains in core artifact/history RDF." .
a ;
rdfs:label "ordinal" .
a ;
rdfs:label "named" .
a rdfs:Class ;
rdfs:label "State naming policy" ;
rdfs:comment "A controlled vocabulary describing default state-segment naming policy. This is config and hint vocabulary; allocator state such as sflo:nextStateOrdinal remains in core artifact/history RDF." .
a ;
rdfs:label "ordinal" .
a ;
rdfs:label "semantic version" .
a ;
rdfs:label "date" .
a rdfs:Class ;
rdfs:label "Manifestation naming policy" ;
rdfs:comment "A controlled vocabulary describing default manifestation-segment naming policy." .
a ;
rdfs:label "filename derived" .
a ;
rdfs:label "content-kind derived" .
a ;
rdfs:label "ordinal" .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has history naming policy" .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has state naming policy" .
a owl:ObjectProperty ;
rdfs:domain ;
rdfs:range ;
rdfs:label "has manifestation naming policy" .
a owl:DatatypeProperty ;
rdfs:domain ;
rdfs:range xsd:string ;
rdfs:label "has default history segment hint" ;
rdfs:comment "Optional default or hint for a requested history segment. The current artifact/history RDF remains authoritative for validation and ordinal allocation." .
a owl:DatatypeProperty ;
rdfs:domain ;
rdfs:range xsd:string ;
rdfs:label "has default state segment hint" ;
rdfs:comment "Optional default or hint for a requested state segment. The current artifact/history RDF remains authoritative for validation and ordinal allocation." .
a owl:DatatypeProperty ;
rdfs:domain ;
rdfs:range xsd:string ;
rdfs:label "has default manifestation segment hint" .
a owl:DatatypeProperty ;
rdfs:domain sflo:DigitalArtifact ;
rdfs:range xsd:string ;
rdfs:label "has next history segment hint" ;
rdfs:comment "Optional operational hint for the next history segment to use when explicitly versioning a DigitalArtifact. This is current/progression metadata and must not be treated as the authoritative sflo:nextHistoryOrdinal counter." .
a owl:DatatypeProperty ;
rdfs:domain sflo:ArtifactHistory ;
rdfs:range xsd:string ;
rdfs:label "has next state segment hint" ;
rdfs:comment "Optional operational hint for the next state segment to use when explicitly versioning an ArtifactHistory. This is current/progression metadata and must not be asserted into immutable historical snapshots/distributions or treated as the authoritative sflo:nextStateOrdinal counter." .
#################################################################
#################################################################
# Config resolution and derived resolved config
#################################################################
#################################################################
a rdfs:Class ;
rdfs:subClassOf ;
rdfs:label "Config resolution config" ;
rdfs:comment "Config for the resolver itself: discovery, trust caps, layer ordering, merge behavior, reusable config references, cycle handling, unknown-term behavior, and cache policy. Trusted bootstrap resolver policy must come from application defaults, explicit runtime input, host-local operational config, or daemon/session state; portable mesh config may only request or narrow behavior within the existing trust boundary." .
a rdfs:Class ;
rdfs:subClassOf ;
rdfs:label "Resolved config" ;
rdfs:comment "Derived resolver output for a scope after application defaults, operational gates, config-resolution policy, authored mesh/Knop config, inherited config, reusable config artifacts, and validated request-level inputs have been applied. ResolvedConfig is output state, not trusted operational input and not authoritative authored mesh config." .
a rdfs:Class ;
rdfs:label "Config resolution record" ;
rdfs:comment "Derived provenance describing config-source decisions, fingerprints, resolver/profile identity, trust decisions, warnings, and resolved-config digest without logging full config contents by default." .
a rdfs:Class ;
rdfs:label "Config layer" ;
rdfs:comment "A configured source layer considered by a config resolver. Concrete ordering belongs in ConfigPrecedenceProfile or an implementation/default profile rather than in ontology comments alone." .
a rdfs:Class ;
rdfs:label "Config layer role" ;
rdfs:comment "A controlled vocabulary naming the role a config layer plays during resolution." .
a ;
rdfs:label "built-in defaults" .
a ;
rdfs:label "Weave defaults" .
a ;
rdfs:label "command override" .
a ;
rdfs:label "machine-local operational" .
a ;
rdfs:label "workspace operational" .
a ;
rdfs:label "mesh local" .
a ;
rdfs:label "mesh inheritable" .
a ;
rdfs:label "Knop inherited" .
a ;
rdfs:label "Knop local" .
a ;
rdfs:label "Knop inheritable" .
a ;
rdfs:label "reusable config" .
a ;
rdfs:label "resolved runtime" .
a rdfs:Class ;
rdfs:label "Config precedence profile" ;
rdfs:comment "A profile describing layer order candidates. A single global order is not sufficient for all property families; merge profiles and required invariants still control how values combine." .
a rdfs:Class ;
rdfs:label "Config merge profile" ;
rdfs:comment "A profile describing property-family merge behavior such as stricter-wins safety caps, nearest-scope defaults, additive values, required invariants, and operation-request overrides." .
a rdfs:Class ;
rdfs:label "Config reference policy" ;
rdfs:comment "A controlled vocabulary describing which reusable or external config references may be followed." .
a ;
rdfs:label "no external references" .
a ;
rdfs:label "pinned only" .
a ;
rdfs:label "current allowed within trusted boundary" .
a rdfs:Class ;
rdfs:label "Config inheritance policy" ;
rdfs:comment "A controlled vocabulary describing how inherited config is accepted and propagated." .
a ;
rdfs:label "accept and propagate" .
a ;
rdfs:label "accept, do not propagate" .
a ;
rdfs:label "block inherited" .
a ;
rdfs:label "offer descendants only" .
a ;
rdfs:label "offer self and descendants" .
a rdfs:Class ;
rdfs:label "Operation request override policy" ;
rdfs:comment "A controlled vocabulary describing how explicit operation request fields interact with resolved defaults, hints, strict policies, and invariants." .
a ;
rdfs:label "warn and apply" .
a ;
rdfs:label "reject conflict" .
a ;
rdfs:label "require explicit acknowledgement" .
a rdfs:Class ;
rdfs:label "Config cycle policy" .
a ;
rdfs:label "reject" .
a ;
rdfs:label "use first seen" .