@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix sosa: <http://www.w3.org/ns/sosa/>.
@prefix qudt: <http://qudt.org/schema/qudt/>.
@prefix vsso: <http://automotive.eurecom.fr/vsso#> .
@prefix cdt: <http://w3id.org/lindt/custom_datatypes#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix vann: <http://purl.org/vocab/vann/> .

vsso: rdf:type owl:Ontology ;
  owl:imports sosa: ;
  dct:title "VSSo: The GENIVI VSS Ontology";
  vann:preferredNamespaceUri "http://automotive.eurecom.fr/vsso" ;
  dct:issued "2018-04-23"^^xsd:date ;
  dc:description "This ontology describes the car's attributes, branches and signals defined in GENIVI's Vehicle Signal Specification." ;
  dct:license <http://creativecommons.org/licenses/by/4.0/> ;
  dct:modified "2020-06-23"^^xsd:date ;
  dct:created "2018-01-10"^^xsd:date ;
  dct:creator "Benjamin Klotz"^^xsd:string ;
  dct:creator "Raphael Troncy"^^xsd:string ;
  dct:creator <https://www.linkedin.com/in/danielwilms> ;
  owl:versionInfo """v1.0 23/06/2020"""@en ;
  vann:preferredNamespacePrefix "vsso" .

#TODO: check values in vsso:position datatypes

vsso:Branch a rdfs:Class, owl:Class;
  rdfs:label "Branch"@en;
  rdfs:comment "Branch of the vehicle. Either a component (Body, Chassis...) or the complete vehicle"@en.

vsso:ObservableSignal a rdfs:Class, owl:Class;
  rdfs:subClassOf sosa:ObservableProperty;
  rdfs:label "Observable signal"@en;
  rdfs:comment "All observable signals that can dynamically be updated by the vehicle"@en.

vsso:ActuableSignal a rdfs:Class, owl:Class;
  rdfs:subClassOf sosa:ActuableProperty;
  rdfs:label "Actuable signal"@en;
  rdfs:comment "All actuable signals that can dynamically be updated by the vehicle"@en.

vsso:partOf a owl:ObjectProperty, owl:TransitiveProperty;
  rdfs:label "part of"@en;
  rdfs:comment "Relationship between 2 branches where one is a component of the second"@en;
  rdfs:domain vsso:Branch;
  rdfs:range vsso:Branch.

vsso:hasSignal a owl:ObjectProperty;
  rdfs:label "has signal"@en;
  rdfs:comment "Property of having signals in a branch"@en;
  rdfs:domain vsso:Branch;
  rdfs:range [owl:unionOf vsso:ObservableSignal, vsso:ActuableSignal].

vsso:attribute a owl:ObjectProperty;
  rdfs:label "Attribute"@en;
  rdfs:comment "Attribute signals that do not change during the power cycle of a vehicle."@en;
  rdfs:domain vsso:Branch.

vsso:position a owl:ObjectProperty;
  rdfs:label "position"@en;
  rdfs:comment "position of the branch within the vehicle"@en;
  rdfs:domain vsso:Branch.

## Branches

#Vehicle branch
vsso:Vehicle a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Vehicle"@en;
  rdfs:comment "Signal/Attribute.Vehicle : High-vele vehicle data"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:AccumulatedIdleTime, vsso:CurrentTravelledDistance, vsso:AccumulatedTravelledDistance, vsso:AccumulatedDriveTime, 
    vsso:AccumulatedIgnitionOffTime, vsso:AccumulatedIgnitionOnTime, vsso:AmbientAirTemperature, vsso:VehicleSpeed]
  ].

vsso:VehicleIdentification a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "VehicleIdentification"@en;
  rdfs:comment "Attribute.Vehicle.VehicleIdentification : Attributes that identify a vehicle"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Vehicle
  ].

vsso:Acceleration a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Acceleration"@en;
  rdfs:comment "Signal/Attribute.Vehicle.Acceleration : Spacial acceleration"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Vehicle
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:LongitudinalAcceleration, vsso:LateralAcceleration, vsso:VerticalAcceleration]
  ].

vsso:AngularVelocity a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Gyro"@en;
  rdfs:comment "Signal/Attribute.Vehicle.AngularVelocity : Spacial rotation"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Vehicle
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:VehiclePitch, vsso:VehicleYaw, vsso:VehicleRoll]
  ].


#ADAS branch
vsso:ADAS a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "ADAS"@en;
  rdfs:comment "Signal/Attribute.ADAS : All Advanced Driver Assist Systems attributes"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Vehicle
  ].

vsso:ObstacleDetection a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "ObstacleDetection"@en;
  rdfs:comment "Signal/Attribute.ADAS.ObstacleDetection : Signals form Obstacle Sensor System"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:ADAS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:ObstacleDetectionIsActive, vsso:ObstacleDetectionError]
  ].

vsso:DistanceToObject a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "DistanceToObject"@en;
  rdfs:comment "Signal/Attribute.ADAS.ObstacleDetection.DistanceToObject : Distance signals form Obstacle Sensor System"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:ObstacleDetection
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:DistanceToObjectSignal
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:TCS a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "TCS"@en;
  rdfs:comment "Signal/Attribute.ADAS.TCS : Traction Control System signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:ADAS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:TCSIsEngaged, vsso:TCSIsActive, vsso:TCSError]
  ].

vsso:CruiseControl a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "CruiseControl"@en;
  rdfs:comment "Signal/Attribute.ADAS.CruiseControl : Signals from Cruise Control system"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:ADAS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:SpeedSet, vsso:CruiseControlIsActive, vsso:CruiseControlError]
  ].

vsso:ABS a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "ABS"@en;
  rdfs:comment "Signal/Attribute.ADAS.ABS : Antilock Braking System signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:ADAS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:ABSIsEngaged, vsso:ABSIsActive, vsso:ABSError]
  ].

vsso:ESC a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "ESC"@en;
  rdfs:comment "Signal/Attribute.ADAS.ESC : Electronic Stability Control System signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:ADAS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:ESCIsEngaged, vsso:ESCIsActive, vsso:ESCError]
  ].

vsso:LaneDepartureDetection a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "LaneDepartureDetection"@en;
  rdfs:comment "Signal/Attribute.ADAS.LaneDepartureDetection : Signals from Land Departure Detection System"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:ADAS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:LaneDepartureDetectionWarning, vsso:LaneDepartureDetectionIsActive, vsso:LaneDepartureDetectionError]
  ].

#Body branch
vsso:Body a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Body"@en;
  rdfs:comment "Signal/Attribute.Body : All body components"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Vehicle
  ].

vsso:Mirrors a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Mirrors"@en;
  rdfs:comment "Signal/Attribute.Body.Mirrors : All mirrors"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Body
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:MirrorTilt, vsso:MirrorPan]
  ].

vsso:MirrorHeating a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Heating"@en;
  rdfs:comment "Signal/Attribute.Body.Mirrors.Left/Right.Heating : Mirror heater signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Mirrors
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:MirrorHeatingStatus
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("left"@en "right"@en)]
  ].

vsso:Horn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Horn"@en;
  rdfs:comment "Signal/Attribute.Body.Horn : Horn signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Body
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:HornIsActive
  ].

vsso:ExternalLights a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Lights"@en;
  rdfs:comment "Signal/Attribute.Body.Lights : All lights"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Body
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf (vsso:IsLeftIndicatorOn vsso:IsRightIndicatorOn vsso:IsLowBeamOn vsso:IsHighBeamOn 
    vsso:IsFrontFogLightOn vsso:IsBrakeLightOn vsso:IsBackUpLightOn vsso:IsParkingLightOn vsso:IsRearFogLightOn vsso:IsHazardLightOn 
    vsso:IsRunningLightOn)]
  ].

vsso:Hood a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Hood"@en;
  rdfs:comment "Signal/Attribute.Body.Hood : Hood status"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Body
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:HoodIsOpen
  ].

vsso:Trunk a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Trunk"@en;
  rdfs:comment "Signal/Attribute.Body.Trunk : Trunk status"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Body
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:TrunkIsOpen, vsso:TrunkIsLocked]
  ].

vsso:Windshield a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Windshield"@en;
  rdfs:comment "Signal/Attribute.Body.Windshield : Windshield signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Body
  ].

vsso:Wiping a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Wiping"@en;
  rdfs:comment "Signal/Attribute.Body.Windshield.Front/Rear.Wiping : Front/Rear windshield wiper signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Windshield
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:WipingStatus
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front"@en "rear"@en)]
  ].

vsso:WindshieldHeating a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Heating"@en;
  rdfs:comment "Signal/Attribute.Body.Windshield.Front/Rear.Heating : Front/Rear windshield heater signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Windshield
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:WindshieldHeatingStatus
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front"@en "rear"@en)]
  ].

vsso:WasherFluid a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "WasherFluid"@en;
  rdfs:comment "Signal/Attribute.Body.Windshield.Front/Rear.WasherFluid : Front/Rear windshield washer fluid signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Windshield
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:WasherFluidLevel, vsso:WasherFluidLevelLow]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front"@en "rear"@en)]
  ].

vsso:Raindetection a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Raindetection"@en;
  rdfs:comment "Signal/Attribute.Body.Raindetection : Rainsensor signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Body
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:RainIntensity
  ].


#Cabin branch
vsso:Cabin a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Cabin"@en;
  rdfs:comment "Signal/Attribute.Cabin : All in-cabin components"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Vehicle
  ].

vsso:Door a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Door"@en;
  rdfs:comment "Signal/Attribute.Cabin.Door : All doors"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Cabin
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:IsChildLockActive, vsso:DoorIsLocked, vsso:DoorIsOpen]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en "all"@en)]
  ].

vsso:WindowShade a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Shade"@en;
  rdfs:comment "Signal/Attribute.Cabin.Door.RowX.Left/Right.Shade : Side window shade"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Door
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:WindowShadePosition, vsso:WindowShadeSwitch]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en "all"@en)]
  ].

vsso:Window a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Window"@en;
  rdfs:comment "Signal/Attribute.Cabin.Door.RowX.Left/Right.Window : Door window status"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Door
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:WindowPosition, vsso:WindowSwitch]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en "all"@en)]
  ].

vsso:HVAC a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "HVAC"@en;
  rdfs:comment "Signal/Attribute.Cabin.HVAC : Climate control"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Cabin
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:AmbientAirTemperature, vsso:IsRearDefrosterActive, vsso:IsFrontDefrosterActive, vsso:IsRecirculationActive,
     vsso:IsAirConditioningActive]
  ].

vsso:LocalHVAC a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "HVAC"@en;
  rdfs:comment "Signal/Attribute.Cabin.HVAC.RowX.Left/Right : Climate control"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:HVAC
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:FanSpeed, vsso:LocalTemperature, vsso:AirDistribution]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:Infotainment a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Infotainment"@en;
  rdfs:comment "Signal/Attribute.Cabin.Infotainment : Infotainment system"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Cabin
  ].

vsso:Media a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Media"@en;
  rdfs:comment "Signal/Attribute.Cabin.Infotainment.Media : All Media actions"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Infotainment
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:MediaAction, vsso:SelectedMediaURI, vsso:MediaVolume, vsso:DeclinedMediaURI]
  ].

vsso:Played a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Played"@en;
  rdfs:comment "Signal/Attribute.Cabin.Infotainment.Media.Played : Collection of signals updated in concert when a new media is played"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Media
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:MediaAlbum, vsso:MediaSource, vsso:MediaTrack, vsso:MediaURI, vsso:MediaArtist]
  ].

vsso:Navigation a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Navigation"@en;
  rdfs:comment "Signal/Attribute.Cabin.Infotainment.Navigation : All navigation actions"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Infotainment
  ].

vsso:DestinatonSet a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "DestinatonSet"@en;
  rdfs:comment "Signal/Attribute.Cabin.Infotainment.Navigation.DestinatonSet : A navigation has been selected."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Navigation
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:DestinationLatitude, vsso:DestinationLongitude]
  ].

vsso:CurrentLocation a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "CurrentLocation"@en;
  rdfs:comment "Signal/Attribute.Cabin.Infotainment.Navigation.CurrentLocation : The current latitude and longitude of the vehicle."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Navigation
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:Altitude, vsso:Longitude, vsso:Latitude, vsso:VehicleSpeed, vsso:GPSHeading, vsso:GPSAccuracy]
  ].

vsso:Sunroof a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Sunroof"@en;
  rdfs:comment "Signal/Attribute.Cabin.Sunroof : Sun roof status."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Cabin
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:SunroofPosition, vsso:SunroofSwitch]
  ].

vsso:SunRoofShade a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Shade"@en;
  rdfs:comment "Signal/Attribute.Cabin.Sunroof.Shade : Sun roof shade status"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Sunroof
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:SunRoofShadePosition, vsso:SunRoofShadeSwitch]
  ].

vsso:Seat a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Seat"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat : All seats."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Cabin
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:SeatRecline, vsso:SeatHasPassenger, vsso:SeatHeating, vsso:IsBelted, vsso:SeatPosition, vsso:SeatMassage]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:HeadRestraint a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "HeadRestraint"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.HeadRestraint : Head restraint settings"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Seat
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:HeadRestraintHeight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:Lumbar a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Lumbar"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Lumbar : Lumbar signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Seat
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:LumbarInflation, vsso:LumbarHeight]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:Airbag a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Airbag"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Airbag : Airbag signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Seat
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:AirbagIsDeployed
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:SeatSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Switch"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Switch : Seat switch signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Seat
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:SeatCooling, vsso:SeatWarming, vsso:SeatUp, vsso:SeatDown, vsso:SeatForward, vsso:SeatBackward]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:HeadRestraintSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "HeadRestraint"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Switch.HeadRestraint : Head restraint switches"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:SeatSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:HeadRestraintUp, vsso:HeadRestraintDown]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:ReclineSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Recline"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Switch.Recline : Recline switches"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:SeatSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:ReclineForward, vsso:ReclineBackward]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:LumbarSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Lumbar"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Switch.Lumbar : Lumbar switches"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:SeatSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:LumbarUp, vsso:LumbarDown, vsso:LumbarInflate, vsso:LumbarDeflate]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:CushionSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Cushion"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Switch.Cushion : Cushion switches"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:SeatSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:CushionUp, vsso:CushionDown, vsso:CushionInflate, vsso:CushionDeflate]#TODO missing inflate/deflate
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:MassageSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Massage"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Switch.Massage : Massage switches"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:SeatSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:IncreaseMassage, vsso:DecreaseMassage]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:SideBolsterSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "SideBolster"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Switch.SideBolster : Side bolster switches"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:SeatSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:InflateSideBolster, vsso:DeflateSideBolster]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:Cushion a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Cushion"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.Cushion : Cushion signals."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Seat
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:CushionLength, vsso:CushionHeight]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:SideBolster a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "SideBolster"@en;
  rdfs:comment "Signal/Attribute.Cabin.Seat.RowX.PosX.SideBolster : Side bolster settings"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Seat
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:SideBolsterInflation
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:InternalLights a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Lights"@en;
  rdfs:comment "Signal/Attribute.Cabin.Lights : Interior lights signals and sensors"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Cabin
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:IsGloveBoxLightOn, vsso:IsTrunkLightOn, vsso:isDomeLightOn, vsso:AmbientLightLevel]
  ].

vsso:LocalLights a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Lights"@en;
  rdfs:comment "Signal/Attribute.Cabin.Lights.RowX.Left/Right : Interior lights signals and sensors"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:InternalLights
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:IsSharedLightOn, vsso:IsPassengerLightOn]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:RearviewMirror a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "RearviewMirror"@en;
  rdfs:comment "Signal/Attribute.Cabin.RearviewMirror : Rearview mirror"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Cabin
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:RearviewMirrorDimmingLevel
  ].

vsso:RearShade a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "RearShade"@en;
  rdfs:comment "Signal/Attribute.Cabin.RearShade : Rear window shade."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Cabin
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:RearShadePosition, vsso:RearShadeSwitch]
  ].


#Chassis branch
vsso:Chassis a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Chassis"@en;
  rdfs:comment "Signal/Attribute.Chassis : All attributes concerning steering"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Vehicle
  ].

vsso:Axle a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Axle"@en;
  rdfs:comment "Signal/Attribute.Chassis.Axle : Axle configuration attributes"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Chassis
  ].

vsso:AcceleratorPedal a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Accelerator"@en;
  rdfs:comment "Signal/Attribute.Chassis.Accelerator : Accelerator signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Chassis
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:AcceleratorPedalPosition
  ].

vsso:BrakePedal a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Brake"@en;
  rdfs:comment "Signal/Attribute.Chassis.Brake : Brake system signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Chassis
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:BrakePedalPosition
  ].

vsso:ParkingBrake a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "ParkingBrake"@en;
  rdfs:comment "Signal/Attribute.Chassis.ParkingBrake : Parking brake signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Chassis
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom vsso:ParkingBrakeIsEngaged
  ].

vsso:Axle a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Axle"@en;
  rdfs:comment "Signal/Attribute.Chassis.Axle : Axle signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Chassis
  ].

vsso:Wheel a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Wheel"@en;
  rdfs:comment "Signal/Attribute.Chassis.Axle.RowX.Wheel : wheel signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Axle
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:Brake a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Brake"@en;
  rdfs:comment "Signal/Attribute.Chassis.Axle.RowX.Wheel.Left/Right.Brake : Brake signals for wheel"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Wheel
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:BrakeFluidLevel, vsso:BrakeFluidLevelLow, vsso:Brakesworn, vsso:Padwear]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:Tire a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Tire"@en;
  rdfs:comment "Signal/Attribute.Chassis.Axle.RowX.Wheel.Left/Right.Tire : Tire signals for wheel"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Wheel
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:TirePressure, vsso:TirePressureLow, vsso:TireTemperature]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:position;
    owl:allValuesFrom [owl:oneOf("front_left"@en "front_right"@en "rear_left"@en "rear_right"@en)]
  ].

vsso:SteeringWheel a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "SteeringWheel"@en;
  rdfs:comment "Signal/Attribute.Chassis.SteeringWheel : Steering wheel signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Chassis
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:oneOf vsso:SteeringWheelAngle, vsso:SteeringWheelTilt, vsso:SteeringWheelExtension]
  ].

#Drivetrain branch
vsso:Drivetrain a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Drivetrain"@en;
  rdfs:comment "Signal/Attribute.Drivetrain : Drivetrain attributes internal combustion engines"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Vehicle
  ].

vsso:Transmission a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Transmission"@en;
  rdfs:comment "Signal/Attribute.Drivetrain.Transmission : Transmission-specific attributes"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Drivetrain
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:GearboxTemperature, vsso:travelledDistance, vsso:PerformanceMode, vsso:ClutchWear, vsso:VehicleSpeed, 
    vsso:GearChangeMode, vsso:CurrentGear]
  ].

vsso:FuelCell a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "FuelCell"@en;
  rdfs:comment "Signal/Attribute.Drivetrain.FuelCell : Fuel Cell attributes"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Drivetrain
  ].

vsso:BatteryManagement a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "BatteryManagement"@en;
  rdfs:comment "Signal/Attribute.Drivetrain.BatteryManagement : Battery Management attributes"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Drivetrain
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:BatteryCapacity, vsso:BatteryTemperature]
  ].

vsso:Engine a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "InternalCombustionEngine"@en;
  rdfs:comment "Signal/Attribute.Drivetrain.InternalCombustionEngine : Engine-specific attributes"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Drivetrain
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:EOP, vsso:MAP, vsso:CurrentPower, vsso:EngineOilTemperature, vsso:Torque, vsso:AmbientAirTemperature, vsso:ECT, 
    vsso:MAF, vsso:RotationSpeed]
  ].

vsso:FuelSystem a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "FuelSystem"@en;
  rdfs:comment "Signal/Attribute.Drivetrain.FuelSystem : Fuel System attributes"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Drivetrain
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:ConsumptionSinceStart, vsso:TimeSinceStart, vsso:InstantConsumption, vsso:TankLevel, vsso:ReachableRange,
     vsso:AverageConsumption]
  ].

vsso:ElectricMotor a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "ElectricMotor"@en;
  rdfs:comment "Signal/Attribute.Drivetrain.ElectricMotor : Electric Motor specific signals."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Drivetrain
  ].


#OBD branch
vsso:OBD a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "OBD"@en;
  rdfs:comment "Signal/Attribute.OBD : OBD data."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Vehicle
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:PidsA, vsso:FreezeDTC, vsso:FuelStatus, vsso:EngineLoad, 
    vsso:CoolantTemperature, vsso:ShortTermFuelTrim, vsso:LongTermFuelTrim, vsso:FuelPressure, vsso:MAP, vsso:RotationSpeed, 
    vsso:VehicleSpeed, vsso:TimingAdvance, vsso:IntakeTemperature, vsso:MAF, vsso:ThrottlePosition, vsso:AirStatus,
    vsso:AuxInputStatus, vsso:RunTime, vsso:PidsB, vsso:DistanceWithMIL, vsso:FuelRailPressureVac, vsso:FuelRailPressureDirect, vsso:CommandedEGR,
    vsso:EGRError, vsso:CommandedEVAP, vsso:TankLevel, vsso:WarmupsSinceDTCClear, vsso:DistanceSinceDTCClear, vsso:EVAPVaporPressure,
    vsso:BarometricPressure, vsso:PidsC, vsso:ControlModuleVoltage, vsso:AbsoluteLoad, vsso:CommandedEquivalenceRatio, 
    vsso:RelativeThrottlePosition, vsso:AmbientAirTemperature, vsso:ThrottlePositionB-C, vsso:AcceleratorPositionD-E-F,
    vsso:ThrottleActuation, vsso:RunTimeMIL, vsso:TimeSinceDTCCleared, vsso:MaxMAF, 
    vsso:EthanolPercent, vsso:EVAPVaporPressureAbsolute, vsso:EVAPVaporPressureAlternate,  vsso:ShortTermO2Trim, vsso:LongTermO2Trim,
    vsso:FuelRailPressureAbsolute, vsso:RelativeAcceleratorPosition, vsso:HybridBatteryRemaining, 
    vsso:EngineOilTemperature, vsso:FuelInjectionTiming, vsso:Fuelrate, vsso:FuelType]
  ].

vsso:O2Sensor a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "O2 Sensor"@en;
  rdfs:comment "Signal/Attribute.OBD.O2WR.SensorX : Wide range/band oxygen senor 8"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:OBD
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:O2Current, vsso:O2Voltage]
  ].

vsso:AltenateO2Sensor a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Sensor1"@en;
  rdfs:comment "Signal/Attribute.OBD.O2Alt.BankX.SensorX : Alternate oxygen sensor"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:OBD
  ].
#TODO
#Add attribute Sensor present
#same class as O2 sensor ?


vsso:O2SensorOther a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Sensor1"@en;
  rdfs:comment "Signal/Attribute.OBD.O2.Bank2.Sensor1 : Oxygen sensor"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:Bank2
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:O2Current, vsso:O2Voltage]
  ].

vsso:OBDStatus a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Status"@en;
  rdfs:comment "Signal/Attribute.OBD.Status : PID 01 - OBD status"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:OBD
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:DTCCount, vsso:MIL, vsso:IgnitionType]
  ].
  #TODO:IgnitionType to put as Signal

vsso:Catalyst a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "Catalyst"@en;
  rdfs:comment "Signal/Attribute.OBD.Catalyst : Catalyst signals"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:OBD
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:CatalystTemperature]
  ].


vsso:CurrentDriveCycleStatus a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:Branch;
  rdfs:label "DriveCycleStatus"@en;
  rdfs:comment "Signal/Attribute.OBD.DriveCycleStatus : PID 41 - OBD status for the current drive cycle"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:partOf;
    owl:allValuesFrom vsso:OBD
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:hasSignal;
    owl:allValuesFrom [owl:unionOf vsso:DTCCount, vsso:MIL, vsso:IgnitionType]
  ].
#TODO:check if IgnitionType a signal 


##Signals
#Vehicle signals

vsso:LateralAcceleration a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Lateral"@en;
  rdfs:comment "Signal.Vehicle.Acceleration.Lateral : Vehicle acceleration in Y (lateral acceleration)."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Accelerometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LinearAccelerationUnit
  ].

vsso:LongitudinalAcceleration a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Longitudinal"@en;
  rdfs:comment "Signal.Vehicle.Acceleration.Longitudinal : Vehicle acceleration in X (longitudinal acceleration)."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Accelerometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LinearAccelerationUnit
  ].

vsso:VerticalAcceleration a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Vertical"@en;
  rdfs:comment "Signal.Vehicle.Acceleration.Vertical : Vehicle acceleration in Z (vertical acceleration)."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Accelerometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LinearAccelerationUnit
  ].

vsso:AccumulatedTravelledDistance a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "TravelledDistance"@en;
  rdfs:comment "Signal.Vehicle.TravelledDistance : Odometer reading"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Odometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LengthUnit
  ].

vsso:AccumulatedIdleTime a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IdleTime"@en;
  rdfs:comment "Signal.Vehicle.IdleTime : Accumulated idle time in seconds."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Timer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TimeUnit
  ].

vsso:AmbientAirTemperature a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "AmbientAirTemperature"@en;
  rdfs:comment "Signal.Vehicle.AmbientAirTemperature / Signal.Cabin.HVAC.AmbientAirTemperature / Signal.Drivetrain.InternalCombustionEngine.Engine.AmbientAirTemperature / Signal.OBD.AmbientAirTemperature / PID 46 : Ambient air temperature (outside)"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Thermometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:VehicleYaw a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Yaw"@en;
  rdfs:comment "Signal.Vehicle.AngularVelocity.Yaw : Vehicle rotation rate along Z (vertical)."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Gyroscope
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngularVelocityUnit
  ].

vsso:VehicleRoll a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Roll"@en;
  rdfs:comment "Signal.Vehicle.AngularVelocity.Roll : Vehicle rotation rate along X (longitudinal)."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Gyroscope
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngularVelocityUnit
  ].

vsso:VehiclePitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Pitch"@en;
  rdfs:comment "Signal.Vehicle.AngularVelocity.Pitch : Vehicle rotation rate along Y (lateral)."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Gyroscope
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngularVelocityUnit
  ].

vsso:AccumulatedDriveTime a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "DriveTime"@en;
  rdfs:comment "Signal.Vehicle.DriveTime : Accumulated drive time in seconds."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Timer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TimeUnit
  ].

vsso:AccumulatedIgnitionOffTime a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IgnitionOffTime"@en;
  rdfs:comment "Signal.Vehicle.IgnitionOffTime : Accumulated ignition off time in seconds."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Timer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TimeUnit
  ].

vsso:CurrentTravelledDistance a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "TripMeterReading"@en;
  rdfs:comment "Signal.Vehicle.TripMeterReading : Current trip meter reading"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Odometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TimeUnit
  ].

vsso:VehicleSpeed a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Speed"@en;
  rdfs:comment "Signal.Vehicle.Speed / Signal.Drivetrain.Transmission.Speed / Signal.Cabin.Infotainment.Navigation.CurrentLocation.Speed / Signal.OBD.Speed : PID 0D: Vehicle speed"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom [owl:oneOf(vsso:Speedometer vsso:GPS)]
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LinearVelocityUnit
  ].

vsso:AccumulatedIgnitionOnTime a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IgnitionOnTime"@en;
  rdfs:comment "Signal.Vehicle.IgnitionOnTime : Accumulated ignition on time in seconds."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Timer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TimeUnit
  ].

#ADAS signals
vsso:DistanceToObjectSignal a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "RearLeft"@en;
  rdfs:comment "Signal.ADAS.ObstacleDetection.DistanceToObject.Front/Rear/Left/Right : distance to object in meters"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ObstacleDetectionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LengthUnit
  ].

vsso:ObstacleDetectionIsActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsActive"@en;
  rdfs:comment "Signal.ADAS.ObstacleDetection.IsActive : Indicates if obstacle sensor system is enabled. Tue = Enabled. False = Disabled."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ObstacleDetectionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:ObstacleDetectionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ObstacleDetectionError a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Error"@en;
  rdfs:comment "Signal.ADAS.ObstacleDetection.Error : Indicates if obstacle sensor system incurred an error condition. True = Error. False = No Error."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ObstacleDetectionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:TCSIsEngaged a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IsEngaged"@en;
  rdfs:comment "Signal.ADAS.TCS.IsEngaged : Indicates if TCS is currently regulating traction. True = Engaged. False = Not Engaged."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TractionControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:TCSIsActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsActive"@en;
  rdfs:comment "Signal.ADAS.TCS.IsActive : Indicates if TCS is enabled. Tue = Enabled. False = Disabled."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TractionControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:TractionControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:TCSError a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Error"@en;
  rdfs:comment "Signal.ADAS.TCS.Error : Indicates if TCS incurred an error condition. True = Error. False = No Error."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TractionControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:SpeedSet a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "SpeedSet"@en;
  rdfs:comment "Signal.ADAS.CruiseControl.SpeedSet : Set cruise control speed in kilometers per hour"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:CruiseControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:CruiseControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LinearVelocityUnit
  ].

vsso:CruiseControlIsActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsActive"@en;
  rdfs:comment "Signal.ADAS.CruiseControl.IsActive : Indicates if cruise control system is enabled. True = Enabled. False = Disabled."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:CruiseControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:CruiseControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:CruiseControlError a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Error"@en;
  rdfs:comment "Signal.ADAS.CruiseControl.Error : Indicates if cruise control system incurred and error condition. True = Error. False = NoError."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:CruiseControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ABSIsEngaged a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IsEngaged"@en;
  rdfs:comment "Signal.ADAS.ABS.IsEngaged : Indicates if ABS is currently regulating brake pressure. True = Engaged. False = Not Engaged."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:AntilockBrakingSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ABSIsActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsActive"@en;
  rdfs:comment "Signal.ADAS.ABS.IsActive : Indicates if ABS is enabled. Tue = Enabled. False = Disabled."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:AntilockBrakingSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:AntilockBrakingSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ABSError a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Error"@en;
  rdfs:comment "Signal.ADAS.ABS.Error : Indicates if ABS incurred an error condition. True = Error. False = No Error."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:AntilockBrakingSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ESCIsEngaged a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IsEngaged"@en;
  rdfs:comment "Signal.ADAS.ESC.IsEngaged : Indicates if ESC is currently regulating vehicle stability. True = Engaged. False = Not Engaged."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ElectronicStabilityControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ESCIsActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsActive"@en;
  rdfs:comment "Signal.ADAS.ESC.IsActive : Indicates if ECS is enabled. Tue = Enabled. False = Disabled."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ElectronicStabilityControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:ElectronicStabilityControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ESCError a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Error"@en;
  rdfs:comment "Signal.ADAS.ESC.Error : Indicates if ESC incurred an error condition. True = Error. False = No Error."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ElectronicStabilityControlSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:LaneDepartureDetectionWarning a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Warning"@en;
  rdfs:comment "Signal.ADAS.LaneDepartureDetection.Warning : Indicates if lane departure detection registered a lane departure"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LaneDepartureDetectionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:LaneDepartureDetectionIsActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsActive"@en;
  rdfs:comment "Signal.ADAS.LaneDepartureDetection.IsActive : Indicates if lane departure detection system is enabled. True = Enabled. False = Disabled."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LaneDepartureDetectionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:LaneDepartureDetectionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:LaneDepartureDetectionError a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Error"@en;
  rdfs:comment "Signal.ADAS.LaneDepartureDetection.Error : Indicates if lane departure system incurred an error condition. True = Error. False = No Error."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LaneDepartureDetectionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

#Body signals
vsso:MirrorTilt a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Tilt"@en;
  rdfs:comment "Signal.Body.Mirrors.Left/Right.Tilt : Mirror tilt as a percent. 0 = Center Position. 100 = Fully Upward Position. -100 = Fully Downward Position."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MirrorTiltSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:MirrorTiltActuator
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:MirrorHeatingStatus a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Status"@en;
  rdfs:comment "Signal.Body.Mirrors.Left/Right.Heating.Status : Mirror Heater on or off. True = Heater On. False = Heater Off."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Mirrorheater
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:Mirrorheater
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:MirrorPan a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Pan"@en;
  rdfs:comment "Signal.Body.Mirrors.Left/Right.Pan : Mirror pan as a percent. 0 = Center Position. 100 = Fully Left Position. -100 = Fully Right Position."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MirrorPanSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:MirrorPanActuator
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:HornIsActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsActive"@en;
  rdfs:comment "Signal.Body.Horn.IsActive : Horn active or inactive. True = Active. False = Inactive."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:HornSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:HornSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsLeftIndicatorOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsLeftIndicatorOn"@en;
  rdfs:comment "Signal.Body.Lights.IsLeftIndicatorOn : Is left indicator flashing"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LeftIndicatorSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:LeftIndicatorLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsLowBeamOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsLowBeamOn"@en;
  rdfs:comment "Signal.Body.Lights.IsLowBeamOn : Is low beam on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LowBeamLightSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:LowBeamLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsHighBeamOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsHighBeamOn"@en;
  rdfs:comment "Signal.Body.Lights.IsHighBeamOn : Is high beam on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:HighBeamLightSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:HighBeamLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsFrontFogLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsFrontFogOn"@en;
  rdfs:comment "Signal.Body.Lights.IsFrontFogOn : Is front fog light on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:FrontFogLightSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:FrontFogLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsBrakeLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsBrakeOn"@en;
  rdfs:comment "Signal.Body.Lights.IsBrakeOn : Is brake light on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:BrakeLightSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:BrakeLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsRightIndicatorOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsRightIndicatorOn"@en;
  rdfs:comment "Signal.Body.Lights.IsRightIndicatorOn : Is right indicator flashing"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:RightIndicatorSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:RightIndicatorLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsBackupLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsBackupOn"@en;
  rdfs:comment "Signal.Body.Lights.IsBackupOn : Is backup (reverse) light on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:BackupLightSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:BackupLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsParkingLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsParkingOn"@en;
  rdfs:comment "Signal.Body.Lights.IsParkingOn : Is parking light on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ParkingLightSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:ParkingLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsRearFogLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsRearFogOn"@en;
  rdfs:comment "Signal.Body.Lights.IsRearFogOn : Is rear fog light on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:RearFogLightSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:RearFogLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsHazardLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsHazardOn"@en;
  rdfs:comment "Signal.Body.Lights.IsHazardOn : Are hazards on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:HazardLightSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:HazardLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsRunningLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsRunningOn"@en;
  rdfs:comment "Signal.Body.Lights.IsRunningOn : Are running lights on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:RunningLightSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:RunningLight
  ].

vsso:HoodIsOpen a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsOpen"@en;
  rdfs:comment "Signal.Body.Hood.IsOpen : hood open or closed. True = Open. False = Closed"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:HoodLatch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:HoodLatch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:TrunkIsLocked a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsLocked"@en;
  rdfs:comment "Signal.Body.Trunk.IsLocked : Is trunk locked or unlocked. True = Locked. False = Unlocked."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TrunkLock
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:TrunkLock
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:TrunkIsOpen a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsOpen"@en;
  rdfs:comment "Signal.Body.Trunk.IsOpen : Trunk open or closed. True = Open. False = Closed"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TrunkLatch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:TrunkLatch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:WipingStatus a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Status"@en;
  rdfs:comment "Signal.Body.Windshield.Front.Wiping.Status : Front wiper status"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:WiperSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:Wiper
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:WindshieldHeatingStatus a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Status"@en;
  rdfs:comment "Signal.Body.Windshield.Front.Heating.Status : Front/Rear windshield heater status. 0 - off, 1 - on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:WindshieldHeaterSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:WindshieldHeater
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:WasherFluidLevelLow a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "LevelLow"@en;
  rdfs:comment "Signal.Body.Windshield.Front/Rear.WasherFluid.LevelLow : Low level indication for washer fluid. True = Level Low. False = Level OK."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:WasherFuildLevelSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:WasherFluidLevel a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Level"@en;
  rdfs:comment "Signal.Body.Windshield.Front/Rear.WasherFluid.Level : Washer fluid level as a percent. 0 = Empty. 100 = Full."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:WasherFuildLevelSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:RainIntensity a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Intensity"@en;
  rdfs:comment "Signal.Body.Raindetection.Intensity : Rain intensity. 0 = Dry, No Rain. 100 = Covered."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:RainSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].


#Cabin signals

vsso:IsChildLockActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IsChildLockActive"@en;
  rdfs:comment "Signal.Cabin.Door.RowX.Left/Right.IsChildLockActive : Is door child lock engaged. True = Engaged. False = Disengaged."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ChildLock
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:ChildLock
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:DoorIsLocked a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsLocked"@en;
  rdfs:comment "Signal.Cabin.Door.RowX.Left/Right.IsLocked : Is door locked or unlocked. True = Locked. False = Unlocked."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:DoorLock
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:DoorLock
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:WindowShadePosition a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Position"@en;
  rdfs:comment "Signal.Cabin.Door.RowX.Left/Right.Shade.Position : Position of side window blind. 0 = Fully retracted. 100 = Fully deployed."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:RearShadeActuator
  ].

vsso:WindowShadeSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Switch"@en;
  rdfs:comment "Signal.Cabin.Door.RowX.Left/Right.Shade.Switch : Switch controlling sliding action such as window, sunroof, or blind."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:RearShadeSystem
  ].

vsso:WindowPosition a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Position"@en;
  rdfs:comment "Signal.Cabin.Door.RowX.Left/Right.Window.Position : Window position. 0 = Fully closed 100 = Fully opened."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:WindowPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:WindowSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Switch"@en;
  rdfs:comment "Signal.Cabin.Door.RowX.Left/Right.Window.Switch : Switch controlling sliding action such as window, sunroof, or blind."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:RearShadeSystem
  ].

vsso:DoorIsOpen a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsOpen"@en;
  rdfs:comment "Signal.Cabin.Door.RowX.Left/Right.IsOpen : Is door open or closed"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:DoorContactSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:DoorContactActuator
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:FanSpeed a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "FanSpeed"@en;
  rdfs:comment "Signal.Cabin.HVAC.RowX.Left/Right.FanSpeed : Fan Speed, 0 = off. 100 = max"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:FanSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:FanControl
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:LocalTemperature a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Temperature"@en;
  rdfs:comment "Signal.Cabin.HVAC.RowX.Left/Right.Temperature : Temperature"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Thermometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:TemperatureSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:AirDistribution a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "AirDistribution"@en;
  rdfs:comment "Signal.Cabin.HVAC.RowX.Left/Right.AirDistribution : Direction of airstream"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:FanSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:FanControl
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsRearDefrosterActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsRearDefrosterActive"@en;
  rdfs:comment "Signal.Cabin.HVAC.IsRearDefrosterActive : Is rear defroster active."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Defroster
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:Defroster
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsRecirculationActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsRecirculationActive"@en;
  rdfs:comment "Signal.Cabin.HVAC.IsRecirculationActive : Is recirculation active."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:RecirculationSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:RecirculationSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsFrontDefrosterActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsFrontDefrosterActive"@en;
  rdfs:comment "Signal.Cabin.HVAC.IsFrontDefrosterActive : Is front defroster active."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Defroster
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:Defroster
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsAirConditioningActive a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IsAirConditioningActive"@en;
  rdfs:comment "Signal.Cabin.HVAC.IsAirConditioningActive : Is Air conditioning active."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:AirConditioningSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:AirConditioningSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:MediaAction a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Action"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Media.Action : Tells if the media was"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:SelectedMediaURI a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "SelectedURI"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Media.SelectedURI : URI of suggested media that was selected"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom xsd:anyURI
  ].

vsso:MediaVolume a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Volume"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Media.Volume : Current Media Volume"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:DeclinedMediaURI a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "DeclinedURI"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Media.DeclinedURI : URI of suggested media that was declined"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom xsd:anyURI
  ].

vsso:MediaAlbum a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Album"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Media.Played.Album : Name of album being played"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:MediaSource a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Source"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Media.Played.Source : Media selected for playback"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:MediaTrack a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Track"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Media.Played.Track : Name of track being played"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:MediaURI a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "URI"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Media.Played.URI : User Resource associated with the media"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom xsd:anyURI
  ].

vsso:MediaArtist a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Artist"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Media.Played.Artist : Name of artist being played"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MultimediaSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:Altitude a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Longitude"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Navigation.CurrentLocation.Altitude : Current elevation of the position in meters."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:GPS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LengthUnit
  ].

vsso:Longitude a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Longitude"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Navigation.CurrentLocation.Longitude : Current longitude of vehicle, as reported by GPS."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:GPS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngleUnit
  ].

vsso:Latitude a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Latitude"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Navigation.CurrentLocation.Latitude : Current latitude of vehicle, as reported by GPS."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:GPS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngleUnit
  ].

vsso:GPSHeading a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Heading"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Navigation.CurrentLocation.Heading : Current magnetic compass heading, in degrees."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:GPS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngleUnit
  ].

vsso:GPSAccuracy a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Accuracy"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Navigation.CurrentLocation.Accuracy : Accuracy level of the latitude and longitude coordinates in meters."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:GPS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LengthUnit
  ].

vsso:DestinationLatitude a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Latitude"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Navigation.DestinationSet.Latitude : Latitude of destination"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:GPS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:GPS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngleUnit
  ].

vsso:DestinationLongitude a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Longitude"@en;
  rdfs:comment "Signal.Cabin.Infotainment.Navigation.DestinationSet.Longitude : Longitude of destination"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:GPS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:GPS
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngleUnit
  ].

vsso:SunroofPosition a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Position"@en;
  rdfs:comment "Signal.Cabin.Sunroof.Position : Sunroof position. 0 = Fully closed 100 = Fully opened. -100 = Fully tilted"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:SunroofPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:SunroofSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Switch"@en;
  rdfs:comment "Signal.Cabin.Sunroof.Switch : Switch controlling sliding action such as window, sunroof, or shade."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:SunroofPositionActuator
  ].

vsso:SunRoofShadePosition a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Position"@en;
  rdfs:comment "Signal.Cabin.Sunroof.Shade.Position : Position of side window blind. 0 = Fully retracted. 100 = Fully deployed."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:RearShadeActuator
  ].

vsso:SunRoofShadeSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Switch"@en;
  rdfs:comment "Signal.Cabin.Sunroof.Shade.Switch : Switch controlling sliding action such as window, sunroof, or blind."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:RearShadeSystem
  ].

vsso:HeadRestraintHeight a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Height"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.HeadRestraint.Height : Height of head restraint. 0 = Bottommost. 100 = Topmost."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:HeadRestraintSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:SeatRecline a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Recline"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Recline : Recline level. -90 = Max forward recline. 90 max backward recline"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:SeatPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngleUnit
  ].

vsso:SeatHasPassenger a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "HasPassenger"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.HasPassenger : Does the seat have a passenger in it."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:OccupantClassificationSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:SeatHeating a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Heating"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Heating : Seat cooling / heating. 0 = off. -100 = max cold. +100 = max heat"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:SeatHeater#TODO:name ?
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:LumbarInflation a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Inflation"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Lumbar.Inflation : Lumbar support inflation. 0 = Fully deflated. 100 = Fully inflated."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LumbarPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:LumbarHeight a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Height"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Lumbar.Height : Lumbar support position. 0 = Lowermost. 100 = Uppermost."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LumbarPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:AirbagIsDeployed a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IsDeployed"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Airbag.IsDeployed : Airbag deployment status. True = Airbag deployed. False = Airbag not deployed."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:AirbagSystem
  ].

vsso:HeadRestraintDown a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Down"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.HeadRestraint.Down : Head restraint down switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:HeadRestraintActuator
  ].

vsso:HeadRestraintUp a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Up"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.HeadRestraint.Up : Head restraint up switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:HeadRestraintActuator
  ].

vsso:SeatCooling a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Cooler"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Cooler : Cooler switch for Seat heater"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:SeatCooler#TODO: name?
  ].

vsso:ReclineForward a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Forward"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Recline.Forward : Seatback recline forward switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:SeatPositionActuator
  ].

vsso:ReclineBackward a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Backward"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Recline.Backward : Seatback recline backward switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:SeatPositionActuator
  ].

vsso:SeatUp a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Up"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Up : Seat up switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:SeatPositionActuator
  ].

vsso:SeatDown a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Down"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Lumbar.Down : Lumbar down switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:LumbarPositionActuator
  ].

vsso:LumbarInflate a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Inflate"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Lumbar.Inflate : Lumbar inflation switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:LumbarPressureActuator
  ].

vsso:LumbarUp a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Up"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Lumbar.Up : Lumbar up switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:LumbarPositionActuator
  ].

vsso:LumbarDeflate a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Deflate"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Lumbar.Deflate : Lumbar deflation switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:LumbarPressureActuator
  ].

vsso:LumbarDown a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Down"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Down : Seat down switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:SeatPositionActuator
  ].

vsso:SeatWarming a rdfs:Class, owl:Class;#TODO: update VSS name
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Warmer"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Warmer : Warmer switch for Seat heater"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:SeatHeater#TODO:check name
  ].

vsso:CushionDown a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Down"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Cushion.Down : Seat cushion down switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:CushionPositionActuator
  ].

vsso:CushionForward a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Forward"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Cushion.Forward : Seat cushion forward/lengthen switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:CushionPositionActuator
  ].

vsso:CushionBackward a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Backward"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Cushion.Backward : Seat cushion backward/shorten switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:CushionPositionActuator
  ].

vsso:CushionUp a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Up"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Cushion.Up : Seat cushion up switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:CushionPositionActuator
  ].

vsso:SeatForward a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Forward"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Forward : Seat forward switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:SeatPositionActuator
  ].

vsso:SeatBackward a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Backward"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Backward : Seat forward switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:SeatPositionActuator
  ].

vsso:IncreaseMassage a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Increase"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Massage.Increase : Increase massage level switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:MassageSystem
  ].

vsso:DecreaseMassage a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Decrease"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.Massage.Decrease : Decrease massage level switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:MassageSystem
  ].

vsso:InflateSideBolster a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Inflate"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.SideBolster.Inflate : Lumbar inflation switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:LumbarPressureActuator
  ].

vsso:DeflateSideBolster a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Deflate"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Switch.SideBolster.Deflate : Lumbar deflation switch engaged"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:LumbarPressureActuator
  ].

vsso:CushionLength a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Length"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Cushion.Length : Forward length of cushion (leg support). 0 = Rearmost. 100 = Forwardmost."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:CushionPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:CushionHeight a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Height"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Cushion.Height : Height of the seat front. 0 = Lowermost. 100 = Uppermost."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:CushionPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsBelted a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IsBelted"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.IsBelted : Is the belt engaged."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:BeltSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:SeatPosition a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Position"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Position : Seat horizontal position. 0 = Frontmost. 100 = Rearmost"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:SeatPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:SideBolsterInflation a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Inflation"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.SideBolster.Inflation : Lumbar support inflation. 0 = Fully deflated. 100 = Fully inflated."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LumbarPressureSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:SeatMassage a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Massage"@en;
  rdfs:comment "Signal.Cabin.Seat.RowX.PosY.Massage : Seat massage level. 0 = off. 100 = max massage."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MassageSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsSharedLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "IsSharedOn"@en;
  rdfs:comment "Signal.Cabin.Lights.RowX.IsSharedOn : Is light shared across first row on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LightSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsPassengerLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsPassengerOn"@en;
  rdfs:comment "Signal.Cabin.Lights.RowX.Left/Right.IsPassengerOn : Is passenger light on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:PassengerLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:PassengerLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsGloveBoxLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsGloveBoxOn"@en;
  rdfs:comment "Signal.Cabin.Lights.IsGloveBoxOn : Is glove box light on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:GloveBoxLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:GloveBoxLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:AmbientLightLevel a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "AmbientLight"@en;
  rdfs:comment "Signal.Cabin.Lights.AmbientLight : How much ambient light is detected in cabin. 0 = No ambient light. 100 = Full brightness"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LightSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsDomeLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsDomeOn"@en;
  rdfs:comment "Signal.Cabin.Lights.IsDomeOn : Is central dome light light on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:DomeLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:DomeLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:IsTrunkLightOn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsTrunkOn"@en;
  rdfs:comment "Signal.Cabin.Lights.IsTrunkOn : Is trunk light light on"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TrunkLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:TrunkLight
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:LightIntensity a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "LightIntensity"@en;
  rdfs:comment "Signal.Cabin.Lights.LightIntensity : Intensity of the interior lights. 0 = Off. 100 = Full brightness."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:LightSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:RearviewMirrorDimmingLevel a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "DimmingLevel"@en;
  rdfs:comment "Signal.Cabin.RearviewMirror.DimmingLevel : Dimming level of rearview mirror. 0 = undimmed. 100 = fully dimmed"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:DimmingSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:DimmingSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:RearShadePosition a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Position"@en;
  rdfs:comment "Signal.Cabin.RearShade.Position : Position of side window blind. 0 = Fully retracted. 100 = Fully deployed."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:RearShadeActuator
  ].

vsso:RearShadeSwitch a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ActuableSignal;
  rdfs:label "Switch"@en;
  rdfs:comment "Signal.Cabin.RearShade.Switch : Switch controlling sliding action such as window, sunroof, or blind."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty vsso:ActuableSignal;
    owl:allValuesFrom vsso:RearShadeSystem
  ].

#Chassis signals

vsso:AcceleratorPedalPosition a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "PedalPosition"@en;
  rdfs:comment "Signal.Chassis.Accelerator.PedalPosition : Accelerator pedal position as percent. 0 = Not depressed. 100 = Fully depressed."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:PedalPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:BrakePedalPosition a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "PedalPosition"@en;
  rdfs:comment "Signal.Chassis.Brake.PedalPosition : Brake pedal position as percent. 0 = Not depressed. 100 = Fully depressed."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:PedalPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ParkingBrakeIsEngaged a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "IsEngaged"@en;
  rdfs:comment "Signal.Chassis.ParkingBrake.IsEngaged : Parking brake status. True = Parking Brake is Engaged. False = Parking Brake is not Engaged."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ParkingBrakeSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:ParkingBrakeSwitch
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:BrakeFluidLevel a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "FluidLevel"@en;
  rdfs:comment "Signal.Chassis.Axle.RowX.Wheel.Left/Right.Brake.FluidLevel : Brake fluid level as percent. 0 = Empty. 100 = Full."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:BrakeFluidLevelSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:BrakeFluidLevelLow a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "FluidLevelLow"@en;
  rdfs:comment "Signal.Chassis.Axle.RowX.Wheel.Left/Right.Brake.FluidLevelLow : Brake fluid level status. True = Brake fluid level low. False = Brake fluid level OK."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:BrakeFluidLevelSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:BrakesWorn a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "BrakesWorn"@en;
  rdfs:comment "Signal.Chassis.Axle.RowX.Wheel.Left/Right.Brake.BrakesWorn : Brake pad wear status. True = Worn. False = Not Worn."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:BrakePadWearSensor
  ].

vsso:PadWear a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "PadWear"@en;
  rdfs:comment "Signal.Chassis.Axle.RowX.Wheel.Left/Right.Brake.PadWear : Brake pad wear as percent. 0 = No Wear. 100 = Worn."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:BrakePadWearSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:TirePressure a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Pressure"@en;
  rdfs:comment "Signal.Chassis.Axle.RowX.Wheel.Left/Right.Tire.Pressure : Tire pressure in kilo-Pascal"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TirePressureMonitoringSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:TirePressureLow a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "PressureLow"@en;
  rdfs:comment "Signal.Chassis.Axle.RowX.Wheel.Left/Right.Tire.PressureLow : Tire Pressure Status. True = Low tire pressure. False = Good tire pressure."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TirePressureMonitoringSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:TireTemperature a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Temperature"@en;
  rdfs:comment "Signal.Chassis.Axle.RowX.Wheel.Left/Right.Tire.Temperature : Tire temperature in Celsius."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TireTemperatureSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:SteeringWheelTilt a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Tilt"@en;
  rdfs:comment "Signal.Chassis.SteeringWheel.Tilt : Steering wheel column tilt. 0 = Lowest position. 100 = Highest position."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:SteeringWheelPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:SteeringWheelPositionActuator
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:SteeringWheelAngle a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Angle"@en;
  rdfs:comment "Signal.Chassis.SteeringWheel.Angle : Steering wheel angle. Positive = degrees to the left. Negative = degrees to the right."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:SteeringWheelAngleSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngleUnit
  ].

vsso:SteeringWheelExtension a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Extension"@en;
  rdfs:comment "Signal.Chassis.SteeringWheel.Extension : Steering wheel column extension from dashboard. 0 = Closest to dashboard. 100 = Furthest from dashboard."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:SteeringWheelPositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:SteeringWheelPositionActuator
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

#Drivetrain signals

vsso:ConsumptionSinceStart a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "ConsumptionSinceStart"@en;
  rdfs:comment "Signal.Drivetrain.FuelSystem.ConsumptionSinceStart : Fuel amount consumed since start in liters."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:FlowSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:VolumeUnit
  ].

vsso:TimeSinceStart a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "TimeSinceStart"@en;
  rdfs:comment "Signal.Drivetrain.FuelSystem.TimeSinceStart : Time elapsed since start in seconds."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Timer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TimeUnit
  ].

vsso:InstantConsumption a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "InstantConsumption"@en;
  rdfs:comment "Signal.Drivetrain.FuelSystem.InstantConsumption : Current consumption in liters per 100 km."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:FlowSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:VolumePerDistanceUnit #TODO: create unit
  ].

vsso:TankLevel a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Level"@en;
  rdfs:comment "Signal.Drivetrain.FuelSystem.Level / Signal.OBD.FuelLevel / PID 2F: Level in fuel tank as percent of capacity. 0 = empty. 100 = full."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:FuelTankLevelSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ReachableRange a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Range"@en;
  rdfs:comment "Signal.Drivetrain.FuelSystem.Range : Range in meters."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:FuelTankLevelSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LengthUnit
  ].

vsso:AverageConsumption a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "AverageConsumption"@en;
  rdfs:comment "Signal.Drivetrain.FuelSystem.AverageConsumption : Average consumption in liters per 100 km."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:FlowSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:VolumePerDistanceUnit 
  ].

vsso:TravelledDistance a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "TravelledDistance"@en;
  rdfs:comment "Signal.Drivetrain.Transmission.TravelledDistance : Odometer reading"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Odometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LengthUnit
  ].

vsso:CurrentGear a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "Gear"@en;
  rdfs:comment "Signal.Drivetrain.Transmission.Gear : Current gear. 0=Neutral. -1=Reverse"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Gearbox
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:Gearbox
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:PerformanceMode a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "PerformanceMode"@en;
  rdfs:comment "Signal.Drivetrain.Transmission.PerformanceMode : Current gearbox performance mode."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:DriveSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:DriveSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ClutchWear a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "ClutchWear"@en;
  rdfs:comment "Signal.Drivetrain.Transmission.ClutchWear : Clutch wear as a percent. 0 = no wear. 100 = worn."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ClutchWearIndicator
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:GearChangeMode a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
  rdfs:label "GearChangeMode"@en;
  rdfs:comment "Signal.Drivetrain.Transmission.GearChangeMode : Is the gearbox in automatic or manual (paddle) mode."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:DriveSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isActuatedBy;
    owl:allValuesFrom vsso:DriveSystem
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:GearboxTemperature a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Gearbox temperature"@en;
  rdfs:comment "Signal.Drivetrain.Transmission.Temperature : The current gearbox temperature."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Thermometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:EOP a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "EOP"@en;
  rdfs:comment "Signal.Drivetrain.InternalCombustionEngine.Engine.EOP : Engine oil pressure."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:OilPressureSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:MAP a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "MAP"@en;
  rdfs:comment "Signal.Drivetrain.InternalCombustionEngine.Engine.MAP / Signal.OBD.MAP : PID 0B : Manifold air pressure possibly boosted using forced induction."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ManifoldAirPressureSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:CurrentPower a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Power"@en;
  rdfs:comment "Signal.Drivetrain.InternalCombustionEngine.Engine.Power : Current engine power output."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:PowerMeter
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PowerUnit
  ].

vsso:EngineOilTemperature a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "EOT"@en;
  rdfs:comment "Signal.Drivetrain.InternalCombustionEngine.Engine.EOT / Signal.OBD.OilTemperature / PID 5C : Engine oil temperature."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:OilThermometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:Torque a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Torque"@en;
  rdfs:comment "Signal.Drivetrain.InternalCombustionEngine.Engine.Torque : Current engine torque."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:TorqueMeter
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:BendingMomentOrTorqueUnit
  ].

vsso:ECT a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "ECT"@en;
  rdfs:comment "Signal.Drivetrain.InternalCombustionEngine.Engine.ECT : Engine coolant temperature."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:CoolantThermometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:TPS a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "TPS"@en;
  rdfs:comment "Signal.Drivetrain.InternalCombustionEngine.Engine.TPS : Current throttle position."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:ThrottlePositionSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:MAF a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "MAF"@en;
  rdfs:comment "Signal.Drivetrain.InternalCombustionEngine.Engine.MAF / Signal.OBD.MAF / PID 10 : Grams of air drawn into engine per second."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:MassAirFlowSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:MassPerTimeUnit
  ].

vsso:RotationSpeed a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "Speed"@en;
  rdfs:comment "Signal.Drivetrain.InternalCombustionEngine.Engine.Speed / Signal.OBD.EngineSpeed : PID 0C : Engine speed measured as rotations per minute."@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:RotationalSpeedSensor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngularVelocityUnit
  ].

vsso:BatteryCapacity a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "BatteryCapacity"@en;
  rdfs:comment "Signal.Drivetrain.BatteryManagement.BatteryCapacity : Remaining capacity of the batter pack"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:BatteryMonitor
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:BatteryTemperature a rdfs:Class, owl:Class;
  rdfs:subClassOf vsso:ObservableSignal;
  rdfs:label "BatteryTemperature"@en;
  rdfs:comment "Signal.Drivetrain.BatteryManagement.BatteryTemperature : Temperature of the battery pack"@en;
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty sosa:isObservedBy;
    owl:allValuesFrom vsso:Thermometer
  ];
  rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].


#OBD signals
vsso:PidsA a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "PidsA"@en;
    rdfs:comment "Signal.OBD.PidsA : PID 00 - Bit array of the supported pids 01 to 20"@en;
    rdfs:subClassOf [
        a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:FreezeDTC a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "FreezeDTC"@en;
    rdfs:comment "Signal.OBD.FreezeDTC : PID 02 - DTC that triggered the freeze frame"@en;
    rdfs:subClassOf [
      a owl:Restriction;
	  owl:onProperty sosa:isObservedBy;
      owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:FuelStatus a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "FuelStatus"@en;
    rdfs:comment "Signal.OBD.FuelStatus : PID 03 - Fuel status"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:EngineLoad a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "EngineLoad"@en;
    rdfs:comment "Signal.OBD.EngineLoad : PID 04 - Engine load in percent - 0 = no load, 100 = full load"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:CoolantTemperature a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "CoolantTemperature"@en;
    rdfs:comment "Signal.OBD.CoolantTemperature : PID 05 - Coolant temperature"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:CoolantTemperatureSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:ShortTermFuelTrim a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "ShortTermFuelTrim1"@en;
    rdfs:comment "Signal.OBD.ShortTermFuelTrim1 : PID 06/08 - Short Term (immediate) Fuel Trim - Bank 1 - negative percent leaner, positive percent richer"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:O2Sensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:LongTermFuelTrim a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "LongTermFuelTrim1"@en;
    rdfs:comment "Signal.OBD.LongTermFuelTrim1 : PID 07/09 - Long Term (learned) Fuel Trim - Bank 1 - negative percent leaner, positive percent richer"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:O2Sensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:FuelPressure a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "FuelPressure"@en;
    rdfs:comment "Signal.OBD.FuelPressure : PID 0A - Fuel pressure"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:FuelPressureSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:TimingAdvance a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "TimingAdvance"@en;
    rdfs:comment "Signal.OBD.TimingAdvance : PID 0E - Time advance (angle)"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngleUnit
  ].

vsso:IntakeTemperature a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "Intake Temperature"@en;
    rdfs:comment "Signal.OBD.IntakeTemp : PID 0F - Intake temperature"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:Intake-AirTemperatureSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:ThrottlePosition a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "ThrottlePosition"@en;
    rdfs:comment "Signal.OBD.ThrottlePosition : PID 11 - Throttle position - 0 = closed throttle, 100 = open throttle"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:ThrottlePositionSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:AirStatus a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
    rdfs:label "AirStatus"@en;
    rdfs:comment "Signal.OBD.AirStatus : PID 12 - Secondary air status"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isActuatedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:O2Voltage a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "Voltage"@en;
    rdfs:comment "Signal.OBD.O2.BankX.SensorY.Voltage : PID 14->1B - Sensor voltage"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:O2Sensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:EnergyPerElectricChargeUnit
  ].

vsso:AuxInputStatus a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
    rdfs:label "AuxInputStatus"@en;
    rdfs:comment "Signal.OBD.AuxInputStatus : PID 1E - Auxiliary input status (power take off)"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isActuatedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:RunTime a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "RunTime"@en;
    rdfs:comment "Signal.OBD.RunTime : PID 1F - Engine run time"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:Timer
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TimeUnit
  ].

vsso:PidsB a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "PidsB"@en;
    rdfs:comment "Signal.OBD.PidsB : PID 20 - Bit array of the supported pids 21 to 40"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:DistanceWithMIL a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "DistanceWithMIL"@en;
    rdfs:comment "Signal.OBD.DistanceWithMIL : PID 21 - Distance traveled with MIL on"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:Odometer
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LengthUnit
  ].

vsso:FuelRailPressureVac a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "FuelRailPressureVac"@en;
    rdfs:comment "Signal.OBD.FuelRailPressureVac : PID 22 - Fuel rail pressure relative to vacuum"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:FuelRailPressureSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:FuelRailPressureDirect a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "FuelRailPressureDirect"@en;
    rdfs:comment "Signal.OBD.FuelRailPressureDirect : PID 23 - Fuel rail pressure direct inject"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:FuelRailPressureSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:O2WRVoltage a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "Voltage"@en;
    rdfs:comment "Signal.OBD.O2WR.SensorX.Voltage : PID 24->2B - Lambda voltage for wide range/band oxygen sensor X"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:O2Sensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:EnergyPerElectricChargeUnit
  ].

vsso:CommandedEGR a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "CommandedEGR"@en;
    rdfs:comment "Signal.OBD.CommandedEGR : PID 2C - Commanded exhaust gas recirculation (EGR)"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:EGRSystemMonitor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:EGRError a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "EGRError"@en;
    rdfs:comment "Signal.OBD.EGRError : PID 2D - Exhaust gas recirculation (EGR) error"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:EGRSystemMonitor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:CommandedEVAP a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
    rdfs:label "CommandedEVAP"@en;
    rdfs:comment "Signal.OBD.CommandedEVAP : PID 2E - Commanded evaporative purge (EVAP) valve"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:EVAPSystem
    ];
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isActuatedBy;
        owl:allValuesFrom vsso:EVAPSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:WarmupsSinceDTCClear a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "WarmupsSinceDTCClear"@en;
    rdfs:comment "Signal.OBD.WarmupsSinceDTCClear : PID 30 - Number of warm-ups since codes cleared"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:DistanceSinceDTCClear a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "DistanceSinceDTCClear"@en;
    rdfs:comment "Signal.OBD.DistanceSinceDTCClear : PID 31 - Distance traveled since codes cleared"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:LengthUnit
  ].

vsso:EVAPVaporPressure a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "EVAPVaporPressure"@en;
    rdfs:comment "Signal.OBD.EVAPVaporPressure : PID 32 - Evaporative purge (EVAP) system pressure"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:EVAPSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:BarometricPressure a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "BarometricPressure"@en;
    rdfs:comment "Signal.OBD.BarometricPressure : PID 33 - Barometric pressure"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:Barometer
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:O2Current a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "Current"@en;
    rdfs:comment "Signal.OBD.O2WR.Sensor1.Current : PID 34-3B - Lambda current for wide range/band oxygen sensor 1"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:O2Sensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:ElectricCurrentUnit
  ].

vsso:CatalystTemperature a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "Temperature1"@en;
    rdfs:comment "Signal.OBD.Catalyst.BankX.TemperatureY : PID 3C->3F - Catalyst temperature from bank X, sensor Y"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:CatalystTemperatureSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TemperatureUnit
  ].

vsso:PidsC a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "PidsC"@en;
    rdfs:comment "Signal.OBD.PidsC : PID 40 - Bit array of the supported pids 41 to 60"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ControlModuleVoltage a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "ControlModuleVoltage"@en;
    rdfs:comment "Signal.OBD.ControlModuleVoltage : PID 42 - Control module voltage"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:VoltageSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:EnergyPerElectricChargeUnit
  ].

vsso:AbsoluteLoad a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "AbsoluteLoad"@en;
    rdfs:comment "Signal.OBD.AbsoluteLoad : PID 43 - Absolute load value"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:CommandedEquivalenceRatio a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "CommandedEquivalenceRatio"@en;
    rdfs:comment "Signal.OBD.CommandedEquivalenceRatio : PID 44 - Commanded equivalence ratio"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:RelativeThrottlePosition a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "RelativeThrottlePosition"@en;
    rdfs:comment "Signal.OBD.RelativeThrottlePosition : PID 45 - Relative throttle position"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:ThrottlePositionSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ThrottlePositionB-C a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "ThrottlePositionB"@en;
    rdfs:comment "Signal.OBD.ThrottlePositionB/C : PID 47/48 - Absolute throttle position B/C"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:ThrottlePositionSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:AcceleratorPositionD-E-F a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "AcceleratorPositionD"@en;
    rdfs:comment "Signal.OBD.AcceleratorPositionD/E/F : PID 49/4A/4B - Accelerator pedal position D/E/F"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:PedalPositionSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:ThrottleActuation a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal, vsso:ActuableSignal;
    rdfs:label "ThrottleActuator"@en;
    rdfs:comment "Signal.OBD.ThrottleActuator : PID 4C - Commanded throttle actuator"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:ThrottlePositionSensor
    ];
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isActuatedBy;
        owl:allValuesFrom vsso:ThrottleActuator
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:RunTimeMIL a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "RunTimeMIL"@en;
    rdfs:comment "Signal.OBD.RunTimeMIL : PID 4D - Run time with MIL on"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:Timer
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TimeUnit
  ].

vsso:TimeSinceDTCCleared a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "TimeSinceDTCCleared"@en;
    rdfs:comment "Signal.OBD.TimeSinceDTCCleared : PID 4E - Time since trouble codes cleared"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:Timer
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:TimeUnit
  ].

vsso:MaxMAF a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "MaxMAF"@en;
    rdfs:comment "Signal.OBD.MaxMAF : PID 50 - Maximum flow for mass air flow sensor"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:MAFSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:MassPerTimeUnit
  ].

vsso:FuelType a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "FuelType"@en;
    rdfs:comment "Signal.OBD.FuelType : PID 51 - Fuel type"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:EthanolPercent a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "EthanolPercent"@en;
    rdfs:comment "Signal.OBD.EthanolPercent : PID 52 - Percentage of ethanol in the fuel"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:FluidSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:EVAPVaporPressureAbsolute a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignall;
    rdfs:label "EVAPVaporPressureAbsolute"@en;
    rdfs:comment "Signal.OBD.EVAPVaporPressureAbsolute : PID 53 - Absolute evaporative purge (EVAP) system pressure"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:EVAPSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:EVAPVaporPressureAlternate a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "EVAPVaporPressureAlternate"@en;
    rdfs:comment "Signal.OBD.EVAPVaporPressureAlternate : PID 54 - Alternate evaporative purge (EVAP) system pressure"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:EVAPSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:ShortTermO2Trim a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "ShortTermO2Trim"@en;
    rdfs:comment "Signal.OBD.ShortTermO2Trim : PID 55/57 - Short term secondary O2 trim"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:LongTermO2Trim a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "LongTermO2Trim"@en;
    rdfs:comment "Signal.OBD.LongTermO2Trim : PID 56/58 - Long term secondary O2 trim"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:FuelRailPressureAbsolute a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "FuelRailPressureAbsolute"@en;
    rdfs:comment "Signal.OBD.FuelRailPressureAbsolute : PID 59 - Absolute fuel rail pressure"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:FuelRailPressureSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:PressureOrStressUnit
  ].

vsso:RelativeAcceleratorPosition a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "RelativeAcceleratorPosition"@en;
    rdfs:comment "Signal.OBD.RelativeAcceleratorPosition : PID 5A - Relative accelerator pedal position"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:PedalPositionSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:HybridBatteryRemaining a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "HybridBatteryRemaining"@en;
    rdfs:comment "Signal.OBD.HybridBatteryRemaining : PID 5B - Remaining life of hybrid battery"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:BatterySensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:FuelInjectionTiming a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "FuelInjectionTiming"@en;
    rdfs:comment "Signal.OBD.FuelInjectionTiming : PID 5D - Fuel injection timing"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:CrankshaftPositionSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:AngleUnit
  ].

vsso:FuelRate a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "FuelRate"@en;
    rdfs:comment "Signal.OBD.FuelRate : PID 5E - Engine fuel rate"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:FlowSensor
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:VolumePerTimeUnit
  ].

vsso:DTCCount a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "DTCCount"@en;
    rdfs:comment "Signal.OBD.Status.DTCCount : Number of Diagnostic Trouble Codes (DTC)"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].

vsso:MIL a rdfs:Class, owl:Class;
    rdfs:subClassOf vsso:ObservableSignal;
    rdfs:label "MIL"@en;
    rdfs:comment "Signal.OBD.Status.MIL : Malfunction Indicator Light (MIL) False = Off, True = On"@en;
    rdfs:subClassOf [
      a owl:Restriction;
        owl:onProperty sosa:isObservedBy;
        owl:allValuesFrom vsso:DiagnosticSystem
    ];
    rdfs:subClassOf [
    a owl:Restriction;
    owl:onProperty qudt:unit;
    owl:allValuesFrom qudt:DimensionlessUnit
  ].


## Attributes
vsso:refuelPosition a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "RefuelPosition"@en;
        rdfs:comment "Attribute.Body.RefuelPosition : Location of the fuel cap or charge port"@en;
        rdfs:domain vsso:Body;
        rdfs:range [owl:oneOf("front_left"@en "front_right"@en "middle_left"@en 
"middle_right"@en "rear_left"@en "rear_right"@en)].


vsso:bodyType a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "BodyType"@en;
        rdfs:comment "Attribute.Body.BodyType : Body type code as defined by ISO 3779"@en;
        rdfs:domain vsso:Body;
        rdfs:range xsd:string.


vsso:driveType a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "DriveType"@en;
        rdfs:comment "Attribute.Drivetrain.Transmission.DriveType : Drive type."@en;
        rdfs:domain vsso:Transmission;
        rdfs:range [owl:oneOf("unknown"@en "Front-wheel drive"@en "Rear-wheel drive"@en 
"All-wheel drive"@en)].


vsso:transmissionType a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Type"@en;
        rdfs:comment "Attribute.Drivetrain.Transmission.Type : Transmission type."@en;
        rdfs:domain vsso:Transmission;
        rdfs:range [owl:oneOf("unknown"@en "sequential"@en "H"@en "automatic"@en "Direct-Shift Gearbox"@en 
"Continuous Variable Transmission"@en)].


vsso:gearCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "GearCount"@en;
        rdfs:comment "Attribute.Drivetrain.Transmission.GearCount : Number of forward gears in the transmission. -1 = CVT."@en;
        rdfs:domain vsso:Transmission;
        rdfs:range xsd:integer.


vsso:fuelType a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "FuelType"@en;
        rdfs:comment "Attribute.Drivetrain.InternalCombustionEngine.FuelType : Type of fuel that the engine runs on."@en;
        rdfs:domain vsso:InternalCombustionEngine;
        rdfs:range [owl:oneOf("unknown"@en "gasoline"@en "diesel"@en "E85"@en "CNG"@en)].


vsso:engineConfiguration a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Configuration"@en;
        rdfs:comment "Attribute.Drivetrain.InternalCombustionEngine.Configuration : Engine configuration."@en;
        rdfs:domain vsso:InternalCombustionEngine;
        rdfs:range [owl:oneOf("unknown"@en "straight"@en "V"@en "boxer"@en "W"@en "rotary"@en 
"radial"@en "square"@en "H"@en "U"@en "opposed"@en "X"@en)].


vsso:maxTorque a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "MaxTorque"@en;
        rdfs:comment "Attribute.Drivetrain.InternalCombustionEngine.MaxTorque : Peak power, in newton meter, that the engine can generate."@en;
        rdfs:domain vsso:InternalCombustionEngine;
        rdfs:range cdt:ucum.


vsso:displacement a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Displacement"@en;
        rdfs:comment "Attribute.Drivetrain.InternalCombustionEngine.Displacement : Displacement in cubic centimetres."@en;
        rdfs:domain vsso:InternalCombustionEngine;
        rdfs:range cdt:volume.


vsso:maxPower a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "MaxPower"@en;
        rdfs:comment "Attribute.Drivetrain.InternalCombustionEngine.MaxPower : Peak power, in kilowatts, that engine can generate."@en;
        rdfs:domain vsso:InternalCombustionEngine;
        rdfs:range cdt:power.


vsso:tankCapacity a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "TankCapacity"@en;
        rdfs:comment "Attribute.Drivetrain.FuelSystem.TankCapacity : Capacity of the fuel tank in liters"@en;
        rdfs:domain vsso:FuelSystem;
        rdfs:range cdt:volume.


vsso:track a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Track"@en;
        rdfs:comment "Attribute.Chassis.Track : Overall wheel tracking, in mm."@en;
        rdfs:domain vsso:Chassis;
        rdfs:range cdt:length.


vsso:towWeight a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "TowWeight"@en;
        rdfs:comment "Attribute.Chassis.TowWeight : Maximum weight, in kilos, of trailer."@en;
        rdfs:domain vsso:Chassis;
        rdfs:range cdt:mass.


vsso:width a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Width"@en;
        rdfs:comment "Attribute.Chassis.Width : Overall vehicle width, in mm."@en;
        rdfs:domain vsso:Chassis;
        rdfs:range cdt:length.


vsso:length a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Length"@en;
        rdfs:comment "Attribute.Chassis.Length : Overall vehicle length, in mm."@en;
        rdfs:domain vsso:Chassis;
        rdfs:range cdt:length.


vsso:axleCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Count"@en;
        rdfs:comment "Attribute.Chassis.Axle.Count : Number of axles on the vehicle"@en;
        rdfs:domain vsso:Axle;
        rdfs:range xsd:int. 


vsso:wheelCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "WheelCount"@en;
        rdfs:comment "Attribute.Chassis.Axle.Row1.WheelCount : Number of wheels on the first axle"@en;
        rdfs:domain vsso:Axle;
        rdfs:range xsd:int.


vsso:wheelWidth a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "WheelWidth"@en;
        rdfs:comment "Attribute.Chassis.Axle.Row1.WheelWidth : Width of wheels (without tires), in inches, as per ETRO / TRA standard."@en;
        rdfs:domain vsso:Axle;
        rdfs:range cdt:length.


vsso:tireDiameter a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "TireDiameter"@en;
        rdfs:comment "Attribute.Chassis.Axle.Row1.TireDiameter : Diameter of tires, in inches, as per ETRO / TRA standard."@en;
        rdfs:domain vsso:Axle;
        rdfs:range cdt:length.


vsso:wheelDiameter a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "WheelDiameter"@en;
        rdfs:comment "Attribute.Chassis.Axle.Row1.WheelDiameter : Diameter of wheels (without tires), in inches, as per ETRO / TRA standard."@en;
        rdfs:domain vsso:Axle;
        rdfs:range cdt:length.


vsso:tireWidth a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "TireWidth"@en;
        rdfs:comment "Attribute.Chassis.Axle.Row1.TireWidth : Width of tires, in inches, as per ETRO / TRA standard."@en;
        rdfs:domain vsso:Axle;
        rdfs:range cdt:length.


vsso:curbWeight a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "CurbWeight"@en;
        rdfs:comment "Attribute.Chassis.CurbWeight : Vehicle curb weight, in kg, including all liquids and full tank of fuel, but no cargo or passengers."@en;
        rdfs:domain vsso:Chassis;
        rdfs:range cdt:mass. 


vsso:height a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Height"@en;
        rdfs:comment "Attribute.Chassis.Height : Overall vehicle height, in mm."@en;
        rdfs:domain vsso:Chassis;
        rdfs:range cdt:length. 


vsso:wheelbase a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Wheelbase"@en;
        rdfs:comment "Attribute.Chassis.Wheelbase : Overall wheel base, in mm."@en;
        rdfs:domain vsso:Chassis;
        rdfs:range cdt:length. 


vsso:grossWeight a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "GrossWeight"@en;
        rdfs:comment "Attribute.Chassis.GrossWeight : Curb weight of vehicle, including all liquids and full tank of fuel and full load of cargo and passengers."@en;
        rdfs:domain vsso:Chassis;
        rdfs:range cdt:mass. 


vsso:model a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Model"@en;
        rdfs:comment "Attribute.Vehicle.VehicleIdentification.Model : Vehicle model"@en;
        rdfs:domain vsso:VehicleIdentification;
        rdfs:range xsd:string. 


vsso:wmi a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "WMI"@en;
        rdfs:comment "Attribute.Vehicle.VehicleIdentification.WMI : 3-character World Manufacturer Identification (WMI) as defined by ISO 3780"@en;
        rdfs:domain vsso:VehicleIdentification;
        rdfs:range xsd:string. 


vsso:vin a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "VIN"@en;
        rdfs:comment "Attribute.Vehicle.VehicleIdentification.VIN : 17-character Vehicle Identification Number (VIN) as defined by ISO 3779"@en;
        rdfs:domain vsso:VehicleIdentification;
        rdfs:range xsd:string.


vsso:brand a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Brand"@en;
        rdfs:comment "Attribute.Vehicle.VehicleIdentification.Brand : Vehicle brand or manufacturer"@en;
        rdfs:domain vsso:VehicleIdentification;
        rdfs:range xsd:string. 


vsso:year a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Year"@en;
        rdfs:comment "Attribute.Vehicle.VehicleIdentification.Year : Model year of the vehicle"@en;
        rdfs:domain vsso:VehicleIdentification;
        rdfs:range xsd:int.


vsso:row1PosCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Row1PosCount"@en;
        rdfs:comment "Attribute.Cabin.Seat.Row1PosCount : Number of seats across row 1 (frontmost)"@en;
        rdfs:domain vsso:Seat;
        rdfs:range xsd:int.

vsso:row2PosCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Row1PosCount"@en;
        rdfs:comment "Attribute.Cabin.Seat.Row2PosCount : Number of seats across row 2"@en;
        rdfs:domain vsso:Seat;
        rdfs:range xsd:int.

vsso:row3PosCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Row1PosCount"@en;
        rdfs:comment "Attribute.Cabin.Seat.Row3PosCount : Number of seats across row 3"@en;
        rdfs:domain vsso:Seat;
        rdfs:range xsd:int.

vsso:row4PosCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Row4PosCount"@en;
        rdfs:comment "Attribute.Cabin.Seat.Row4PosCount : Number of seats across row 4"@en;
        rdfs:domain vsso:Seat;
        rdfs:range xsd:int.

vsso:row5PosCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Row4PosCount"@en;
        rdfs:comment "Attribute.Cabin.Seat.Row5PosCount : Number of seats across row 5 (rearmost)"@en;
        rdfs:domain vsso:Seat;
        rdfs:range xsd:int.


vsso:rowCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "RowCount"@en;
        rdfs:comment "Attribute.Cabin.Seat.RowCount : Number of seat rows in vehicle"@en;
        rdfs:domain vsso:Seat;
        rdfs:range xsd:int.


vsso:driverPostion a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "DriverPostion"@en;
        rdfs:comment "Attribute.Cabin.Seat.DriverPostion : The position of the driver seat in row 1. (1-5)"@en;
        rdfs:domain vsso:Seat;
        rdfs:range xsd:int.


vsso:doorCount a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Count"@en;
        rdfs:comment "Attribute.Cabin.Door.Count : Number of doors in vehicle"@en;
        rdfs:domain vsso:Door;
        rdfs:range xsd:int.


vsso:steeringWheelSide a owl:DatatypeProperty;
        rdfs:subPropertyOf vsso:attribute;
        rdfs:label "Position"@en;
        rdfs:comment "Attribute.Cabin.SteeringWheel.Position : Position of the steering wheel inside the cabin"@en;
        rdfs:domain vsso:SteeringWheel;
        rdfs:range [owl:oneOf("front_left"@en "front_right"@en)].


#TODO: add OBD sensors/actuators

#Sensors
vsso:Accelerometer rdfs:subClassOf sosa:Sensor;
  rdfs:label "Accelerometer"@en;
  rdfs:comment "Sensor measuring the linear acceleration"@en.

vsso:Odometer rdfs:subClassOf sosa:Sensor;
  rdfs:label "Odometer"@en;
  rdfs:comment "Sensor measuring the travelled distance"@en.

vsso:Timer rdfs:subClassOf sosa:Sensor;
  rdfs:label "Timer"@en;
  rdfs:comment "Sensor measuring the elapsed time"@en.

vsso:Thermometer rdfs:subClassOf sosa:Sensor;
  rdfs:label "Thermometer"@en;
  rdfs:comment "Sensor measuring the temperature"@en.

vsso:Gyroscope rdfs:subClassOf sosa:Sensor;
  rdfs:label "Gyroscope"@en;
  rdfs:comment "Sensor measuring the angular orientation and angular velocity"@en.

vsso:Speedometer rdfs:subClassOf sosa:Sensor;
  rdfs:label "Speedometer"@en;
  rdfs:comment "Sensor measuring the speed, in a gearbox"@en.

vsso:MirrorTiltSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Mirro Tilt Sensor"@en;
  rdfs:comment "Sensor measuring the tilt of a mirror"@en.

vsso:MirrorPanSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Mirror Pan Sensor"@en;
  rdfs:comment "Sensor measuring the pan of a mirror"@en.

vsso:LeftIndicatorSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Left indicator switch"@en;
  rdfs:comment "Senses if the left indicator switch is on"@en.

vsso:LowBeamLightSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Low Beam Light Switch"@en;
  rdfs:comment "Senses if the low beam light switch is on"@en.

vsso:HighBeamLightSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "High Beam Light Switch"@en;
  rdfs:comment "Senses if the high beam switch is on"@en.

vsso:FrontFogLightSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Front fog position switch"@en;
  rdfs:comment "Senses if the front fog light switch is on"@en.

vsso:BrakeLightSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Brake light switch"@en;
  rdfs:comment "Senses if the brake light switch is on"@en.

vsso:RightIndicatorSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Right indicator switch"@en;
  rdfs:comment "Senses if the right indicator switch is on"@en.

vsso:BackupLightSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Backup light switch"@en;
  rdfs:comment "Senses if the backup light switch is on"@en.

vsso:ParkingLightSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Parking light switch"@en;
  rdfs:comment "Senses if the parking lkight switch is on"@en.

vsso:RearFogLightSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Rear for light switch"@en;
  rdfs:comment "Senses if the rear fog light switch is on"@en.

vsso:HazardLightSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Hazard light switch"@en;
  rdfs:comment "Senses if the hazard light switch is on"@en.

vsso:RunningLightSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Running light switch"@en;
  rdfs:comment "Senses if the running light switch is on"@en.

vsso:WiperSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Wiper switch"@en;
  rdfs:comment "Senses the wiping level"@en.

vsso:WindshieldHeaterSwitch rdfs:subClassOf sosa:Sensor;
  rdfs:label "Windshield heater switch"@en;
  rdfs:comment "Senses the windshield heater status"@en.

vsso:WasherFuildLevelSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Washer fluid level sensor"@en;
  rdfs:comment "Sensor measuring the washer fluid level"@en.

vsso:RainSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Rain sensor"@en;
  rdfs:comment "Sensor measuring the rain intensity"@en.

vsso:WindowPositionSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Window position sensor"@en;
  rdfs:comment "Sensor measuring the position of a window"@en.

vsso:DoorContactSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Door contact sensor"@en;
  rdfs:comment "Sensor measuring if a door is open or closed"@en.

vsso:FanSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Fan sensor"@en;
  rdfs:comment "Sensor measuring the fan speed"@en.

vsso:SunroofPositionSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Sunroof position sensor"@en;
  rdfs:comment "Sensor measuring the position of the sunroof"@en.

vsso:HeadRestraintSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Head restraint sensor"@en;
  rdfs:comment "Sensor measuring the position of the head restraint"@en.

vsso:SeatPositionSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Seat position sensor"@en;
  rdfs:comment "Sensor measuring the position of the seat"@en.

vsso:OccupantClassificationSystem rdfs:subClassOf sosa:Sensor;
  rdfs:label "Occupant classification system"@en;
  rdfs:comment "Sensor detecting the presence of a passenger in a seat"@en.

vsso:SeatHeater rdfs:subClassOf sosa:Sensor;#TODO
  rdfs:label "seat heater"@en;
  rdfs:comment "Sensor measuring the "@en.

vsso:LumbarPositionSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Lumbar position sensor"@en;
  rdfs:comment "Sensor measuring the lumbar position"@en.

vsso:AirbagSystem rdfs:subClassOf sosa:Sensor;
  rdfs:label "Airbag system"@en;
  rdfs:comment "Sensor measuring if the airbag is deployed"@en.

vsso:BeltSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Belt sensor"@en;
  rdfs:comment "Sensor measuring if a seat is belted"@en.

vsso:LightSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Light sensor"@en;
  rdfs:comment "Sensor measuring the light intensity"@en.

vsso:PedalPositionSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Pedal position sensor"@en;
  rdfs:comment "Sensor measuring the pedal position"@en.

vsso:ParkingBrakeSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Parking brake sensor"@en;
  rdfs:comment "Sensor measuring if the parking brake is engaged"@en.

vsso:BrakeFluidLevelSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Brake fluid level sensor"@en;
  rdfs:comment "Sensor measuring the brake fluid level"@en.

vsso:BrakePadWearSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Brake padwear sensor"@en;
  rdfs:comment "Sensor measuring the padwear of a brake"@en.

vsso:TirePressureMonitoringSystem rdfs:subClassOf sosa:Sensor;
  rdfs:label "Tire pressure monitoring system"@en;
  rdfs:comment "Sensor measuring the pressure of a tire"@en.

vsso:TireTemperatureSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Tire temperature sensor"@en;
  rdfs:comment "Sensor measuring the temperature of a tire"@en.

vsso:SteeringWheelPositionSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Steering wheel position sensor"@en;
  rdfs:comment "Sensor measuring the position of a steering wheel"@en.

vsso:SteeringWheelAngleSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Steering wheel angle sensor"@en;
  rdfs:comment "Sensor measuring the angle of the steering wheel"@en.

vsso:FlowSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Flow sensor"@en;
  rdfs:comment "Sensor measuring the flow of a fluid (fuel)"@en.

vsso:FuelTankLevelSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Fuel tank level sensor"@en;
  rdfs:comment "Sensor measuring the fuel tank level"@en.

vsso:ClutchWearIndicator rdfs:subClassOf sosa:Sensor;
  rdfs:label "Clutch wear indicator"@en;
  rdfs:comment "Sensor measuring the wear of the clutch"@en.

vsso:OilPressureSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Oil pressure sensor"@en;
  rdfs:comment "Sensor measuring the pressure of oil in the engine"@en.

vsso:ManifoldAirPressureSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Manifold Air Pressure Sensor"@en;
  rdfs:comment "Sensor measuring the MAP (manifold air pressure)"@en.

vsso:PowerMeter rdfs:subClassOf sosa:Sensor;
  rdfs:label "Power meter"@en;
  rdfs:comment "Sensor measuring the engine power"@en.

vsso:OilThermometer rdfs:subClassOf sosa:Sensor;
  rdfs:label "Oil thermometer"@en;
  rdfs:comment "Sensor measuring the oil temperature"@en.

vsso:TorqueMeter rdfs:subClassOf sosa:Sensor;
  rdfs:label "Torquemeter"@en;
  rdfs:comment "Sensor measuring a torque"@en.

vsso:CoolantThermometer rdfs:subClassOf sosa:Sensor;
  rdfs:label "Coolant thermometer"@en;
  rdfs:comment "Sensor measuring the temperature of the coolant fluid"@en.

vsso:ThrottlePositionSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Throttle position"@en;
  rdfs:comment "Sensor measuring the trottle position"@en.

vsso:MassAirFlowSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Mass air flow sensor"@en;
  rdfs:comment "Sensor measuring the MAF (mass air flow)"@en.

vsso:RotationalSpeedSensor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Rotational speed sensor"@en;
  rdfs:comment "Sensor measuring the rotational speed"@en.

vsso:BatteryMonitor rdfs:subClassOf sosa:Sensor;
  rdfs:label "Battery monitor"@en;
  rdfs:comment "Sensor measuring the capacity of a battery"@en.



vsso:ObstacleDetectionSensor rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Obstacle detection Sensor"@en;
  rdfs:comment "Sensor measuring the distance to obstacles"@en.
vsso:TractionControlSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Traction control system"@en;
  rdfs:comment "Appliance designed to prevent loss of traction of wheels"@en.
vsso:CruiseControlSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Cruise control system"@en;
  rdfs:comment "Appliance that automatically controls the speed of a vehicle"@en.
vsso:AntilockBrakingSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Antilock braking system"@en;
  rdfs:comment "Appliance that allows thes wheels to maintain tractive contact by prevent them from locking up"@en.
vsso:ElectronicStabilityControlSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Electronic stability control system"@en;
  rdfs:comment "System detecting loss of traction (skidding) and reducing it"@en.
vsso:LaneDepartureDetectionSensor rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Lane departure detection sensor"@en;
  rdfs:comment "Sensor measuring when a lane is crossed"@en.
vsso:Mirrorheater rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Mirror heater"@en;
  rdfs:comment "Mirror heating appliance"@en.
vsso:HornSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Horn system"@en;
  rdfs:comment "Horn/honk system"@en.
vsso:HoodLatch rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Hood latch"@en;
  rdfs:comment "System controling the hood"@en.
vsso:TrunkLock rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Trunk lock"@en;
  rdfs:comment "System locking the trunk"@en.
vsso:TrunkLatch rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Trunk latch"@en;
  rdfs:comment "System opening the trunk"@en.
vsso:ChildLock rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Child lock"@en;
  rdfs:comment "Child lock"@en.
vsso:DoorLock rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Door lock"@en;
  rdfs:comment "Door lock"@en.
vsso:Defroster rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Defroster"@en;
  rdfs:comment "Windshield defroster"@en.
vsso:RecirculationSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Recirculation system"@en;
  rdfs:comment "Recirculation system"@en.
vsso:AirConditioningSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Air conditioning system"@en;
  rdfs:comment "Air conditioning system"@en.
vsso:MultimediaSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Multimedia system"@en;
  rdfs:comment "Multimedia system"@en.
vsso:GPS rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Global positioning system"@en;
  rdfs:comment "Global positioning system (GPS)"@en.
vsso:MassageSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Massage system"@en;
  rdfs:comment "Massage system for car seats"@en.
vsso:PassengerLight rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Passenger light"@en;
  rdfs:comment "Individual passenger light system"@en.
vsso:GloveBoxLight rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Glove box light"@en;
  rdfs:comment "Glove box light"@en.
vsso:DomeLight rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Dome light"@en;
  rdfs:comment "Dome light"@en.
vsso:TrunkLight rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Trunk light"@en;
  rdfs:comment "Trunk light"@en.
vsso:DimmingSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Dimming system"@en;
  rdfs:comment "Mirror dimming system"@en.
vsso:Gearbox rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Gearbox system"@en;
  rdfs:comment "Gearbox monitoring system"@en.
vsso:DriveSystem rdfs:subClassOf sosa:Sensor, sosa:Actuator;
  rdfs:label "Drive system"@en;
  rdfs:comment "Driving mode control"@en.


vsso:MirrorTiltActuator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Mirror tilt actuator"@en;
  rdfs:comment "Controls a mirro tilt"@en.
vsso:MirrorPanActuator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Mirror pan actuator"@en;
  rdfs:comment "Controls a mirro pan"@en.
vsso:LeftIndicator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Left indicator light"@en;
  rdfs:comment "Turns on and off the left indicator"@en.
vsso:LowBeamLight rdfs:subClassOf sosa:Actuator;
  rdfs:label "Low beam light"@en;
  rdfs:comment "Turns on and off the low beam light"@en.
vsso:HighBeamLight rdfs:subClassOf sosa:Actuator;
  rdfs:label "High beam light"@en;
  rdfs:comment "Turns on and off the high beam light"@en.
vsso:FrontFogLight rdfs:subClassOf sosa:Actuator;
  rdfs:label "Front fog light"@en;
  rdfs:comment "Turns on and off the front fog light"@en.
vsso:BrakeLight rdfs:subClassOf sosa:Actuator;
  rdfs:label "Brake light"@en;
  rdfs:comment "Turns on and off the brake light"@en.
vsso:RightIndicator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Right indicator light"@en;
  rdfs:comment "Turns on and off the right indicator"@en.
vsso:BackupLight rdfs:subClassOf sosa:Actuator;
  rdfs:label "Backup light"@en;
  rdfs:comment "Turns on and off the backup light"@en.
vsso:ParkingLight rdfs:subClassOf sosa:Actuator;
  rdfs:label "Parking light"@en;
  rdfs:comment "Turns on and off the parking light"@en.
vsso:RearFogLight rdfs:subClassOf sosa:Actuator;
  rdfs:label "Rear fog light"@en;
  rdfs:comment "Turns on and off the rear fog light"@en.
vsso:HazardLight rdfs:subClassOf sosa:Actuator;
  rdfs:label "Hazard light"@en;
  rdfs:comment "Turns on and off the hazard light"@en.
vsso:RunningLight rdfs:subClassOf sosa:Actuator;
  rdfs:label "Running light"@en;
  rdfs:comment "Turns on and off the running light"@en.
vsso:Wiper rdfs:subClassOf sosa:Actuator;
  rdfs:label "Wiper"@en;
  rdfs:comment "Controls a wiper"@en.
vsso:WindshieldHeater rdfs:subClassOf sosa:Actuator;
  rdfs:label "Windshiel heater"@en;
  rdfs:comment "Controls a windshield heater"@en.
vsso:RearShadeActuator rdfs:subClassOf sosa:Actuator;#TODO: reuse other below
  rdfs:label "Rear shade actuator"@en;
  rdfs:comment "Controls a window blind"@en.
vsso:RearShadeSystem rdfs:subClassOf sosa:Actuator;
  rdfs:label "Rear shade system"@en;
  rdfs:comment "Controls sliding actions"@en.
vsso:DoorContactActuator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Door contact actuator"@en;
  rdfs:comment "Shuts or opens a door"@en.
vsso:FanControl rdfs:subClassOf sosa:Actuator;
  rdfs:label "Fan control"@en;
  rdfs:comment "Controls a fan speed"@en.
vsso:TemperatureSwitch rdfs:subClassOf sosa:Actuator;
  rdfs:label "Temperature switch"@en;
  rdfs:comment "Controls the local temperature in HVAC systems"@en.
vsso:SunroofPositionActuator rdfs:subClassOf sosa:Actuator;#TODO
  rdfs:label "Sunroof position actuator"@en;
  rdfs:comment "Controls the sunroof slide"@en.
vsso:HeadRestraintActuator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Head restraint actuator"@en;
  rdfs:comment "Controls the head restraint position"@en.
vsso:SeatCooler rdfs:subClassOf sosa:Actuator;
  rdfs:label "Seat cooler"@en;
  rdfs:comment "Controls the seat cooler and heater"@en.
vsso:SeatPositionActuator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Seat position actuator"@en;
  rdfs:comment "Controls the seat position"@en.
vsso:LumbarPositionActuator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Lumbar position actuator"@en;
  rdfs:comment "Controls the lumbar position"@en.
vsso:LumbarPressureActuator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Lumber pressure actuator"@en;
  rdfs:comment "Controls the lumbar pressure"@en.
vsso:CushionPositionActuator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Cushion position actuator"@en;
  rdfs:comment "Controls the cushion position"@en.
vsso:ParkingBrakeSwitch rdfs:subClassOf sosa:Actuator;
  rdfs:label "Parking brake switch"@en;
  rdfs:comment "Controls the parking brake"@en.
vsso:SteeringWheelPositionActuator rdfs:subClassOf sosa:Actuator;
  rdfs:label "Steering wheel position actuator"@en;
  rdfs:comment "Controls the steering wheel position"@en.
