Data Scientist's Notes: A Personalized Review of Data Query Languages

Data Scientist's Notes: A Personalized Review of Data Query Languages
Σας λέω από προσωπική εμπειρία τι ήταν χρήσιμο πού και πότε. Είναι μια επισκόπηση και διατριβή, ώστε να είναι σαφές τι και πού μπορείτε να σκάψετε περαιτέρω - αλλά εδώ έχω αποκλειστικά υποκειμενική προσωπική εμπειρία, ίσως όλα είναι εντελώς διαφορετικά για εσάς.

Γιατί είναι σημαντικό να γνωρίζετε και να μπορείτε να χρησιμοποιείτε γλώσσες ερωτημάτων; Στον πυρήνα της, η Επιστήμη Δεδομένων έχει πολλά σημαντικά στάδια εργασίας και το πρώτο και πιο σημαντικό (χωρίς αυτό, σίγουρα τίποτα δεν θα λειτουργήσει!) είναι η απόκτηση ή η εξαγωγή δεδομένων. Τις περισσότερες φορές, τα δεδομένα βρίσκονται κάπου με κάποια μορφή και πρέπει να «ανακτηθούν» από εκεί. 

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

Θα υπάρχουν τρία κύρια μπλοκ τύπων ερωτημάτων δεδομένων, τα οποία θα συζητήσουμε σε αυτό το άρθρο:

  • Οι "τυποποιημένες" γλώσσες ερωτημάτων είναι αυτό που κατανοείται συνήθως όταν μιλάμε για μια γλώσσα ερωτήματος, όπως η σχεσιακή άλγεβρα ή η SQL.
  • Γλώσσες ερωτημάτων δέσμης ενεργειών: για παράδειγμα, Python πράγματα panda, numpy ή shell scripting.
  • Ζητήστε γλώσσες για γραφήματα γνώσης και βάσεις δεδομένων γραφημάτων.

Όλα όσα γράφτηκαν εδώ είναι απλώς μια προσωπική εμπειρία, ό,τι ήταν χρήσιμο, με περιγραφή καταστάσεων και «γιατί χρειαζόταν» - ο καθένας μπορεί να δοκιμάσει πώς μπορεί να εμφανιστούν παρόμοιες καταστάσεις και να προσπαθήσει να προετοιμαστεί για αυτές εκ των προτέρων κατανοώντας αυτές τις γλώσσες ​​προτού χρειαστεί να υποβάλετε αίτηση (επειγόντως) σε ένα έργο ή ακόμα και να φτάσετε σε ένα έργο όπου χρειάζονται.

"Τυπικές" γλώσσες ερωτημάτων

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

Σχεσιακή άλγεβρα

Γιατί χρειάζεται σήμερα η σχεσιακή άλγεβρα; Για να κατανοήσετε καλά γιατί οι γλώσσες ερωτημάτων είναι δομημένες με συγκεκριμένο τρόπο και να τις χρησιμοποιείτε συνειδητά, πρέπει να κατανοήσετε τον πυρήνα που βρίσκεται κάτω από αυτές.

Τι είναι η σχεσιακή άλγεβρα;

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

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

Γιατί;

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

Data Scientist's Notes: A Personalized Review of Data Query Languages
Παρμένο από αυτό άρθρα. Παράδειγμα πράξης: join, που ενώνει πίνακες.

Υλικά για μελέτη:

Καλό εισαγωγικό μάθημα από το Στάνφορντ. Γενικά, υπάρχουν πολλά υλικά για τη σχεσιακή άλγεβρα και τη θεωρία - Coursera, Udacity. Υπάρχει επίσης ένας τεράστιος όγκος υλικού στο διαδίκτυο, συμπεριλαμβανομένου του καλού ακαδημαϊκά μαθήματα. Η προσωπική μου συμβουλή: πρέπει να κατανοήσετε πολύ καλά τη σχεσιακή άλγεβρα - αυτή είναι η βάση των βασικών.

SQL

Data Scientist's Notes: A Personalized Review of Data Query Languages
Παρμένο από αυτό άρθρα.

Η SQL είναι ουσιαστικά μια υλοποίηση της σχεσιακής άλγεβρας - με μια σημαντική προειδοποίηση, η SQL είναι δηλωτική! Δηλαδή, όταν γράφετε ένα ερώτημα στη γλώσσα της σχεσιακής άλγεβρας, στην πραγματικότητα λέτε πώς να υπολογίσετε - αλλά με την SQL καθορίζετε τι θέλετε να εξαγάγετε και στη συνέχεια το DBMS δημιουργεί ήδη (αποτελεσματικές) εκφράσεις στη γλώσσα της σχεσιακής άλγεβρας (τους η ισοδυναμία μας είναι γνωστή ως Θεώρημα Codd).

Data Scientist's Notes: A Personalized Review of Data Query Languages
Παρμένο από αυτό άρθρα.

Γιατί;

Σχεσιακά DBMS: Oracle, Postgres, SQL Server, κ.λπ. εξακολουθούν να υπάρχουν σχεδόν παντού και υπάρχει απίστευτα μεγάλη πιθανότητα να χρειαστεί να αλληλεπιδράσετε μαζί τους, πράγμα που σημαίνει ότι θα πρέπει είτε να διαβάσετε SQL (που είναι πολύ πιθανό) είτε να το γράψετε ( επίσης δεν είναι απίθανο).

Τι να διαβάσετε και να μελετήσετε

Σύμφωνα με τους ίδιους συνδέσμους παραπάνω (σχετικά με τη σχεσιακή άλγεβρα), υπάρχει μια απίστευτη ποσότητα υλικού, για παράδειγμα, αυτό.

Με την ευκαιρία, τι είναι το NoSQL;

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

Στην πραγματικότητα, οι άνθρωποι συνειδητοποίησαν ότι δεν χρειάζεται ένα πλήρες σχεσιακό μοντέλο για την επίλυση πολλών προβλημάτων, ειδικά για εκείνους όπου, για παράδειγμα, η απόδοση είναι κρίσιμη και κυριαρχούν ορισμένα απλά ερωτήματα με συνάθροιση - όπου είναι κρίσιμο να υπολογιστούν γρήγορα οι μετρήσεις και να γραφτούν στο βάση δεδομένων, και τα περισσότερα χαρακτηριστικά είναι σχεσιακά αποδείχθηκε ότι δεν είναι μόνο περιττά, αλλά και επιβλαβή - γιατί να ομαλοποιήσουμε κάτι αν θα χαλάσει το πιο σημαντικό πράγμα για εμάς (για κάποια συγκεκριμένη εργασία) - την παραγωγικότητα;

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

Για παράδειγμα, δημιουργούμε ένα έμπειρο σύστημα και θέλουμε να αποθηκεύσουμε πληροφορίες σε έναν συγκεκριμένο τομέα μαζί με κάποιες μετα-πληροφορίες - μπορεί να μην γνωρίζουμε όλα τα πεδία και απλώς αποθηκεύουμε JSON για κάθε εγγραφή - αυτό μας δίνει ένα πολύ ευέλικτο περιβάλλον για την επέκταση των δεδομένων μοντέλο και γρήγορη επανάληψη - έτσι σε αυτήν την περίπτωση, το NoSQL θα είναι ακόμη προτιμότερο και πιο ευανάγνωστο. Παράδειγμα καταχώρισης (από ένα από τα έργα μου όπου το NoSQL ήταν ακριβώς εκεί που χρειαζόταν).

{"en_wikipedia_url":"https://en.wikipedia.org/wiki/Johnny_Cash",
"ru_wikipedia_url":"https://ru.wikipedia.org/wiki/?curid=301643",
"ru_wiki_pagecount":149616,
"entity":[42775,"Джонни Кэш","ru"],
"en_wiki_pagecount":2338861}

Μπορείτε να διαβάσετε περισσότερα εδώ σχετικά με το NoSQL.

Τι να σπουδάσω;

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

Γλώσσες ερωτημάτων δέσμης ενεργειών

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

Data Scientist's Notes: A Personalized Review of Data Query Languages

  • Το Pandas είναι κυριολεκτικά ένα ελβετικό μαχαίρι της Επιστήμης Δεδομένων· σε αυτό συμβαίνει ένας τεράστιος όγκος δεδομένων μετασχηματισμού, συγκέντρωσης, κ.λπ.
  • Numpy - διανυσματικοί υπολογισμοί, πίνακες και γραμμική άλγεβρα εκεί.
  • Scipy - υπάρχουν πολλά μαθηματικά σε αυτό το πακέτο, ειδικά στατιστικά.
  • Εργαστήριο Jupyter - πολλές διερευνητικές αναλύσεις δεδομένων ταιριάζουν καλά σε φορητούς υπολογιστές - χρήσιμο να γνωρίζετε.
  • Αιτήματα - εργασία με το δίκτυο.
  • Το Pyspark είναι πολύ δημοφιλές μεταξύ των μηχανικών δεδομένων, πιθανότατα θα πρέπει να αλληλεπιδράσετε με αυτό ή το Spark, απλώς λόγω της δημοτικότητάς τους.
  • *Σελήνιο - πολύ χρήσιμο για τη συλλογή δεδομένων από ιστότοπους και πόρους, μερικές φορές απλά δεν υπάρχει άλλος τρόπος για να λάβετε τα δεδομένα.

Η κύρια συμβουλή μου: μάθετε Python!

Πάντα

Ας πάρουμε ως παράδειγμα τον παρακάτω κώδικα:

import pandas as pd
df = pd.read_csv(“data/dataset.csv”)
# Calculate and rename aggregations
all_together = (df[df[‘trip_type’] == “return”]
    .groupby(['start_station_name','end_station_name'])
                  	    .agg({'trip_duration_seconds': [np.size, np.mean, np.min, np.max]})
                           .rename(columns={'size': 'num_trips', 
           'mean': 'avg_duration_seconds',    
           'amin': min_duration_seconds', 
           ‘amax': 'max_duration_seconds'}))

Ουσιαστικά, βλέπουμε ότι ο κώδικας ταιριάζει στο κλασικό μοτίβο SQL.

SELECT start_station_name, end_station_name, count(trip_duration_seconds) as size, …..
FROM dataset
WHERE trip_type = ‘return’
GROUPBY start_station_name, end_station_name

Αλλά το σημαντικό μέρος είναι ότι αυτός ο κώδικας είναι μέρος του σεναρίου και της διοχέτευσης· στην πραγματικότητα, ενσωματώνουμε ερωτήματα στη διοχέτευση Python. Σε αυτήν την περίπτωση, η γλώσσα ερωτημάτων έρχεται σε εμάς από βιβλιοθήκες όπως το Pandas ή το pySpark.

Γενικά, στο pySpark βλέπουμε έναν παρόμοιο τύπο μετασχηματισμού δεδομένων μέσω μιας γλώσσας ερωτημάτων στο πνεύμα:

df.filter(df.trip_type = “return”)
  .groupby(“day”)
  .agg({duration: 'mean'})
  .sort()

Πού και τι να διαβάσετε

Στην ίδια την Python γενικά κανένα πρόβλημα βρείτε υλικό για μελέτη. Υπάρχει ένας τεράστιος αριθμός μαθημάτων στο διαδίκτυο Πάντα, pySpark και μαθήματα για Σπινθήρας (και επίσης από μόνο του DS). Συνολικά, το περιεχόμενο εδώ είναι εξαιρετικό για γκουγκλάρισμα και αν έπρεπε να διαλέξω ένα πακέτο για να εστιάσω, θα ήταν φυσικά τα πάντα. Σχετικά με τον συνδυασμό υλικών DS+Python επίσης πολύ.

Το κέλυφος ως γλώσσα ερωτημάτων

Αρκετά έργα επεξεργασίας και ανάλυσης δεδομένων με τα οποία έχω δουλέψει είναι, στην πραγματικότητα, σενάρια φλοιού που καλούν κώδικα σε Python, Java και τις ίδιες τις εντολές του φλοιού. Επομένως, γενικά, μπορείτε να θεωρήσετε τους αγωγούς σε bash/zsh/κτλ ως κάποιο είδος ερωτήματος υψηλού επιπέδου (μπορείτε, φυσικά, να γεμίσετε βρόχους εκεί, αλλά αυτό δεν είναι τυπικό για τον κώδικα DS σε γλώσσες κελύφους), ας δώσουμε ένα απλό παράδειγμα - χρειάστηκε να κάνω μια αντιστοίχιση QID των wikidata και πλήρεις συνδέσμους στα ρωσικά και αγγλικά wiki, για αυτό έγραψα ένα απλό αίτημα από τις εντολές στο bash και για την έξοδο έγραψα ένα απλό σενάριο στην Python, το οποίο συνδυάζονται έτσι:

pv “data/latest-all.json.gz” | 
unpigz -c  | 
jq --stream $JQ_QUERY | 
python3 scripts/post_process.py "output.csv"

όπου

JQ_QUERY = 'select((.[0][1] == "sitelinks" and (.[0][2]=="enwiki" or .[0][2] =="ruwiki") and .[0][3] =="title") or .[0][1] == "id")' 

Αυτός ήταν, στην πραγματικότητα, ολόκληρος ο αγωγός που δημιούργησε την απαιτούμενη χαρτογράφηση· όπως βλέπουμε, όλα λειτουργούσαν σε λειτουργία ροής:

  • Διαδρομή αρχείου pv - δίνει μια γραμμή προόδου με βάση το μέγεθος του αρχείου και μεταβιβάζει το περιεχόμενό της και μετά
  • Το unpigz -c διάβασε μέρος του αρχείου και το έδωσε στο jq
  • jq με το κλειδί - ροή παρήγαγε αμέσως το αποτέλεσμα και το πέρασε στον μεταεπεξεργαστή (όπως και στο πρώτο παράδειγμα) στην Python
  • εσωτερικά, ο μεταεπεξεργαστής ήταν μια απλή μηχανή κατάστασης που μορφοποιούσε την έξοδο 

Συνολικά, ένας σύνθετος αγωγός που λειτουργεί σε λειτουργία ροής σε μεγάλα δεδομένα (0.5 TB), χωρίς σημαντικούς πόρους και κατασκευασμένος από έναν απλό αγωγό και μερικά εργαλεία.

Μια άλλη σημαντική συμβουλή: να είστε σε θέση να εργάζεστε καλά και αποτελεσματικά στο τερματικό και να γράφετε bash/zsh/κ.λπ.

Πού θα είναι χρήσιμο; Ναι, σχεδόν παντού - και πάλι, υπάρχουν ΠΟΛΛΑ υλικά για μελέτη στο Διαδίκτυο. Συγκεκριμένα, εδώ αυτό προηγούμενο άρθρο μου.

R σενάριο

Και πάλι, ο αναγνώστης μπορεί να αναφωνήσει - καλά, αυτή είναι μια ολόκληρη γλώσσα προγραμματισμού! Και φυσικά θα έχει δίκιο. Ωστόσο, συνήθως συναντούσα το R σε ένα τέτοιο πλαίσιο που, στην πραγματικότητα, έμοιαζε πολύ με μια γλώσσα ερωτήματος.

Το R είναι ένα περιβάλλον και γλώσσα στατιστικών υπολογιστών για στατικό υπολογισμό και οπτικοποίηση (σύμφωνα με αυτό).

Data Scientist's Notes: A Personalized Review of Data Query Languages
λαμβάνονται ως εκ τούτου,. Παρεμπιπτόντως, το προτείνω, καλό υλικό.

Γιατί ένας επιστήμονας δεδομένων πρέπει να γνωρίζει το R; Τουλάχιστον, επειδή υπάρχει ένα τεράστιο στρώμα ατόμων που δεν είναι IT που αναλύουν δεδομένα στο R. Το συνάντησα στα ακόλουθα μέρη:

  • Φαρμακευτικός κλάδος.
  • Βιολόγοι.
  • Χρηματοοικονομικός τομέας.
  • Άνθρωποι με καθαρά μαθηματική παιδεία που ασχολούνται με τα στατιστικά.
  • Εξειδικευμένα στατιστικά μοντέλα και μοντέλα μηχανικής μάθησης (τα οποία συχνά μπορούν να βρεθούν μόνο στην έκδοση του συγγραφέα ως πακέτο R).

Γιατί είναι στην πραγματικότητα μια γλώσσα ερωτήματος; Στη μορφή με την οποία βρίσκεται συχνά, είναι στην πραγματικότητα ένα αίτημα για τη δημιουργία ενός μοντέλου, συμπεριλαμβανομένης της ανάγνωσης δεδομένων και της διόρθωσης παραμέτρων ερωτήματος (μοντέλου), καθώς και οπτικοποίησης δεδομένων σε πακέτα όπως το ggplot2 - αυτή είναι επίσης μια μορφή εγγραφής ερωτημάτων .

Παραδείγματα ερωτημάτων για οπτικοποίηση

ggplot(data = beav, 
       aes(x = id, y = temp, 
           group = activ, color = activ)) +
  geom_line() + 
  geom_point() +
  scale_color_manual(values = c("red", "blue"))

Γενικά, πολλές ιδέες από το R έχουν μεταφερθεί σε πακέτα python, όπως τα pandas, numpy ή scipy, όπως πλαίσια δεδομένων και διανυσματοποίηση δεδομένων - έτσι γενικά πολλά πράγματα στο R θα σας φαίνονται οικεία και βολικά.

Υπάρχουν πολλές πηγές για μελέτη, για παράδειγμα, αυτό.

Γραφήματα γνώσης

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

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

Φανταστείτε ότι κάνατε μοντέλο ενός ατόμου και θέλατε να περιγράψετε βασικά πράγματα, για παράδειγμα, ας πάρουμε ένα συγκεκριμένο άτομο, τον Ντάγκλας Άνταμς, και να χρησιμοποιήσουμε αυτήν την περιγραφή ως βάση.

Data Scientist's Notes: A Personalized Review of Data Query Languages
www.wikidata.org/wiki/Q42

Εάν χρησιμοποιούσαμε μια σχεσιακή βάση δεδομένων, θα έπρεπε να δημιουργήσουμε έναν τεράστιο πίνακα ή πίνακες με τεράστιο αριθμό στηλών, οι περισσότερες από τις οποίες θα ήταν NULL ή θα γεμίσουν με κάποια προεπιλεγμένη τιμή False, για παράδειγμα, είναι απίθανο πολλοί από εμάς να έχουμε καταχώρηση στην εθνική βιβλιοθήκη της Κορέας - φυσικά, θα μπορούσαμε να τα βάλουμε σε χωριστούς πίνακες, αλλά αυτό θα ήταν τελικά μια προσπάθεια να μοντελοποιήσουμε ένα ευέλικτο λογικό κύκλωμα με κατηγορήματα χρησιμοποιώντας ένα σταθερό σχεσιακό.

Data Scientist's Notes: A Personalized Review of Data Query Languages
Φανταστείτε λοιπόν ότι όλα τα δεδομένα αποθηκεύονται ως γραφική παράσταση ή ως δυαδικές και μοναδικές δυαδικές εκφράσεις.

Πού μπορείς να το συναντήσεις αυτό; Πρώτον, η εργασία με wiki δεδομένων, και με τυχόν βάσεις δεδομένων γραφημάτων ή συνδεδεμένα δεδομένα.

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

SPARQL

Wiki:
SPARQL (αναδρομικό αρκτικόλεξο από Αγγλικά Πρωτόκολλο SPARQL και Γλώσσα ερωτημάτων RDF) - γλώσσα ερωτήματος δεδομένων, που αντιπροσωπεύεται από το μοντέλο RDFΚαι πρωτόκολλο να διαβιβάσει αυτά τα αιτήματα και να απαντήσει σε αυτά. Το SPARQL είναι μια σύσταση Κοινοπραξία W3C και μια από τις τεχνολογίες σημασιολογικό Ιστό.

Αλλά στην πραγματικότητα είναι μια γλώσσα ερωτήματος για λογικά μονομερή και δυαδικά κατηγορήματα. Απλώς προσδιορίζετε υπό όρους τι είναι σταθερό σε μια Boolean έκφραση και τι όχι (πολύ απλοποιημένο).

Η ίδια η βάση RDF (Resource Description Framework), πάνω από την οποία εκτελούνται τα ερωτήματα SPARQL, είναι τριπλή object, predicate, subject - και το ερώτημα επιλέγει τις απαιτούμενες τριάδες σύμφωνα με τους καθορισμένους περιορισμούς στο πνεύμα: βρείτε ένα X έτσι ώστε το p_55(X, q_33) να είναι αληθές - όπου, φυσικά, το p_55 είναι κάποιο είδος σχέσης με το ID 55 και το q_33 είναι ένα αντικείμενο με ID 33 (εδώ και ολόκληρη η ιστορία, παραλείποντας και πάλι κάθε λογής λεπτομέρειες).

Παράδειγμα παρουσίασης δεδομένων:

Data Scientist's Notes: A Personalized Review of Data Query Languages
Εικόνες και παράδειγμα με χώρες εδώ ως εκ τούτου,.

Παράδειγμα βασικού ερωτήματος

Data Scientist's Notes: A Personalized Review of Data Query Languages

Στην πραγματικότητα, θέλουμε να βρούμε την τιμή της μεταβλητής ?country έτσι ώστε για το κατηγόρημα
μέλος_of, είναι αλήθεια ότι το Member_of(?country,q458) και το q458 είναι το αναγνωριστικό της Ευρωπαϊκής Ένωσης.

Ένα παράδειγμα πραγματικού ερωτήματος SPARQL μέσα στη μηχανή python:

Data Scientist's Notes: A Personalized Review of Data Query Languages

Συνήθως, έπρεπε να διαβάσω το SPARQL αντί να το γράψω - σε αυτήν την περίπτωση, πιθανότατα θα ήταν μια χρήσιμη ικανότητα να κατανοήσω τη γλώσσα τουλάχιστον σε ένα βασικό επίπεδο για να κατανοήσω ακριβώς πώς ανακτώνται τα δεδομένα. 

Υπάρχει πολύ υλικό για μελέτη στο διαδίκτυο: για παράδειγμα, εδώ αυτό и αυτό. Συνήθως ψάχνω στο google συγκεκριμένα σχέδια και παραδείγματα και αυτό αρκεί προς το παρόν.

Λογικές γλώσσες ερωτημάτων

Μπορείτε να διαβάσετε περισσότερα για το θέμα στο άρθρο μου εδώ. Και εδώ, θα εξετάσουμε μόνο εν συντομία γιατί οι λογικές γλώσσες είναι κατάλληλες για τη σύνταξη ερωτημάτων. Ουσιαστικά, το RDF είναι απλώς ένα σύνολο λογικών δηλώσεων της μορφής p(X) και h(X,Y), και ένα λογικό ερώτημα έχει την ακόλουθη μορφή:

output(X) :- country(X), member_of(X,“EU”).

Εδώ μιλάμε για τη δημιουργία μιας νέας εξόδου κατηγορήματος/1 (/1 σημαίνει μονομερής), με την προϋπόθεση ότι για το X ισχύει ότι η χώρα(Χ) - δηλαδή, το Χ είναι μια χώρα και επίσης μέλος_of(X,"EU ").

Δηλαδή, σε αυτή την περίπτωση, τόσο τα δεδομένα όσο και οι κανόνες παρουσιάζονται με τον ίδιο τρόπο, γεγονός που μας επιτρέπει να μοντελοποιούμε προβλήματα πολύ εύκολα και καλά.

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

Ένα παράδειγμα ενός τμήματος κώδικα σε μια λογική γλώσσα επεξεργασίας wikidata:

Data Scientist's Notes: A Personalized Review of Data Query Languages

Υλικά: Θα δώσω εδώ μερικούς συνδέσμους για τη σύγχρονη γλώσσα λογικού προγραμματισμού Answer Set Programming - προτείνω να το μελετήσετε:

Data Scientist's Notes: A Personalized Review of Data Query Languages

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο