Repository navigation
URPX v0.2.0 Pre-Draft Release
Pre-releaseOverview
URPX v0.2.0 is a substantial pre-draft update focused on clearer price modeling, a fully reworked structured condition architecture, stronger SHACL validation, and better documentation for implementers and reviewers.
Compared with v0.1.2, this release is not backward-compatible. Existing URPX datasets should be reviewed and migrated before being treated as v0.2.0-conformant.
Highlights
- Reworked the billing model so
PriceDefinitionis owned byBillingModeland linked to its ledger withurpx:referencesLedger. - Replaced the legacy condition model with the rooted
ConditionExpressionarchitecture used across eligibility, applicability, and profile-alternative contexts. - Tightened eligibility modeling so each
EligibilityRuleuses a singleConditionExpression, and direct profile links on rules are no longer valid. - Retired direct
ApplicabilityGroupselector properties in favor ofConditionExpressionover profile-based properties. - Added
ServiceBracketso tier bounds move offServiceTierand can vary by context. - Added
GeneralRulefor reusable tariff-book-level shared rules. - Added
RateCaseand datetime provenance properties to improve regulatory and source traceability. - Renamed identifier properties to make uniqueness explicit and added required
urpx:targetURPXVersiononURPXDocument. - Added
customerChoiceandisDefaultsemantics for rate plan versions. - Renamed
numberOfMeterstometerCount, renamednumberOfOccupantstooccupancyCount, and removeddemandThreshold. - Expanded the documentation set with condition modeling, quality assurance, and test-data review guidance.
Breaking Changes
If you maintain datasets or downstream tooling, pay particular attention to these changes:
-
PriceDefinitionownership moved fromLedgertoBillingModel.
Existing data must move definitions to the billing model layer and addurpx:referencesLedger. -
The applicability condition model was replaced.
Legacy constructs such ashasCondition,hasConditionLogic, legacy terminal-node patterns, earlier applicability/dimension-value structures, and directApplicabilityGroupselector properties were removed in favor ofConditionExpression,rootNode,ComparisonNode,BooleanOperationNode, typed operand nodes, and profile-based condition properties. -
Eligibility rules now require a single
ConditionExpression.
EligibilityRulemust useurpx:hasConditionExpression, and directhasCustomerProfile/hasServicePointProfilelinks onEligibilityRuleare no longer valid. -
Tier bounds moved to
ServiceBracket.
lowerBound,lowerBoundOperator,upperBound, andupperBoundOperatorno longer belong onServiceTier. Bound data must move to one or moreServiceBracketnodes, withreferencesServiceBracketused where exact bracket linkage is needed. -
Identifier properties were renamed.
ratePlanIdentifierbecameratePlanUniqueIdentifier, andmodifierIdentifierbecamemodifierUniqueIdentifier. -
URPXDocumentnow requirestargetURPXVersion.
Documents should point to the ontology version they were authored against using the raw tagged ontology URL, for example:
https://github.com/urpx-org/urpx/raw/v0.2.0/ontology/urpx-ontology.ttl -
Enrollment/default semantics changed.
isOptionalwas removed in favor ofcustomerChoiceandisDefaultonRatePlanVersion. -
Profile count terminology and threshold handling changed.
numberOfMetersbecamemeterCount,numberOfOccupantsbecameoccupancyCount, anddemandThresholdwas removed. -
Eligibility profile inputs moved to
Scenariofor eligibility evaluation for an individual customer or scenario.hasCustomerProfileandhasServicePointProfileno longer belong directly onEligibilityRule, eligibility conditions are expressed onEligibilityRuleusinghasConditionExpression.
Migration Guidance
To migrate a v0.1.2 dataset to v0.2.0:
- move
PriceDefinitioninstances underBillingModel - add
urpx:referencesLedgerto everyPriceDefinition - replace legacy rule condition structures with a single
urpx:hasConditionExpressionon eachEligibilityRule - migrate retired
ApplicabilityGroupselector properties toConditionExpressionoverCustomerProfile/ServicePointProfileproperties - move tier bounds from
ServiceTiertoServiceBracketand addurpx:hasServiceBracketwhere tier bounds are authored - rename legacy identifier properties
- replace
isOptionalwithcustomerChoiceandisDefault - rename
numberOfMeterstometerCountandnumberOfOccupantstooccupancyCount - remove
demandThresholdand express threshold logic through rules / metric patterns - add
urpx:targetURPXVersiontoURPXDocumentusing:
https://github.com/urpx-org/urpx/raw/v0.2.0/ontology/urpx-ontology.ttl - rerun SHACL validation against
shacl/urpx-shacl.ttl
The updated PG&E E-ELEC example under test-cases/ can be used as a current-model reference.
Validation and Documentation
v0.2.0 strengthens validation and reviewer support:
- SHACL coverage was expanded to match the new billing, condition, applicability, service-bracket, identifier, and provenance models.
urpx-condition-modeling.mddocuments the current structured condition pattern.urpx-quality-assurance.mdsummarizes validation expectations.urpx-test-data-review-guide.mdprovides a tariff-book-to-URPX review workflow for test cases.urpx-data-dictionary.mdwas refreshed for the v0.2.0 ontology surface.
Repository and Governance Updates
This release also adds project-level governance and licensing metadata:
- REUSE licensing metadata and public-record handling for third-party tariff-book source material
TRANSITION.mddocumenting the planned post-Draft license transition- updated
CONTRIBUTING.md,SECURITY.md, andAGENTS.md
These changes do not alter the URPX data model, but they do affect repository hygiene, review workflow, and release readiness.