Skip to content

Migrate to Metanorma template with structured requirements#33

Merged
liangsteve merged 60 commits intomainfrom
template-upgrade
Mar 2, 2026
Merged

Migrate to Metanorma template with structured requirements#33
liangsteve merged 60 commits intomainfrom
template-upgrade

Conversation

@liangsteve
Copy link
Copy Markdown
Collaborator

Summary

  • Migrates the OGC standard document build from raw asciidoctor to Metanorma tooling (Gemfile, Makefile, metanorma.yml, GitHub Actions CI)
  • Renames entry point from standard_document.adoc to document.adoc (Metanorma convention)
  • Converts requirements and abstract tests from inline AsciiDoc tables to Metanorma structured format with individual REQ_*.adoc and ATS_*.adoc files
  • Fixes docsubtype to conceptual-model, updates README.md with Metanorma build instructions
  • Adds compiled outputs to .gitignore, removes old standard_document.* tracked outputs
  • Fixes CI deploy condition to support both main and master branches
  • Includes all prior work on the template-upgrade branch: normative text, definitions, UML diagrams, informative clauses, bibliography, and contributors table

Test plan

  • Verify metanorma compile document.adoc produces HTML, PDF, DOC, XML without functional errors
  • Verify requirements and abstract tests render correctly in compiled output
  • Verify GitHub Actions CI triggers on PR and builds successfully
  • Review remaining XML validation warnings (keyword format, anchor/id attributes) — these are Metanorma version-specific and non-blocking

🤖 Generated with Claude Code

liangsteve and others added 30 commits June 13, 2025 20:51
initialize branch 25-019.  Part 1 Data Model
added the standard template instructions
added doc number, etc.
Need to change to PlantUML or XMI in the future.
add Mechanism definition
note to "identity, structure, or purpose"

The phrase “identity, structure, or purpose” is meant to cover all the ways people might mistakenly bake feature assumptions into mechanisms:
	•	Identity → specific asset (e.g., “compressor”)
	•	Structure → mechanical configuration (e.g., “has rod packing”)
	•	Purpose → functional role (e.g., “storage tank used for condensate”)
… Source Feature and Unit of Measure

added definitions, Emission Event, Feature, Measurement, Observation, Source Feature and Unit of Measure
Added latest UML using mermaid format.
feat(emissionml): refactor core model—value-objects for time, evidence-based assertions, and intent via mechanism

Summary
	•	Reworked EmissionML class diagram to center on evidence-backed assertions and cleaner separations of concerns. Introduces TemporalBound value object, determination-method hierarchy, and intent derived from Mechanism. Aligns Observation with ISO 19156 and simplifies Event surface.

Added
	•	TemporalBound <<ValueObject>> with time: TM_Instant and quality: DQ_Element.
	•	Provenance edges: EmissionQuantity --> Observation : hasEvidence, TemporalBound --> Observation : hasEvidence.
	•	Determination-method hierarchy: AbstractDeterminationMethod (abstract), TemporalDeterminationMethod, QuantityDeterminationMethod.
	•	Observation now explicit (<<ISO 19156:2023>>) with result and time.
	•	EmissionIntent <<CodeList>> with members intentional | unintentional | unknown.
	•	Constraint: SourceFeatureType --> Mechanism : allowedMechanism (“honor system”).
	•	Cardinalities and named roles across associations.

Changed
	•	EmissionEvent now composes:
	•	*-- EmissionQuantity : hasQuantity
	•	o-- TemporalBound : startTime / endTime?
	•	--> SourceFeature : hasSource
	•	--> Mechanism : hasMechanism
	•	Intent is no longer a direct attribute of EmissionEvent; it is implied via Mechanism ..> EmissionIntent : hasIntent.
	•	EmissionQuantity now:
	•	*-- UnitOfMeasure : hasUnit
	•	--> QuantityDeterminationMethod : hasDeterminationMethod
	•	Keeps quantity: double, quality: DQ_Element (explicit).
	•	Observation --> SourceFeature : featureOfInterest (renamed from “UltimateFeatureOfInterest”).
	•	SourceFeature --> SourceFeatureType : hasType (role name clarified).

Removed
	•	StartEvent, EndEvent, and TemporalBoundEvent (replaced by TemporalBound with composition from EmissionEvent).
	•	DeterminationMethod (replaced by abstract + specific subclasses).
	•	DeterminationType, EmissionEventPattern.
	•	SourceFeature.attributionGranularity, SourceFeature.observations[0..*] (provenance now modeled from the asserting objects).
	•	EmissionEvent.name, direct intent field.

Migration notes
	•	Replace EmissionEvent --> StartEvent/EndEvent with:
	•	EmissionEvent o-- TemporalBound : startTime
	•	EmissionEvent o-- TemporalBound : endTime (0..1)
	•	Map TemporalBoundEvent/DeterminationType → TemporalBound --> TemporalDeterminationMethod.
	•	Map EmissionQuantity.quantityDeterminationMethod: URI → EmissionQuantity --> QuantityDeterminationMethod.
	•	Replace SourceFeatureType.mayEmitVia → SourceFeatureType.allowedMechanism.
	•	Update edges/roles:
	•	EmissionEvent.isQuantifiedBy → hasQuantity
	•	Observation.UltimateFeatureOfInterest → featureOfInterest
	•	SourceFeature.hasSourceFeatureType → hasType
	•	Intent handling: remove EmissionEvent.intent; derive via Mechanism ..> EmissionIntent.

Rationale
	•	Clarifies provenance (quantities/times cite their observations).
	•	Encapsulates temporal assertions as value objects with quality.
	•	Separates determination semantics for time vs quantity.
	•	Moves intent to mechanism level to reduce duplication and ambiguity.

Refs: ISO 19156 (Observation), ISO 19157 (DQ_Element).
latest UML.  re: SWG meeting on 2025-12-12
Changes Summary
	•	Data Quality Elements — Cardinality Updated
	•	EmissionQuantity.quality: changed from DQ_Element → DQ_Element[0..*] (line 11)
	•	TemporalBound.quality: changed from DQ_Element → DQ_Element[0..*] (line 21)
Impact: both elements can now have zero or multiple quality elements instead of exactly one.
	•	SourceType Class — Re-enabled
	•	Lines 35–38: SourceType class uncommented and fully defined with:
	•	+name: String
	•	+description: String
	•	+definition: URI
	•	Line 80: relationship uncommented:
Source "0..*" --> "0..1" SourceType : hasType
Impact: SourceType is now an optional part of the model.
	•	Mechanism Class — Expanded Definition
	•	Changed from <<CodeList>> (old line 41) to a full class with attributes (new lines 41–44):
	•	+label: String
	•	+description: String[0..1]
	•	+hasIntent: EmissionIntent
Impact: Mechanism is now a proper class with properties, not just a code list reference.
	•	EmissionIntent — Changed from CodeList to Enumeration
	•	Type changed from <<CodeList>> → <<enumeration>> (line 47)
	•	Values standardized to uppercase:
	•	intentional → INTENTIONAL
	•	unintentional → UNINTENTIONAL
	•	unknown → UNKNOWN
Impact: EmissionIntent is now an enumeration with standardized values.
	•	DeterminationMethod — Enhanced
	•	Added +description: String[0..1] (line 54)
	•	Changed +definition: URI → +definition: URI[0..1] (line 55)
Impact: both description and definition are now optional.

Removed Elements
	•	Lines 78–79 (old): removed the commented “Honor System” constraint relationship:
%% SourceType "1" --> "0..*" Mechanism : allowedMechanism
Impact: this constraint is no longer part of the model, even as a comment.
update the definition of Emission Event.
Steve Liang and others added 28 commits February 16, 2026 11:54
Add missing Source Type (Req 3) and Emission Intent (Req 9),
remove start-time and end-time (relations of Emission Event,
not standalone requirements), renumber to match clause_7,
and simplify descriptions to single source of truth pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OM_Observation was the O&M 2.0 class name. OMS 3.0 / ISO/OGC 19156:2023
uses Observation. Updated class references and notes across clause_7,
Mermaid diagram, and UML markdown. ISO citation kept as
ISO/OGC 19156:2023 (OMS 3.0) for context.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rendering workflow: Mermaid (.mmd) → PlantUML (.puml) → SVG/PNG.
PlantUML polyline routing resolves crowded edge labels for the
multiple evidence and basis relationships from EmissionEvent.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add change notes for evidence/basis lift to EmissionEvent,
TemporalBound as true value object, aggregation→composition,
and EmissionIntent attribute→relationship. Move ISO alignment
items to separate subsection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ase class

Aligns EmissionML with OMS 3.0 process model:
- Add Procedure class (<<ISO 19156:2023>> stereotype, empty)
- Rename DeterminationMethod → DeterminationProcedure
- DeterminationProcedure inherits from Procedure
- Update Requirement 10 URI to determination-procedure
- Add Requirement 12 for Procedure class
- Update Annex B with new Procedures section and references
- Update layering diagram with Procedure inheritance chain

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add missing terms to clause_4: Determination Procedure, Emission Quantity,
  Emission Intent, Procedure, Source Type, Temporal Bound
- Fix clause_4 AsciiDoc NOTE markup (Note: → +NOTE:)
- Align clause_7 lead sentences to match clause_4 exactly:
  Feature, Source, Observation, Procedure, Determination Procedure
- Refine definitions: Source Type (remove redundant "type or category"),
  Emission Quantity (use "substance" not "pollutant", precise wording),
  Temporal Bound (use MAY per OGC convention),
  Emission Intent (use "code list" not "enumeration"),
  Determination Procedure (remove e.g., use direct statement)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Emission Event and Source NOTEs (occurrent/continuant, segmentation
conventions) are modeling rationale, not definitional. They already
exist in clause_7 class descriptions. Keeps clause_4 concise.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace literal *-- and --> text with rendered PlantUML symbol images
  for composition and association in the UML notation table
- Convert all Note: to NOTE: (Metanorma admonition syntax) for proper
  OGC-styled note rendering
- Recompile standard document

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Covers: domain-specific ontology for atmospheric emission events,
three key design principles (evidence chains, explicit uncertainty
provenance, clear spatial/temporal context with OMS 3.0 reconciliation
of heterogeneous sensors), foundational ISO/OGC standards alignment,
and credibility/traceability/reproducibility benefits.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ions, and abstract test suite

Replace OGC template placeholders with EmissionML-specific content across
clauses 1-3, clause 5, and annex A. Add normative ISO references (19101-1,
19107, 19108, 19109, 19157, 19156:2023), build the full Abstract Test Suite
for all 13 conformance classes, set the base URI to emissionml/1.0, and
enable previously commented-out clause includes. Recompile standard document.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add descriptive table titles to all requirement and conformance test
tables for better cross-referencing. Convert front material sections
to proper AsciiDoc headings, add submitting organizations, replace
placeholder bibliography with OGC OMS reference, and add Overview
subsections where required by Metanorma. Change document status to
swg-draft. Recompile standard document.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…applicability

Write clause_6 (Background and Motivation) covering structural gaps
in current emission data approaches, how EmissionML addresses them,
cross-domain applicability (emergency management, landfill, permafrost,
agriculture, wastewater, public safety), and use case summary table.
Add data value chain figure illustrating write-once-use-many-times
architecture. Add EmissionML Discussion Paper (OGC 25-023) to
bibliography. Add context/ to .gitignore. Recompile standard document.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reorganize the PlantUML class diagram so EmissionEvent is centered
with relationships radiating outward: composition targets (TemporalBound,
EmissionQuantity) above, Source top-left, Mechanism top-right, evidence
(Observation) and basis (DeterminationProcedure) below. Switch from
polyline to spline routing for clearer label-to-line association.
Recompile standard document.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Fraunhofer, DataCove, GTI Energy, Mbrace Energy, and Alberta
Energy Regulator to submitting organizations with country labels.
Add Contributors table with individual contributor names and
affiliations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add all 8 submitting organizations to :submitting-organizations:
header in standard_document.adoc so Metanorma front matter matches
the body text. Fix "Engery" → "Energy" typo for Alberta Energy
Regulator. Recompile standard document.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace commas with pipe separators in Contributors table rows so
names and affiliations render in separate columns.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add [cols="1,2"] to Contributors table to prevent Metanorma from
merging consecutive rows. Update SensorUp affiliation. Recompile
standard document.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ct tests

Replace old asciidoctor-based build with Metanorma tooling (Gemfile, Makefile,
metanorma.yml, GitHub Actions CI). Rename entry point from standard_document.adoc
to document.adoc. Convert requirements and abstract tests from inline tables to
Metanorma structured format with individual files. Fix docsubtype, update
README with Metanorma build instructions, add compiled outputs to .gitignore,
and fix CI deploy branch condition for main.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Combines the rich project README from main (references, UML diagram,
functional requirements, events, contributing) with the updated
Metanorma build instructions and document structure from template-upgrade.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@liangsteve liangsteve merged commit e69c259 into main Mar 2, 2026
liangsteve pushed a commit that referenced this pull request Mar 2, 2026
This reverts commit e69c259, reversing
changes made to bc44c48.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant