Created
January 29, 2026 09:34
-
-
Save ptitfred/ff58a03e91aabb5393166af1c8b17303 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [ | |
| { | |
| "resource_classes": [ | |
| "StopPlace", | |
| "Line", | |
| "Operator", | |
| "Network" | |
| ], | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "name-mandatory", | |
| "criticity": "error", | |
| "message": "A StopPlace, Line, Operator, Network, GroupOfLines has a Name", | |
| "name": "name", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "code": "shortname-length", | |
| "criticity": "error", | |
| "message": "A ShortName have 12 or less than characters", | |
| "name": "short_name", | |
| "rule": "attribute/match", | |
| "value": "/^.{0,12}$/" | |
| }, | |
| { | |
| "code": "public-code-length", | |
| "criticity": "error", | |
| "message": "A Public Code have 12 or less than characters", | |
| "name": "public_code", | |
| "rule": "attribute/match", | |
| "value": "/^.{0,12}$/" | |
| }, | |
| { | |
| "resource_classes": [ | |
| "Quay", | |
| "StopPlace", | |
| "StopPlaceEntrance" | |
| ], | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "longitude-mandatory", | |
| "criticity": "error", | |
| "message": "Quay, StopPlace and StopPlaceEntrance have a Longitude", | |
| "name": "longitude", | |
| "rule": "attribute/mandatory" | |
| }, | |
| { | |
| "code": "latitude-mandatory", | |
| "criticity": "error", | |
| "message": "Quay, StopPlace and StopPlaceEntrance have a Latitude", | |
| "name": "latitude", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "Line", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "line-transport-mode-mandatory", | |
| "criticity": "error", | |
| "message": "A Line has a Transport Mode", | |
| "name": "transport_mode", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "Line", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "line-presentation-mandatory", | |
| "criticity": "warning", | |
| "message": "A Line has a Presentation", | |
| "name": "presentation", | |
| "rule": "attribute/mandatory" | |
| }, | |
| { | |
| "element": "presentation", | |
| "rule_context": "reduce/element", | |
| "rules": [ | |
| { | |
| "code": "line-presentation-colour-mandatory", | |
| "criticity": "warning", | |
| "message": "A Line has a Presentation color", | |
| "name": "colour", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "Line", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "line-no-inner-routes", | |
| "message": "A Line doesn’t define its own routes", | |
| "name": "routes", | |
| "rule": "attribute/blank" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "Route", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "route-line-ref-mandatory", | |
| "message": "A Route has a LineRef", | |
| "name": "line_ref", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "JourneyPattern", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "journey-pattern-route-ref-mandatory", | |
| "message": "A ServiceJourneyPattern has a RouteRef", | |
| "name": "route_ref", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "ServiceJourney", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "service-journey-journey-pattern-ref-mandatory", | |
| "message": "A ServiceJourney has a JourneyPatternRef", | |
| "name": "journey_pattern_ref", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "JourneyPattern", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "service-journey-pattern-many-points-in-sequence", | |
| "collection": "points_in_sequence", | |
| "message": "A (Service)JourneyPattern has two or more pointsInSequence", | |
| "minimum_count": 2, | |
| "rule": "collection/count" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "ServiceJourney", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "service-journey-day-types-mandatory", | |
| "collection": "day_types", | |
| "message": "A ServiceJourney has one or more dayTypes", | |
| "minimum_count": 1, | |
| "rule": "collection/count" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "ServiceJourney", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "service-journey-passing-times-mandatory", | |
| "collection": "passing_times", | |
| "message": "A ServiceJourney has two or more passingTimes", | |
| "minimum_count": 2, | |
| "rule": "collection/count" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "DestinationDisplay", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "destination-display-front-text", | |
| "message": "A Destination Display have a FrontText attribute", | |
| "name": "front_text", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "PassengerStopAssignment", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "passenger-stop-assignment-scheduled-stop-point-ref", | |
| "message": "A PassengerStopAssignment has a ScheduledStopPointRef", | |
| "name": "scheduled_stop_point_ref", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "code": "id-length", | |
| "criticity": "warning", | |
| "message": "Any NeTEx id uses less than 256 characters", | |
| "name": "id", | |
| "rule": "attribute/match", | |
| "value": "/^.{0,255}$/" | |
| }, | |
| { | |
| "code": "scheduled-stop-point-refs-exist", | |
| "message": "Referenced ScheduledStopPoints are present", | |
| "referenced_class": "ScheduledStopPoint", | |
| "rule": "reference/exist" | |
| }, | |
| { | |
| "code": "operator-refs-exist", | |
| "message": "Referenced Operators are present", | |
| "referenced_class": "Operator", | |
| "rule": "reference/exist" | |
| }, | |
| { | |
| "code": "day-type-refs-exist", | |
| "message": "Referenced DayTypes are present", | |
| "referenced_class": "DayType", | |
| "rule": "reference/exist" | |
| }, | |
| { | |
| "code": "route-refs-exist", | |
| "message": "Referenced Routes are present", | |
| "referenced_class": "Route", | |
| "rule": "reference/exist" | |
| }, | |
| { | |
| "code": "journey-pattern-refs-exist", | |
| "message": "Referenced (Service)JourneyPattern are present", | |
| "referenced_class": "JourneyPattern", | |
| "rule": "reference/exist" | |
| }, | |
| { | |
| "code": "destination-display-refs-exist", | |
| "message": "Referenced DestinationDisplays are present", | |
| "referenced_class": "DestinationDisplay", | |
| "rule": "reference/exist" | |
| }, | |
| { | |
| "code": "direction-refs-exist", | |
| "message": "Referenced Directions are present", | |
| "referenced_class": "Direction", | |
| "rule": "reference/exist" | |
| }, | |
| { | |
| "code": "route-point-refs-exist", | |
| "message": "Referenced RoutePoints are present", | |
| "referenced_class": "RoutePoint", | |
| "rule": "reference/exist" | |
| }, | |
| { | |
| "code": "service-journey-passing-times-chronology", | |
| "message": "TimedPassingTimes use chronological passing times", | |
| "rule": "service_journey/passing_times_chronology" | |
| }, | |
| { | |
| "resource_class": "GroupOfEntity", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "pan:french_profile:commons:cardinalities:GroupOfEntity:Name", | |
| "criticity": "error", | |
| "message": "GroupOfEntity/Name is mandatory", | |
| "name": "name", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "Point", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "pan:french_profile:commons:cardinalities:Point:Location", | |
| "criticity": "error", | |
| "message": "Point/Location is mandatory", | |
| "name": "location", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "Organisation", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "pan:french_profile:commons:cardinalities:Organisation:OrganisationType", | |
| "criticity": "error", | |
| "message": "Organisation/OrganisationType is mandatory", | |
| "name": "organisation_type", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "SiteComponent", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "pan:french_profile:stops:cardinalities:SiteComponent:SiteRef", | |
| "criticity": "error", | |
| "message": "SiteComponent/SiteRef is mandatory", | |
| "name": "site_ref", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| }, | |
| { | |
| "resource_class": "DestinationDisplay", | |
| "rule_context": "resource/kind_of", | |
| "rules": [ | |
| { | |
| "code": "pan:french_profile:networks:cardinalities:DestinationDisplay:FrontText", | |
| "criticity": "error", | |
| "message": "DestinationDisplay/FrontText is mandatory", | |
| "name": "front_text", | |
| "rule": "attribute/mandatory" | |
| } | |
| ] | |
| } | |
| ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment