6. Δημιουργία υποδομής για την υποστήριξη του μητρώου backlinks - Pavlov123/semantic_indexer GitHub Wiki

6. Δημιουργία υποδομής για την υποστήριξη του μητρώου backlinks

Για να τεθεί σε λειτουργία το μητρώο backlinks που παρουσιάστηκε παραπάνω για ένα dataset το οποίο είναι ήδη δημοσιευμένο χρειάζεται να γνωρίζει τα backlinks που υπάρχουν ήδη. Το σύστημα που παρουσιάζεται παρακάτω συλλέγει backlinks για την αρχική ενημέρωση μιας νέας εγκατάστασης του μητρώου για ένα dataset το οποίο είναι ήδη δημοσιευμένο. Παρακάτω θα παρουσιαστεί η αρχιτεκτονική και η λειτουργία του συστήματος.


Εικόνα 4. Η γενική αρχιτεκτονική του συστήματος

Το έργο τις ανεύρεσης των backlinks έχει χωριστεί σε δύο βασικά υποέργα,

  1. Την ανάκτηση και τον έλεγχο των εγγραφών ξένων datasets.

  2. Την καταγραφή των αποτελεσμάτων στη βάση δεδομένων.

6.1 Ανάκτηση εγγραφών και έλεγχος για συνδέσμους

Το πρώτο υποέργο συνιστάται από την ανάκτηση των εγγραφών ενός dataset μέσω ενός απλού ερωτήματος sparql και τον έλεγχο των εγγραφών για τυχόν αναφορές σε οντότητες του dataset για το οποίο συλλέγουμε backlinks.

Η ανάκτηση των εγγραφών από τους απομακρυσμένους εξυπηρετητές γίνεται με σελιδοποίηση μέσω ερωτημάτων της παρακάτω μορφής.


  select * where {?s ?p ?o} offset (n * batch_size) limit ((n + 1) * batch_size)

π.χ.

select * where {?s ?p ?o} offset 0 limit 100;
.
.
.
select * where {?s ?p ?o} offset 500 limit 600;

Για να ελεγχθεί αν στα αποτελέσματα του κάθε ερωτήματος υπάρχουν σύνδεσμοι στο dataset που μας απασχολεί εξετάζουμε το υποκείμενο και αντικείμενο κάθε εγγραφής για τις ακόλουθες ιδιότητες.

  1. Το μέρος της έκφρασης είναι τύπου URI (αναγνωριστικό οντότητας).

  2. Ξεκινάει από 'http'.

  3. Η θέση δικτύου του (URI) ταιριάζει με το regular expression της διεύθυνσης του dataset. Παράδειγμα σχετικού regular expression '.*dbpedia.org$'.

6.2 Καταγραφή αποτελεσμάτων

Το δεύτερο υποέργο καταγράφει τα αποτελέσματα στη βάση δεδομένων σε τρεις πίνακες.

  1. endpoint, Το url του απομακρυσμένου εξυπηρετητή.

  2. resource, Οι τοπικές οντότητες που αναφέρονται από απομακρυσμένους εξυπηρετητές.

  3. backlink, Εγγραφές πλήθους συνδέσμων από εξυπηρετητές σε οντότητες.

6.3 Το σύνολο των απομακρυσμένων εξυπηρετητών

Οι τοποθεσίες (url) των απομακρυσμένων εξυπηρετητών που θα εξεταστούν βρίσκονται στο αρχείο data/sparql_endpoints_list.txt. Η λίστα που χρησιμοποιήθηκε για αυτήν την εργασία ανακτήθηκε χρησιμοποιώντας το ckan api του datahub.io.

Όπως αναφέρθηκε και σε προηγούμενη ενότητα ένα μεγάλο ποσοστό των endpoints που είναι καταγεγραμμένα στο datahub.io δεν λειτουργούν ή εμφανίζουν λάθη κατά τη λειτουργία τους, παρόλα αυτά η εφαρμογή προσπαθεί να εξετάσει όλα τα endpoints.

Μαζί με τον κώδικα της εφαρμογής παρέχεται σχετικό εργαλείο για την ανάκτηση της λίστας μέσω του api του datahub.io. Ο κώδικας του συστήματος μαζί με οδηγίες για την χρήση του βρίσκεται στον ακόλουθο σύνδεσμο. https://github.com/Pavlov123/semantic_indexer

6.4 Η επικοινωνία μεταξύ των διεργασιών του συστήματος

Όλη η επικοινωνία μεταξύ των διεργασιών του συστήματος γίνεται μέσω ουρών μηνυμάτων που παρέχονται από το rabbitmq. Το rabbitmq είναι ένας διαμεσολαβητής μηνυμάτων, ο οποίος επιτρέπει την εγγυημένη ασύγχρονη μεταφορά μηνυμάτων. Με τη παρούσα αρχιτεκτονική έχουμε την εγγύηση ότι το κάθε μήνυμα θα παραδοθεί ακριβώς μια φόρα που σημαίνει ότι κανένα dataset δεν θα εξεταστεί δύο φορές και κανένα backlink δεν θα μετρηθεί δυο φορές.

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

6.5 Διαχείριση λαθών

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

6.6 Το αποτέλεσμα του συστήματος

Μετά την λειτουργία του συστήματος οι τρεις πίνακες αποτελεσμάτων θα περιέχουν τα backlinks, τις οντότητες, και της τοποθεσίες των datasets όπως αναφέρθηκε παραπάνω. Στην επόμενη ενότητα υπάρχουν παραδείγματα και των τριών.

6.7 Τεχνολογίες που χρησιμοποιήθηκαν

  • python (Η γλώσσα υλοποίησης)

  • sparql-client (Βιβλιοθήκη sparql γραμμένη σε python)

  • postgresql (Βάση δεδομένων)

  • rabbitmq (Διαμεσολαβητής ουρών μηνυμάτων)

⚠️ **GitHub.com Fallback** ⚠️