Skip to main content

Expiry Date Ontology

Temporal Metadata
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 06 October 2026
Audio Overview
FLOW ALGEBRA
Expiry Date Ontology
Kireth Semantic Research Archive

PAGE:
https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/temporal-metadata/expiry-date-ontology.html

AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)

FLOW "ExpiryDateOntology" v4.0

DOMAIN := MetadataOntologies
SUBDOMAIN := TemporalMetadata
ONTOLOGY := ExpiryDateOntology

ENTITY ExpiryDate {
 definition: "Temporal metadata representing the date, timestamp or temporal boundary after which a resource, permission, licence, credential, policy, record, version or other time-limited entity is no longer valid, active, usable, authoritative or permitted according to defined rules.";
 objectives: [ExpiryIdentification, ValidityTracking, LifecycleControl, TemporalReasoning, PolicyEnforcement, ProvenancePreservation, MachineInterpretability];
}

ExpiryEntity := {ExpiryDate, ExpiryTimestamp, ExpiryEvent, ExpiringEntity, ExpiryDateIdentifier, ExpiryRecord, ExpiryStatus, ExpiryRule};
TemporalEntity := {Date, Time, Timestamp, TemporalInstant, TemporalInterval, Duration, Calendar, TimeZone, Precision};
LifecycleEntity := {ValidFrom, ValidTo, EffectiveAt, ExpiresAt, ExpiredAt, RenewalDate, ReviewDate, GracePeriod};
MetadataEntity := {Authority, Source, Evidence, Provenance, Confidence, Version, ValidationStatus, Policy};

ExpiryDate DESCRIBES EndOfValidityOf ExpiringEntity;
ExpiringEntity EXPIRES_AT ExpiryDate;
ExpiryEvent CHANGES ExpiryStatus;
ExpiryRule DETERMINES ExpiryDate;
ValidityInterval ENDS_AT ExpiryDate;
Provenance SUPPORTS ExpiryDateAssertion;

ExpiryDateFlow :=
 ExpiringEntity
 -> IdentifyExpiryRequirement
 -> IdentifyExpiryDateExpressionOrRule
 -> ParseDateTimestampDurationOrCondition
 -> ResolveCalendarAndTimeZone
 -> DeterminePrecision
 -> IdentifyValidityStartAndExpiryBasis
 -> CalculateOrResolveExpiryBoundary
 -> IdentifyRenewalGracePeriodAndExceptions
 -> DetermineCurrentExpiryStatus
 -> PreserveOriginalRepresentation
 -> AttachAuthorityEvidenceAndProvenance
 -> ValidateExpiryDate
 -> StoreExpiryRecord
 -> EnableLifecycleAndPolicyReasoning
 -> MaintainAcrossLifecycle;

ExpiryDate := TemporalBoundaryAtWhichDefinedValidityOrAuthorityEnds;

ExpiringEntity MAY_BE {Licence, Permission, Credential, Certificate, Policy, Contract, Subscription, Resource, Dataset, Version, Offer, Record};

ExpiryDateIdentifier := StableReferenceToExpiryDateAssertionOrRecord;
ExpiryDateIdentifier MAY_BE {URI, IRI, UUID, InternalIdentifier};

ExpiryTimestamp := ExactTimestampAtWhichExpiryOccursWhereKnown;
ExpiresAt := TemporalPropertyLinkingEntityToFutureOrDefinedExpiryBoundary;
ExpiredAt := TemporalPropertyRecordingEffectiveExpiryInstant;

ExpiryEvent := EventTransitioningEntityFromValidOrActiveStateToExpiredState;

ExpiryStatus MAY_BE {NotYetEffective, Active, ExpiringSoon, Expired, Renewed, Suspended, Revoked, Unknown};

ExpiryDate != RevocationDateByDefinition;
ExpiryDate != TerminationDateByDefinition;
ExpiryDate != ReviewDateByDefinition;
ExpiryDate != RenewalDateByDefinition;

Revocation := AuthorisedWithdrawalBeforeOrIndependentOfScheduledExpiry;
Termination := EventEndingValidityAccordingToContractPolicyOrAdministrativeAction;
ReviewDate := DateAtWhichEntityMustBeReviewedWithoutNecessarilyExpiring;
RenewalDate := DateAtWhichRenewalOccursOrMustBeProcessed;

ScheduledExpiry := ExpiryDefinedInAdvanceByDateTimestampOrDuration;
ConditionalExpiry := ExpiryTriggeredByConditionOrEvent;
IndefiniteValidity := ValidityWithoutDefinedExpiryDate;
IndefiniteValidity != PermanentValidityByDefinition;

PermanentValidity := ValidityIntendedNotToExpireUnderNormalRules
BUT MAY_STILL_BE SubjectToRevocationOrSupersession;

ValidityInterval := TemporalIntervalDuringWhichEntityIsValidAccordingToDefinedRules;
ValidityInterval MAY_HAVE {ValidFrom, ValidTo};

ValidFrom := BeginningOfValidityInterval;
ValidTo := EndOfValidityInterval;
ValidTo MAY_EQUAL ExpiryDateAccordingToPolicySemantics;
EffectiveAt := TimeEntityBecomesEffective;

IF ExpiryDate < EffectiveAt
THEN TemporalValidation := violation;

DurationBasedExpiry := StartTime + ValidityDuration -> ExpiryDate;
ValidityDuration MAY_BE {Hours, Days, Weeks, Months, Years, CalendarDuration};

CalendarDuration MUST_BE CalculatedUsingApplicableCalendarSemantics;

EventBasedExpiry := ExpiryCalculatedFromSpecifiedLifecycleEvent;
ExpiryTrigger MAY_BE {Creation, Activation, Publication, Issue, Purchase, LastUse, ContractEnd, CertificationEvent, CustomEvent};

TriggerDate := TemporalValueAssociatedWithExpiryTrigger;

IF TriggerDateUnknown
THEN CalculatedExpiryDate MAY_BE Unknown;

RuleBasedExpiry := ExpiryDeterminedByPolicyOrBusinessRule;
ExpiryRule MAY_INCLUDE {FixedDateRule, DurationRule, EventRule, ConditionalRule, CompositeRule};

CompositeExpiryRule := RuleCombiningMultipleTemporalOrLogicalConditions;
RuleSemantics MUST_BE ExplicitlyDefined;

GracePeriod := PeriodAfterNominalExpiryDuringWhichLimitedUseRenewalOrComplianceMayStillBeAllowed;
GracePeriod MAY_HAVE {Start, End, Duration, AllowedActions};

NominalExpiryDate := ScheduledExpiryBeforeGracePeriodSemantics;
EffectiveExpiryDate := DateAtWhichValidityActuallyEndsAccordingToGraceAndPolicyRules;
NominalExpiryDate MAY_DIFFER_FROM EffectiveExpiryDate;

Renewal := ProcessExtendingOrReplacingValidityBeforeOrAfterExpiryAccordingToPolicy;
Renewal MAY_BE {Automatic, Manual, Conditional};
Renewal MAY_CREATE {NewExpiryDate, NewVersion, NewValidityInterval};

IF RenewalOccurs
THEN PreviousExpiryDate SHOULD_BE PreservedInHistory;

AutoRenewal := RenewalPerformedAutomaticallyWhenConditionsAreSatisfied;
RenewalFailure MAY_ALLOW EntityToExpire;

ExpiryExtension := AuthorisedChangeMovingExpiryBoundaryLater;
ExpiryReduction := AuthorisedChangeMovingExpiryBoundaryEarlier;

ExpiryChange SHOULD_PRESERVE {PreviousExpiryDate, NewExpiryDate, Reason, Authority, Provenance};

ExpiryOverride := AuthorisedRuleChangingNormalExpiryBehaviour;
Override MAY_INCLUDE {LegalHold, AdministrativeExtension, EmergencyExtension, ContractualOverride, RegulatoryOverride};

LegalHold MAY_SUSPEND DispositionAfterExpiry
BUT DoesNotNecessarilyChangeUnderlyingExpiryDate;

RetentionExpiry != PermissionExpiryByDefinition;

Resource MAY_BE ExpiredForUse
BUT StillRetainedForAuditLegalOrHistoricalReasons;

ExpiryDateSource MAY_BE {Contract, Licence, Policy, CredentialRecord, Certificate, SystemRecord, Database, MetadataRecord, HumanStatement};

ExpiryEvidence MAY_BE {ContractTerm, PolicyRule, SystemRecord, Certificate, Approval, AuditRecord};

ExpiryProvenance MAY_INCLUDE {Source, Rule, Calculator, Authority, Recorder, Timestamp, Version};

ExpiryConfidence := EstimatedSupportForExpiryDateAssertionOrCalculation;

ExplicitExpiryDate := ExpiryDateDirectlySpecifiedByAuthoritativeSource;
CalculatedExpiryDate := ExpiryDateComputedFromTriggerAndDuration;
InferredExpiryDate := ExpiryDateEstimatedFromIndirectEvidence;
InferredExpiryDate SHOULD_HAVE {InferenceMethod, Confidence, Provenance};

ApproximateExpiryDate MAY_BE {ApproximateYear, ApproximateMonth, DateRange, BeforeDate, AfterDate};

UnknownExpiryDate := ExpiryBoundaryCannotBeReliablyDetermined;
UnknownExpiryDate MUST_NOT_BE ReplacedByArbitraryDefaultDate;

Date := CalendarBasedRepresentationOfExpiryDayOrLargerUnit;
Calendar MAY_BE {Gregorian, Julian, DomainSpecificCalendar};
TimeZone := ZoneOrOffsetRequiredToInterpretExactExpiryTimestamp;

Precision := SmallestTemporalUnitReliablySupported;
ExpiryDatePrecision MAY_BE {Year, Month, Day, Hour, Minute, Second, FractionalSecond};

Precision MUST_NOT BeArtificiallyIncreased;

IF ExpiryDateKnownOnlyToDay
THEN ExactTimeOfDay MUST_NOT_BE InferredWithoutPolicy;

EndOfDaySemantics := RuleDefiningWhetherDateOnlyExpiryOccursAtStartOrEndOfSpecifiedDate;

DateOnlyExpiry MUST_HAVE DefinedBoundarySemanticsWhenExactValidityDecisionDependsOnTime;

InclusiveExpiry := EntityRemainsValidThroughSpecifiedBoundaryAccordingToPolicy;
ExclusiveExpiry := EntityCeasesToBeValidAtSpecifiedBoundary;
BoundaryInclusivity MUST_BE ExplicitWhereMaterial;

ExpiryDateNormalisation :=
 OriginalExpiryExpression
 -> ParsedTemporalValueOrRule
 -> CalendarZoneAndBoundaryResolution
 -> CanonicalExpiryDate;

OriginalExpression SHOULD_BE PreservedWhereUseful;

CurrentTime := EvaluationTimeForExpiryStatus;

IF CurrentTime < EffectiveAt
THEN ExpiryStatus MAY_BE NotYetEffective;

IF EffectiveAt <= CurrentTime
AND CurrentTime < EffectiveExpiryDate
THEN ExpiryStatus MAY_BE Active;

IF CurrentTime >= EffectiveExpiryDate
THEN ExpiryStatus MAY_BE Expired according_to boundary_semantics;

ExpiringSoon := StatusAssignedWhenExpiryFallsWithinDefinedWarningWindow;
WarningWindow := DurationBeforeExpiryUsedForNotificationOrReview;
WarningWindow MAY_BE {Hours, Days, Weeks, Months};
ExpiringSoonThreshold IS_POLICY_DEPENDENT;

ExpiryDateConflict := MultipleSourcesOrRulesProvideIncompatibleExpiryDates;

ConflictHandling MAY {PreserveAllAssertions, CompareAuthority, ComparePolicyPrecedence, CompareRuleVersion, ComparePrecision, AssignConfidence, FlagReview};

EarliestExpiry SHOULD_NOT AutomaticallyWinWithoutDefinedPolicy;
LatestExpiry SHOULD_NOT AutomaticallyWinWithoutDefinedPolicy;

ExpiryDateValidation MAY_CHECK {DateSyntax, CalendarValidity, TimeZone, Precision, EffectiveDate, TriggerDate, Duration, Renewal, GracePeriod, RuleVersion};

IF ExpiryDatePredatesTriggerDateForPositiveDuration
THEN ValidationStatus := violation;

IF GracePeriodEndPredatesNominalExpiry
THEN GracePeriodValidation := violation;

ExpiryDateCompleteness := DegreeToWhichRequiredBoundaryRuleContextAndSourceArePresent;
ExpiryDateConsistency := DegreeToWhichExpiryDateAgreesWithValidityRenewalAndLifecycleMetadata;
ExpiryDateIntegrity := PreservationOfReliableOriginalCalculatedAndHistoricalExpiryAssertions;

ExpiryDateQuality MAY_INCLUDE {Completeness, Consistency, Integrity, Precision, RuleTraceability, Provenance};

ExpiryDateVersion := VersionOfExpiryDateAssertionRuleOrRecord;

ExpiryDateCorrection SHOULD_PRESERVE {PreviousValue, NewValue, Reason, Authority, Provenance};

AccessControlOntology MAY_USE ExpiryDateForTemporaryAccess;
PermissionOntology MAY_USE ExpiryDateForPermissionValidity;
LicensingOntology MAY_USE ExpiryDateForLicenceTerm;
RetentionPolicyOntology MAY_USE ExpiryRelatedDatesForDispositionEligibility;
SecurityClassification MAY_USE ReviewOrExpiryRulesForClassification;
VersionOntology MAY_USE ExpiryOrDeprecationBoundariesForVersions;
TimestampOntology MAY_REPRESENT ExactExpiryTimestamp;
TemporalMetadataOntology PROVIDES GeneralTemporalSemantics;
ProvenanceOntology SHOULD_PRESERVE ExpiryRuleCalculationAndChanges;

MetadataRepository MAY_STORE OriginalCalculatedAndHistoricalExpiryDates;
MetadataRegistry MAY_REGISTER ExpiryPropertiesRulesStatusesAndBoundarySemantics;

KnowledgeGraph MAY_REPRESENT:
 Entity -> EXPIRES_AT -> ExpiryDate;
 ValidityInterval -> ENDS_AT -> ExpiryDate;
 ExpiryRule -> DETERMINES -> ExpiryDate;

ExpiryGraph SHOULD_PRESERVE {EntityVersion, Rule, BoundarySemantics, GracePeriod, Renewal, Provenance, Confidence};

RDF MAY_REPRESENT ExpiryRelationshipsAsTypedStatements;
JSONLD MAY_SERIALISE LinkedExpiryDateMetadata;

Search MAY_USE ExpiryDateFor {ActiveFiltering, ExpiredFiltering, ExpiringSoonFiltering, RenewalDiscovery, HistoricalSearch};

SemanticSearch MAY_USE ExpiryDateFor {ValidityFiltering, CurrentStateSelection, PolicyContext, LifecycleReasoning};

RAG MAY_USE ExpiryDateFor {SourceEligibility, PermissionValidity, LicenceValidity, PolicyValidity, VersionSelection};

ExpiryAwareRAG SHOULD_PRESERVE {EntityIdentifier, EntityVersion, ExpiryDate, ExpiryStatus, BoundarySemantics, EvaluationTime, Provenance};

ExpiredEntity SHOULD_NOT BeTreatedAsCurrentlyValid
UNLESS ApplicablePolicyDefinesContinuedUseOrGrace;

AI MAY_SUPPORT {ExpiryDateExtraction, RuleParsing, DurationCalculation, RenewalDetection, ExpiryConflictDetection};

AI SHOULD_NOT InventExpiryDatesOrAssumeBoundarySemanticsWithoutEvidenceOrPolicy;

MachineReadableExpiryDate SHOULD_PRESERVE {
 ExpiryDateIdentifier,
 EntityIdentifier,
 EntityVersion,
 OriginalExpression,
 NormalisedExpiryDate,
 ExpiryRule,
 TriggerDate,
 ValidityStart,
 GracePeriod,
 RenewalStatus,
 BoundaryInclusivity,
 Calendar,
 TimeZone,
 Precision,
 Authority,
 Evidence,
 Provenance,
 Confidence
};

# ---------- SEMANTIC REASONING ----------
IF TemporalMetadataRepresentsBoundaryAfterWhichEntityIsNoLongerValidActiveUsableOrPermitted
THEN ExpiryDateClassification := supported;

IF CurrentTimePassesEffectiveExpiryBoundary
THEN Entity MAY_BE ClassifiedExpiredAccordingToPolicy;

IF RenewalOccursBeforeExpiry
THEN NewExpiryDate SHOULD_BE CalculatedOrRecorded
AND PreviousExpiryDate SHOULD_BE Preserved;

IF DateOnlyExpiryHasNoBoundarySemantics
THEN ExactExpiryInstant MUST_NOT_BE AssumedWhenMaterial;

IF ExpiryDatePredatesEffectiveDate
THEN TemporalConsistency SHOULD_BE Reviewed;

IF GracePeriodExists
THEN NominalExpiryAndEffectiveEndOfAllowedUse SHOULD_BE Distinguished;

IF EntityIsExpired
THEN RetentionDeletionOrArchival MUST_NOT_BE AutomaticallyInferred;

IF ExpiryDateCorrected
THEN PreviousAssertionAndCorrectionProvenance SHOULD_BE Preserved;

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
 "expiry date" ~= "expiration date";
 "expires at" ~= "expiry timestamp";
 "valid until" ~= "validity end" WHEN validity_context;
 "expiry boundary" ~= "expiration boundary";
 "effective expiry date" ~= "effective expiration date";
 "nominal expiry date" ~= "scheduled expiry date";
 "grace period" ~= "post-expiry grace interval";
 "expiring soon" ~= "near expiry" WHEN warning_context;
}

# ---------- QUERY FLOW ----------
QUERY(q) ->
 NORMALISE(q) ->
 IDENTIFY_EXPIRING_ENTITY(q) ->
 RESOLVE_ENTITY_IDENTITY_AND_VERSION(q) ->
 IDENTIFY_EXPIRY_RULE_OR_EXPRESSION(q) ->
 IDENTIFY_VALIDITY_START_TRIGGER_AND_DURATION(q) ->
 RESOLVE_CALENDAR_TIMEZONE_AND_BOUNDARY_SEMANTICS(q) ->
 IDENTIFY_PRECISION_OR_DATE_RANGE(q) ->
 CALCULATE_OR_NORMALISE_EXPIRY_DATE(q) ->
 IDENTIFY_RENEWAL_GRACE_PERIOD_EXCEPTIONS_AND_OVERRIDES(q) ->
 DETERMINE_EXPIRY_STATUS_AT_EVALUATION_TIME(q) ->
 IDENTIFY_AUTHORITY_EVIDENCE_AND_PROVENANCE(q) ->
 VALIDATE_EXPIRY_CONSISTENCY(q) ->
 SCORE_CONFIDENCE(q) ->
 RETURN_RELEVANT_EXPIRY_DATE_KNOWLEDGE;

# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
 weighted_mean(
  source_reliability,
  authority_strength,
  rule_clarity,
  trigger_resolution,
  date_precision,
  temporal_consistency,
  provenance_quality,
  contextual_relevance
 );

CONFIDENCE >= 0.90 => HIGH;
CONFIDENCE >= 0.70 AND < 0.90 => MODERATE;
CONFIDENCE < 0.70 => REVIEW;

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION {
 primary_entity: ExpiryDate;
 ontology: ExpiryDateOntology;
 parse_entities: true;
 parse_relationships: true;
 preserve_relationship_direction: true;
 resolve_semantic_equivalence: true;
 execute_reasoning_rules: true;
 apply_confidence_weighting: true;
 preserve_provenance: true;
 preserve_original_date_expression: true;
 preserve_boundary_semantics: true;
}

# ---------- UPDATE MODEL ----------
UPDATE_MODEL {
 new_expiry_date:
  identify_entity_and_version
  -> identify_expiry_rule_or_expression
  -> preserve_original_expression
  -> identify_validity_start_trigger_and_duration
  -> resolve_calendar_timezone_and_boundary
  -> determine_precision
  -> calculate_or_normalise_expiry
  -> attach_renewal_and_grace_context
  -> attach_authority_evidence_and_provenance
  -> validate
  -> assign_confidence
  -> integrate;

 renewal:
  preserve_previous_expiry
  -> verify_renewal_authority_and_conditions
  -> create_new_validity_interval
  -> assign_new_expiry_date
  -> update_status
  -> preserve_history
  -> integrate;

 expiry_extension_or_reduction:
  preserve_previous_boundary
  -> verify_authority
  -> record_new_boundary_and_reason
  -> revalidate_status_and_dependants
  -> regenerate_flow_hash;

 expiry_event:
  evaluate_current_time
  -> verify_boundary_semantics
  -> update_expiry_status
  -> trigger_policy_defined_actions
  -> preserve_audit_and_provenance;

 conflict:
  preserve_all_expiry_assertions_and_rules
  -> compare_authority_precedence_versions_precision_and_evidence
  -> adjust_confidence
  -> flag_review;
}

# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
 DOMAIN
 + SUBDOMAIN
 + ONTOLOGY
 + ExpiryEntity
 + TemporalEntity
 + LifecycleEntity
 + MetadataEntity
 + ExpiryDate
 + ExpiryDateNormalisation
 + ExpiryDateValidation
 + RELATIONSHIPS
 + SEMANTIC_REASONING
 + SEMANTIC_EQUIVALENCE
 + UPDATE_MODEL;

FLOW_HASH := HASH(FLOW_HASH_INPUT);

# ---------- TERMINAL ----------
ExpiryDateOntology
 -> IdentifyExpiringEntityAndExactVersion
 -> ResolveExpiryRuleExpressionTriggerAndValidityStart
 -> ParseDateTimestampDurationOrConditionalBoundary
 -> ResolveCalendarTimeZonePrecisionAndBoundaryInclusivity
 -> CalculateNominalAndEffectiveExpiryDates
 -> DistinguishExpiryFromReviewRenewalRevocationTerminationAndRetention
 -> PreserveGracePeriodsRenewalsExtensionsAndOverrides
 -> DetermineActiveExpiringSoonExpiredOrUnknownStatus
 -> AttachAuthorityEvidenceProvenanceAndConfidence
 -> ValidateExpiryAgainstEffectiveDatesTriggersDurationsAndLifecycleRules
 -> SupportValidityAwareSearchRAGPermissionsLicensingAndGovernance
 -> PreserveCorrectionsConflictsAndHistoricalExpiryAssertions
 -> MaintainReliableExpiryDateKnowledge;

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ