Vocabulary#
The IRIs and prefixes the queries are written against.
Shared IRI vocabulary for the KAPPS Semantic Middleware.
This module is the single source of truth for the ontology terms the middleware reads and writes. Every other module (registration, execution, connectors, tests, notebooks) imports its IRIs from here. The Python code and the published ontologies (Core cfc:, the project svc: module, and the domain mes: module) can never drift apart.
Four namespaces appear below: cfc:, svc:, mes:, and inf:.
cfc: is the published Circular Factory Core ontology (https://w3id.org/circularfactory/Core#). Term names below are verified against the 0.9.0 release.
svc: is this project’s own Service ontology module (https://w3id.org/circularfactory/Service#), defined in kapps_semantic_middleware/ontology/service.ttl.
mes: is the Manufacturing Execution System domain ontology (https://w3id.org/circularfactory/MES#), defined in kapps_semantic_middleware/ontology/mes.ttl. It is domain-facing. It covers possession and handover-ability vocabulary.
inf: is the interface vocabulary. It defines what makes a domain parameter reachable over a protocol. It is authored for now under the existing CrcInterfaces IRI, so scenario 3 stays vocabulary-compatible with the minimal example shared across kapps_triplestore_interface and kapps_ogm. CrcInterfaces is deprecated. A planned consolidation re-homes these terms under the inf: name it mints. Code must therefore reach these terms only through class INF, never inline at a use site. A rename is then one constant here, plus a find-and-replace.
- class kapps_semantic_middleware.vocabulary.RDFS[source]#
Bases:
objectThe rdfs: terms this middleware writes into a query or reads out of one.
- kapps_semantic_middleware.vocabulary.META_TYPE_NAMESPACES = ('http://www.w3.org/2002/07/owl#', 'http://www.w3.org/2000/01/rdf-schema#', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')#
Namespaces of the types every individual carries that say nothing about what it is.
An OGM
ClassSpecresolved against one of these fails outright, andowl:NamedIndividualin particular is asserted on everything the OGM writes. Anything starting with one of these is filtered out when the code asks the graph what an individual actually is.
- class kapps_semantic_middleware.vocabulary.CFC[source]#
Bases:
objectTerms from the Core ontology (cfc:) that the middleware references.
- class kapps_semantic_middleware.vocabulary.SVC[source]#
Bases:
objectTerms from this project Service ontology (svc:).
- class kapps_semantic_middleware.vocabulary.MES[source]#
Bases:
objectTerms from this project MES ontology (mes:), defined in ontology/mes.ttl.
Scope is now handover ability only. Possession itself is Core material-flow state (
cfc:PossessionState/cfc:hasPossessor/cfc:hasPossessedWorkpiece, seeclass CFC). This module no longer mints its own possession vocabulary.
- class kapps_semantic_middleware.vocabulary.INF[source]#
Bases:
objectTerms from the interface vocabulary (inf:).
A parameter is one node hanging off a domain property. It carries the value together with everything needed to reach it over a protocol. The terms split into two layers. The split is load-bearing:
Northbound-safe — declared by the generic marker
isInterfaceAccessibleParameter:accessMode, and the parameter own domain content. Safe to serve to a peer.Southbound only — declared by a protocol marker such as
isInterfaceAccessibleMQTTParameter: the connection metadata. A peer that learned the broker address and topics could drive the device directly. It would bypass the middleware. This must never reach a northbound payload.
The core never decides which terms are southbound by name. A binding descriptor declares its own
connection_metadata. The registry takes the union.