Skip to content

Instantly share code, notes, and snippets.

@cecemel
Last active January 18, 2023 08:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cecemel/655c1877f1762d1a18dc3f25ac721a38 to your computer and use it in GitHub Desktop.
Save cecemel/655c1877f1762d1a18dc3f25ac721a38 to your computer and use it in GitHub Desktop.
Starting @ LBLOD

LBLOD

The context

The vision is (in Dutch, unfortunately) well summarised in https://lokaalbestuur.vlaanderen.be/gelinkt-publiceren-en-melden, the video. Also some information here: https://www.vlaanderen.be/agentschap-binnenlands-bestuur/blikvangers/lokale-besluiten-als-gelinkte-open-data These were the initial seeds; the project has grown in scope. Even though some of the initial goals still need realisation.

data models

Development here is heavily data-driven. Data sharing between applications only work if data model is shared Hence the importance of data models. Always remember: if you dive into code for the first time, try having a clue about the underlying data model. Code is about managing data.

Unfortunately, not all data models are equally well documented. Not all documentation is in sync with the actually used model. There are official, unofficial and internal models.

So your control flow might look like this: official model? -> unofficial model? -> internal model? -> explore data. And even if you found an official model, you should explore the data to account for subtle differences.

Digital Vlaanderen manages the official models through an OSLO process; more (general) info may be found: https://data.vlaanderen.be/

But here is already some overview of the most important models.

Note: Once we deviate from official models, there needs to be more consistency in how these are published. I.e. They might have a separate page, a diagram somewhere, a readme in a repo or even the API-definition in mu-resource. Be bold and ask where to start.

mandatarissen

Useful for mandatarissen module in loket and mandataten databank. https://data.vlaanderen.be/doc/applicatieprofiel/mandatendatabank/

besluit

Most useful in loket, module 'inzendingen voor toezicht'. Also Gelinkt-notuleren of course (official) https://data.vlaanderen.be/doc/applicatieprofiel/besluit-publicatie/ (unofficial extension) https://lblod.github.io/pages-vendors/#/docs/submission-annotations (internal, yet not so internal anymore extension) https://cloud.ruizdearcaute.com/s/sTXacrBtoDW3Rj5 mainly in use for the 'automatic submission'

eredienst mandatarissen + eredienst ministers

Module 'eredienst mandatarissen' in loket and app-worship-organisations (unofficial extension) https://app.diagrams.net/#G1F2AWVdZbTR57WrDd7nX0ZEFo3BJAq6xQ

leidinggevenden

Module leidinggevenden in loket https://github.com/lblod/app-digitaal-loket/blob/master/config/resources/slave-leidinggevenden-domain.lisp

lpdc/ipdc

(to become official) https://test.data.vlaanderen.be/doc/implementatiemodel/ipdc-lpdc

job model

background jobs (mainly harvester) https://github.com/lblod/job-controller-service

Umbrella of loket apps

Note: Not everything is listed. Most can be logged in by using the mock-login: http://app/mock-login Most production links you can get by replaceing lblod.info' by vlaanderen.be

loket

qa: https://loket.lblod.info user manual (and other things) https://app.gitbook.com/o/-MP9Yduzf5xu7wIebqPG/s/-MUxLEJUEskn-COptDln/

toezicht

qa: https://besluiten.abb.lblod.info/ backoffice app to check incoming decisions

besluiten.lokaalbestuur

The decisions aggreaged for the citizens qa: https://besluiten.lokaalbestuur.lblod.info

databankerediensten

Backoffice app for decisions of erediensten qa: https://databankerediensten.lokaalbestuur.lblod.info

leidinggevenden

Public app for the citizens to check non-political positions qa: https://leidinggevenden.lblod.info/

mandaten

Public app to check the political mandates. Q: https://mandaten.lokaalbestuur.lblod.info

centrale vindplaats

Public repository (mainly SPARQL endpoint and subject pages) where public data is published as RDF Used mainly by vendors to re-uses the data. (Throw a SPARQL at it, gets triples back) qa: https://centrale-vindplaats.lblod.info/sparql

vendor pages

Just fronted app with extra documentation for vendors. It might be a handy resource. prod: https://lblod.github.io/pages-vendors/

blood-harvester

App used to scrape (part) of the RDFa data published by local authorities. Feeds centrale vinplaats and later loket qa: https://qa.harvesting-self-service.lblod.info

meldingsplichtige api

The stub app used as a tool by vendors to test their integrations (for a subset of loket modules) Q: https://api.loket.lblod.info/

form builder

POC'ish app used as an experiment bed for building forms through a GUI Forms are an essential part of this project; we have a particular way of managing them cause there are many. It will become apparent over time. The form builder itself is experimental. The underlying technology (how they are defined) is production stuff. Q: https://poc-form-builder.relance.s.redpencil.io/

loket data warehouse

A central (internal) reports with SPARQL endpoint where data analysts can query data qa: https://qa.loket-data-warehouse.abb-bfg.s.redpencil.io

complaint form

Extremely simple app, yet business critical for the correct working of the democracy. A form is hosted where citizens can make formal complaints. Q: https://qa.klachtenformulier.rpio-dev.s.redpencil.io

Other apps

gelinkt notuleren

qa: https://gelinkt-notuleren.lblod.info/

organisatieportaal

Backoffice app, used as central endpoint to overview all organisations ABB must watch. Q: https://organisaties.abb.lblod.info

appendix: some useful links

RDFa

RDFa is a serialisation format for RDF, heavily relied upon in our exchange with data from local authorities (and thus vendors, i.e. 'software leveranciers') The spec may be found: https://www.w3.org/TR/rdfa-core/ The primer (less dense reading): https://www.w3.org/TR/rdfa-primer/ Playing (how RDFa converts to turtle): https://rdfa.info/play/ Real examples of playing with RDFa play

json-ld

Another serialisation format, which is used with some other third parties. It is easier to get started with if you are less familiar with RDF. However it has some serious potential drawbacks, hence we're not pushing it forward. Ony when the third party we're integrating with asks for it. https://json-ld.org/

literature

Semantic web for the working ontologist.

Very general tips

get on top of your sparql to learn how to explore data. For backend services, you should learn how to enable the debug mode. Always have a working copy of your DB locally, so restoring issues is way faster

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment