Massahaun tulosten tulkintaa Joonas Pihlaja, Copyright 2003 Novo Meridian Oy 2. heinäkuuta 2003 Sisältö 1 Yleiskatsaus 1 2 Company 1 3 Country 2 4 Timezone 2 5 Language 2 6 Station 3 7 Trnsattr ja Trnsmode 3 8 Synonym 4 9 Thrusrvc 4 10 Change 4 11 Service 5 1 Yleiskatsaus Tämän dokumenttin tarkoitus on selvittää esimerkein LVMPortaalin massahakutoiminnosta tulevan jp_database XML:n tulkintaa. Tausta-aineistoksi oletetaan jp_database:n XMLSchema jpdb.xsd ja siitä XMLSpyllä muodostettu dokumentaatio. 2 Company <Company CompanyId= 1 Name= Novo Time= 0000 Code= NOVO /> Tuotantokannassa pääliikenneoperaattoreiden ja koontikannan ylläpitäjän CompanyIdt ovat vakiot seuraavan taulun mukaan: Pääoperaattorien alla olevat varsinaiset liiken- Revision : 1.2 1
Id Yhtiö Tunnus 1 Novo LVM 2 Matkahuolto MH 3 TKL TKL 4 VR VR 5 YTV YTV Taulukko 1: Kannan vakiot CompanyIdt ja Codet neöitsijät tulevat myös Company elementteinä. Name attribuutti on elementissä aina Suomeksi. Muun kieliset nimet yhtiöille tulevat Synonym elementtien sisällä myöhemmin. Time attribuutin antamaa päivämääränvaihtumisaikaa ei kuulu käyttää reitityksessä lähtöaikojen tai lähtöpäivien määräämisessä se on lisäinformaatiota. Code attribuutti on pääliikenneoperaattoreille yksikäsitteinen tunnus koontitietokannassa, ks. taulu 1. Liikennöitsijälle se on pääliikenneoperaattorin antama tunnus kyseiselle liikennöitsijälle. Liikennöitsijän tulisi pystyä yksilöimään parilla (pääliikenneoperaattorin CompanyId, liikennöitsijän tunnus). 3 Country <Country CountryId= fi Name= Suomi /> <Country CountryId= se Name= Ruotsi /> <Country CountryId= ru Name= Venäjä / <Country CountryId= no Name= Englanti /> CountryId on aina pienellä ja kaksikirjaiminen, jos mahdollista (joillakin mailla on vain kolmikirjaiminen maatunnus). Name on oletuskielellä, eli Suomeksi. 4 Timezone <Timezone TimezoneId= 0 > <Period Firstday= 1970-01-01T00:00:00.0+00:00 Lastday= 2100-01-01T00:00:00.0+00:00 Difference= +02:00 /> </Timezone> Timezone elementtejä tulee aina vähintään yksi, joista ensimmäinen on koontitietokannan aikavyöhyke. Difference attribuutti ei kerro erotusta UTCsta, vaan erotuksen UTC + DSTstä, missä DST on EUn mukainen kesä-/talviaikojen korjaus 1 eli koontitietokannassa leikitään, että kesä-/talviaikojen muutosta ei ole olemassa. Tämä siis on scheman selitystä vastaan, jossa puhutaan erotuksesta UTCsta. 5 Language <Language LanguageId= fi Description= Suomi /> 1 Korjaus on +1 tuntia välillä (maaliskuun viimeinen sunnuntai klo. 01:00 UTC marraskuun viimeinen sunnuntai klo. 01:00 UTC) 2
<Language LanguageId= sv Description= Ruotsi /> <Language LanguageId= en Description= Englanti /> <Language LanguageId= ru Description= Venäjä /> Kuten CountryId on LanguageId aina pienillä ja kaksikirjaiminen, jos mahdollista (joillakin kielillä on vain kolmikirjaiminen tunnus.) Kannan oletuskieli tulee aina ensimmäisenä. Huomattava erityisesti, että ruotsin kielitunnus sv on eri kuin Ruotsin maatunnus se. 6 Station <Station StationId= 4:OL Name= OULU minchangetime= 3 CountryId= fi TimezoneId= 0 X= 328690.0 Y= 713610.0 Type= 1 /> StationId attribuutti on muotoa CompanyId:pysäkkitunnus, missä CompanyId on sen pääliikenneoperaattorin CompanyId, joka on antanut pysäkin tiedot kantaan, ja pysäkkitunnus on kyseisen operaattorin tunnus pysäkille. minchangetime on minuuteissa aika, joka varataan pysäkillä tehdyille liikennevälinevaihdoille ellei kyseiselle vaihdolle ole määrätty omaa vaihtoaikaa. CountryId määrää missä maassa pysäkki sijaitsee. TimezoneId määrää missä aikavyöhykkeessä pysäkillä annetut ajat aikatauluissa ovat. Massahauissa aikavyöhyke on jokaiselle pysäkille Suomen aikaa (kanna oletusaikavyähyke, ks. kohta 4. X ja Y koordinaatit (jos tiedossa) ovat aina KKJ3 koordinaatistossa. Type attribuutti kertoo pysäkin tyypin, tällä hetkellä joko 0=oikeasti olemassa tai 1=virtuaalinen. Virtuaalisella pysäkillä voidaan nimetä paikka, jota ei ole oikeasti olemassa. 2 GlobalID attribuutti kertoo pysäkin DIGISTOP tunnuksen, jos se on tiedossa. Useimmilla pysäkeillä tietoa ei ole. On mahdollista, että monella Station elementillä on sama DIGISTOP tunnus mutta eri koordinaatit, sillä pysäkkitieto tulee useilta eri pääliikenneoperaattoreilta. 7 Trnsattr ja Trnsmode Trnsattr elementit määrittelevät mitä eri palveluita vuoroilla tai sen pysäkeillä voi olla. Palvelu on mikä tahansa lisätieto mikä halutaan lisätä vuorolle. Trnsmode elementit määrittelevät mitä eri liikennemuotoja voi vuoroilla olla. <Trnsattr TrnsattrId= 750 Name= Allergikko /> <Trnsattr TrnsattrId= 755 Name= Vastakk. paikat /> <Trnsmode TrnsmodeId= 246 Name= Pikajuna /> 2 TODO: miten määritellään matkahuollon pysäkkialueet? IDEA: pysäkkialueesta tulee virtuaalinen pysäkki ja lisätään attribuutti jolla voidaan nimetä ei-virtuaalisen pysäkin pysäkkialue. 3
Massahaussa TrnsattrIdt ja TrnsmodeIdt ovat aina kokonaislukuja ja jakautuvat kahteen luokkaan: globaalisti määriteltyihin (ks. erillinen koodistodokumentti) ja liikenneoperaattoreiden omiin palveluihin ja liikennemuotoihin. Teoria on, että Id:t välillä 100 199 ovat globaaleja ja muut ovat ovat liikenneoperaattoreiden omia. Palveluita ja liikennemuotoja voi ryhmitellä käyttämällä Trnsattrin AttrType ja Trnsmoden ModeType attribuutteja: ne viittavaat olemassaolevaan palveluun/liikennemuotoon, jonka osa viittaava palvelu/liikennemuoto on. Esim. jos halutaan ryhmitellä kaikki makuupaikka palvelut, voidaan asia ilmaista näin: <Trnsattr TrnsattrId= 1001 Name= Makuupaikka /> <Trnsattr TrnsattrId= 2001 Name= Makuupaikka, 1. luokka AttrType= 1001 /> <Trnsattr TrnsattrId= 2002 Name= Makuupaikka, 2. luokka AttrType= 1001 /> <Trnsattr TrnsattrId= 2003 Name= Makuupaikka, 3. luokka AttrType= 1001 /> Name on aina suomeksi. Muilla kielillä palveluiden/liikennemuotojen nimet tulevat erikseen Synonym elementeissä. 8 Synonym <Synonym LanguageId= sv > <!-- elementtejä joilla nimet tai selitykset kielellä sv --> </Synonym> Synonym elementtien sisällä olevat elentit ovat kaikki muotoa <ElementinNimi ElementinAvain= id SeliteAttribuutinNimi= selite synonyymin kielellä />. Esim. <Company CompanyId= 1 Name= Novo Group /> <LanguageId LanguageId= sv Description= Swedish /> 9 Thrusrvc Ei esiinny. Korvataan Change elementeillä, jotka ovat yksinkertaisempia tulkita. 10 Change Massahaun tuloksena Change elementit ovat aina 3 tämän muotoisia: <Change ServiceId1= 123 ServiceId2= 345 uservisible= true /> <Change ServiceId1= 432 ServiceId2= 455 /> Ensimmäinen Change elementti määrittelee vaihdon vuoron ServiceId1=123 viimeiseltä pysäkiltä vuoron ServiceId2=345 ensimmäiselle pysäkille. 4 Vaihto näytetään matkustajalle. Vaihto on taattu. Toinen Change elementti määrittelee vaihdon vuoron ServiceId1=432 viimeiseltä pysäkiltä vuoron ServiceId2=455 ensimmäiselle pysäkille. Vaihto on matkustajalle huomaamaton. Vaihto on taattu. 3 tällä hetkellä 4 TODO: pysäkit ovat samat 4
11 Service <Service ServiceId= 1 > <ServiceNbr CompanyId= 4 ServiceNbr= 61 /> <ServiceValidity FootnoteId= 1 /> <ServiceTrnsmode TrnsmodeId= 246 /> <ServiceAttribute AttributeId= 743 FootnoteId= 1 /> <ServiceAttribute AttributeId= 741 FootnoteId= 1 /> <ServiceAttribute AttributeId= 736 FootnoteId= 1 /> <ServiceAttribute AttributeId= 735 FootnoteId= 1 /> <Stop Ix= 1 StationId= 4:HKI Departure= 1920 Type= S /> <Stop Ix= 2 StationId= 4:PSL Arrival= 1925 Departure= 1927 /> <Stop Ix= 3 StationId= 4:TKL Arrival= 1938 Departure= 1939 /> <Stop Ix= 4 StationId= 4:RI Arrival= 2014 Departure= 2017 /> <Stop Ix= 5 StationId= 4:HL Arrival= 2040 Departure= 2042 /> <Stop Ix= 6 StationId= 4:TPE Arrival= 2136 Departure= 2224 /> <Stop Ix= 7 StationId= 4:PKO Arrival= 2312 Departure= 2314 /> <Stop Ix= 8 StationId= 4:SK Arrival= 2405 Departure= 2410 /> </Service> Jokaisella vuorolla on yksi ServiceNbr elementti, yksi ServiceValidity tietue ja yksi ServiceTrnsmode tietue. ServiceNbr tietue antaa liikennöitsijän attribuutissa CompanyId ja liikennöitsijän pääliikenneoperaattorin vuorolle antaman tunnuksen attribuutissa ServiceNbr. Liikennöitsijä pysyy samana koko vuoron ajan. ServiceValidity tietue antaa ne päivät jolloin vuorolla on lähtöjä ensimmäiseltä pysäkiltään. Vuoron pysäkeillä ei ole omia voimassaolopäiviä, vaan vuoro käy jokaisella pysäkillä kaikkina lähtöpäivinä. ServiceTrnsmode tietue antaa tämän vuoron kulkumuodon. Mikäli kulkumuodon pitäisi vaihtua kesken reitin, pilkotaan vuoro niin moneen osaan, että kulkumuoto ei vaihdu kuin osien välillä ja linkitetään osat Change elementillä yhteen. ServiceAttribute tietueet kertovat mitä palveluita on tällä vuorolla voimassa. Palveluilla ei ole omia voimassaolopäiviä, vaan FootnoteIdt ovat aina samat kuin ServiceValidity tietueen FootnoteId. Stop tietueet kertovat varsinaisen reitin ja vuoron pysähdys- ja lähtöajat reitillä. 5