DCAT Harvester

DCAT Custom Harvester

Διαδικασία Συγκομιδής μέσω DCAT

Συγκομιδή μεταδεδομένων από απομακρυσμένους καταλόγους που εκθέτουν DCAT, με αυτόματη κανονικοποίηση σε DCAT‑AP / DCAT‑AP GR και χρήση ελεγχόμενων λεξιλογίων (Publications Office). Στόχος είναι η ομοιομορφία και η μείωση σφαλμάτων επικύρωσης στα datasets του data.gov.gr.

Συμβατότητα & Περιορισμοί

  • Κατάλληλος για αποθετήρια που εκθέτουν DCAT .

  • Απορρίπτει/καθαρίζει τιμές που δεν βρίσκονται σε ελεγχόμενα λεξιλόγια για να περάσει CKAN validation.

Προσθήκη Νέας Πηγής DCAT

Διαθέσιμα πεδία:

Πεδίο
Περιγραφή

URL

Το DCAT endpoint (π.χ. https://example.org/catalog.ttl)

Τίτλος

Όνομα της πηγής (π.χ. “Example DCAT Source”)

Περιγραφή

Προαιρετικό κείμενο

Οργανισμός

Ο οργανισμός ιδιοκτησίας της πηγής

Συχνότητα

MANUAL / DAILY / WEEKLY / MONTHLY κ.λπ.

Τύπος

DCAT Custom Harvester (custom_dcat_harvester)

Configuration

Δεν απαιτείται

Στάδια Συγκομιδής

  • Gather: Ανάκτηση λίστας items από το DCAT endpoint.

  • Fetch: Λήψη/ανάλυση μεταδεδομένων για κάθε item.

  • Import: Εισαγωγή/ενημέρωση datasets με εφαρμογή μετασχηματισμών.

Αυτόματοι Μετασχηματισμοί

  • Authority URIs (Publications Office):

    • frequency → π.χ. http://publications.europa.eu/resource/authority/frequency/ANNUAL

    • license / license_id → π.χ. http://publications.europa.eu/resource/authority/licence/CC_BY_4_0

    • access_rights → http://publications.europa.eu/resource/authority/access-right/PUBLIC|RESTRICTED|NON_PUBLIC

    • availability → http://publications.europa.eu/resource/authority/planned-availability/...

  • Γλώσσες: parsing από extras (JSON array ή URI), έλεγχος βάσει “Languages” και μεταφορά στο κύριο πεδίο.

  • Mimetype: έλεγχος/κανονικοποίηση βάσει “Media types” (σε dataset και resources).

  • Πολυγλωσσικά: διασφάλιση title_translated-el και notes_translated-el με λογικές εφεδρείες.

  • Θεματικές & HVD: χαρτογράφηση “Data theme” και χειρισμός High‑Value Dataset κατηγορίας (όπου παρέχεται).

  • Tags: καθαρισμός χαρακτήρων/μήκους/διπλοτύπων για CKAN validation.

Χαρτογράφηση Πεδίου → Λεξιλόγιο (ενδεικτικά)

Πεδίο
Λεξιλόγιο
Μορφή/URI (παράδειγμα)

access_rights

Access right

http://publications.europa.eu/resource/authority/access-right/PUBLIC

license

Licence

http://publications.europa.eu/resource/authority/licence/CC_BY_4_0

frequency

Frequency

http://publications.europa.eu/resource/authority/frequency/ANNUAL

availability

Planned availability

http://publications.europa.eu/resource/authority/planned-availability/EXPERIMENTAL

language

Languages

π.χ. http://publications.europa.eu/resource/authority/language/ENG

mimetype

Media types

π.χ. https://www.iana.org/assignments/media-types/text/csv

theme

Data theme

Τιμή από το λεξιλόγιο (URI ή tag που αντιστοιχίζεται)

hvd_category

High-value dataset categories

Τιμές από το αντίστοιχο λεξιλόγιο

Επικύρωση

  • Έλεγχος τιμών έναντι λεξιλογίων (Vocabulary Admin)· μη έγκυρες τιμές αφαιρούνται.

  • Διατήρηση μόνο έγκυρων authority URIs/κωδικών ώστε να περνάει το CKAN schema validation.

  • Διασφάλιση βασικών ελληνικών μεταφράσεων για τίτλο/περιγραφή όπου υπάρχουν.

Έλεγχος Αποτελεσμάτων (Post‑import checklist)

  • access_rights → authority URI με PUBLIC/RESTRICTED/NON_PUBLIC.

  • license / license_id → έγκυρη τιμή από “Licence”.

  • frequency, language, mimetype → αντιστοιχούν στα λεξιλόγια.

  • Υπάρχουν title_translated-el και notes_translated-el.

Παράδειγμα Χρήσης μέσω Διεπαφής χρήστη

  1. Μεταβείτε στο “Συγκομιδή” (Harvesting) → “Προσθήκη Πηγής Συγκομιδής”.

  2. Επιλέξτε τύπο “DCAT Custom Harvester”.

  3. Συμπληρώστε URL, Τίτλο, Οργανισμό, Συχνότητα.

  4. Αποθήκευση και εκκίνηση συγκομιδής.

Παράδειγμα Χρήσης μέσω API

cURL:

curl -X POST "https:///api/3/action/harvest_source_create" -H "Authorization: <API_TOKEN>" -H "Content-Type: application/json" -d '{ "name": "my-dcat-source", "title": "My DCAT Source", "type": "custom_dcat_harvester", "url": "https://example.org/catalog.ttl", "frequency": "WEEKLY", "owner_org": "" }'

CLI:

ckan -c /etc/ckan/production.ini harvester source create name="my-dcat-source" title="My DCAT Source" type="custom_dcat_harvester" url="https://example.org/catalog.ttl" frequency="WEEKLY" owner_org=""

Παρακολούθηση & Logs

  • Λίστα εργασιών: ckan -c /etc/ckan/production.ini harvester jobs list

  • Προβολή εργασίας: ckan -c /etc/ckan/production.ini harvester job report <job_id>

  • Εκτέλεση κύκλου: ckan -c /etc/ckan/production.ini harvester run

  • Έλεγχος consumers (supervisor) και application logs για σφάλματα mapping/validation.

Συχνά Σφάλματα και Λύσεις

  • Κενά λεξιλόγια: Συμπληρώστε tags/URIs στο Vocabulary Admin.

  • language σε μη έγκυρη μορφή (π.χ. JSON string με λάθος περιεχόμενο): γίνεται parsing, αλλιώς αφαιρείται.

  • Μη‑τυπικές τιμές (mimetype/authority): κανονικοποιούνται ή αφαιρούνται ώστε να περάσει η επικύρωση.

  • Απομακρυσμένο endpoint με σφάλματα DCAT: διορθώστε/επιβεβαιώστε τη δομή (RDF/TTL/JSON‑LD) και προσβασιμότητα.

DCAT Custom Harvester — Συνολική Αντιστοίχιση/Συμπεριφορά

  • Εισαγωγή/Στάδια: Συγκομιδή από DCAT (TTL/RDF/JSON‑LD). Γίνεται parsing RDF → CKAN dict και εφαρμόζονται κανονικοποιήσεις πριν το import.

  • Τίτλος/Περιγραφή (πολυγλωσσικά): dct:title → title και διασφάλιση title_translated-el με εφεδρείες· dct:description → notes_translated- el (ελληνικό όπου υπάρχει).

  • Θεματική: dcat:theme → theme με υποστήριξη array και αντιστοίχιση στο λεξιλόγιο “Data theme”. Καθαρισμός/διατήρηση έγκυρων URIs. Αφαίρεση μη έγκυρων.

  • Access rights: dct:accessRights → access_rights με αντιστοίχιση στο λεξιλόγιο “Access right” (PUBLIC/RESTRICTED/NON_PUBLIC). Δεν επιβάλλεται πάντα PUBLIC — γίνεται κανονικοποίηση βάσει λεξιλογίου.

  • Άδεια: dct:license/dct:rights → license/license_id με αντιστοίχιση στο λεξιλόγιο “Licence” (EU authority URI) και mapping σε γνωστά CKAN IDs όπου εφικτό.

  • Συχνότητα: dct:accrualPeriodicity → frequency (αντιστοίχιση στο “Frequency”). Ενδιάμεσο upper‑casing σε απλές τιμές (π.χ. “other” → “OTHER”) πριν το mapping.

  • Διαθεσιμότητα: κατάλληλο πεδίο (π.χ. adms:status) → availability με αντιστοίχιση στο “Planned availability”.

  • Γλώσσες: dct:language → language. Parsing από extras ως JSON array ή απευθείας URI, έλεγχος με “Languages” και μεταφορά στο κύριο πεδίο. Αφαίρεση από extras για να αποφευχθεί σύγχυση, και αφαίρεση μη έγκυρων.

  • Mimetype:

    • Σε επίπεδο dataset: mimetype ελέγχεται βάσει “Media types” και αφαιρείται εάν δεν είναι έγκυρο.

    • Σε επίπεδο resources: dcat:mediaType / dct:format → resources[].mimetype με αντιστοίχιση στο “Media types” και μετατροπή σε IANA URI όπου είναι τυπικό MIME. Αφαίρεση μη έγκυρων τιμών.

  • Πόροι (URLs): dcat:distribution/(downloadURL|accessURL) → resources[].url (προτεραιότητα στο downloadURL όταν υπάρχει). Βελτιωμένη ανίχνευση/κανονικοποίηση format από URL όταν λείπει.

  • Πόροι (μεταφράσεις): Διατήρηση/μεταφορά τίτλων/περιγραφών διανομών σε translated πεδία όπου είναι διαθέσιμα.

  • Εκδότης (Publisher): dct:publisher → publisher (λίστα αντικειμένων με name, uri, url, email, type, identifier) όπου είναι διαθέσιμα.

  • HVD κατηγορία: Αντιστοίχιση hvd_category σε array από authority URIs (καθαρισμός/επαλήθευση). Υποστήριξη parsing από extras.

  • Τύπος DCAT: dcat_type διατηρείται ως array (parsing JSON string → array όπου χρειάζεται).

  • Πολυγλωσσικά: Διασφάλιση title_translated-el και notes_translated-el με λογικές εφεδρείες όταν λείπουν.

  • Tags: Καθαρισμός/επικύρωση (μήκος/χαρακτήρες/διπλότυπα) ώστε να περνούν CKAN rules.

  • Επαλήθευση resources: Ελάχιστες απαιτήσεις (π.χ. να υπάρχει url), αυτόματη δημιουργία name από URL όταν λείπει, κανονικοποίηση format (CSV/JSON/XLSX/XML/KML/ZIP/GeoJSON/SHP/WMS/WFS/API/HTML κ.λπ.).

  • Extras: Χρησιμοποιούνται ως ενδιάμεσο στάδιο(π.χ. language, theme, hvd_category, mimetype) και καθαρίζονται/μεταφέρονται σε κύρια πεδία· αφαιρούνται μη έγκυρα για αποφυγή validation σφαλμάτων.

  • Συνοχή σχήματος: Όλα τα authority‑based πεδία (Access right, Licence, Frequency, Planned availability, Languages, Media types, Data theme) αντιστοιχίζονται σε έγκυρα codes του Vocabulary Admin ή αφαιρούνται εάν δεν είναι έγκυρα, για επιτυχή validation.

Last updated