samuvack / ldes-grar

1 stars 1 forks source link

Proof of Concept

In this Proof of Concept, an Rest API is developed that makes it possible to harvest information of building units and parcels via its address. The data of building units, parcels and addresses is available as Linked Data Event Streams. First, the three Linked Data Event Streams are consumed and inserted into a GraphDB. Hereafter, a Sparql query provides for a linkage between these LDES'es.

Start Docker of Apache Nifi and GraphDB

docker-compose up --build

Load data flow in Apache Nifi

Apache Nifi will run on port 8443:8443/tcp\ https://localhost:8443

Login \ username: admin \ password: admin123456789

Apache NiFi flow (NiFi_Flow.json) can be added by sliding in a Process Group:\ image

image

Data in GraphDB

Building units

image image

Parcels

image

Sparql queries

all info of an address:

PREFIX generiek:      <https://data.vlaanderen.be/ns/generiek#>
PREFIX locn:          <https://www.w3.org/ns/locn#> 
PREFIX geosparql:     <http://www.opengis.net/ont/geosparql#>
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
PREFIX prov: <http://www.w3.org/ns/prov#>

select ?generatedAtTime ?naamruimte ?lokaleIdentificator ?versieIdentificator ?huisnummer ?locatie ?gemeente ?heeftPostinfo ?adresstatus ?officieelToegekend ?straat        where { 
    ?genid adres:volledigAdres "Amsterdamstraat 18, 2000 Antwerpen"@nl .
    ?adres_id adres:isVerrijktMet ?genid .
    ?adres_id prov:generatedAtTime ?generatedAtTime .
    ?adres_id generiek:naamruimte ?naamruimte .
    ?adres_id generiek:lokaleIdentificator ?lokaleIdentificator .
    ?adres_id generiek:versieIdentificator ?versieIdentificator .
    ?adres_id adres:huisnummer ?huisnummer .
    ?adres_id adres:positie ?genid_positie .

    ?genid_positie locn:geometry ?genid_locatie .
    ?genid_locatie geosparql:asGML ?locatie .

    ?adres_id adres:heeftGemeentenaam ?heeftGemeentenaam .
    ?heeftGemeentenaam adres:Gemeentenaam ?genid_gemeente .
    ?genid_gemeente ?p ?gemeente .

    ?adres_id adres:heeftPostinfo ?heeftPostinfo .
    ?adres_id adres:Adres.status ?adresstatus .  
    ?adres_id adres:officieelToegekend ?officieelToegekend .
    ?adres_id adres:heeftStraatnaam ?heeftStraatnaam .
    ?heeftStraatnaam adres:Straatnaam ?genid_straat .
    ?genid_straat ?p ?straat .
} 

image

PREFIX generiek:      <https://data.vlaanderen.be/ns/generiek#>
PREFIX locn:          <https://www.w3.org/ns/locn#>
PREFIX geosparql:     <http://www.opengis.net/ont/geosparql#>
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
PREFIX prov: <http://www.w3.org/ns/prov#>

CONSTRUCT {
    ?adres_id adres:volledigAdres "Zelestraat 219, 9160 Lokeren"@nl.
    ?adres_id generiek:naamruimte ?naamruimte .
    ?adres_id generiek:lokaleIdentificator ?lokaleIdentificator .
    ?adres_id generiek:versieIdentificator ?versieIdentificator .
    ?adres_id adres:huisnummer ?huisnummer .
    ?adres_id  geosparql:asGML ?locatie .
    ?adres_id adres:heeftGemeentenaam ?gemeente .
    ?adres_id adres:Straatnaam ?straat .
    ?adres_id adres:officieelToegekend ?officieelToegekend .
    ?adres_id adres:heeftPostinfo ?heeftPostinfo .
    ?adres_id adres:Adres.status ?adresstatus .

}

where {
    ?genid adres:volledigAdres "Zelestraat 219, 9160 Lokeren"@nl .
    ?adres_id adres:isVerrijktMet ?genid .
    OPTIONAL { ?adres_id prov:generatedAtTime ?generatedAtTime .
    ?adres_id generiek:naamruimte ?naamruimte .
    ?adres_id generiek:lokaleIdentificator ?lokaleIdentificator .
    ?adres_id generiek:versieIdentificator ?versieIdentificator .
    ?adres_id adres:huisnummer ?huisnummer .
    ?adres_id adres:positie ?genid_positie .
    ?genid_positie locn:geometry ?genid_locatie .
    ?genid_locatie geosparql:asGML ?locatie .
    ?adres_id adres:heeftGemeentenaam ?heeftGemeentenaam .
    ?heeftGemeentenaam adres:Gemeentenaam ?genid_gemeente .
    ?genid_gemeente ?p ?gemeente .
    ?adres_id adres:heeftPostinfo ?heeftPostinfo .
    ?adres_id adres:Adres.status ?adresstatus .
    ?adres_id adres:officieelToegekend ?officieelToegekend .
    ?adres_id adres:heeftStraatnaam ?heeftStraatnaam .
    ?heeftStraatnaam adres:Straatnaam ?genid_straat .
    ?genid_straat ?p ?straat .
    }}

https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/adres#volledigAdres "Zelestraat 219, 9160 Lokeren"@nl . https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/generiek#naamruimte "https://data.vlaanderen.be/id/adres" . https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/generiek#lokaleIdentificator "1239307" . https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/generiek#versieIdentificator "2022-04-28T08:20:26+02:00" . https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/adres#huisnummer "219" . https://data.vlaanderen.be/id/adres/1239307 http://www.opengis.net/ont/geosparql#asGML "<gml:Point srsName=\"http://www.opengis.net/def/crs/EPSG/0/31370\" xmlns:gml=\"http://www.opengis.net/gml/3.2\">124491.27 19 8750.89</gml:pos></gml:Point>"^^http://www.opengis.net/ont/geosparql#gmlLiteral . https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/adres#heeftGemeentenaam "Lokeren"@nl . https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/adres#Straatnaam "Zelestraat"@nl . https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/adres#officieelToegekend "true"^^http://www.w3.org/2001/XMLSchema#boolean . https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/adres#heeftPostinfo https://data.vlaanderen.be/id/postinfo/9160 . https://data.vlaanderen.be/id/adres/1239307 https://data.vlaanderen.be/ns/adres#Adres.status https://data.vlaanderen.be/id/conceptscheme/adresstatus/inGebruik .

image

address: image

select * where { 
    ?genid <https://data.vlaanderen.be/ns/adres#volledigAdres> "Amerikalei 152, 2000 Antwerpen"@nl .

}

all info of parcels based on addres:

PREFIX gebouwregister: <https://basisregisters.vlaanderen.be/implementatiemodel/gebouwenregister#>
PREFIX adres: <https://data.vlaanderen.be/id/adres/>
PREFIX perceel: <https://data.vlaanderen.be/id/perceel/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX ns: <https://data.vlaanderen.be/ns/generiek#>

select * where { 
    ?perceel gebouwregister:Adresseerbaar%20Object adres:2327687 .
    OPTIONAL {  ?perceel rdf:type ?type .
                ?perceel prov:generatedAtTime ?generatedAtTime .
                ?perceel ns:lokaleIdentificator ?lokaleIdentificator .
                ?perceel ns:naamruimte ?naamruimte .
                ?perceel ns:versieIdentificator ?versieIdentificator .}
    #           ?perceel gebouwenregister:Perceel%3Astatus ?status .}
}

image

PREFIX gebouwregister: <https://basisregisters.vlaanderen.be/implementatiemodel/gebouwenregister#>
PREFIX adres: <https://data.vlaanderen.be/id/adres/>
PREFIX perceel: <https://data.vlaanderen.be/id/perceel/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX ns: <https://data.vlaanderen.be/ns/generiek#>

CONSTRUCT{

?perceel rdf:type ?type .
?perceel prov:generatedAtTime ?generatedAtTime .
?perceel ns:lokaleIdentificator ?lokaleIdentificator .
?perceel ns:naamruimte ?naamruimte .
?perceel ns:versieIdentificator ?versieIdentificator .

} where {
    ?perceel gebouwregister:Adresseerbaar%20Object adres:2327687 .
    OPTIONAL {  ?perceel rdf:type ?type .
                ?perceel prov:generatedAtTime ?generatedAtTime .
                ?perceel ns:lokaleIdentificator ?lokaleIdentificator .
                ?perceel ns:naamruimte ?naamruimte .
                ?perceel ns:versieIdentificator ?versieIdentificator .}
    #           ?perceel gebouwenregister:Perceel%3Astatus ?status .}
}

all info of building units:

PREFIX adres: <https://data.vlaanderen.be/id/adres/>
PREFIX gebouw: <https://data.vlaanderen.be/id/?gebouweenheid/>
PREFIX gebouweenheid: <https://data.vlaanderen.be/ns/gebouw#>
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

select * where { 
    ?gebouweenheid <https://data.vlaanderen.be/ns/gebouw#Gebouweenheid.adres> <https://data.vlaanderen.be/id/adres/1864311> .

    OPTIONAL{
    ?gebouweenheid prov:generatedAtTime ?generatedAtTime .
    ?gebouweenheid rdf:type ?type .
    ?gebouweenheid gebouweenheid:Gebouweenheid.geometrie ?geometrie .
    ?gebouweenheid gebouweenheid:Gebouweenheid.status ?status .
    ?gebouweenheid gebouweenheid:functie ?functie .
    ?gebouweenheid generiek:lokaleIdentificator ?lokaleIdentificator .
    ?gebouweenheid generiek:naamruimte ?naamruimte .
    ?gebouweenheid generiek:versieIdentificator ?versieIdentificator .  

}
}

output: image

PREFIX adres: <https://data.vlaanderen.be/id/adres/>
PREFIX gebouw: <https://data.vlaanderen.be/id/?gebouweenheid/>
PREFIX gebouweenheid: <https://data.vlaanderen.be/ns/gebouw#>
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

construct {
?gebouweenheid prov:generatedAtTime ?generatedAtTime .
?gebouweenheid rdf:type ?type .
?gebouweenheid gebouweenheid:Gebouweenheid.geometrie ?geometrie .
?gebouweenheid gebouweenheid:Gebouweenheid.status ?status .
?gebouweenheid gebouweenheid:functie ?functie .
?gebouweenheid generiek:lokaleIdentificator ?lokaleIdentificator .
?gebouweenheid generiek:naamruimte ?naamruimte .
?gebouweenheid generiek:versieIdentificator ?versieIdentificator .  

} where { 
    ?gebouweenheid <https://data.vlaanderen.be/ns/gebouw#Gebouweenheid.adres> <https://data.vlaanderen.be/id/adres/1864311> .

    OPTIONAL{
    ?gebouweenheid prov:generatedAtTime ?generatedAtTime .
    ?gebouweenheid rdf:type ?type .
    ?gebouweenheid gebouweenheid:Gebouweenheid.geometrie ?geometrie .
    ?gebouweenheid gebouweenheid:Gebouweenheid.status ?status .
    ?gebouweenheid gebouweenheid:functie ?functie .
    ?gebouweenheid generiek:lokaleIdentificator ?lokaleIdentificator .
    ?gebouweenheid generiek:naamruimte ?naamruimte .
    ?gebouweenheid generiek:versieIdentificator ?versieIdentificator .  

}
}