Το Knowledge Graph AI4Deliberation μοντελοποιεί δημόσιες διαβουλεύσεις ως μια δομημένη ιεραρχία IBIS (Issue-Based Information System): Οι Διαβουλεύσεις περιέχουν Άρθρα (νομοθετικές διατάξεις), τα οποία δέχονται Θέσεις πολιτών (προτεινόμενες τροπολογίες), η καθεμία υποστηριζόμενη από Επιχειρήματα. Αναλύσεις που εξήχθησαν μέσω LLM από αρκετά σύνολα δεδομένων διαβουλεύσεων μετατρέπονται μέσω ενός ETL pipeline σε RDF τριάδες αποθηκευμένες σε ένα Virtuoso triple store. Μια υπηρεσία RAG πολλαπλών πρακτόρων (Μεταφραστής → Επικυρωτής → Αφηγητής) απαντά σε ερωτήσεις φυσικής γλώσσας δημιουργώντας και εκτελώντας SPARQL ερωτήματα πάνω σε αυτό το γράφο.

Πως λειτουργεί το Knowledge Graph;

1. Δεδομένα
Η πηγή είναι ελληνικά δεδομένα διαβούλευσης, τα οποία αποτελούνται από αρκετές βάσεις δεδομένων SQLite, μία ανά νομοθετικό άρθρο. Κάθε βάση δεδομένων περιέχει σχόλια πολιτών που επεξεργάστηκαν εκ των προτέρων από ένα εργαλείο, το οποίο εξήγαγε δομημένο JSON από κάθε σχόλιο: μια λίστα θέσεων (προτεινόμενες τροπολογίες με amendment_type: addition, removal, modification ή suggestion) και επιχειρήματα ανά θέση (το καθένα με polarity: positive, negative ή neutral).


2. ETL Pipeline
Το pipeline εκτελείται σε δύο φάσεις:
Εξαγωγή: Διαβάζει κάθε βάση δεδομένων SQLite και αναλύει το JSON. Διατηρεί την πλήρη ένθετη δομή: διαβούλευση → άρθρο → σχόλιο → θέσεις → επιχειρήματα. Τα μεταδεδομένα άρθρων και διαβουλεύσεων (τίτλοι, υπουργείο, ημερομηνίες) αναζητούνται από την κύρια πηγή δεδομένων διαβούλευσης.
Μετασχηματισμός: Μετατρέπει τα εξαχθέντα δεδομένα σε RDF τριάδες χρησιμοποιώντας την οντολογία IBIS:

  • Κάθε Διαβούλευση και Άρθρο γίνεται κόμβος ibis:Issue
  • Το ibis:questions συνδέει μια Διαβούλευση με καθένα από τα Άρθρα της
  • Κάθε εξαχθείσα θέση γίνεται ibis:Position με ibis:respondsTo που δείχνει στο Άρθρο της
  • Θέσεις με amendment_type: removal ή modification αποκτούν επίσης ibis:objectsTo → Article
  • Κάθε επιχείρημα γίνεται ibis:Argument με ibis:supports ή ibis:objectsTo που δείχνει στη Θέση του
  • Τα αρχικά σχόλια πολιτών διατηρούνται ως κόμβοι og:Comment συνδεδεμένοι πίσω στις θέσεις μέσω og:extractedFrom

3. Αποθήκευση Knowledge Graph
Το pipeline σειριοποιεί τον γράφο σε μορφή αρχείου ttl. Αυτό το αρχείο Turtle φορτώνεται σε ένα Virtuoso triple store, το οποίο εκθέτει ένα SPARQL 1.1 endpoint.


4. Υπηρεσία RAG
Μια υπηρεσία FastAPI περιτυλίγει ένα pipeline τριών πρακτόρων που τροφοδοτείται από LLMs:

  • Πράκτορας Μεταφραστής: Λαμβάνει την ερώτηση φυσικής γλώσσας του χρήστη (μαζί με ιστορικό συνομιλίας) και δημιουργεί ένα SPARQL ερώτημα ακολουθώντας τους κανόνες διέλευσης IBIS.
  • Πράκτορας Επικυρωτής: Ελέγχει το παραγόμενο SPARQL για δομική ορθότητα, όπως έγκυρα prefixes, έγκυρες ιδιότητες, σωστή διέλευση πολλαπλών βημάτων, χωρίς ψευδείς κατηγορήματα, και είτε το εγκρίνει είτε επιστρέφει διόρθωση.
  • Πράκτορας Αφηγητής: Εκτελεί το επικυρωμένο ερώτημα στο Virtuoso, λαμβάνει τις ακατέργαστες γραμμές αποτελεσμάτων και συνθέτει μια συνεκτική απάντηση φυσικής γλώσσας στα Ελληνικά ή Αγγλικά ανάλογα με την ερώτηση.

5. Αλληλεπίδραση Χρήστη
Οι χρήστες υποβάλλουν μια ερώτηση (με προαιρετικό ιστορικό συνομιλίας) στο endpoint. Οι τρεις πράκτορες εκτελούνται διαδοχικά. Εάν το ερώτημα δεν επιστρέφει αποτελέσματα, ο Αφηγητής το αναφέρει ξεκάθαρα αντί να επινοήσει μια απάντηση. Οι συνομιλίες πολλαπλών γύρων υποστηρίζονται μέσω της μεταβίβασης προηγούμενων ζευγών (ερώτηση, απάντηση) με κάθε αίτημα.