-
Notifications
You must be signed in to change notification settings - Fork 0
Parsimony Manifest
Normative contract for which exact terms
flexo-rtmextracts from each external vocabulary (PROV-O, EARL, OntoGSN, ORG, FOAF, DCAT, OSLC-RM, OSLC-QM, omg-sysml). Themanifest.yamlschema, sample entries, and ≤ 2000-triple budget rules live here. Theflexo-rtmDesign Spec §6.6 X6 references this page;tests/conformance/test_ontology_parsimony.pyenforces it. See also Parsimony Policy (rationale), ADR-014 Parsimony Layer Build-Time Extraction.
External vocabularies are never loaded wholesale into rtm.ttl. Build-time MIREOT/SLME extraction produces minimal subsets containing only the terms flexo-rtm actually uses. The assembled rtm.ttl (Core + Alignment + Parsimony extracts) MUST be ≤ 2000 triples per X6 acceptance criterion.
manifest.yaml (in ontology/parsimony/manifest.yaml) is the declarative source of truth for what gets extracted. This page documents the schema and the per-vocabulary extraction set.
# ontology/parsimony/manifest.yaml
version: "1.0"
target_triple_budget: 2000
vocabularies:
- name: <human-readable name>
iri: <vocabulary base IRI>
source_file: <path to vendored full vocabulary>
extract_method: MIREOT | SLME | SPARQL_CONSTRUCT
extracted_classes:
- iri: <class IRI>
purpose: <one-line note on usage>
extracted_properties:
- iri: <property IRI>
purpose: <one-line note on usage>
extracted_individuals:
- iri: <individual IRI>
purpose: <e.g., earl:passed>
target_extract_file: <output path, e.g., ontology/parsimony/extracts/prov-subset.ttl>The build script ontology/parsimony/build.py reads this manifest, invokes the declared extraction method per vocabulary, and emits the subset files. The extracts are git-tracked (reproducible build).
Source: ontology/imports/prov-o.ttl (W3C PROV-O REC 2013)
Extract: ontology/parsimony/extracts/prov-subset.ttl
Method: MIREOT
- name: PROV-O
iri: "http://www.w3.org/ns/prov#"
extracted_classes:
- iri: prov:Activity
purpose: superclass of rtm:Activity; processes the cert artifact records
- iri: prov:Entity
purpose: superclass of rtm:Artifact; addressable artifacts
- iri: prov:Agent
purpose: superclass of foaf:Person / org:Organization in our model
- iri: prov:Person
purpose: ditto
- iri: prov:Organization
purpose: ditto
- iri: prov:Plan
purpose: declared activity blueprints (executable plans)
extracted_properties:
- iri: prov:wasGeneratedBy
purpose: artifact ← activity that produced it
- iri: prov:used
purpose: activity → artifact it consumed
- iri: prov:wasDerivedFrom
purpose: artifact lineage
- iri: prov:wasAssociatedWith
purpose: activity → agent (who ran it)
- iri: prov:wasAttributedTo
purpose: entity → agent (who produced it)
- iri: prov:startedAtTime
purpose: activity start time
- iri: prov:endedAtTime
purpose: activity end time
- iri: prov:atTime
purpose: instantaneous events (e.g., attestation moment)
- iri: prov:atLocation
purpose: where an activity ran (compute location)
- iri: prov:hadPlan
purpose: activity → its blueprint
- iri: prov:wasInformedBy
purpose: activity → activity (chain of derived activities)
- iri: prov:wasInvalidatedBy
purpose: entity → invalidating event (used by ADR-031 deprecated attestations)
- iri: prov:specializationOf
purpose: entity is a specialization of anotherApproximate triple count after extract: ~80
Source: ontology/imports/earl.ttl (W3C Evaluation and Report Language 1.0)
Extract: ontology/parsimony/extracts/earl-subset.ttl
Method: MIREOT
- name: EARL
iri: "http://www.w3.org/ns/earl#"
extracted_classes:
- iri: earl:Assertion
purpose: ancestral pattern for rtm:Attestation; informational alignment
- iri: earl:TestResult
purpose: pattern for evaluation outcomes
- iri: earl:TestCriterion
purpose: pattern for test definitions
extracted_properties:
- iri: earl:result
purpose: rtm:Attestation alignment; conveys outcome
- iri: earl:subject
purpose: what is being attested about
- iri: earl:test
purpose: which test produced the result
- iri: earl:assertedBy
purpose: who asserted (parallel to rtm:approvedBy)
extracted_individuals:
- iri: earl:passed
purpose: aligned with rtm:status/pass
- iri: earl:failed
purpose: aligned with rtm:status/fail
- iri: earl:cantTell
purpose: aligned with rtm:status/deferred
- iri: earl:inapplicable
purpose: edge-case outcome (rare in flexo-rtm; preserved for OSLC-QM compat)
- iri: earl:untested
purpose: dittoApproximate triple count: ~40
Source: ontology/imports/ontogsn.ttl (Goal Structuring Notation ontology)
Extract: ontology/parsimony/extracts/gsn-subset.ttl
Method: SLME
Per ADR-015 GSN Adoption for Adequacy and Sufficiency, flexo-rtm uses GSN's Solution + Justification patterns for adequacy / sufficiency claims (consistent with ADCS prototype).
- name: OntoGSN
iri: "https://w3id.org/ontogsn/"
extracted_classes:
- iri: gsn:Goal
purpose: top-level claim structure (used in adequacy/sufficiency criteria definitions)
- iri: gsn:Strategy
purpose: argumentation strategy
- iri: gsn:Solution
purpose: superclass of rtm:AdequacyClaim / rtm:SufficiencyClaim
- iri: gsn:Justification
purpose: rationale for an argument step
- iri: gsn:Assumption
purpose: underlying assumption
- iri: gsn:Context
purpose: applicable scope / conditions
extracted_properties:
- iri: gsn:supports
purpose: solution → claim relationship
- iri: gsn:byJustification
purpose: argument step's rationale
- iri: gsn:inContextOf
purpose: applicable context/assumptionsApproximate triple count: ~60
Source: ontology/imports/org.ttl (W3C Org Ontology, October 2014)
Extract: ontology/parsimony/extracts/org-subset.ttl
Method: MIREOT
- name: Org Ontology
iri: "http://www.w3.org/ns/org#"
extracted_classes:
- iri: org:Organization
purpose: organizations in identity projection (per ADR-028 polycentric ASOT)
- iri: org:Membership
purpose: person ↔ org with role
- iri: org:Role
purpose: roles in RBAC policies
- iri: org:OrganizationalUnit
purpose: hierarchical org structure (informational)
extracted_properties:
- iri: org:hasMembership
purpose: person → membership
- iri: org:organization
purpose: membership → org
- iri: org:role
purpose: membership → role
- iri: org:memberOf
purpose: convenience inverseApproximate triple count: ~50
Source: ontology/imports/foaf.rdf (FOAF Vocabulary Specification 0.99)
Extract: ontology/parsimony/extracts/foaf-subset.ttl
Method: MIREOT
- name: FOAF
iri: "http://xmlns.com/foaf/0.1/"
extracted_classes:
- iri: foaf:Person
purpose: human identity in projection
- iri: foaf:Agent
purpose: superclass of Person and Organization
extracted_properties:
- iri: foaf:name
purpose: human-readable name
- iri: foaf:mbox
purpose: email contact (optional)Approximate triple count: ~20
Source: ontology/imports/dcat.ttl (W3C DCAT v3)
Extract: ontology/parsimony/extracts/dcat-subset.ttl
Method: MIREOT
- name: DCAT
iri: "http://www.w3.org/ns/dcat#"
extracted_classes:
- iri: dcat:Distribution
purpose: optional; if adopters describe download distributions
extracted_properties:
- iri: dcat:downloadURL
purpose: optional fetch URL for rtm:Artifact (per External URI Rules)Approximate triple count: ~10
Source: ontology/imports/oslc-rm.ttl (OASIS OSLC-RM 2.1 vocabulary)
Extract: ontology/parsimony/extracts/oslc-rm-subset.ttl
Method: SPARQL CONSTRUCT (since OSLC vocab files have shape constraints we don't want)
Per OSLC Roundtrip Acceptance, the core mapping enumerates which OSLC-RM terms flexo-rtm consumes:
- name: OSLC-RM
iri: "http://open-services.net/ns/rm#"
extracted_classes:
- iri: oslc_rm:Requirement
- iri: oslc_rm:RequirementCollection
extracted_properties:
- iri: oslc_rm:elaboratedBy
- iri: oslc_rm:elaborates
- iri: oslc_rm:specifiedBy
- iri: oslc_rm:specifies
- iri: oslc_rm:satisfiedBy
- iri: oslc_rm:satisfies
- iri: oslc_rm:tracedTo
- iri: oslc_rm:affectedBy
- iri: oslc_rm:constrainedBy
- iri: oslc_rm:constrains
- iri: oslc_rm:decomposedBy
- iri: oslc_rm:decomposes
- iri: oslc_rm:implementedBy
- iri: oslc_rm:trackedBy
- iri: oslc_rm:validatedByApproximate triple count: ~80
Source: ontology/imports/oslc-qm.ttl
Extract: ontology/parsimony/extracts/oslc-qm-subset.ttl
Method: SPARQL CONSTRUCT
- name: OSLC-QM
iri: "http://open-services.net/ns/qm#"
extracted_classes:
- iri: oslc_qm:TestPlan
- iri: oslc_qm:TestCase
- iri: oslc_qm:TestScript
- iri: oslc_qm:TestExecutionRecord
- iri: oslc_qm:TestResult
extracted_properties:
- iri: oslc_qm:usesTestCase
- iri: oslc_qm:executesTestScript
- iri: oslc_qm:producedByTestExecutionRecord
- iri: oslc_qm:reportsOnTestCase
- iri: oslc_qm:reportsOnTestPlan
- iri: oslc_qm:runsTestCase
- iri: oslc_qm:runsOnTestEnvironment
- iri: oslc_qm:validatesRequirement
- iri: oslc_qm:blocksTestExecutionRecord
- iri: oslc_qm:relatedChangeRequest
extracted_individuals:
- iri: oslc_qm:passed
- iri: oslc_qm:failed
- iri: oslc_qm:inconclusive
- iri: oslc_qm:error
- iri: oslc_qm:blockedApproximate triple count: ~80
Source: ontology/imports/omg-sysml-v1.ttl (openCAESAR SysMLv2 OWL rendering)
Extract: ontology/parsimony/extracts/omg-sysml-subset.ttl
Method: SLME (preserves logical structure of SysMLv2 metamodel)
Per SysMLv2 Ingestion Contract §5, flexo-rtm uses a focused subset of SysMLv2:
- name: omg-sysml
iri: "https://www.omg.org/spec/SysML/20240801/SysML#"
extracted_classes:
- iri: omg-sysml:Element # root
- iri: omg-sysml:RequirementUsage # mapped to rtm:Requirement
- iri: omg-sysml:RequirementDefinition # mapped to rtm:RequirementDefinition
- iri: omg-sysml:PartUsage # evidence artifact
- iri: omg-sysml:PartDefinition # evidence artifact class
- iri: omg-sysml:Action # activity in SysMLv2
- iri: omg-sysml:Constraint # constraint
- iri: omg-sysml:PortUsage # ports (for connection lineage)
- iri: omg-sysml:Connection # connections between elements
- iri: omg-sysml:VerificationCaseUsage # mapped to rtm:TestCase
extracted_properties:
- iri: omg-sysml:elementId # stable identity
- iri: omg-sysml:qualifiedName # human-readable path
- iri: omg-sysml:owner # containment hierarchy
- iri: omg-sysml:satisfies # SysMLv2 satisfies relation
- iri: omg-sysml:verifies # SysMLv2 verifies relation
- iri: omg-sysml:requirement # requirement annotation
- iri: omg-sysml:assumes # assumption annotationApproximate triple count: ~150 (SysMLv2 has the largest extract due to metamodel structure)
| Vocabulary | Extract size |
|---|---|
| PROV-O | ~80 |
| EARL | ~40 |
| OntoGSN | ~60 |
| Org Ontology | ~50 |
| FOAF | ~20 |
| DCAT | ~10 |
| OSLC-RM | ~80 |
| OSLC-QM | ~80 |
| omg-sysml | ~150 |
rtm: Core (own vocabulary) |
~600 |
rtm: Alignment (equiv/subClass mappings) |
~200 |
Total rtm.ttl |
~1370 |
| Budget | ≤ 2000 |
Headroom: ~630 triples for future growth. Builds that would exceed 2000 triples fail the parsimony test (X6).
ontology/parsimony/build.py
├── 1. Read manifest.yaml
├── 2. For each vocabulary:
│ ├── Load source from ontology/imports/
│ ├── Apply extraction method (MIREOT, SLME, or SPARQL CONSTRUCT)
│ ├── Write to ontology/parsimony/extracts/<vocab>-subset.ttl
│ └── Verify subset size matches expected (manifest declares approximate count)
├── 3. Concatenate: rtm-core.ttl + rtm-alignment.ttl + all extracts
├── 4. Validate against ontology/shapes/well-formedness.shacl.ttl
└── 5. Write assembled ontology/rtm.ttl; report total triple count
Build is deterministic (same manifest → same rtm.ttl byte-for-byte after RDFC-1.0 canonicalization). The build script is run pre-commit; the resulting rtm.ttl is git-tracked.
Adding a new term from an existing vocabulary:
- Add the term IRI to the corresponding
extracted_classes/extracted_propertieslist inmanifest.yaml - Add a one-line
purpose:note - Re-run
ontology/parsimony/build.py - Verify the new triple count is still ≤ 2000
- Commit
manifest.yaml, the updated extract file, andrtm.ttltogether
Adding a new vocabulary entirely:
- Vendor the full source ontology to
ontology/imports/<vocab>.ttl - Add a new top-level entry under
vocabularies:inmanifest.yaml - Choose extraction method
- List extracted terms with purposes
- Re-run the build; verify budget
- Add an ADR explaining why the new vocabulary is needed
The manifest is the audit trail. For any term in rtm.ttl, the manifest tells you:
- Which external vocabulary it came from
- Why it's kept (the
purpose:note) - How to reproduce its extraction (the
extract_methoddeclaration)
This satisfies the "auditable provenance of every imported triple" requirement of ADR-014 Parsimony Layer Build-Time Extraction.
-
Runtime ontology loading. v0.1 does NOT load full vocabularies at runtime. The oracle reads
rtm.ttl(≤ 2000 triples) and that's it. -
Cross-vocabulary inference. v0.1 uses SHACL validation, not OWL reasoning. If an adopter wants to reason across the parsimony extracts at query time, they enable
[analysis]extras and useowlrl(per dependency policy in Design Spec §7.3). -
Automated extraction discovery. v0.1 does NOT auto-detect "which terms am I using?" The manifest is the declared truth; if
rtm:core uses a term not in the manifest, the build fails with a missing-term error.
- Flexo Git Coexistence
- ADCS Prototype Lessons
- MVC Pattern from RIME TRL ANT
- Human-AI Accountability
- Multi-Agent Discourse Graph Precedent
- OSLC RM and QM Review
- INCOSE V2 Review
- OMG SysMLv2
- PROV EARL GSN P-PLAN
- Dragon Architecture and Mission Enterprise
- Traditional Forward and Backward Analysis
- Attestation Infrastructure in v0.1
- Identity Boundaries and Policy Projections
- External URI References
- Signed Envelopes and Established Standards
- Aspect Coverage with Adequacy and Sufficiency
- Federated Audit and Composition
- Certification Predicate
- Gap Taxonomy
- Quantitative Outcomes
- Engineering Lifecycle Stages (v0.2)
- Topological Framework Future Work (research phase)
- Vertices Edges Faces (research phase)
- Three-Layer Architecture
- Operational Layer UX Discipline
- Storage Layer Flexo Conventions
- Analysis Layer Scope Algebra
- OSLC Roundtrip Acceptance
- Identity Adapter Contract
- Flexo REST Binding
- SysMLv2 Ingestion Contract
- External URI Rules
- Signed Envelope Shapes
- Parsimony Manifest
- Lossless Roundtrip Definition
- Vendor Extension Carry-Through
- OSLC RM Adapter Contract
- OSLC QM Adapter Contract
- ADR Template
- ADR-001 Foundations First Approach
- ADR-002 SysMLv2 Anchoring
- ADR-003 Topological Framework Documented as Future Work
- ADR-003a v0.1 Ships Traditional Analysis Only
- ADR-004 Quantitative Certification Outcome
- ADR-005 Adequacy and Sufficiency as Guidance Subtypes
- ADR-006 Three-Layer Architecture
- ADR-007 Scope as First-Class RDF Resource
- ADR-008 Repo Name and Org Transfer Plan
- ADR-009 Two-Repo Strategy
- ADR-010 OSLC-RM and OSLC-QM in v0.1
- ADR-011 Lossless Criterion A plus C
- ADR-012 Direct RDF Properties over Reified Edges
- ADR-013 Simplicial Complex as Derived View When Built
- ADR-014 Parsimony Layer Build-Time Extraction
- ADR-015 GSN Adoption for Adequacy and Sufficiency
- ADR-016 Composable SHACL Profiles
- ADR-017 knowledgecomplex as Optional Extras
- ADR-018 V minus F Invariant Deferred with Topological Framework
- ADR-019 Derived Binary View from Quantitative Metrics
- ADR-020 Vocabulary Alignment with Zargham 2026
- ADR-021 Three Attestation Subclasses Ship in v0.1
- ADR-022 External URI References as Open-Source Foundation
- ADR-023 Cryptography by Composition of Battle-Tested Standards
- ADR-024 Identity by Thin Projection of External Sources
- ADR-025 Reproducibility is Structural and Local
- ADR-026 Cryptographic Agility via Algorithm Profiles
- ADR-027 Bit-Exactness vs Numerical Tolerances Are Both First-Class
- ADR-028 Scope-Level Adequacy and Sufficiency for Federated Audit
- ADR-029 Engineering Lifecycle Stages as Scope Metadata
- ADR-030 Polycentric ASOT Authority Model
- ADR-031 Attestation Status Pass Fail Deferred Deprecated
- ADR-032 Methodology Agnosticism as Foundational Axiom
- ADR-033 Generalized ASOT Principle for All Identified Things