Repository navigation
v0.3.0
URPX v0.3.0 Release Notes (Draft)
Status: Draft, pending Working Group review. Dates and version metadata are finalized when this draft is tagged.
Type: Pre-draft minor release
Previous release: v0.2.1
Overview
URPX v0.3.0 reframes how published pricing material relates to the rate plan. Pricing content now lives in PricingModel nodes carried by publication-level containers (TariffFiling, SourcePublication); rate plans and modifiers are sharpened to pure identity records; and versions become consolidation artifacts that declare their own coverage through a required CoverageClaim, which states completeness; self-containment and an explaining Evaluation are optional.
This release is not backward-compatible with v0.2.x. Existing URPX datasets should be reviewed and migrated before being treated as v0.3.0-conformant.
Highlights
- Introduced the pricing-model architecture:
PricingModelcarries pricing content, filed publicly through aTariffFilingor, for filing-less material (competitive supply, contract, market-indexed, scenario, partial ingest), standing on its own with its own validity dates. - Retired the tariff document class family (
TariffPublicationand its subclasses) in favor of a singleSourcePublicationclass with apublicationTypeenumeration. - Renamed
URPXDocument→URPXPackage. - Added first-class identity classes,
RatePlanIdentifierandRatePlanModifierIdentifier, linked fromRatePlan/RatePlanModifierviahasIdentifier. - Made
RatePlanVersionandRatePlanModifierVersionconsolidation artifacts: each now requires aCoverageClaimstating completeness (completenessResult); self-containment (selfContained) and an explainingEvaluationare optional. - Separated the two axes a coverage claim reports.
completenessResultstates how much of the plan the snapshot covers, drawn from a six-memberCompletenessResultValue. Two conditions that are properties of how the snapshot was assembled rather than of how complete it is now sit besideselfContainedas booleans onCoverageClaim:stale, for a snapshot whose sources are known to have moved on, andfallbackSourced, for one that had to fall back to a secondary source. A claim can now say "complete, but fallback-sourced" without either fact displacing the other. - Added a filing-lifecycle vocabulary:
supersedes,replaces/replacedBy,cancelledBy,cancelledOn,cancelsPriceDefinition, andsunsetOnfor intentional terminal discontinuation (as distinct from a data gap). - Added scenario cost modeling (
ScenarioCostModel,ScenarioCostResult) and temporal scoping (TemporalScope,TemporalPeriod). - Renamed the plan-to-organization link
publishedBytoofferedBy, and its inversepublishestooffers, so the property names the organization that offers the plan rather than asserting that the plan is a published artifact.offeredByandoffersare declaredowl:inverseOfeach other and align with schema.orgofferedBy/offersby reference. Both are optional in either direction.publishedByis re-homed ontoSourcePublicationandURPXPackage, where publication is a property of the artifact. - Extended
commodity,offeredBy, andserviceRoletoRatePlanandRatePlanModifier;commodityis now multi-valued at the plan/modifier level (a plan or modifier may span commodities, e.g. a combined water/sewer modifier) and single-valued at the price and metric level. - Added element-level consolidation lineage:
contributedByrecords the pricing model via which each snapshot element entered, andconsolidatedFromlists every contributing model on the version, so a resolved snapshot carries its own derivation and a consumer can trace each element back to its source filing and rate case. AModelExclusionrecord on the claim'sEvaluation(hasModelExclusion, pairingexcludedModelwith anexclusionReason) states machine-readably why a listed model contributed nothing, so the lineage completeness cross-check can be re-run by any consumer. - Completed the temporal vocabulary:
hasTemporalPeriodlinks aTemporalScopeto the named interval its span denotes,startDateTimeandendDateTimenow apply toTemporalScopefor intraday windows, andcancelledOnDateTimeandsunsetOnDateTimeadd dateTime-precise twins of the two lifecycle dates.dateModifiedanddateTimeModifiednow apply toPricingModelandTariffFiling, giving overlapping, unlinked publication units a vocabulary-carried ordering signal. - Documented three enumerations that previously shipped as bare member IRIs.
CompletenessResultValue(6 members),ConfidenceValue(verified,estimated,projected) andEvaluationKindValue(consolidation,coverageEvaluation,validation,comparison,benchmark) now carry a label and a definition on every member, so all three appear in the generated data dictionary and each value has a stated meaning to exchange rather than only a name to match on. - Grouped the phase codes under four categories.
PhaseCategoryValueintroducessinglePhaseCategory,splitPhaseCategory,threePhaseCategoryandmeasurementCategory, and eachPhaseCodeKindValuemember declares its category withskos:broader, so a consumer can select "any three-phase code" without enumerating the individual codes. - Made the plan-to-version and plan-to-model navigation links assertable.
hasRatePlanVersionandhasRatePlanModifierVersionmay be stated on a rate plan or modifier alongside the version-sideforRatePlan/forRatePlanModifier, andisReferencedByPricingModelnow applies to bothRatePlanandRatePlanModifier. All three are optional: a data set may carry either direction or both, so a JSON-LD consumer can traverse without a reverse-path query, and a producer that prefers a single direction is not obliged to duplicate it. - Closed every operational SHACL shape against its full declared property surface, with three deliberate, documented open exceptions for subclass-family reasons (
OrganizationShape,PriceSetShape,PriceSetAlternativeShape). - Completed the vocabulary's internal referential integrity: every
urpx:term the ontology references is now defined in it, including the phase categories above, the enumeration members, and the charge-type members' bill-portion pointers. - Added a Consolidated Edison SC1 Rate I test case set, including a self-contained resolved snapshot that carries element-level consolidation lineage, a five-statement supersession chain, and a supply-snapshot variant that resolves a market supply charge from an external feed through a
retrievedElsewherereference against aModelCollectionthread, alongside the PG&E test cases carried forward to the v0.3.0 model. - Rewrote the tutorial's Terminology section ("Rate Plan vs Tariff vs Price") and the documentation set to consistently use "rate plan," "price," or "rate group" in place of the ambiguous bare word "rate."
Breaking Changes
If you maintain datasets or downstream tooling, pay particular attention to these changes:
-
The tariff document class family is retired.
TariffPublication,TariffBookDocument,TariffStatementDocument,TariffSupplementDocument,TariffAddendumDocument,SupplyChargesDocument,DERExportsDocument, andHighlyDynamicPricesDocumentare removed. UseSourcePublicationwith thepublicationTypeenumeration (SourcePublicationTypeValue) instead. The unused parallelPublicationTypeValueenumeration is also removed; the documented member individuals now live onSourcePublicationTypeValue. -
URPXDocumentis renamed toURPXPackage.
All property domains, ranges, and shapes follow the rename. -
RatePlanVersionandRatePlanModifierVersionnow require a coverage claim.
Every version must carry exactly oneCoverageClaim(viahasCoverageClaim). OnlycompletenessResultis required;selfContainedand an explainingEvaluationare optional. Versions without a coverage claim will fail validation. -
ReferenceInclusionValuemembers are renamed.
included→includedHere;shopFor→retrievedElsewhere. -
RateGroupno longer subclassesServiceClass.
A rate group is a named grouping inside a service class, not a kind of service class. Containment is now expressed viaparentServiceClass. -
Version shapes no longer allow
supersedes.
Lifecycle now lives on the filing; a version's timeline position derives from the filing chain rather than from a directsupersedeslink on the version itself. -
The nested tariff reference classes are removed.
TariffBookReferenceandTariffStatementReference, and their linking propertieshasTariffBookReferenceandhasTariffStatementReference, are removed. Page and leaf locators, statement type, and receipt dates sit directly onDataSourceReference; the tariff book versus statement distinction is carried by the referencedSourcePublication'spublicationType. -
CompletenessResultValueis narrowed to six members.
complete,partial,pending,unsupported,unknown,noCoverage.staleandfallbackSourcedare no longer completeness verdicts; they are booleans onCoverageClaim. A claim that previously carriedcompletenessResultofstaleorfallbackSourcedstates its completeness on the six-member scale and sets the matching boolean.SourcePublicationTypeValuelikewise carries the documented publication-type members; the parallelPublicationTypeValueenumeration is removed. -
SourceReferenceis renamedDataSourceReference.
The class now matches thehasDataSourceReferenceproperty that reaches it.SourceReferenceShapebecomesDataSourceReferenceShape.
Migration
Datasets built against v0.2.x require rework, not just a metadata bump:
- Move tariff-document typing to
SourcePublication+publicationType. - Rename
URPXDocumentreferences toURPXPackage. - Add a
CoverageClaim(at minimumcompletenessResult;selfContainedand an explainingEvaluationare optional) to everyRatePlanVersionandRatePlanModifierVersion. - Move any pricing content that was previously attached directly to a rate plan or modifier into a
PricingModel, carried by aTariffFilingorSourcePublicationas appropriate. - Flatten nested
hasTariffBookReference/hasTariffStatementReferencestructures: movepageStart/pageEnd,leafStart/leafEnd,tariffStatementType, and the receipt dates onto the parentDataSourceReference, and set the referenced publication'spublicationType. - Retype
SourceReferencenodes toDataSourceReference. - Split any
completenessResultofstaleorfallbackSourcedinto a six-member completeness verdict plus the matching boolean on theCoverageClaim. - Rename the plan-to-organization link from
publishedBytoofferedByon rate plans, modifiers, pricing models and versions, and frompublishestoofferson organizations. KeeppublishedByonly onSourcePublicationandURPXPackage. - If you copied a charge type's bill-portion pointer from an earlier ontology release, note that the value is
urpx:supplyPortion;urpx:supplywas never a defined term. - Re-run SHACL validation against
urpx-shacl.ttl. The closed-shape batch in this release will surface any property used outside its now-explicit declared surface.