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.
Χαρτογράφηση Πεδίου → Λεξιλόγιο (ενδεικτικά)
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.
Παράδειγμα Χρήσης μέσω Διεπαφής χρήστη
Μεταβείτε στο “Συγκομιδή” (Harvesting) → “Προσθήκη Πηγής Συγκομιδής”.
Επιλέξτε τύπο “DCAT Custom Harvester”.
Συμπληρώστε URL, Τίτλο, Οργανισμό, Συχνότητα.
Αποθήκευση και εκκίνηση συγκομιδής.
Παράδειγμα Χρήσης μέσω 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