Skip to content

SensorML 3.0 Specification Audit #23

@Sam-Bolling

Description

@Sam-Bolling

SensorML 3.0 Specification Audit

Document Information

Related Standards

  • SWE Common 3.0: OGC 24-014 (Draft)
  • GeoPose 1.0: OGC 21-056r11
  • ISO 19115: Geographic information — Metadata

Media Types

  • JSON Encoding: application/sml+json
  • Draft Media Type: application/vnd.ogc.sml+json

✅ Audit Status: COMPLETED

Completion Date: 2026-01-27
Compliance Level: ~75% (Core types complete, advanced features missing)

Summary

  • ✅ All core process types implemented (PhysicalSystem, PhysicalComponent, SimpleProcess, AggregateProcess)
  • ✅ Parser with format detection working
  • ✅ Type guards and runtime validation
  • ✅ Good test coverage
  • ⚠️ Limited position type resolution
  • ❌ No JSON Schema validation
  • ❌ Missing advanced types (Event, Link, Capabilities, Characteristics)

Detailed Findings

See audit comment below for complete implementation status.


🎯 Implementation Checklist

Core Types

  • DescribedObject (Clause 8.2.2)
  • AbstractProcess (Clause 8.2.9)
  • SimpleProcess (Clause 8.3)
  • AggregateProcess (Clause 8.4)
  • PhysicalComponent (Clause 8.5)
  • AbstractPhysicalProcess (Clause 8.5.1)
  • PhysicalSystem (Clause 8.6)
  • Event (Clause 8.7)
  • Link (Clause 8.8)
  • Deployment (Clause 8.9)
  • DerivedProperty (Clause 8.10)

Supporting Types

  • XLink
  • Identifier
  • Classifier
  • Keyword
  • Contact
  • Document
  • Constraint
  • ValidTime
  • CapabilityList (Clause 8.2.8)
  • CharacteristicList (Clause 8.2.7)
  • Feature (Clause 8.2.5)
  • Observation (Clause 8.2.6)

Parsers & Validators

  • SensorML parser (SystemParser.parseSensorML)
  • Format detection
  • GeoJSON conversion
  • JSON Schema validation
  • Type guards

Position Handling

  • Point geometry
  • Pose (lat/lon/h)
  • TextComponent resolution
  • AbstractProcess resolution
  • XLink resolution
  • VectorComponent resolution
  • DataRecordComponent resolution
  • DataArrayComponent resolution

Testing

  • Parser tests
  • Format detection tests
  • Type guard tests
  • Schema validation tests
  • Conformance tests

🔧 Priority Recommendations

HIGH Priority

  1. JSON Schema Validation: Implement validation against official OGC schemas at https://schemas.opengis.net/sensorML/3.0/json/

MEDIUM Priority

  1. Full Position Resolution: Implement resolution for all Position type variants (TextComponent, Process, XLink, SWE components)
  2. Missing Types: Add Event, Link, CapabilityList, CharacteristicList as use cases emerge

LOW Priority

  1. Conformance Documentation: Document which OGC 23-000 conformance classes (Annex A) are supported

📚 Implementation References

Code Locations

  • Type Definitions: src/ogc-api/csapi/sensorml/
  • Parser: src/ogc-api/csapi/parsers/base.ts
  • Format Detection: src/ogc-api/csapi/formats.ts
  • Tests: src/ogc-api/csapi/parsers/base.spec.ts, src/ogc-api/csapi/formats.spec.ts

Key Files


📖 Standard Structure

Part 1: Overview (Clauses 1-7)

  • Clause 1: Scope
  • Clause 2: Conformance
  • Clause 3: References
  • Clause 4: Terms and Definitions
  • Clause 5: Conventions
  • Clause 6: General Model Overview
  • Clause 7: Requirements Classes Overview

Part 2: Core Types (Clause 8)

  • 8.2: Core Packages
    • 8.2.2: DescribedObject
    • 8.2.5: Feature
    • 8.2.6: Observation
    • 8.2.7: CharacteristicList
    • 8.2.8: CapabilityList
    • 8.2.9: AbstractProcess
  • 8.3: SimpleProcess
  • 8.4: AggregateProcess
  • 8.5: PhysicalComponent
  • 8.5.1: AbstractPhysicalProcess
  • 8.6: PhysicalSystem
  • 8.7: Event
  • 8.8: Link
  • 8.9: Deployment
  • 8.10: DerivedProperty

Part 3: Requirements and Conformance (Annexes)

  • Annex A: Conformance Classes
  • Annex B: Requirements
  • Annex C: Examples

Last Updated: 2026-01-27
Audit Performed By: GitHub Copilot
Standard Version: OGC 23-000 (Published)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions