NeTEx icon indicating copy to clipboard operation
NeTEx copied to clipboard

Unconstrainted references

Open skinkie opened this issue 2 months ago • 6 comments

The following list of references do not have any identity key constraints, while a Ref directly exists. Scan through this list for anything that remotely resembles something that is in use in a profile. So if your profile uses AdditionalDriverOptionRef, report this. Only effort that is required is scan through the list.

netex:AdditionalDriverOption
netex:Assignment
netex:BookingDebit
netex:BookingPolicy
netex:ClassInFrame
netex:CodespaceAssignment
netex:CustomerPurchasePackagePrice
netex:DeckPlaceInSequence
netex:DeckSpaceCapacity
netex:DeckWindow
netex:DefaultDeadRunRunTime
netex:FacilitySet
netex:FareDebit
netex:FareProductSaleDebit
netex:FareStructureElementInSequence
netex:FlexibleLinkProperties
netex:FlexiblePointProperties
netex:GeneralFrameMember
netex:GenericNavigationPath
netex:GenericPathJunction
netex:InfrastructureLinkRestriction
netex:InterchangeRuleTiming
netex:JourneyPatternHeadway
netex:JourneyTiming
netex:LogEntry
netex:LuggageLockerEquipment
netex:NetworkRestriction
netex:OffenceDebit
netex:OtherDebit
netex:PriceableObject
netex:RentalOption
netex:RoundingStep
netex:SensorEquipment
netex:SiteComponent
netex:SiteElement
netex:SiteEquipment
netex:SiteNavigationPath
netex:SpotAffinity
netex:SpotEquipment
netex:StartTimeAtStopPoint
netex:StopAssignment
netex:StopPlaceSpace
netex:TrainComponentStopAssignment
netex:TransportType
netex:TripDebit
netex:TurnaroundTimeLimitTime
netex:TypeOfDeckEntranceUsage
netex:TypeOfMobilityService
netex:TypeOfModeOfOperation
netex:VehicleEntrance
netex:VehiclePoolingMeetingPlace
netex:VehicleRequirement
netex:VehicleServicePlaceAssignment
netex:VehicleTypePreference
netex:WaitingEquipment
netex:ZoneInSeries

Longer list, unfiltered, might also contain abstract types.

netex:AccessLegRef
netex:AccessZoneRef
netex:ActivatedEquipmentRef
netex:AdditionalDriverOptionRef
netex:AddressablePlaceRef
netex:AdministrativeZoneRef
netex:AllAuthoritiesRef
netex:AllCountriesRef
netex:AllDistributionChannelsRef
netex:AllOperatorsRef
netex:AllOrganisationsRef
netex:AllPublicTransportOrganisationsRef
netex:AllTransportOrganisationsRef
netex:AlternativeModeLegRef
netex:AlternativeNameRef
netex:AlternativeTextRef
netex:AssignmentRef
netex:BookingDebitRef
netex:BookingPolicyRef
netex:CancellingRef
netex:ClassInFrameRef
netex:ClassRef
netex:CodespaceAssignmentRef
netex:ComplexFeatureProjectionRef
netex:CountryRef
netex:CustomerPurchasePackagePriceRef
netex:deckEntranceAssignmentRef
netex:DeckPlaceInSequenceRef
netex:DeckSpaceCapacityRef
netex:DeckWindowRef
netex:DefaultDeadRunRunTimeRef
netex:DefaultServiceJourneyTimeRef
netex:DeliveryVariantRef
netex:DestinationDisplayVariantRef
netex:DriverRef
netex:DutyRef
netex:EquipmentRef
netex:FacilityRef
netex:FacilitySetRef
netex:FareDebitRef
netex:FareProductRef
netex:FareProductSaleDebitRef
netex:FareQuotaFactorRef
netex:FareRequestRef
netex:FareStructureElementInSequenceRef
netex:FareTableColumnRef
netex:FareTableRowRef
netex:FlexibleLinkPropertiesRef
netex:FlexibleModeOfOperationRef
netex:FlexiblePointPropertiesRef
netex:FlexibleServiceAssignmentRef
netex:FlexibleServicePropertiesRef
netex:GeneralFrameMemberRef
netex:GenericNavigationPathRef
netex:GenericPathJunctionRef
netex:GroupOfCustomerPurchasePackagesRef
netex:GroupOfPlacesRef
netex:GroupOfTimingLinksRef
netex:InfrastructureLinkRestrictionRef
netex:InterchangeRuleTimingRef
netex:JourneyPatternHeadwayRef
netex:JourneyTimingRef
netex:LayerRef
netex:LineInDirectionRef
netex:LineLinkRef
netex:LinkInSequenceRef
netex:LogEntryRef
netex:LogRef
netex:LuggageLockerEquipmentRef
netex:ModeRef
netex:MonthValidityOffsetRef
netex:NetworkRestrictionRef
netex:OffenceDebitRef
netex:OfferedTravelSpecificationRef
netex:OrderedVersionOfObjectRef
netex:OrganisationalUnitRef
netex:OtherDebitRef
netex:OtherOrganisationRef
netex:ParentCommonSectionRef
netex:ParkingChargeBandRef
netex:ParkingEntranceRef
netex:PassengerSeatRef
netex:PathAssignmentRef
netex:PlaceLightingEquipmentRef
netex:PointInSequenceRef
netex:PointOfInterestHierarchyRef
netex:PointOfInterestVehicleEntranceRef
netex:PriceableObjectRef
netex:PrivateLegRef
netex:ProfileParameterRef
netex:PtConnectionLegRef
netex:PtRideLegRef
netex:PurposeOfJourneyPartitionRef
netex:QueueingEquipmentRef
netex:RailwayLinkRef
netex:RelationshipRef
netex:RentalOptionRef
netex:RepeatedTripFareRequestRef
netex:RequestedTravelSpecificationRef
netex:ResellingRef
netex:ResidentialQualificationRef
netex:RoadLinkRef
netex:RoundingStepRef
netex:SalesOfferPackageEntitlementGivenRef
netex:SalesOfferPackageEntitlementRequiredRef
netex:ScheduledModeOfOperationRef
netex:ScheduleRequestRef
netex:SchematicMapMemberRef
netex:SchematicMapRef
netex:SectionRef
netex:SensorEquipmentRef
netex:ServiceAccessRightRef
netex:ServiceLinkInSequenceRef
netex:SignEquipmentRef
netex:SimpleObjectRef
netex:SingleTripFareRequestRef
netex:SiteComponentRef
netex:SiteElementRef
netex:SiteEquipmentRef
netex:SiteNavigationPathRef
netex:SpatialFeatureRef
netex:SpotAffinityRef
netex:SpotAllocationMethodRef
netex:SpotEquipmentRef
netex:StartTimeAtStopPointRef
netex:StopAssignmentRef
netex:StopEventRequestRef
netex:StopFinderRequestRef
netex:StopPlaceSpaceRef
netex:StopPlaceVehicleEntranceRef
netex:SubscribingRef
netex:SuspendingRef
netex:TariffObjectRef
netex:TimingAlgorithmTypeRef
netex:TopographicProjectionRef
netex:TrainComponentStopAssignmentRef
netex:TransportTypeRef
netex:TripDebitRef
netex:TripLegRef
netex:TripPatternRef
netex:TripPlanRequestRef
netex:TripRef
netex:TurnaroundTimeLimitTimeRef
netex:TypeOfCodespaceAssignmentRef
netex:TypeOfCongestionRef
netex:TypeOfDeckEntranceUsageRef
netex:TypeOfDeliveryVariantRef
netex:TypeOfFacilityRef
netex:TypeOfFareProductRef
netex:TypeOfMobilityServiceRef
netex:TypeOfModeOfOperationRef
netex:TypeOfOperationRef
netex:TypeOfOrganisationPartRef
netex:TypeOfPaymentMethodRef
netex:TypeOfRollingStockRef
netex:TypeOfSecurityListRef
netex:TypeOfServiceFeatureRef
netex:TypeOfTimeDemandTypeRef
netex:TypeOfVersionRef
netex:VehicleEntranceRef
netex:VehicleEquipmentRef
netex:VehiclePoolingMeetingPlaceRef
netex:VehicleProfileRef
netex:VehicleRequirementRef
netex:VehicleServicePlaceAssignmentRef
netex:VehicleTypePreferenceRef
netex:VehicleTypeStopAssignmentRef
netex:VehicleTypeZoneRestrictionRef
netex:VersionOfObjectRef
netex:WaitingEquipmentRef
netex:WheelchairVehicleRef
netex:WireLinkRef
netex:ZoneInSeriesRef

skinkie avatar Oct 13 '25 22:10 skinkie

Not sure what the implication of this is, but there are several concepts that I recognize from our data here. Especially in the vehicles domain.

JohanEntur avatar Oct 16 '25 08:10 JohanEntur

@JohanEntur please mention them.

skinkie avatar Oct 16 '25 08:10 skinkie

I checked for EPIAP, are some of the following observations useful?

EquipmentPlace-placeEquipments and SitePathLink-placeEquipments may refer any Equipment, so probably:

  • EquipmentRef
  • LuggageLockerEquipmentRef
  • PlaceLightingEquipmentRef
  • QueueingEquipmentRef
  • WaitingEquipmentRef
  • SignEquipmentRef
  • SiteEquipmentRef
  • SpotEquipmentRef
  • VehicleEquipmentRef
  • SensorEquipmentRef

Use of EquipmentPlace-ParentZoneRef is not recommended, but it might refer

  • AccessZoneRef
  • AdministrativeZoneRef (?)

AssistanceBookingservice-BookedObjectRef may refer anything (VersionOfObjectRef), e.g.,

  • SiteEquipmentRef

AssistanceBookingService-TransportOrganisationRef

  • OtherOrganisationRef ?

BoardingPosition-boardingPositionEntrances-EntranceRef

  • ParkingEntranceRef
  • PointOfInterestVehicleEntranceRef
  • StopPlaceVehicleEntranceRef
  • VehicleEntranceRef ?

Use of VehiclePoolingMeetingPlace is encouraged, requiring a ref seems to make sense

trurlurl avatar Oct 16 '25 14:10 trurlurl

@skinkie, I quickly went through both lists. I think that the French profile uses:

From the first list:

  • FacilitySet
  • FlexibleLinkProperties
  • FlexiblePointProperties
  • GeneralFrameMember
  • GenericNavigationPath
  • GenericPathJunction
  • LuggageLockerEquipment
  • NetworkRestriction
  • PriceableObject
  • SiteComponent
  • SiteElement
  • SiteNavigationPath
  • StopAssignment
  • TypeOfMobilityService
  • TypeOfModeOfOperation
  • WaitingEquipment

From the second list:

  • AccessZoneRef
  • ClassInFrameRef
  • EquipmentRef
  • FacilityRef
  • FacilitySetRef
  • FlexibleLinkPropertiesRef
  • FlexiblePointPropertiesRef
  • FlexibleServicePropertiesRef
  • GenericNavigationPathRef
  • GenericPathJunctionRef
  • LuggageLockerEquipmentRef
  • SignEquipmentRef
  • SiteElementRef
  • SiteEquipmentRef
  • SiteNavigationPathRef
  • VehicleEquipmentRef
  • WheelchairVehicleRef

And I am quite certain that some of these are not "real" references but used for "free-form text", if not all:

  • netex:TypeOfCodespaceAssignmentRef
  • netex:TypeOfCongestionRef
  • netex:TypeOfDeckEntranceUsageRef
  • netex:TypeOfDeliveryVariantRef
  • netex:TypeOfFacilityRef
  • netex:TypeOfFareProductRef
  • netex:TypeOfMobilityServiceRef
  • netex:TypeOfModeOfOperationRef
  • netex:TypeOfOperationRef
  • netex:TypeOfOrganisationPartRef
  • netex:TypeOfPaymentMethodRef
  • netex:TypeOfRollingStockRef
  • netex:TypeOfSecurityListRef
  • netex:TypeOfServiceFeatureRef
  • netex:TypeOfTimeDemandTypeRef

So, I would suggest that we keep this issue open but make it for v2.0.1 or v2.1 since it will take a bit of effort to work on carefully.

TuThoThai avatar Oct 22 '25 12:10 TuThoThai

Based on the discussion so far, PR #979 adds constraints for the following:

From the first list:

  • FacilitySet
  • FlexibleLinkProperties
  • FlexiblePointProperties
  • GeneralFrameMember
  • GenericNavigationPath
  • GenericPathJunction
  • LuggageLockerEquipment
  • NetworkRestriction
  • PriceableObject
  • SiteComponent
  • SiteElement
  • SiteNavigationPath
  • StopAssignment
  • TypeOfMobilityService
  • TypeOfModeOfOperation
  • WaitingEquipment

From the second list:

  • AccessZoneRef
  • EquipmentRef
  • FacilityRef
  • FacilitySetRef
  • FlexibleLinkPropertiesRef
  • FlexiblePointPropertiesRef
  • FlexibleServicePropertiesRef
  • GenericNavigationPathRef
  • GenericPathJunctionRef
  • ParkingEntranceRef
  • PlaceLightingEquipmentRef
  • PointOfInterestVehicleEntranceRef
  • LuggageLockerEquipmentRef
  • OtherOrganisationRef
  • SensorEquipmentRef
  • SignEquipmentRef
  • SiteElementRef
  • SiteEquipmentRef
  • SiteNavigationPathRef
  • SpotEquipmentRef
  • VehicleEquipmentRef
  • VehicleEntranceRef
  • VehiclePoolingMeetingPlaceRef
  • WheelchairVehicleRef

@TuThoThai Everything added from your comment except ClassInFrameRef.

Currently remaining from initial lists

Remaining from fiirst list:

netex:AdditionalDriverOption
netex:Assignment
netex:BookingDebit
netex:BookingPolicy
netex:CodespaceAssignment
netex:CustomerPurchasePackagePrice
netex:DeckPlaceInSequence
netex:DeckSpaceCapacity
netex:DeckWindow
netex:DefaultDeadRunRunTime
netex:FareDebit
netex:FareProductSaleDebit
netex:FareStructureElementInSequence
netex:InfrastructureLinkRestriction
netex:InterchangeRuleTiming
netex:JourneyPatternHeadway
netex:JourneyTiming
netex:LogEntry
netex:OffenceDebit
netex:OtherDebit
netex:RentalOption
netex:RoundingStep
netex:SpotAffinity
netex:StartTimeAtStopPoint
netex:StopPlaceSpace
netex:TrainComponentStopAssignment
netex:TransportType
netex:TripDebit
netex:TurnaroundTimeLimitTime
netex:TypeOfDeckEntranceUsage
netex:VehicleRequirement
netex:VehicleServicePlaceAssignment
netex:VehicleTypePreference
netex:ZoneInSeries

Remaining from second list:

netex:AccessLegRef
netex:ActivatedEquipmentRef
netex:AdditionalDriverOptionRef
netex:AddressablePlaceRef
netex:AdministrativeZoneRef
netex:AllAuthoritiesRef
netex:AllCountriesRef
netex:AllDistributionChannelsRef
netex:AllOperatorsRef
netex:AllOrganisationsRef
netex:AllPublicTransportOrganisationsRef
netex:AllTransportOrganisationsRef
netex:AlternativeModeLegRef
netex:AlternativeNameRef
netex:AlternativeTextRef
netex:AssignmentRef
netex:BookingDebitRef
netex:BookingPolicyRef
netex:CancellingRef
netex:ClassInFrameRef
netex:ClassRef
netex:CodespaceAssignmentRef
netex:ComplexFeatureProjectionRef
netex:CountryRef
netex:CustomerPurchasePackagePriceRef
netex:deckEntranceAssignmentRef
netex:DeckPlaceInSequenceRef
netex:DeckSpaceCapacityRef
netex:DeckWindowRef
netex:DefaultDeadRunRunTimeRef
netex:DefaultServiceJourneyTimeRef
netex:DeliveryVariantRef
netex:DestinationDisplayVariantRef
netex:DriverRef
netex:DutyRef
netex:FareDebitRef
netex:FareProductRef
netex:FareProductSaleDebitRef
netex:FareQuotaFactorRef
netex:FareRequestRef
netex:FareStructureElementInSequenceRef
netex:FareTableColumnRef
netex:FareTableRowRef
netex:FlexibleModeOfOperationRef
netex:FlexibleServiceAssignmentRef
netex:GroupOfCustomerPurchasePackagesRef
netex:GroupOfPlacesRef
netex:GroupOfTimingLinksRef
netex:InfrastructureLinkRestrictionRef
netex:InterchangeRuleTimingRef
netex:JourneyPatternHeadwayRef
netex:JourneyTimingRef
netex:LayerRef
netex:LineInDirectionRef
netex:LineLinkRef
netex:LinkInSequenceRef
netex:LogEntryRef
netex:LogRef
netex:ModeRef
netex:MonthValidityOffsetRef
netex:OffenceDebitRef
netex:OfferedTravelSpecificationRef
netex:OrderedVersionOfObjectRef
netex:OrganisationalUnitRef
netex:OtherDebitRef
netex:ParentCommonSectionRef
netex:ParkingChargeBandRef
netex:PassengerSeatRef
netex:PathAssignmentRef
netex:PointInSequenceRef
netex:PointOfInterestHierarchyRef
netex:PrivateLegRef
netex:ProfileParameterRef
netex:PtConnectionLegRef
netex:PtRideLegRef
netex:PurposeOfJourneyPartitionRef
netex:QueueingEquipmentRef
netex:RailwayLinkRef
netex:RelationshipRef
netex:RentalOptionRef
netex:RepeatedTripFareRequestRef
netex:RequestedTravelSpecificationRef
netex:ResellingRef
netex:ResidentialQualificationRef
netex:RoadLinkRef
netex:RoundingStepRef
netex:SalesOfferPackageEntitlementGivenRef
netex:SalesOfferPackageEntitlementRequiredRef
netex:ScheduledModeOfOperationRef
netex:ScheduleRequestRef
netex:SchematicMapMemberRef
netex:SchematicMapRef
netex:SectionRef
netex:ServiceAccessRightRef
netex:ServiceLinkInSequenceRef
netex:SimpleObjectRef
netex:SingleTripFareRequestRef
netex:SpatialFeatureRef
netex:SpotAffinityRef
netex:SpotAllocationMethodRef
netex:StartTimeAtStopPointRef
netex:StopEventRequestRef
netex:StopFinderRequestRef
netex:StopPlaceSpaceRef
netex:StopPlaceVehicleEntranceRef
netex:SubscribingRef
netex:SuspendingRef
netex:TariffObjectRef
netex:TimingAlgorithmTypeRef
netex:TopographicProjectionRef
netex:TrainComponentStopAssignmentRef
netex:TransportTypeRef
netex:TripDebitRef
netex:TripLegRef
netex:TripPatternRef
netex:TripPlanRequestRef
netex:TripRef
netex:TurnaroundTimeLimitTimeRef
netex:TypeOfCodespaceAssignmentRef
netex:TypeOfCongestionRef
netex:TypeOfDeckEntranceUsageRef
netex:TypeOfDeliveryVariantRef
netex:TypeOfFacilityRef
netex:TypeOfFareProductRef
netex:TypeOfOperationRef
netex:TypeOfOrganisationPartRef
netex:TypeOfPaymentMethodRef
netex:TypeOfRollingStockRef
netex:TypeOfSecurityListRef
netex:TypeOfServiceFeatureRef
netex:TypeOfTimeDemandTypeRef
netex:TypeOfVersionRef
netex:VehicleProfileRef
netex:VehicleRequirementRef
netex:VehicleServicePlaceAssignmentRef
netex:VehicleTypePreferenceRef
netex:VehicleTypeStopAssignmentRef
netex:VehicleTypeZoneRestrictionRef
netex:VersionOfObjectRef
netex:WireLinkRef
netex:ZoneInSeriesRe

trurlurl avatar Oct 26 '25 16:10 trurlurl

PR #979 is merged. I will let you assess if we need to do more, @skinkie and @trurlurl, but I think we can close the issue.

TuThoThai avatar Oct 30 '25 14:10 TuThoThai