diff --git a/CODEOWNERS b/CODEOWNERS index 0e2a478..bed582d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -55,6 +55,9 @@ /ositrace @robertschubert /ositrace @pmai +# simulated-sensor directory (Rhea) +/simulated-sensor @telina + # leakage-test directory (Selcan AND Robert Or Lena) /leakage-test @selcan-k /leakage-test @robertschubert @lenasauermann @@ -62,6 +65,3 @@ # marketplace-info directory (Robert AND Johannes) /marketplace-info @robertschubert /marketplace-info @jtdemer - - - diff --git a/scenario/VARIABLES.md b/scenario/VARIABLES.md index 97abc28..2672558 100644 --- a/scenario/VARIABLES.md +++ b/scenario/VARIABLES.md @@ -20,12 +20,12 @@ | ContentShape | scenario | abstractionLevel | | 1 | Pegasus type of scenario | | scenario_shacl.ttl | | ContentShape | scenario | timeDate | 0 | 1 | Time of the scenario if applicaple. Either time of recording or if synthetic the time it happens. | | scenario_shacl.ttl | | ContentShape | scenario | aim | 0 | 1 | Purpose of this scenario. | | scenario_shacl.ttl | -| ContentShape | scenario | usedStandardFunctions | 0 | | Use of the functionalities from the standard. E.g. which Actions are used. | | scenario_shacl.ttl | +| ContentShape | scenario | usedStandardFunctions | 0 | 1 | Use of the functionalities from the standard. E.g. which Actions are used. | | scenario_shacl.ttl | | ContentShape | scenario | movementDescription | | 1 | Type of movement used by traffic participants according to the OpenSCENARIO standard. | | scenario_shacl.ttl | | ContentShape | scenario | customCommands | 0 | 1 | Scenario/domain specific commands or actions | | scenario_shacl.ttl | -| ContentShape | scenario | catalogs | 0 | | Link to Catalogs | | scenario_shacl.ttl | -| ContentShape | scenario | EnvironmentModels | 0 | | Link to environment models | | scenario_shacl.ttl | -| ContentShape | scenario | trafficSpace | 0 | 1 | Link to traffic space | | scenario_shacl.ttl | +| ContentShape | scenario | catalogs | 0 | | Link to Catalogs | | scenario_shacl.ttl | +| ContentShape | scenario | environmentModels | 0 | | Link to environment models | | scenario_shacl.ttl | +| ContentShape | scenario | trafficSpace | 0 | 1 | Link to traffic space | | scenario_shacl.ttl | | ContentShape | scenario | sunAzimuth | 0 | | Azimuth of the sun in degrees | | scenario_shacl.ttl | | ContentShape | scenario | countrySpecificSign | 0 | 1 | Country specific traffic signs | | scenario_shacl.ttl | | ContentShape | scenario | countrySpecificTrafficParticipants | 0 | 1 | Country specific traffic participants | | scenario_shacl.ttl | diff --git a/scenario/scenario_instance.json b/scenario/scenario_instance.json index 1725188..755b74c 100644 --- a/scenario/scenario_instance.json +++ b/scenario/scenario_instance.json @@ -46,8 +46,9 @@ } }, "scenario:content": { - "@type": "undefined", - "scenario:catalogs": { + "@type": "scenario:Content", + "scenario:catalogs": [ + { "@type": "manifest:Link", "manifest:path": { "@value": "https://inavlid.link.com/my_pedestrian_catalog.xosc", @@ -56,7 +57,8 @@ "manifest:type": "assetData", "manifest:format": "other", "manifest:accessRole": "owner" - }, + } + ], "scenario:abstractionLevel": "Logical", "scenario:country": { "@value": "Germany", diff --git a/scenario/scenario_shacl.ttl b/scenario/scenario_shacl.ttl index 3ac910e..2d88816 100644 --- a/scenario/scenario_shacl.ttl +++ b/scenario/scenario_shacl.ttl @@ -26,7 +26,7 @@ scenario:ScenarioShape a sh:NodeShape ; sh:path scenario:format ], [ sh:maxCount 1 ; sh:minCount 1 ; - sh:node scenario:Content ; + sh:node scenario:ContentShape ; sh:name "content object" ; sh:description "content object with properties for scenario intrinsic attributes" ; sh:order 3 ; @@ -118,6 +118,7 @@ scenario:ContentShape a sh:NodeShape ; sh:datatype xsd:string ; sh:description "Use of the functionalities from the standard. E.g. which Actions are used."@en ; sh:message "Validation of usedStandardFunctions failed!"@en ; + sh:maxCount 1 ; sh:minCount 0 ; sh:name "used functions in the standard"@en ; sh:order 4 ; @@ -140,7 +141,6 @@ scenario:ContentShape a sh:NodeShape ; sh:order 6 ; sh:path scenario:customCommands ], [ skos:example "http://mywebsite.de/Catalogs" ; - sh:datatype xsd:anyURI ; sh:description "Link to Catalogs"@en ; sh:message "Validation of catalogs failed!"@en ; sh:minCount 0 ; @@ -149,16 +149,14 @@ scenario:ContentShape a sh:NodeShape ; sh:order 7 ; sh:path scenario:catalogs ], [ skos:example "http://mywebsite.de/myModel.fbx" ; - sh:datatype xsd:anyURI ; sh:description "Link to environment models"@en ; sh:message "Validation of environment failed!"@en ; sh:minCount 0 ; sh:name "3d models"@en ; sh:node manifest:LinkShape ; sh:order 8 ; - sh:path scenario:EnvironmentModels ], + sh:path scenario:environmentModels ], [ skos:example "http://mywebsite.de/map.xodr" ; - sh:datatype xsd:anyURI ; sh:description "Link to traffic space"@en ; sh:maxCount 1 ; sh:message "Validation of trafficSpace failed!"@en ; @@ -288,4 +286,4 @@ scenario:DataSourceShape a sh:NodeShape ; sh:name "source description"@en ; sh:order 2 ; sh:path scenario:sourceDescription ] ; - sh:targetClass scenario:DataSource . \ No newline at end of file + sh:targetClass scenario:DataSource . diff --git a/simulated-sensor/VARIABLES.md b/simulated-sensor/VARIABLES.md new file mode 100644 index 0000000..2eb350f --- /dev/null +++ b/simulated-sensor/VARIABLES.md @@ -0,0 +1,26 @@ +# Variables of SHACL Files in this folder + +## Prefixes + +- simulated-sensor: + +## List of SHACL Properties + +| Shape | Property prefix | Property | MinCount | MaxCount | Description | Datatype/NodeKind | Filename | +| --- | --- | --- | --- | --- | --- | --- | --- | +| SimulatedSensorShape | simulated-sensor | sensorType | 1 | 1 | Perception and other relevant sensors for autonomous driving | | simulated-sensor_shacl.ttl | +| SimulatedSensorShape | simulated-sensor | sensorIdentifier | 0 | 1 | Name/Identifier of the sensor in the simulator | | simulated-sensor_shacl.ttl | +| SimulatedSensorShape | simulated-sensor | mountingPosition | 0 | 1 | Possible mounting positions of the radar | | simulated-sensor_shacl.ttl | +| RadarShape | simulated-sensor | numberOfBeams | 0 | 1 | Number of beams sent by the radar sensor | | simulated-sensor_shacl.ttl | +| RadarShape | simulated-sensor | distance | 0 | 1 | Covered distance or range in meters | | simulated-sensor_shacl.ttl | +| RadarShape | simulated-sensor | fieldOfView | 0 | 1 | Field of view angles, supporting up to three values (e.g., horizontal, upper, and lower FoV) | | simulated-sensor_shacl.ttl | +| LidarShape | simulated-sensor | numberOfBeams | 0 | 1 | Number of beams sent by the lidar sensor | | simulated-sensor_shacl.ttl | +| LidarShape | simulated-sensor | distance | 0 | 1 | Covered distance or range in meters | | simulated-sensor_shacl.ttl | +| LidarShape | simulated-sensor | fieldOfView | 0 | 1 | Field of view angles, supporting up to three values (e.g., horizontal, upper, and lower FoV) | | simulated-sensor_shacl.ttl | +| CameraShape | simulated-sensor | rgbFlag | 0 | 1 | If true, camera is RGB camera | | simulated-sensor_shacl.ttl | +| CameraShape | simulated-sensor | 3dflag | 0 | 1 | If true, camera is 3D camera | | simulated-sensor_shacl.ttl | +| CameraShape | simulated-sensor | depthFlag | 0 | 1 | If true, camera is depth camera | | simulated-sensor_shacl.ttl | +| CameraShape | simulated-sensor | fieldOfView | 0 | 1 | Field of view angles, supporting up to three values (e.g., horizontal, upper, and lower FoV) | | simulated-sensor_shacl.ttl | +| FieldOfViewShape | simulated-sensor | fovAngle1 | 1 | 1 | FoV angle 1 (mandatory if FoV attribute is used) | | simulated-sensor_shacl.ttl | +| FieldOfViewShape | simulated-sensor | fovAngle2 | 0 | 1 | FoV angle 2 (optional, depending on simulator and sensor type) | | simulated-sensor_shacl.ttl | +| FieldOfViewShape | simulated-sensor | fovAngle3 | 0 | 1 | FoV angle 3 (optional, depending on simulator and sensor type) | | simulated-sensor_shacl.ttl | diff --git a/simulated-sensor/simulated-sensor_instance.json b/simulated-sensor/simulated-sensor_instance.json new file mode 100755 index 0000000..42a8e8c --- /dev/null +++ b/simulated-sensor/simulated-sensor_instance.json @@ -0,0 +1,34 @@ +{ + "@context": { + "xsd": "http://www.w3.org/2001/XMLSchema#", + "skos": "http://www.w3.org/2004/02/skos/core#", + "simulated-sensor": "https://github.com/GAIA-X4PLC-AAD/ontology-management-base/tree/main/simulated-sensor/", + "sh": "http://www.w3.org/ns/shacl#" + }, + "@id": "did:web:registry.gaia-x.eu:SimulatedSensor:B6gYmAU2PiHe8c3aqSbazCkrE7sUfCkRPFv2", + "@type": "simulated-sensor:SimulatedSensor", + "simulated-sensor:sensorType": { + "@type": "simulated-sensor:Radar", + "simulated-sensor:numberOfBeams": { + "@value": "1500", + "@type": "xsd:integer" + }, + "simulated-sensor:distance": { + "@value": "100.0", + "@type": "xsd:float" + }, + "simulated-sensor:fieldOfView": { + "@type": "simulated-sensor:FieldOfView", + "simulated-sensor:fovAngle1": { + "@value": "60", + "@type": "xsd:float" + }, + "simulated-sensor:fovAngle2": { + "@value": "30", + "@type": "xsd:float" + } + } + }, + "simulated-sensor:sensorIdentifier": "sensor.other.radar", + "simulated-sensor:mountingPosition": "Front-mid" +} \ No newline at end of file diff --git a/simulated-sensor/simulated-sensor_ontology.ttl b/simulated-sensor/simulated-sensor_ontology.ttl new file mode 100644 index 0000000..01f4d73 --- /dev/null +++ b/simulated-sensor/simulated-sensor_ontology.ttl @@ -0,0 +1,37 @@ +@prefix dcterms: . +@prefix gax-core: . +@prefix gx: . +@prefix owl: . +@prefix rdfs: . +@prefix simulated-sensor: . +@prefix xsd: . +@prefix openlabel: . + +simulated-sensor: a owl:Ontology ; + rdfs:label "Ontology definition for simulated_sensor"@en ; + dcterms:contributor "Rhea C. Rinaldo (IQZ), Aaron Blickle (IQZ), Johannes Heinrich (IQZ)" ; + dcterms:creator "The GAIA-X 4 PLC AAD Project Team" ; + dcterms:identifier "https://github.com/GAIA-X4PLC-AAD/ontology-management-base/tree/main/simulated-sensor/" ; + owl:versionIRI ; + owl:versionInfo "0.1" . + +simulated-sensor:SimulatedSensor a owl:Class ; + rdfs:label "class definition simulated sensor"@en ; + rdfs:comment "A sensor in an automotive driving simulator"@en ; + rdfs:subClassOf gx:DataResource . + +simulated-sensor:Radar a owl:Class ; + rdfs:label "class definition for a simulated radar sensor"@en ; + rdfs:comment "A simulated RADAR sensor"@en . + +simulated-sensor:Lidar a owl:Class ; + rdfs:label "class definition for a simulated lidar sensor"@en ; + rdfs:comment "A simulated LIDAR sensor"@en . + +simulated-sensor:Camera a owl:Class ; + rdfs:label "class definition for a simulated camera sensor"@en ; + rdfs:comment "A simulated camera sensor"@en . + +simulated-sensor:FieldOfView a owl:Class ; + rdfs:label "class definition for the Field of View (FoV) of a perception sensor"@en ; + rdfs:comment "A field of view as float angles"@en . \ No newline at end of file diff --git a/simulated-sensor/simulated-sensor_shacl.ttl b/simulated-sensor/simulated-sensor_shacl.ttl new file mode 100644 index 0000000..8ed6c11 --- /dev/null +++ b/simulated-sensor/simulated-sensor_shacl.ttl @@ -0,0 +1,212 @@ +@prefix simulated-sensor: . +@prefix sh: . +@prefix skos: . +@prefix xsd: . + +simulated-sensor:SimulatedSensorShape a sh:NodeShape ; + sh:targetClass simulated-sensor:SimulatedSensor ; + # Ensure at least one sensor is available + sh:property [ + skos:example "Radar" ; + sh:path simulated-sensor:sensorType ; + sh:minCount 1 ; + sh:maxCount 1; + sh:name "sensor type"@en ; + sh:or ( + [ sh:node simulated-sensor:RadarShape ] + [ sh:node simulated-sensor:LidarShape ] + [ sh:node simulated-sensor:CameraShape ] + ) ; + sh:order 0 ; + sh:description "Perception and other relevant sensors for autonomous driving" ; + ] ; + # sensorIdentifier (string) + sh:property [ + skos:example "RADAR" ; + sh:path simulated-sensor:sensorIdentifier ; + sh:datatype xsd:string ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "sensor identifier"@en ; + sh:order 1 ; + sh:description "Name/Identifier of the sensor in the simulator" ; + ] ; + # mountingPosition TODO: Perhaps this is too specific, not all simulators will use the same metric/parametrization for this + sh:property [ + skos:example "Front-mid" ; + sh:path simulated-sensor:mountingPosition ; + sh:datatype xsd:string ; + sh:in ("Front-left" "Front-right" "Front-mid" "Top-left" "Top-right" "Top-mid" "Back-left" "Back-right" "Back-mid") ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "mounting position"@en ; + sh:order 2 ; + sh:description "Possible mounting positions of the radar" ; + ] . + +# Available sensors +# RADAR +simulated-sensor:RadarShape a sh:NodeShape ; + sh:targetClass simulated-sensor:Radar ; + # numberOfBeams (integer) + sh:property [ + skos:example "1500" ; + sh:path simulated-sensor:numberOfBeams ; + sh:datatype xsd:integer ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:minInclusive 0 ; + sh:name "number of beams"@en ; + sh:order 0 ; + sh:description "Number of beams sent by the radar sensor" ; + ] ; + # distance (float) + sh:property [ + skos:example "30.0" ; + sh:path simulated-sensor:distance ; + sh:datatype xsd:float ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:minInclusive 0; + sh:name "distance"@en ; + sh:order 1 ; + sh:description "Covered distance or range in meters" ; + ] ; + # fieldOfView (Tuple of three floats) + sh:property [ + skos:example "30.0 70.0 20.0" ; + sh:name "FoV"@en ; + sh:node simulated-sensor:FieldOfViewShape ; + sh:path simulated-sensor:fieldOfView ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:order 2 ; + sh:description "Field of view angles, supporting up to three values (e.g., horizontal, upper, and lower FoV)" ; + ] . + +# LIDAR +simulated-sensor:LidarShape a sh:NodeShape ; + sh:targetClass simulated-sensor:Lidar ; + # numberOfBeams (integer) + sh:property [ + skos:example "1500" ; + sh:path simulated-sensor:numberOfBeams ; + sh:datatype xsd:integer ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:minInclusive 0; + sh:name "number of beams"@en ; + sh:order 0 ; + sh:description "Number of beams sent by the lidar sensor" ; + ] ; + # distance (float) + sh:property [ + skos:example "30.0" ; + sh:path simulated-sensor:distance ; + sh:datatype xsd:float ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:minInclusive 0; + sh:name "distance"@en ; + sh:order 1 ; + sh:description "Covered distance or range in meters" ; + ] ; + # fieldOfView (Tuple of three floats) + sh:property [ + skos:example "30.0 70.0 20.0" ; + sh:name "FoV"@en ; + sh:node simulated-sensor:FieldOfViewShape ; + sh:path simulated-sensor:fieldOfView ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:order 2 ; + sh:description "Field of view angles, supporting up to three values (e.g., horizontal, upper, and lower FoV)" ; + ] . + +# CAMERA +simulated-sensor:CameraShape a sh:NodeShape ; + sh:targetClass simulated-sensor:Camera ; + # rgbFlag (boolean) to indicate whether camera is RGB camera + sh:property [ + skos:example "true" ; + sh:path simulated-sensor:rgbFlag ; + sh:datatype xsd:boolean ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "RGB flag"@en ; + sh:order 0 ; + sh:description "If true, camera is RGB camera" ; + ] ; + # 3dFlag (boolean) to indicate whether camera is 3D camera + sh:property [ + skos:example "false" ; + sh:path simulated-sensor:3dflag ; + sh:datatype xsd:boolean ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "3D flag"@en ; + sh:order 1 ; + sh:description "If true, camera is 3D camera" ; + ] ; + # depthFlag (boolean) to indicate whether camera is depth camera + sh:property [ + skos:example "false" ; + sh:path simulated-sensor:depthFlag ; + sh:datatype xsd:boolean ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "depth flag"@en ; + sh:order 2 ; + sh:description "If true, camera is depth camera" ; + ] ; + # fieldOfView (Tuple of three floats) + sh:property [ + skos:example "30.0 70.0 20.0" ; + sh:name "FoV"@en ; + sh:node simulated-sensor:FieldOfViewShape ; + sh:path simulated-sensor:fieldOfView ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:order 3 ; + sh:description "Field of view angles, supporting up to three values (e.g., horizontal, upper, and lower FoV)" ; + ] . + +simulated-sensor:FieldOfViewShape a sh:NodeShape ; + sh:targetClass simulated-sensor:FieldOfView ; + # fov angle 1 (float) + sh:property [ + skos:example "30.0" ; + sh:path simulated-sensor:fovAngle1 ; + sh:datatype xsd:float ; + sh:minCount 1 ; + sh:maxCount 1 ; + sh:name "FoV angle 1"@en ; + sh:order 0 ; + sh:description "FoV angle 1 (mandatory if FoV attribute is used)" + ] ; + # fov angle 2 (float) + sh:property [ + skos:example "30.0" ; + sh:path simulated-sensor:fovAngle2 ; + sh:datatype xsd:float ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "FoV angle 2"@en ; + sh:order 1 ; + sh:description "FoV angle 2 (optional, depending on simulator and sensor type)" + ] ; + # fov angle 3 (float) + sh:property [ + skos:example "30.0" ; + sh:path simulated-sensor:fovAngle3 ; + sh:datatype xsd:float ; + sh:minCount 0 ; + sh:maxCount 1 ; + sh:name "FoV angle 3"@en ; + sh:order 2 ; + sh:description "FoV angle 3 (optional, depending on simulator and sensor type)" + ] . + + + +