erga

erga

Open source εργαλείο σε Python, διαθέσιμο και ως GitHub Action: αντλεί τις δημοσιεύσεις μιας ερευνητικής ομάδας από το OpenAlex με βάση το ORCID, αφαιρεί τις διπλοεγγραφές, διατηρεί τις διορθώσεις του διαχειριστή σε κάθε ανανέωση και επισημαίνει δημοσιεύσεις που πιθανότατα ανήκουν σε συνονόματο ερευνητή.

Κατάσταση: open source, σε έκδοση beta. Το erga είναι εργαλείο σε Python για κάθε static site που παρουσιάζει μια επιμελημένη λίστα ακαδημαϊκών δημοσιεύσεων. Διατίθεται στο PyPI και ως GitHub Action με άδεια MIT, και με αυτό ανανεώνονται ήδη κάθε εβδομάδα οι σελίδες δημοσιεύσεων ενός ερευνητικού εργαστηρίου και ενός πανεπιστημιακού τμήματος. Η μορφή των δεδομένων εξόδου μπορεί ακόμη να αλλάξει πριν από την έκδοση 1.0.

Με μια ματιά

ΔιανομήΠακέτο Python (PyPI) και GitHub Action, άδεια MIT
ΠηγέςOpenAlex, το ανοιχτό ευρετήριο επιστημονικών δημοσιεύσεων, και Crossref για στοιχεία περιοδικού ή συνεδρίου που λείπουν
Σε χρήσηΤο site του εργαστηρίου SmartMove (σε λειτουργία) και το site του τμήματος (σε ανάπτυξη)
Ποιότητα κώδικαStrict typing, tests σε τέσσερις εκδόσεις της Python, byte-exact έλεγχοι εξόδου, releases απευθείας από το CI χωρίς αποθηκευμένα credentials

Το πρόβλημα

Η σελίδα δημοσιεύσεων μιας ερευνητικής ομάδας είτε συντηρείται χειροκίνητα, και αργά ή γρήγορα μένει πίσω, είτε ανατίθεται σε ένα embed τρίτου παρόχου, οπότε τα δεδομένα δεν ανήκουν πλέον στην ομάδα. Το πρόβλημα το έλυσα αρχικά μέσα στο site του εργαστηρίου SmartMove, με ένα custom pipeline. Μια αναζήτηση για ανάλογα εργαλεία δεν εντόπισε κάποιο που να συντηρείται ενεργά και να συνδυάζει την αυτόματη άντληση με διορθώσεις που διατηρούνται σε κάθε ανανέωση. Γι’ αυτό μετέτρεψα το pipeline σε αυτόνομο εργαλείο, το erga, ώστε να μπορούν να το χρησιμοποιήσουν και άλλες ερευνητικές ομάδες.

Πώς λειτουργεί

Ένα αρχείο ρυθμίσεων περιέχει τα μέλη της ομάδας, με το ORCID iD του καθενός. Το erga αντλεί τις δημοσιεύσεις τους από το OpenAlex, συγχωνεύει τις διπλές εγγραφές της ίδιας δημοσίευσης (για παράδειγμα ένα preprint και τη δημοσιευμένη εκδοχή του), συμπληρώνει από το Crossref όσα στοιχεία περιοδικού ή συνεδρίου λείπουν, και γράφει ένα ενιαίο publications.json στο repository του site. Ο τρόπος παρουσίασης μένει εξ ολοκλήρου στο site, είτε είναι φτιαγμένο με Jekyll είτε με Astro είτε με οτιδήποτε άλλο: το erga δεν κάνει rendering και δεν φιλοξενεί τίποτα.

  • Ρυθμίσεις που προσαρμόζονται στην ομάδα: για κάθε μέλος, το αρχείο ρυθμίσεων δέχεται εναλλακτικό αναγνωριστικό όταν το ORCID λείπει ή είναι λάθος, και το ίδρυμα ή τα ιδρύματα της ερευνητικής του πορείας. Η συμπλήρωσή του είναι και ο τρόπος με τον οποίο η ομάδα επιβεβαιώνει τις ταυτότητες των μελών της.
  • Επιμέλεια που διατηρείται σε κάθε ανανέωση: οι χειροκίνητες προσθήκες, οι διορθώσεις και οι εξαιρέσεις ανά δημοσίευση, καθώς και οι επιλεγμένες δημοσιεύσεις, βρίσκονται σε δικά τους αρχεία και εφαρμόζονται ξανά σε κάθε αυτόματη εκτέλεση.
  • Αλλαγές που ελέγχονται εύκολα: κάθε build συντάσσει ένα report με όσα άλλαξαν σε σχέση με το προηγούμενο, και το GitHub Action μπορεί να παραδίδει την εβδομαδιαία ανανέωση ως pull request, με το report αυτό ως περιγραφή.
  • Τα δεδομένα ανήκουν στο site: ένα απλό αρχείο σε version control, του οποίου κάθε αλλαγή φαίνεται στο diff, χωρίς embedded script και χωρίς runtime εξαρτήσεις. Οι δημοσιεύσεις περιέχονται ήδη στο αρχικό HTML της σελίδας.

Η ταυτοποίηση των ερευνητών

Η άντληση των δεδομένων είναι το εύκολο κομμάτι. Το δύσκολο είναι να διαπιστωθεί σε ποιον ανήκουν πραγματικά οι δημοσιεύσεις που ανακτήθηκαν. Ένα ORCID iD δεν αντιστοιχεί με βεβαιότητα σε ένα μόνο πρόσωπο στο OpenAlex: ένα iD με τυπογραφικό λάθος, ή αντιγραμμένο κατά λάθος σε υποβολές, μπορεί να εμφανίζεται και σε προφίλ άλλων ερευνητών, οπότε ανακτώνται και οι δικές τους δημοσιεύσεις. Επιπλέον, δύο ερευνητές των οποίων τα ονόματα γράφονται ίδια με λατινικούς χαρακτήρες μπορεί να καταλήξουν στο ίδιο προφίλ. Μια σελίδα δημοσιεύσεων χωρίς τέτοιους ελέγχους καταλήγει να αποδίδει σε έναν συνάδελφο δημοσιεύσεις που δεν είναι δικές του.

Το erga αντιμετωπίζει το πρόβλημα με δύο ελέγχους:

  • Πριν από την άντληση, η εντολή verify δείχνει σε ποιο προφίλ αντιστοιχεί κάθε iD των ρυθμίσεων, και αναζητά προφίλ με το ίδιο όνομα που δεν καλύπτονται από τις ρυθμίσεις.
  • Κατά το build, επισημαίνονται σύνολα δημοσιεύσεων που δεν έχουν κανέναν κοινό συν-συγγραφέα και κανένα κοινό ίδρυμα με την υπόλοιπη ερευνητική πορεία του μέλους. Αυτό ακριβώς χαρακτηρίζει τις δημοσιεύσεις ενός συνονόματου ερευνητή. Ο έλεγχος απλώς προειδοποιεί: την απόφαση την παίρνει ο διαχειριστής του site.

Ο δεύτερος έλεγχος επιλέχθηκε ανάμεσα σε δύο εναλλακτικούς σχεδιασμούς, με βάση πραγματικά δεδομένα. Στο site του τμήματος, το προφίλ ενός μέλους περιείχε πέντε δημοσιεύσεις ενός συνονόματου ερευνητή από άλλο πανεπιστήμιο, οι οποίες μοιράζονταν δεκαπέντε συν-συγγραφείς μεταξύ τους αλλά κανέναν με την πραγματική ερευνητική πορεία του μέλους. Μόνο ο ένας από τους δύο σχεδιασμούς τις εντόπισε, και αυτός ενσωματώθηκε στο εργαλείο. Το πόσο συχνά προειδοποιεί χωρίς λόγο μετριέται σε τυχαία δείγματα σαράντα πραγματικών ερευνητικών προφίλ, τα οποία έχουν αποθηκευτεί ώστε κάθε μεταγενέστερη αλλαγή να συγκρίνεται με τα ίδια δεδομένα.

Το αποτέλεσμα

Στο site του εργαστηρίου SmartMove, το αρχείο των 200+ δημοσιεύσεων βασίζεται στο erga από τον Αύγουστο του 2026. Στο site του τμήματος, που είναι ακόμη σε ανάπτυξη, το erga βρίσκεται σε πιλοτική φάση με 600+ δημοσιεύσεις μέχρι στιγμής, πριν επεκταθεί σε ολόκληρο το τμήμα. Ο σχεδιασμός του εργαλείου είναι δημόσια τεκμηριωμένος στο repository, μαζί με τις μετρήσεις στις οποίες βασίζονται οι έλεγχοι ταυτοποίησης, και με την έκδοση 1.0 η μορφή των δεδομένων εξόδου θα θεωρείται σταθερή.


© 2026 Θωμάς Κόγιας · thomas at kogias dot org