Deze zomer gaat de Noord/Zuidlijn rijden, en op die dag verdwijnen een aantal tramlijnen en gaan een aantal andere lijnen een andere route rijden. De oude en nieuwe lijnen staan op ons Metro & Tram Amsterdam overzicht, met veel historische foto’s uit Amsterdamse collecties.
Als je je door het bovenstaande intro heen hebt geworsteld om meer over de achterliggende SPARQL-queries te lezen, dan kan je nu al opgelucht ademhalen.
Er zijn geen collecties die harde links naar tram- of metrolijnen opgenomen hebben. We hebben tekstueel gezocht in de beschrijving van de objecten:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX dct: <http://purl.org/dc/terms/> PREFIX sem: <http://semanticweb.cs.vu.nl/2009/11/sem/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?cho ?year ?img ?title ?description WHERE { ?cho dc:description ?description . ?cho dc:title ?title . ?cho sem:hasBeginTimeStamp ?start . ?cho foaf:depiction ?img . BIND (year(xsd:dateTime(?start)) AS ?year) . FILTER REGEX(?description,"lijn 6[^0-9]", "i") } ORDER BY DESC(?start) LIMIT 20 |
De reguliere expressie was nodig om bij lijn 1 niet ook bijvoorbeeld lijn 13 terug te krijgen. Oh, en dat ?cho
staat voor Cultural Heritage Object.
Helemaal goed gaat dit niet altijd, want Tramlijn 15 is al in 1937 opgeheven en sinds 1965 rijdt er een buslijn met dat nummer. Maar we zouden te veel afbeeldingen missen als we op tramlijn 6[^0-9]
hadden gezocht. De metrostations zijn hier en daar wel hard gekoppeld aan collectie afbeeldingen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX dct: <http://purl.org/dc/terms/> PREFIX sem: <http://semanticweb.cs.vu.nl/2009/11/sem/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?cho ?year ?img ?title WHERE { ?cho dct:spatial <https://adamlink.nl/geo/building/metrostation-weesperplein/1162> . ?cho dc:title ?title . ?cho sem:hasBeginTimeStamp ?start . ?cho foaf:depiction ?img . BIND (year(xsd:dateTime(?start)) AS ?year) . } ORDER BY DESC(?start) LIMIT 20 |
Je kan in deze query het metrostation natuurlijk door elk ander gebouw (of straat) uit de adamlink referentiedata vervangen.
De lijnen zelf hebben we ook in de data opgenomen. Met oog op de performance maken we er geojson van, maar met deze query halen we de lijnen op:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX geo: <http://www.opengis.net/ont/geosparql#> PREFIX dct: <http://purl.org/dc/terms/> PREFIX schema: <http://schema.org/> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT ?line ?linewkt ?linenr ?linelabel ?linewiki ?linetype WHERE { { ?line dc:type ?linetype . ?line dc:identifier ?linenr . ?line rdfs:label ?linelabel . ?line schema:subjectOf ?linewiki . ?line geo:hasGeometry ?geom . ?geom dct:valid "2018"^^xsd:gYear . ?geom geo:asWKT ?linewkt . FILTER (?linetype = "metrolijn") }UNION{ ?line dc:type ?linetype . ?line dc:identifier ?linenr . ?line rdfs:label ?linelabel . ?line schema:subjectOf ?linewiki . ?line geo:hasGeometry ?geom . ?geom dct:valid "2018"^^xsd:gYear . ?geom geo:asWKT ?linewkt . FILTER (?linetype = "tramlijn") } } ORDER BY ASC(?linenr) |
Nu de lijnen erin zitten kan je zelf ook andere queries maken – deze ‘gewoon-omdat-het-kan-query’ vraagt bijvoorbeeld naar alle straten die tramlijn 1 na 22 juli kruist en dat levert het volgende plaatje op:
De code van de Metro & Tram Amsterdam sample app staat op GitHub.