public-transport / ideas

How to make public transport more comfortable, more accessible, more transparent?
Creative Commons Attribution Share Alike 4.0 International
37 stars 0 forks source link

Introduce OJP resources #19

Open andaryjo opened 2 years ago

andaryjo commented 2 years ago

Since we mentioned OJP in https://github.com/public-transport/transport-apis/issues/43, I thought it would be good to have a new issue similar to https://github.com/public-transport/ideas/issues/18 to collect useful resources for anyone not familar with it (it was my first time hearing it as well, even though it's already a few years old).

OJP stands for "Open Journey Planner" and it is called the Open API for distributed journey planning. While being an extension of the German TRIAS, it apparently has been developed in cooperation with some european countries and has been approved as a Technical Specification by the the European Commitee for Standardization (CEN). As far as I understand, this does not make it legally binding to use it, but the CEN recommds its usage to local, regional and national travel information service providers.

What does this mean for TRIAS?

I think this is a step in the right direction. The TRIAS specification was always somewhat limited to German public transport providers, simply because it's a German development, but this did not stop providers from other countries to use it (for example SBB and VSTG).

It's unclear to me what this means for TRIAS and providers currently implementing TRIAS. So far, the TRIAS specification has not been deprecated and - as far as I can tell - no providers except for SBB have any ambitions to change to the new standard.

What is the difference in the specification?

I did not have a detailed look into the specification yet, but it seems like the request and response XML structures are largely the same. You just would need to replace TRIAS tags with OJP tags and it should work. See here for examples by SBB.

One new feature apparently are chained requests, where you can include multiple OJP requests in just one HTTP call with a AbstractFunctionalServiceRequest. That sounds cool.

Where can I see the specification?

You can find the OJP XML schemas on GitHub: https://github.com/VDVde/OJP

But there does not seem to be any freely available documentation on the standard. You could buy it for around 140€ here. The SSB even states that the documentation has been copyrighted and cannot be published. While this seems to be normal procedure for CEN standards (as read in their FAQs), it baffles me how they are aiming to introduce a new standard and at the same time copyright the standard's documentation.

What providers support OJP?

For now I was only able to find the SBB.

What now?

I'd be interested to hear your thoughts on this.

derhuerst commented 2 years ago

@ue71603 @skinkie Do you know if there's a freely available, or even freely (as in freedom of speech) licensed, version of the documentation?

ue71603 commented 2 years ago

@derhuerst OJP is a CEN standard, so the main document needs to be ordered from the national standardisation body for a fee as mentioned. CEN and ISO standards always are that way. The XSD however is GPL, so you can use it. We try to pack the crucial implementation information into the XSD. We also provide the cookbook and expand on it, if this is desired : https://opentransportdata.swiss/en/cookbook/open-journey-planner-ojp/

Our demonstrator contains an SDK and shows how things can be done: https://opentdatach.github.io/ojp-demo-app/ . It is also open source. It allows you to inspect requests and responses.

We also have an API explorer in the cookbook for that: https://opentransportdata.swiss/en/cookbook/open-journey-planner-ojp/#API-Explorer

Code generation from the XSD we will expand on that in github in near furutre @skinkie is working on that.

The Swiss service is available and working and less than 50 requests per minute are free (you need to get youself an API key https://opentransportdata.swiss/en/cookbook/open-journey-planner-ojp/#Access_to_the_API

For some EU projects "Profiles" will be compiled, that are probably also published.

If we can do anything else, please say, what you need.

derhuerst commented 1 year ago

a work-in-progress OJP SDK: https://github.com/openTdataCH/ojp-js a demo ojp client: https://github.com/openTdataCH/ojp-demo-app