Skip to content

Instantly share code, notes, and snippets.

@ptitfred
Created January 29, 2026 09:34
Show Gist options
  • Select an option

  • Save ptitfred/ff58a03e91aabb5393166af1c8b17303 to your computer and use it in GitHub Desktop.

Select an option

Save ptitfred/ff58a03e91aabb5393166af1c8b17303 to your computer and use it in GitHub Desktop.
[
{
"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