In the Web of Things community, the SSN/SOSA ontology, a W3C recommendation, has established itself as a foundational framework for representing semantic sensor networks, modeling sensors, observations, and actuations. However, an explicit representation of message protocols is missing, which limits semantic interoperability in machine-to-machine communication scenarios. To close this gap, we propose MQTT4SSN as an extension to SSN/SOSA that semantically models the MQTT protocol. Furthermore, the ontology addresses use cases without SSN/SOSA implementations by exclusively describing the MQTT messaging protocol. MQTT4SSN represents MQTT entities such as brokers, clients, control packets, topics, and payload metadata, linking them to SSN/SOSA concepts to enable end-to-end traceability between sensing semantics and communication semantics. The ontology captures heterogeneous payload formats, encodings, and transport metadata, enabling machine-interpretable description and integration of transmitted content. MQTT4SSN represents an extensible and reusable resource that is accessible according to the FAIR principles and documented as an Ontology Specification Draft.
Doerner, N., & Maleshkova, M. (2025). MQTT4SSN: An Ontology for the MQTT Message Protocol. In F. Novakazi & A. S. Dalal (Eds.), Joint Proceedings of the 16th Workshop on Ontology Design and Patterns (WOP 2025) and the 1st Workshop on Bridging Hybrid Intelligence and the Semantic Web (HAIBRIDGE 2025), co-located with ISWC 2025 (CEUR Workshop Proceedings, Vol. 4093, pp. 57–70). CEUR-WS.org. https://doi.org/10.5281/zenodo.16704302
MQTT, Ontology Engineering, Sensor Ontology, Semantic Sensor Network, Message Protocol, Smart Sensor
MQTT4SSN Ontology
The MQTT4SSN Ontology provides rdf:type semantic model for representing the MQTT message protocol, containing the transmitted data. It extends the W3C SSN/SOSA ontology with the MQTT message protocol component.
Relation between an Actuation and the property of a FeatureOfInterest it is acting upon.
acts on property
In the activity (Actuation) of automatically closing a window if the temperature in a room drops below 20 degrees Celsius, the property on which the Actuator acts upon is the state of the window as it changes from being open to being closed.
A relation between an Observation and the entity whose quality was observed, or between an Actuation and the entity whose property was modified, or between an act of Sampling and the entity that was sampled.
has feature of interest
For example, in an Observation of the weight of a person, the FeatureOfInterest is the person and the property is its weight.
Relation linking an Observation or Actuation or act of Sampling and a Result or Sample.
has result
Relation between a FeatureOfInterest and the Sample used to represent it.
has sample
Relation between a Platform and a Sensor, Actuator, Sampler, or Platform, hosted or mounted on it.
hosts
Relation between an ActuatableProperty of a FeatureOfInterest and an Actuation changing its state.
is acted on by
A relation between a FeatureOfInterest and an Observation about it, an Actuation acting on it, or an act of Sampling that sampled it.
is feature of interest of
Relation between a Sensor, Actuator, Sampler, or Platform, and the Platform that it is mounted on or hosted by.
is hosted by
Relation between an ObservableProperty and the Sensor able to observe it.
is observed by
Relation linking a Result to the Observation or Actuation or act of Sampling that created or caused it.
is result of
Relation from a Sample to the FeatureOfInterest that it is intended to be representative of.
is sample of
Relation between an Actuator and the Actuation it has made.
made actuation
Relation linking an Actuation to the Actuator that made that Actuation.
made by actuator
Relation linking an act of Sampling to the Sampler (sampling device or entity) that made it.
made by sampler
Relation between an Observation and the Sensor which made the Observation.
made by sensor
Relation between a Sensor and an Observation made by the Sensor.
made observation
Relation between a Sampler (sampling device or entity) and the Sampling act it performed.
made sampling
Relation linking an Observation to the property that was observed. The ObservableProperty should be a property of the FeatureOfInterest (linked by hasFeatureOfInterest) of this Observation.
observed property
Relation between a Sensor and an ObservableProperty that it is capable of sensing.
observes
The time that the Result of an Observation, Actuation or Sampling applies to the FeatureOfInterest. Not necessarily the same as the resultTime. May be an Interval or an Instant, or some other compound TemporalEntity.
phenomenon time
A relation to link to a re-usable Procedure used in making an Observation, an Actuation, or a Sample, typically through a Sensor, Actuator or Sampler.
used procedure
Relation between a Deployment and the Platform on which the Systems are deployed.
deployed on platform
Relation between a Deployment and a deployed System.
deployed system
A relation from a Sensor to the Stimulus that the Sensor detects. The Stimulus itself will be serving as a proxy for some ObservableProperty.
detects
A relation between some aspect of an entity and a Property.
for property
For example, from a Sensor to the properties it can observe; from an Actuator to the properties it can act on; from a Deployment to the properties it was installed to observe or act on; from a SystemCapability to the Property the capability is described for.
Relation between a System and a Deployment, recording that the System is deployed in that Deployment.
has deployment
Relation between a Procedure and an Input to it.
has input
Relation between a Procedure and an Output of it.
has output
Relation between an entity and a Property of that entity.
has property
Relation between a System and its component parts.
has subsystem
Relation between a Procedure (an algorithm, procedure or method) and an entity that implements that Procedure in some executable way.
implemented by
For example, the relationship between a scientific measuring Procedure and a sensor that senses via that Procedure.
Relation between an entity that implements a Procedure in some executable way and the Procedure (an algorithm, procedure or method).
implements
For example, the relationship between a sensor and the scientific measuring Procedure via which it senses.
Relation between a Platform and a Deployment, meaning that the deployedSystems of the Deployment are hosted on the Platform.
in deployment
For example, a relation between a buoy and a deployment of several Sensors.
Relation between a Property and the entity it belongs to.
is property of
A relation from a Stimulus to the Property that the Stimulus is serving as a proxy for.
is proxy for
For example, the expansion of quicksilver is a stimulus that serves as a proxy for some temperature property. An increase or decrease in the velocity of spinning cups on a wind sensor is serving as a proxy for the wind speed.
Relation between an Observation and the Stimulus that originated it.
was originated by
Indicates that an MQTT Broker forwards a PUBLISH packet to subscribers.
forwards PUBLISH Packet
Links an MQTT Topic to the subject (Actuation, Actuation collection, Observation or Observation Collection).
has topic subject (Actuation, Actuation collection, Observation or Observation Collection)
Relates a SOSA platform to an MQTT Client running on it.
has MQTT Client
Links an MQTT Broker to an MQTT Client that is connected to it.
has connected MQTT Client
Links an MQTT Payload to an ordered RDF list naming fields encoded within the payload content.
has encoded fields
Links an MQTT Control Packet to its Fixed Header.
has Fixed Header
Links an MQTT Topic to the subject (Feature of Interest).
has topic subject (Feature of Interest)
Relates a network connection to its network participant (MQTT Client or MQTT Broker).
has participant
Links an MQTT Control Packet to its MQTT Payload.
has MQTT Payload
Specifies the size of an MQTT Payload as a QUDT quantity value (e.g., unit:Byte).
has payload size
Links an MQTT Topic to the subject (Property).
has topic subject (Property)
Links a PUBLISH packet to its specific Fixed Header.
has PUBLISH Fixed Header
Links a PUBLISH packet to its MQTT Payload.
has PUBLISH Payload
Links a PUBLISH packet to its specific Variable Header.
has PUBLISH Variable Header
Links an MQTT Topic to the conceptual subject carried on that topic.
has topic subject
Links a SUBSCRIBE packet to its specific Fixed Header.
has SUBSCRIBE Fixed Header
Links a SUBSCRIBE packet to its MQTT Payload.
has SUBSCRIBE Payload
Links a SUBSCRIBE packet to its specific Variable Header.
has SUBSCRIBE Variable Header
Links a SUBSCRIBE Payload to one or more MQTT Subscription Entries.
has MQTT Subscription Entries
Relates a Subscription Entry or an UNSUBSCRIBE payload to an MQTT Topic Filter.
has MQTT Topic Filter
Links a PUBLISH Variable Header to the MQTT Topic to which the message is published.
has MQTT Topic (name)
Links an UNSUBSCRIBE packet to its specific Fixed Header.
has UNSUBSCRIBE Fixed Header
Links an UNSUBSCRIBE packet to its MQTT Payload.
has UNSUBSCRIBE Payload
Links an UNSUBSCRIBE packet to its specific Variable Header.
has UNSUBSCRIBE Variable Header
Links an MQTT Control Packet to its Variable Header.
has Variable Header
Links an MQTT Client (as a SOSA platform) to SOSA systems (sensors/actuators) it hosts.
Indicates the MQTT Broker that accepted the client's connection request.
is accepted by
Links a topic subject (Actuation, Actuation collection, Observation or Observation Collection) to the MQTT Topic that carries it.
is topic subject (Actuation, Actuation collection, Observation or Observation Collection) of
Links an MQTT Client to the MQTT Broker it is currently connected to.
is connected to MQTT Broker
Links an RDF list of field names to the MQTT Payload that contains them.
is encoded in MQTT Payload
Links a topic subject (Feature of Interest) to the MQTT Topic that carries it.
is topic subject (Feature of Interest) of
Links a Fixed Header to the MQTT Control Packet containing it.
is Fixed Header of
Links a SOSA system to the hosting MQTT Client.
Indicates the MQTT Client that initiated the connection to the MQTT Broker.
is initiated by
Indicates that an MQTT Topic is matched by a given MQTT Topic Filter.
is matched by MQTT Topic Filter
Links an MQTT Payload to the MQTT Control Packet containing it.
is MQTT Payload of
Links a topic subject (Property) to the MQTT Topic that carries it.
is topic subject (Property) of
Links a PUBLISH Fixed Header to its MQTT Control Packet.
is PUBLISH Fixed Header of
Links a PUBLISH Payload to its MQTT Control Packet.
is PUBLISH Payload of
Links a PUBLISH Variable Header to its MQTT Control Packet.
is PUBLISH Variable Header of
Relates an MQTT Control Packet to the MQTT Client that sent it.
is sent by MQTT Client
Links a topic subject (e.g., Observation, Actuation) to the MQTT Topic that carries it.
is topic subject of
Links a SUBSCRIBE Fixed Header to its MQTT Control Packet.
is SUBSCRIBE Fixed Header of
Links an MQTT Subscription Entry to its SUBSCRIBE Payload.
is MQTT Subscription Entry of
Links a SUBSCRIBE Payload to its MQTT Control Packet.
is SUBSCRIBE Payload of
Links a SUBSCRIBE Variable Header to its MQTT Control Packet.
is SUBSCRIBE Variable Header of
Relates an MQTT Topic Filter to a Subscription Entry or an UNSUBSCRIBE payload.
is MQTT Topic Filter of
Links an MQTT Topic to which the message is published to a PUBLISH Variable Header.
is MQTT Topic (name) of
Links an UNSUBSCRIBE Fixed Header to its MQTT Control Packet.
is UNSUBSCRIBE Fixed Header of
Links an UNSUBSCRIBE Payload to its MQTT Control Packet.
is UNSUBSCRIBE Payload of
Links an UNSUBSCRIBE Variable Header to its MQTT Control Packet.
is UNSUBSCRIBE Variable Header of
Links a Variable Header to the MQTT Control Packet containing it.
is Variable Header of
Links an actuator to the MQTT Topic from which it receives actuation commands.
listens to MQTT Topic
Indicates that an MQTT Topic Filter matches a particular MQTT Topic.
matches MQTT Topic
Links a sensor to the MQTT Topic to which it publishes observations.
observes MQTT Topic
Indicates that the MQTT Payload encodes a single SOSA Actuation command.
payload encodes SOSA Actuation
Indicates that the MQTT Payload encodes a collection of actuation commands.
payload encodes SOSA Actuation Collection
Indicates that the MQTT Payload encodes a SOSA Observation.
payload encodes SOSA Observation
Indicates that the MQTT Payload encodes a collection of SOSA Observations.
payload encodes SOSA Observation Collection
Specializes mqtt:sendsControlPacket for PUBLISH packets.
publishes PUBLISH Packet
Indicates that an MQTT Broker receives a SUBSCRIBE packet from an MQTT Client.
receives SUBSCRIBE Packet
Indicates that an MQTT Broker receives an UNSUBSCRIBE packet from an MQTT Client.
receives UNSUBSCRIBE Packet
Links an MQTT Client to the platform on which it operates.
runs on platform
Relates an MQTT Client to an MQTT Control Packet it sends.
sends MQTT Control Packet
Specializes mqtt:sendsControlPacket for SUBSCRIBE packets.
sends SUBSCRIBE Packet
Specializes mqtt:sendsControlPacket for UNSUBSCRIBE packets.
sends UNSUBSCRIBE Packet
Relates a network participant (MQTT Client or MQTT Broker) to a network connection it uses.
uses connection
The simple value of an Observation or Actuation or act of Sampling.
has simple result
For instance, the values 23 or true.
The result time is the instant of time when the Observation, Actuation or Sampling activity was completed.
result time
The MQTT Client identifier used when connecting to an MQTT Broker.
MQTT Client identifier
The MQTT Topic Filter pattern as a string (e.g., 'sensor/+/temp' or 'fabrik/zentrierung/#').
MQTT Topic Filter pattern
The hostname or IP address of an MQTT Broker.
MQTT Broker host
A 16-bit identifier used to correlate MQTT messages when QoS > 0.
packet identifier
The application message body as a string (possibly serialized/encoded).
payload content
The delimiter used to separate fields in the payload content.
payload content delimiter
The MIME type of the payload content (e.g., 'application/json').
payload content type
The character encoding or serialization used for the payload (e.g., 'UTF-8', 'Base64').
payload encoding
The TCP port on which an MQTT Broker listens.
MQTT Broker port
Not mapped to mqv:hasQoSFlag because MQV models QoS as an object property, while mqtt:hasQosLevel is a datatype property.
The MQTT Quality of Service level (0 = at most once, 1 = at least once, 2 = exactly once).
QoS level
True if this is a duplicate delivery of an earlier PUBLISH message.
DUP flag
True if the message should be retained on the MQTT Broker.
RETAIN flag
True if the Network Connection is protected via TLS, otherwise false.
uses TLS
An actuatable quality (property, characteristic) of a FeatureOfInterest.
Actuatable Property
A window actuator acts by changing the state between a frame and a window. The ability of the window to be opened and closed is its ActuatableProperty.
An Actuation carries out an (Actuation) Procedure to change the state of the world using an Actuator.
Actuation
The activity of automatically closing a window if the temperature in a room drops below 20 degree Celsius. The activity is the Actuation and the device that closes the window is the Actuator. The Procedure is the rule, plan, or specification that defines the conditions that triggers the Actuation, here a drop in temperature.
A device that is used by, or implements, an (Actuation) Procedure that changes the state of the world.
Actuator
A window actuator for automatic window control, i.e., opening or closing the window.
The thing whose property is being estimated or calculated in the course of an Observation to arrive at a Result or whose property is being manipulated by an Actuator, or which is being sampled or transformed in an act of Sampling.
Feature Of Interest
When measuring the height of a tree, the height is the observed ObservableProperty, 20m may be the Result of the Observation, and the tree is the FeatureOfInterest. A window is a FeatureOfInterest for an automatic window control Actuator.
An observable quality (property, characteristic) of a FeatureOfInterest.
Observable Property
The height of a tree, the depth of a water body, or the temperature of a surface are examples of observable properties, while the value of a classic car is not (directly) observable but asserted.
Act of carrying out an (Observation) Procedure to estimate or calculate a value of a property of a FeatureOfInterest. Links to a Sensor to describe what made the Observation and how; links to an ObservableProperty to describe what the result is an estimate of, and to a FeatureOfInterest to detail what that property was associated with.
Observation
The activity of estimating the intensity of an Earthquake using the Mercalli intensity scale is an Observation as is measuring the moment magnitude, i.e., the energy released by said earthquake.
A Platform is an entity that hosts other entities, particularly Sensors, Actuators, Samplers, and other Platforms.
Platform
A post, buoy, vehicle, ship, aircraft, satellite, cell-phone, human or animal may act as platforms for (technical or biological) sensors or actuators.
A workflow, protocol, plan, algorithm, or computational method specifying how to make an Observation, create a Sample, or make a change to the state of the world (via an Actuator). A Procedure is re-usable, and might be involved in many Observations, Samplings, or Actuations. It explains the steps to be carried out to arrive at reproducible results.
Procedure
The measured wind speed differs depending on the height of the sensor above the surface, e.g., due to friction. Consequently, procedures for measuring wind speed define a standard height for anemometers above ground, typically 10m for meteorological measures and 2m in Agrometeorology. This definition of height, sensor placement, and so forth are defined by the Procedure.
Many observations may be created via the same Procedure, the same way as many tables are assembled using the same instructions (as information objects, not their concrete realization).
The Result of an Observation, Actuation, or act of Sampling. To store an observation's simple result value one can use the hasSimpleResult property.
Result
The value 20 as the height of a certain tree together with the unit, e.g., Meter.
A Sample is the result from an act of Sampling.
Feature which is intended to be representative of a FeatureOfInterest on which Observations may be made.
Physical samples are sometimes known as 'specimens'.
Samples are artifacts of an observational strategy, and have no significant function outside of their role in the observation process. The characteristics of the samples themselves are of little interest, except perhaps to the manager of a sampling campaign. A Sample is intended to sample some FatureOfInterest, so there is an expectation of at least one isSampleOf property. However, in some cases the identity, and even the exact type, of the sampled feature may not be known when observations are made using the sampling features.
Sample
A 'station' is essentially an identifiable locality where a sensor system or Procedure may be deployed and an observation made. In the context of the observation model, it connotes the 'world in the vicinity of the station', so the observed properties relate to the physical medium at the station, and not to any physical artifact such as a mooring, buoy, benchmark, monument, well, etc.
A statistical sample is often designed to be characteristic of an entire population, so that observations can be made regarding the sample that provide a good estimate of the properties of the population.
A transient sample, such as a ships-track or flight-line, might be identified and described, but is unlikely to be revisited exactly.
A device that is used by, or implements, a Sampling Procedure to create or transform one or more samples.
Sampler
A ball mill, diamond drill, hammer, hypodermic syringe and needle, image Sensor or a soil auger can all act as sampling devices (i.e., be Samplers). However, sometimes the distinction between the Sampler and the Sensor is not evident, as they are packaged as a unit. A Sampler need not be a physical device.
An act of Sampling carries out a sampling Procedure to create or transform one or more samples.
Sampling
Crushing a rock sample in a ball mill.
Digging a pit through a soil sequence.
Dividing a field site into quadrants.
Drawing blood from a patient.
Drilling an observation well.
Establishing a station for environmental monitoring.
Registering an image of the landscape.
Selecting a subset of a population.
Sieving a powder to separate the subset finer than 100-mesh.
Splitting a piece of drill-core to create two new samples.
Taking a diamond-drill core from a rock outcrop.
Device, agent (including humans), or software (simulation) involved in, or implementing, a Procedure. Sensors respond to a stimulus, e.g., a change in the environment, or input data composed from the results of prior Observations, and generate a Result. Sensors can be hosted by Platforms.
Sensor
Accelerometers, gyroscopes, barometers, magnetometers, and so forth are Sensors that are typically mounted on a modern smart phone (which acts as Platform). Other examples of sensors include the human eyes.
Describes the Deployment of one or more Systems for a particular purpose. Deployment may be done on a Platform.
Deployment
For example, a temperature Sensor deployed on a wall, or a whole network of Sensors deployed for an Observation campaign.
Any information that is provided to a Procedure for its use.
Input
Any information that is reported from a Procedure.
Output
A quality of an entity. An aspect of an entity that is intrinsic to and cannot exist without the entity.
Property
An event in the real world that 'triggers' the Sensor. The properties associated to the Stimulus may be different to the eventual observed ObservableProperty. It is the event, not the object, that triggers the Sensor.
Stimulus
System is a unit of abstraction for pieces of infrastructure that implement Procedures. A System may have components, its subsystems, which are other systems.
System
An MQTT Broker that accepts client connections, manages subscriptions, and forwards published messages.
MQTT Broker
An MQTT Client that connects to an MQTT Broker and publishes or subscribes to MQTT Topics; may host SOSA systems.
MQTT Client
An MQTT Control Packet such as PUBLISH, SUBSCRIBE, or UNSUBSCRIBE.
MQTT Control Packet
The header present in all MQTT Control Packets, containing the packet type and flags.
MQTT Fixed Header
A transport-layer connection between an MQTT Client and an MQTT Broker (optionally secured with TLS).
MQTT Network Connection
An entity participating in an MQTT network, such as an MQTT Client or an MQTT Broker.
MQTT Network Participant
The application data carried by an MQTT Control Packet.
MQTT Payload
The Fixed Header used in PUBLISH packets.
MQTT PUBLISH Fixed Header
An MQTT Control Packet used by an MQTT Client to publish an application message to an MQTT Topic.
MQTT PUBLISH Packet
The payload of a PUBLISH packet (application message body).
MQTT PUBLISH Payload
The Variable Header of a PUBLISH packet; includes the MQTT Topic and optionally a packet identifier.
MQTT PUBLISH Variable Header
The Fixed Header used in SUBSCRIBE packets.
MQTT SUBSCRIBE Fixed Header
An MQTT Control Packet used by an MQTT Client to subscribe to one or more MQTT Topic Filters.
MQTT SUBSCRIBE Packet
The Variable Header of a SUBSCRIBE packet; typically includes the packet identifier.
MQTT SUBSCRIBE Variable Header
A single requested subscription consisting of an MQTT Topic Filter and an associated QoS level.
MQTT Subscription Entry
The payload of a SUBSCRIBE packet, listing MQTT Subscription Entries.
MQTT SUBSCRIBE Payload
A hierarchical MQTT Topic to which MQTT Clients publish and/or subscribe.
MQTT Topic
A filter expression (e.g., with wildcards) used in SUBSCRIBE/UNSUBSCRIBE to match MQTT Topics.
MQTT Topic Filter
A conceptual subject carried on an MQTT Topic, e.g., an Observation, Actuation, Property, or Feature of Interest.
MQTT Topic Subject
The Fixed Header used in UNSUBSCRIBE packets.
MQTT UNSUBSCRIBE Fixed Header
An MQTT Control Packet used by an MQTT Client to remove one or more subscriptions.
MQTT UNSUBSCRIBE Packet
The Variable Header of an UNSUBSCRIBE packet; typically includes the packet identifier.
MQTT UNSUBSCRIBE Variable Header
The payload of an UNSUBSCRIBE packet, listing MQTT Topic Filters to be removed.
MQTT UNSUBSCRIBE Payload
The optional header carrying packet-specific metadata (e.g., packet identifier, MQTT Topic name).
MQTT Variable Header
This research as part of the project EKI is funded by dtec.bw – Digitalization and Technology Research Center of the Bundeswehr which we gratefully acknowledge. dtec.bw is funded by the European Union – NextGenerationEU.
Digitalization and Technology Research Center of the Bundeswehr
W3C/OGC Spatial Data on the Web Working Group