@prefix adfi: <http://avoindata.fi/ns#> .
@prefix dcat: <http://www.w3.org/ns/dcat#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ns1: <http://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<https://avoindata.suomi.fi/data/dataset/2e6c307c-99d6-4ac1-ac6e-c94fe57a23d3> a adfi:Showcase ;
    adfi:archived <false> ;
    adfi:collectionType "None" ;
    adfi:dataUserInterface </data/showcase/clousby> ;
    adfi:previewMedia [ adfi:previewMedia <https://avoindata.suomi.fi/data/uploads/showcase/2021-01-25-101932.943926clousbyresultsforyliopistonkatu1.png>,
                <https://avoindata.suomi.fi/data/uploads/showcase/2021-01-25-101933.001595clousbyservicesnearyliopistonkatu120100.png>,
                <https://avoindata.suomi.fi/data/uploads/showcase/2021-01-25-101933.051240clousbybestrestaurantsnearyliopistonkatu120100.png> ] ;
    dct:creator [ foaf:name "Kasperi Keski-Loppi" ] ;
    dct:description """Kun matkustat tai muutat uudelle alueelle, lähimpien palvelujen etsiminen voi olla hankalaa ja hidasta. Clousby-sovelluksella voit hakea osoitteen perusteella lähimmät palvelut nopeasti ja vaivattomasti.\r
\r
**AINEISTO 1 — OSOITTEET**\r
\r
Sovellukseen luettiin osoitteet hyödyntämällä aineistoa Suomen rakennusten osoitteista, postinumeroista ja WGS84-koordinaateista. Koska aineisto ei sisältänyt tietoa paikkakunnista, paikkakunnat haettiin postinumeron avulla [Googlen Geocoding-rajapinnasta](https://developers.google.com/maps/documentation/geocoding/overview). Paikkakuntien osalta kehitystyö on vielä kesken.\r
\r
**AINEISTO 2 — PALVELUT**\r
\r
Sovelluksen palvelut haettiin avoimesta lähteestä osoitteesta http://download.geofabrik.de/europe/finland.html, joka on OpenStreetMap.org-tietokannasta koostettu poiminta Suomen palveluista.\r
\r
**SUODATUS**\r
\r
Molempiin aineistoihin sovellettiin omavalintaista suodatusta. Suodatuksen tavoitteena oli siistiä aineistosta pois tarpeeton data kuten (1) osoitteet, joissa ei ollut katua tai tietä, (2) palveluita, joissa ei ollut nimeä ja (3) palvelut, jotka eivät olleet merkityksellisiä käyttötarkoituksen kannalta.\r
\r
Aineistoille tehtiin suodatusta kahdessa eri vaiheessa: (1) kun raaka-aineisto tallennettiin tietokantaan ja (2) muokkaamalla tietokantaa. Tämä ratkaisu tuntui luontevalta, koska raaka-aineiston tallentamisessa voitiin hyödyntää  ns. "tyhmää" suodatusta, kun taas tietokannan käsittelyssä voitiin hyödyntää tietokannan omia toimintoja.\r
\r
Alkuperäisessä aineistossa 1 osoitteita oli reilu 3,6 miljoonaa kappaletta, kun Clousby-sovelluksen kannalta hyödyllisiä osoitteita jäi lopulta hieman alle 2 miljoonaa kappaletta. Uniikkeja postinumeroita Clousby-sovelluksesta löytyy 3 147 kappaletta (alkuperäistä määrää ei tarkistettu).\r
\r
**TEKNINEN TOTEUTUS**\r
\r
Jokaiselle osoitteelle luotiin uniikki slug-tietokenttä, johon tallennettiin katu, talonumero ja postinumero (esim. "yliopistonkatu-2-20100"). Slug-tietokenttä mahdollisti jokaiselle osoitteelle oman "etusivun", jonne kerättiin tietoa ko. osoitetta lähinnä olevista palveluista (esim. https://clousby.com/fi/kadut/yliopistonkatu-2-20100)\r
\r
Palvelut haetaan dynaamisesti osoitteiden ja palvelujen koordinaattien perusteella. Yksinkertaisesti sanottuna tietokannalta kysytään seuraavaa: "Hae osoitteen Yliopistonkatu 1 20100 koordinaateilla palvelut enintään 1 000 metrin etäisyydellä palvelut, ja järjestä ne etäisyyden perusteella alkaen lähimmästä". Tämän jälkeen palvelut ryhmitellään sopiviin kategorioihin ja näytetään osoitteen omalla sivulla.\r
\r
**TYÖKALUT**\r
\r
* Docker 20.10.2\r
* Docker Compose 1.27.4\r
* Ruby 2.7.2\r
* Ruby on Rails 5.2.4.4\r
* PostgreSQL 11.2\r
* PostGIS 2.5.2""",
        """When you travel or move to a new neighbourhood, finding the nearest services can be difficult and slow. Why not enter the address on Clousby and find the nearest services immediately?\r
\r
**DATASET 1 — ADDRESSES**\r
\r
Addresses were read from the open dataset about Finnish buildings, addresses, postcodes and WGS84 coordinates. Localities had to be retrieved from Google's Geolocation API (https://developers.google.com/maps/documentation/geocoding/overview) since the open dataset didn't have it. This part is still Work in Progress.\r
\r
**DATASET 2 — SERVICES**\r
\r
The services, i.e. points of interest, were read from the open datasource http://download.geofabrik.de/europe/finland.html that is an extract from the OpenStreetMap.org-database.\r
\r
**FILTERING**\r
\r
Both datasets were filtered to obtain better data for the context. Filtering removed data such as (1) addresses that had no street or avenue, (2) points of interest that had no name, and (3) points of interest that were not meaningful to the application.\r
\r
Filtering was done in two parts: (1) when the raw data was read into the database and (2) modifying the database. This solution felt natural since we could utilize "dummy" filtering on the former and more advanced filtering on the latter.\r
\r
The original dataset 1 included about 3,6 million addresses from which little under 2 million were left into the database. The end product has 3 147 unique postal codes (the original amount was not checked).\r
\r
**TECHNICAL IMPLEMENTATION**\r
\r
Every address got a unique slug field that includes street/avenue, housenumber, and a postal code (e.g. "yliopistonkatu-2-20100"). This slug field allowed creating a unique "homepage" for each address. The homepage includes the services that are near the given street (e.g. https://clousby.com/en/streets/yliopistonkatu-2-20100).\r
\r
The services are constructed dynamically based on the coordinates of the addresses and the services. Simply said, the database is asked the following: "Give the services that are within 1000 meters of the coordinates of Yliopistonkatu 1 20100, and order them by distance, starting from the nearest". The result is then categorized by amenities, and shown on the address' homepage.\r
\r
**TOOLS**\r
\r
* Docker 20.10.2\r
* Docker Compose 1.27.4\r
* Ruby 2.7.2\r
* Ruby on Rails 5.2.4.4\r
* PostgreSQL 11.2\r
* PostGIS 2.5.2""" ;
    dct:identifier "2e6c307c-99d6-4ac1-ac6e-c94fe57a23d3" ;
    dct:issued "2021-01-25T10:19:33.669250"^^xsd:date ;
    dct:publisher <> ;
    dct:title "Clousby — Löydä minkä tahansa kadun lähimmät palvelut" ;
    ns1:dateModified "2022-09-09T12:22:27.499407"^^xsd:dateTime,
        "2022-09-09T12:22:27.499407" ;
    ns1:datePublished "2021-01-25T10:19:33.669250"^^xsd:dateTime,
        "2021-01-25T10:19:33.669250" ;
    ns1:description """Kun matkustat tai muutat uudelle alueelle, lähimpien palvelujen etsiminen voi olla hankalaa ja hidasta. Clousby-sovelluksella voit hakea osoitteen perusteella lähimmät palvelut nopeasti ja vaivattomasti.\r
\r
**AINEISTO 1 — OSOITTEET**\r
\r
Sovellukseen luettiin osoitteet hyödyntämällä aineistoa Suomen rakennusten osoitteista, postinumeroista ja WGS84-koordinaateista. Koska aineisto ei sisältänyt tietoa paikkakunnista, paikkakunnat haettiin postinumeron avulla [Googlen Geocoding-rajapinnasta](https://developers.google.com/maps/documentation/geocoding/overview). Paikkakuntien osalta kehitystyö on vielä kesken.\r
\r
**AINEISTO 2 — PALVELUT**\r
\r
Sovelluksen palvelut haettiin avoimesta lähteestä osoitteesta http://download.geofabrik.de/europe/finland.html, joka on OpenStreetMap.org-tietokannasta koostettu poiminta Suomen palveluista.\r
\r
**SUODATUS**\r
\r
Molempiin aineistoihin sovellettiin omavalintaista suodatusta. Suodatuksen tavoitteena oli siistiä aineistosta pois tarpeeton data kuten (1) osoitteet, joissa ei ollut katua tai tietä, (2) palveluita, joissa ei ollut nimeä ja (3) palvelut, jotka eivät olleet merkityksellisiä käyttötarkoituksen kannalta.\r
\r
Aineistoille tehtiin suodatusta kahdessa eri vaiheessa: (1) kun raaka-aineisto tallennettiin tietokantaan ja (2) muokkaamalla tietokantaa. Tämä ratkaisu tuntui luontevalta, koska raaka-aineiston tallentamisessa voitiin hyödyntää  ns. "tyhmää" suodatusta, kun taas tietokannan käsittelyssä voitiin hyödyntää tietokannan omia toimintoja.\r
\r
Alkuperäisessä aineistossa 1 osoitteita oli reilu 3,6 miljoonaa kappaletta, kun Clousby-sovelluksen kannalta hyödyllisiä osoitteita jäi lopulta hieman alle 2 miljoonaa kappaletta. Uniikkeja postinumeroita Clousby-sovelluksesta löytyy 3 147 kappaletta (alkuperäistä määrää ei tarkistettu).\r
\r
**TEKNINEN TOTEUTUS**\r
\r
Jokaiselle osoitteelle luotiin uniikki slug-tietokenttä, johon tallennettiin katu, talonumero ja postinumero (esim. "yliopistonkatu-2-20100"). Slug-tietokenttä mahdollisti jokaiselle osoitteelle oman "etusivun", jonne kerättiin tietoa ko. osoitetta lähinnä olevista palveluista (esim. https://clousby.com/fi/kadut/yliopistonkatu-2-20100)\r
\r
Palvelut haetaan dynaamisesti osoitteiden ja palvelujen koordinaattien perusteella. Yksinkertaisesti sanottuna tietokannalta kysytään seuraavaa: "Hae osoitteen Yliopistonkatu 1 20100 koordinaateilla palvelut enintään 1 000 metrin etäisyydellä palvelut, ja järjestä ne etäisyyden perusteella alkaen lähimmästä". Tämän jälkeen palvelut ryhmitellään sopiviin kategorioihin ja näytetään osoitteen omalla sivulla.\r
\r
**TYÖKALUT**\r
\r
* Docker 20.10.2\r
* Docker Compose 1.27.4\r
* Ruby 2.7.2\r
* Ruby on Rails 5.2.4.4\r
* PostgreSQL 11.2\r
* PostGIS 2.5.2""" ;
    ns1:name "Clousby — Löydä minkä tahansa kadun lähimmät palvelut" ;
    ns1:url "/data/showcase/clousby" ;
    dcat:contactPoint [ a vcard:Organization ] ;
    dcat:keyword "kahvilat",
        "palvelut",
        "ravintolat",
        "restauranger",
        "restaurants",
        "services",
        "tjänster" ;
    dcat:landingPage <https://clousby.com/fi/etsi-katuja/> ;
    dcat:theme <https://avoindata.suomi.fi/data/group/624d9966-456b-4aa8-8fa0-8bb1bbb82e2d>,
        <https://avoindata.suomi.fi/data/group/cdb36d04-03b2-4373-8ee6-9101083701b2> .

<> foaf:name "Kasperi Keski-Loppi" .

<https://avoindata.suomi.fi/data/group/624d9966-456b-4aa8-8fa0-8bb1bbb82e2d> a skos:Concept ;
    skos:prefLabel "Government and Public Sector",
        "Regeringen och den offentliga sektorn",
        "Valtioneuvosto ja julkinen sektori" .

<https://avoindata.suomi.fi/data/group/cdb36d04-03b2-4373-8ee6-9101083701b2> a skos:Concept ;
    skos:prefLabel "Alueet ja kaupungit",
        "Regioner och städer",
        "Regions and Cities" .

