@prefix : . @prefix owl: . @prefix rdf: . @prefix xml: . @prefix xsd: . @prefix foaf: . @prefix rdfs: . @prefix vann: . @prefix dcterms: . @prefix schema: . @prefix hctl: . @prefix wotsec: . @prefix jsonschema: . rdf:type owl:Ontology ; vann:preferredNamespacePrefix "td" ; vann:preferredNamespaceUri "https://www.w3.org/2019/wot/td#" ; owl:versionInfo "0.9.0" ; dcterms:title "Thing Description Ontology"@en ; rdfs:comment "This ontology aims to model the Web of Things domain according to the W3C Interest Group (http://w3c.github.io/wot/)"@en ; dcterms:license ; dcterms:contributor , ; dcterms:author ; dcterms:publisher [ a schema:Organization ; schema:name "W3C Web of Things Working Group" ; schema:url ] . :supportContact rdf:type owl:AnnotationProperty ; rdfs:label "supportContact" ; rdfs:comment "Provides information about the TD maintainer as URI scheme (e.g., mailto [[RFC6068]], tel [[RFC3966]], https[[RFC9112]])."@en ; rdfs:seeAlso schema:contactPoint ; rdfs:isDefinedBy . :versionInfo rdf:type owl:AnnotationProperty ; rdfs:label "versionInfo" ; rdfs:comment "Provides version information."@en ; rdfs:seeAlso schema:version ; rdfs:isDefinedBy . :hasInteractionAffordance rdf:type owl:ObjectProperty ; rdfs:label "hasInteractionAffordance" ; rdfs:comment "Offers an affordance to interact with the Thing"@en ; schema:domainIncludes :Thing ; schema:rangeIncludes :InteractionAffordance ; rdfs:isDefinedBy . :hasPropertyAffordance rdf:type owl:ObjectProperty ; rdfs:label "hasPropertyAffordance" ; rdfs:subPropertyOf :hasInteractionAffordance ; rdfs:comment "All Property-based interaction affordance of the Thing."@en ; schema:rangeIncludes :PropertyAffordance ; rdfs:isDefinedBy . :hasActionAffordance rdf:type owl:ObjectProperty ; rdfs:label "hasActionAffordance" ; rdfs:subPropertyOf :hasInteractionAffordance ; rdfs:comment "All Action-based interaction affordance of the Thing."@en ; schema:rangeIncludes :ActionAffordance ; rdfs:isDefinedBy . :hasEventAffordance rdf:type owl:ObjectProperty ; rdfs:label "hasEventAffordance" ; rdfs:subPropertyOf :hasInteractionAffordance ; rdfs:comment "All Event-based interaction affordance of the Thing."@en ; schema:rangeIncludes :EventAffordance ; rdfs:isDefinedBy . :hasForm rdf:type owl:ObjectProperty ; rdfs:label "hasForm" ; rdfs:comment "Set of form hypermedia controls that describe how an operation can be performed. Forms are serializations of Protocol Bindings. The array cannot be empty"@en ; schema:domainIncludes :InteractionAffordance, :Thing ; schema:rangeIncludes hctl:Form ; rdfs:isDefinedBy . :hasLink rdf:type owl:ObjectProperty ; rdfs:label "hasLink" ; rdfs:comment "Provides Web links to arbitrary resources that relate to the specified Thing Description."@en ; schema:rangeIncludes hctl:Link ; rdfs:isDefinedBy . :hasUriTemplateSchema rdf:type owl:ObjectProperty ; rdfs:label "hasUriTemplateSchema" ; rdfs:comment "Define URI template variables according to [[RFC6570]] as collection based on schema specifications. The individual variables DataSchema cannot be an ObjectSchema or an ArraySchema."@en ; schema:domainIncludes :InteractionAffordance ; rdfs:isDefinedBy . :hasInputSchema rdf:type owl:ObjectProperty ; rdfs:label "hasInputSchema" ; rdfs:comment "Used to define the input data schema of the action."@en ; schema:domainIncludes :ActionAffordance ; rdfs:isDefinedBy . :hasOutputSchema rdf:type owl:ObjectProperty ; rdfs:label "hasOutputSchema" ; rdfs:comment "Used to define the output data schema of the action."@en ; schema:domainIncludes :ActionAffordance ; rdfs:isDefinedBy . :hasSubscriptionSchema rdf:type owl:ObjectProperty ; rdfs:label "hasSubscriptionSchema" ; rdfs:comment "Defines data that needs to be passed upon subscription, e.g., filters or message format for setting up Webhooks."@en ; schema:domainIncludes :EventAffordance ; rdfs:isDefinedBy . :hasNotificationSchema rdf:type owl:ObjectProperty ; rdfs:label "hasNotificationSchema" ; rdfs:comment "Defines the data schema of the Event instance messages pushed by the Thing."@en ; schema:domainIncludes :EventAffordance ; rdfs:isDefinedBy . :hasNotificationResponseSchema rdf:type owl:ObjectProperty ; rdfs:label "hasNotificationResponseSchema" ; rdfs:comment "Defines the data schema of the Event response messages sent by the consumer in a response to a data message."@en ; schema:domainIncludes :EventAffordance ; rdfs:isDefinedBy : . :hasCancellationSchema rdf:type owl:ObjectProperty ; rdfs:label "hasCancellationSchema" ; rdfs:comment "Defines any data that needs to be passed to cancel a subscription, e.g., a specific message to remove a Webhook"@en ; schema:domainIncludes :EventAffordance ; rdfs:isDefinedBy . :hasSecurityConfiguration rdf:type owl:ObjectProperty ; rdfs:label "hasSecurityConfiguration" ; rdfs:comment "A security configuration is a a security scheme applied to a (set of) affordance(s)."@en ; schema:domainIncludes :Thing, hctl:Form ; rdfs:isDefinedBy . :definesSecurityScheme rdf:type owl:ObjectProperty ; rdfs:label "definesSecurityScheme" ; rdfs:comment "A Thing may define abstract security schemes, used to configure the secure access of (a set of) affordance(s)." ; schema:domainIncludes :Thing ; rdfs:isDefinedBy . :hasInstanceConfiguration rdf:type owl:ObjectProperty ; rdfs:label "hasInstanceConfiguration" ; rdfs:comment "Instantiation, as used here, is a form of non-symmetric equivalence between a scheme and a configuration: whatever statement on the scheme is also true of the configuration but not vice-versa." ; schema:domainIncludes wotsec:SecurityScheme ; rdfs:isDefinedBy . :followsProfile rdf:type owl:DatatypeProperty ; rdfs:label "followsProfile" ; rdfs:comment "Indicates the WoT Profile mechanisms followed by this Thing Description and the corresponding Thing implementation."@en ; schema:domainIncludes :Thing ; schema:rangeIncludes xsd:anyURI ; rdfs:isDefinedBy . :baseURI rdf:type owl:DatatypeProperty ; rdfs:label "baseURI" ; rdfs:comment "Define the base URI that is used for all relative URI references throughout a TD document. In TD instances, all relative URIs are resolved relative to the base URI using the algorithm defined in [RFC3986]. base does not affect the URIs used in @context and the IRIs used within Linked Data [LINKED-DATA] graphs that are relevant when semantic processing is applied to TD instances."@en ; schema:domainIncludes :Thing ; schema:rangeIncludes schema:URL ; rdfs:isDefinedBy . :instance rdf:type owl:DatatypeProperty ; rdfs:label "instance" ; rdfs:comment "Provides a version identicator of this TD instance."@en ; schema:domainIncludes :versionInfo ; rdfs:isDefinedBy . :model rdf:type owl:DatatypeProperty ; rdfs:label "model" ; rdfs:comment "Provides a version indicator of the underlying TM."@en ; schema:domainIncludes :versionInfo ; rdfs:isDefinedBy . :isSafe rdf:type owl:DatatypeProperty ; rdfs:label "isSafe" ; rdfs:comment "Signals if the action is safe (=true) or not. Used to signal if there is no internal state (cf. resource state) is changed when invoking an Action. In that case responses can be cached as example."@en ; schema:domainIncludes :ActionAffordance ; schema:rangeIncludes schema:Boolean ; rdfs:isDefinedBy . :isIdempotent rdf:type owl:DatatypeProperty ; rdfs:label "isIdempotent" ; rdfs:comment "Indicates whether the action is idempotent (=true) or not. Informs whether the action can be called repeatedly with the same result, if present, based on the same input."@en ; schema:domainIncludes :ActionAffordance ; schema:rangeIncludes schema:Boolean ; rdfs:isDefinedBy . :isSynchronous rdf:type owl:DatatypeProperty ; rdfs:label "isSynchronous" ; rdfs:comment "Indicates whether the action is synchronous (=true) or not. A synchronous action means that the response of action contains all the information about the result of the action and no further querying about the status of the action is needed. Lack of this keyword means that no claim on the synchronicity of the action can be made."@en ; schema:domainIncludes :ActionAffordance ; schema:rangeIncludes schema:Boolean ; rdfs:isDefinedBy : . :isObservable rdf:type owl:DatatypeProperty ; rdfs:label "isObservable" ; rdfs:comment "A hint that indicates whether Servients hosting the Thing and Intermediaries should provide a Protocol Binding that supports the observeproperty and unobserveproperty operations for this Property."@en ; schema:domainIncludes :PropertyAffordance ; schema:rangeIncludes schema:Boolean ; rdfs:isDefinedBy . :name rdf:type owl:DatatypeProperty ; rdfs:label "name" ; rdfs:comment "Indexing property to store entity names when serializing them in a JSON-LD @index container."@en ; schema:domainIncludes :InteractionAffordance ; schema:rangeIncludes schema:Text ; rdfs:isDefinedBy . :title rdf:type owl:DatatypeProperty ; rdfs:label "title" ; rdfs:comment "title of the TD element (Thing, interaction affordance or data schema)" ; schema:domainIncludes :Thing, :InteractionAffordance, jsonschema:DataSchema ; schema:rangeIncludes schema:Text ; rdfs:subPropertyOf dcterms:title ; rdfs:isDefinedBy . :titleInLanguage rdf:type owl:DatatypeProperty ; rdfs:label "titleInLanguage" ; rdfs:comment "title of the TD element (Thing, interaction affordance or data schema) with language tag. By convention, a language tag must be added to the object of 'titleInLanguage' triples. Otherwise, use 'title'." ; schema:domainIncludes :Thing, :InteractionAffordance, jsonschema:DataSchema ; schema:rangeIncludes schema:Text ; rdfs:subPropertyOf dcterms:title ; rdfs:isDefinedBy . :description rdf:type owl:DatatypeProperty ; rdfs:label "description" ; rdfs:comment "description of the TD element (Thing, interaction affordance, security scheme or data schema)" ; schema:domainIncludes :Thing, :InteractionAffordance, wotsec:SecurityScheme, jsonschema:DataSchema ; schema:rangeIncludes schema:Text ; rdfs:subPropertyOf dcterms:description ; rdfs:isDefinedBy . :descriptionInLanguage rdf:type owl:DatatypeProperty ; rdfs:label "descriptionInLanguage" ; rdfs:comment "description of the TD element (Thing, interaction affordance, security scheme or data schema) with language tag. By convention, a language tag must be added to the object of 'descriptionInLanguage' triples. Otherwise, use 'description'." ; schema:domainIncludes :Thing, :InteractionAffordance, wotsec:SecurityScheme, jsonschema:DataSchema ; schema:rangeIncludes schema:Text ; rdfs:subPropertyOf dcterms:description ; rdfs:isDefinedBy . :ActionAffordance rdf:type rdfs:Class, owl:Class ; rdfs:label "ActionAffordance" ; rdfs:subClassOf :InteractionAffordance ; rdfs:comment "An Interaction Affordance that allows to invoke a function of the Thing, which manipulates state (e.g., toggling a lamp on or off) or triggers a process on the Thing (e.g., dim a lamp over time)."@en ; rdfs:isDefinedBy . :EventAffordance rdf:type rdfs:Class, owl:Class ; rdfs:label "EventAffordance" ; rdfs:subClassOf :InteractionAffordance ; rdfs:comment "An Interaction Affordance that describes an event source, which asynchronously pushes event data to Consumers (e.g., overheating alerts)."@en ; rdfs:isDefinedBy . :InteractionAffordance rdf:type rdfs:Class, owl:Class ; rdfs:label "InteractionAffordance" ; rdfs:comment "Metadata of a Thing that shows the possible choices to Consumers, thereby suggesting how Consumers may interact with the Thing. There are many types of potential affordances, but W3C WoT defines three types of Interaction Affordances: Properties, Actions, and Events."@en ; rdfs:isDefinedBy . :PropertyAffordance rdf:type rdfs:Class, owl:Class ; rdfs:label "PropertyAffordance" ; rdfs:subClassOf :InteractionAffordance ; rdfs:comment "An Interaction Affordance that exposes state of the Thing. This state can then be retrieved (read) and/or updated (write). Things can also choose to make Properties observable by pushing the new state after a change."@en ; rdfs:isDefinedBy . :Thing rdf:type rdfs:Class, owl:Class ; rdfs:label "Thing"@en ; rdfs:comment "An abstraction of a physical or a virtual entity whose metadata and interfaces are described by a WoT Thing Description, whereas a virtual entity is the composition of one or more Things."@en ; rdfs:isDefinedBy . :OperationType rdf:type rdfs:Class, owl:Class ; rdfs:label "OperationType" ; rdfs:comment "Enumeration of well-known operation types necessary to implement the WoT interaction model"@en ; rdfs:subClassOf schema:Enumeration ; rdfs:isDefinedBy . :readProperty rdf:type :OperationType ; rdfs:label "readProperty" ; rdfs:comment "Operation type of forms used to read a property value"@en ; rdfs:isDefinedBy . :writeProperty rdf:type :OperationType ; rdfs:label "writeProperty" ; rdfs:comment "Operation type of forms used to write a property value"@en ; rdfs:isDefinedBy . :observeProperty rdf:type :OperationType ; rdfs:label "observeProperty" ; rdfs:comment "Operation type of forms used to observe a property value"@en ; rdfs:isDefinedBy . :unobserveProperty rdf:type :OperationType ; rdfs:label "unobserveProperty" ; rdfs:comment "Operation type of forms used to unobserve a property value"@en ; rdfs:isDefinedBy . :readMultipleProperties rdf:type :OperationType ; rdfs:label "readMultipleProperties" ; rdfs:comment "Operation type of forms used to read a property value"@en ; rdfs:isDefinedBy . :writeMultipleProperties rdf:type :OperationType ; rdfs:label "writeMultipleProperties" ; rdfs:comment "Operation type of forms used to write a property value"@en ; rdfs:isDefinedBy . :readAllProperties rdf:type :OperationType ; rdfs:label "readAllProperties" ; rdfs:comment "Operation type of forms used to read all property values"@en ; rdfs:isDefinedBy . :writeAllProperties rdf:type :OperationType ; rdfs:label "writeAllProperties" ; rdfs:comment "Operation type of forms used to read a property value"@en ; rdfs:isDefinedBy . :observeAllProperties rdf:type :OperationType ; rdfs:label "observeAllProperties" ; rdfs:comment "Operation type of forms used to observe all property values"@en ; rdfs:isDefinedBy . :unobserveAllProperties rdf:type :OperationType ; rdfs:label "unobserveAllProperties" ; rdfs:comment "Operation type of forms used to unobserve all property value"@en ; rdfs:isDefinedBy . :invokeAction rdf:type :OperationType ; rdfs:label "invokeAction" ; rdfs:comment "Operation type of forms used to read a property value"@en ; rdfs:isDefinedBy . :queryAction rdf:type :OperationType ; rdfs:label "queryAction" ; rdfs:comment "Operation type of forms used to query the status of an action"@en ; rdfs:isDefinedBy . :cancelAction rdf:type :OperationType ; rdfs:label "cancelAction" ; rdfs:comment "Operation type of forms used to cancel an action"@en ; rdfs:isDefinedBy . :queryAllActions rdf:type :OperationType ; rdfs:label "queryAllActions" ; rdfs:comment "Operation type of forms used to query the status of all actions"@en ; rdfs:isDefinedBy . :subscribeEvent rdf:type :OperationType ; rdfs:label "subscribeEvent" ; rdfs:comment "Operation type of forms used to read a property value"@en ; rdfs:isDefinedBy . :unsubscribeEvent rdf:type :OperationType ; rdfs:label "unsubscribeEvent" ; rdfs:comment "Operation type of forms used to read a property value"@en ; rdfs:isDefinedBy . :subscribeAllEvents rdf:type :OperationType ; rdfs:label "subscribeAllEvents" ; rdfs:comment "Operation type of forms used to subscribe to all event types"@en ; rdfs:isDefinedBy . :unsubscribeAllEvents rdf:type :OperationType ; rdfs:label "unsubscribeAllEvents" ; rdfs:comment "Operation type of forms used to unsubscribe from all event types"@en ; rdfs:isDefinedBy .