Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna
Po flas nga pĂ«rvoja ime personale, se ku dhe kur Ă«shtĂ« dashur. NjĂ« pĂ«rmbledhje dhe me theksime, pĂ«r ta bĂ«rĂ« tĂ« qartĂ« se çfarĂ« mund tĂ« shqyrtoni mĂ« tej — por kĂ«tu kam vetĂ«m pĂ«rvojĂ«n time subjektive, ndoshta ju do tĂ« keni diçka krejtĂ«sisht ndryshe.

Pse Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« dini dhe tĂ« jeni nĂ« gjendje tĂ« punoni me gjuhĂ«t e kĂ«rkesave? NĂ« thelb, nĂ« ShkencĂ«n e tĂ« DhĂ«nave ka disa etapa tĂ« rĂ«ndĂ«sishme nĂ« punĂ« dhe mĂ« e para dhe mĂ« e rĂ«ndĂ«sishmja (pa tĂ« nuk do tĂ« funksionojĂ« asgjĂ«!) Ă«shtĂ« mbledhja ose nxjerrja e tĂ« dhĂ«nave. Shpesh tĂ« dhĂ«nat ndodhen diku nĂ« njĂ« formĂ« dhe duhet ‘nxjerrë’ prej andej. 

Gjuhet e kĂ«rkesave pikĂ«risht lejojnĂ« nxjerrjen e kĂ«tyre tĂ« dhĂ«nave! Dhe sot do tĂ« flas pĂ«r ato gjuhĂ« kĂ«rkimesh qĂ« mĂ« kanĂ« ndihmuar dhe do tĂ« tregoj se ku dhe si pikĂ«risht — pse Ă«shtĂ« e nevojshme tĂ« mĂ«sohet.

Do të ketë tre blloqe të krijuara dhe lloje kërkesash për të dhëna, të cilat do të shqyrtojmë në këtë artikel:

  • Gjuha ‘standard’ e kĂ«rkesave — ajo qĂ« zakonisht kuptohet kur flitet pĂ«r njĂ« gjuhĂ« kĂ«rkese, si p.sh., algebra relacional ose SQL.
  • Gjuha skriptore e kĂ«rkesave: pĂ«r shembull, gjuhĂ«t fantastike tĂ« Python-it si pandas, numpy ose skriptimi i shell-it.
  • Gjuhet e kĂ«rkesave pĂ«r grafĂ«t e njohurive dhe bazat e tĂ« dhĂ«nave grafike.

Çdo gjĂ« e shkruar kĂ«tu Ă«shtĂ« thjesht njĂ« eksperiencĂ« personale, ajo qĂ« ka qenĂ« e dobishme, me pĂ«rshkrimin e situatave dhe "pse ka qenĂ« e nevojshme" — secili mund ta provojĂ« se sa tĂ« ngjashme mund tĂ« ndodhin situata tĂ« tilla dhe tĂ« pĂ«rgatitet pĂ«r to mĂ« parĂ«, duke e kuptuar kĂ«to gjuhĂ« para se tĂ« duhet t'i pĂ«rdorĂ« ato (nĂ« mĂ«nyrĂ« urgjente) nĂ« njĂ« projekt ose madje tĂ« shkojĂ« nĂ« njĂ« projekt ku ato janĂ« tĂ« nevojshme.

Gjuhët standarde të pyetjeve

Gjuhët standarde të pyetjeve në atë kuptim, se zakonisht pikërisht për to mendojmë kur flasim për pyetje.

Algebra relacional

Pse na nevojitet sot algebra relacional? Për të pasur një përfaqësim të mirë të asaj që e ndihmon për të kuptuar pse gjuhët e pyetjeve janë të organizuara në një mënyrë të caktuar dhe është e nevojshme të kuptohet thelbi që është në bazë.

ÇfarĂ« Ă«shtĂ« algebra relacional?

Përkufizimi formal është: algebra relacional është një sistem i mbyllur operacionesh mbi marrëdhëniet në modelin relacional të të dhënave. Nëse e shikojmë më njerëzisht, është një sistem operacionesh mbi tabela, në mënyrë që rezultati gjithashtu të jetë gjithmonë një tabelë.

Shih tĂ« gjitha operacionet relacional nĂ« kĂ«tĂ« artikulli nga Habr — kĂ«tu ne pĂ«rshkruajmĂ« pse Ă«shtĂ« e nevojshme tĂ« dihet dhe ku pĂ«rdoret.

Pse?

KĂ«tu fillon tĂ« kuptosh se çfarĂ« pĂ«rbĂ«jnĂ« gjuhĂ«t e kĂ«rkimeve dhe cilat operacione qĂ«ndrojnĂ« pas shprehjeve tĂ« gjuhĂ«ve tĂ« caktuara tĂ« kĂ«rkimeve — zakonisht ofron njĂ« kuptim mĂ« tĂ« thellĂ« tĂ« asaj qĂ« ndodh dhe si funksionon nĂ« gjuhĂ«t e kĂ«rkimeve.

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna
Marre nga këtë artikulli. Shembulli i operacionit: join, i cili bashkon tabela.

Burime për studim:

NjĂ« kurs i mirĂ« hyrĂ«s nga Stanford. NĂ« pĂ«rgjithĂ«si, ka shumĂ« materiale mbi algebra relacional dhe teori — Coursera, Udacity. Ka gjithashtu njĂ« sasi tĂ« madhe materials nĂ« internet, pĂ«rfshirĂ« kurse tĂ« mira akademike. KĂ«shilla ime personale: duhet ta kuptoni shumĂ« mirĂ« algebrĂ«n relacional — Ă«shtĂ« themeli i gjithçkaje.

SQL

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna
Marre nga këtë të artikullit.

SQL, nĂ« thelb, Ă«shtĂ« njĂ« implementim i algebrĂ«s relacional — me njĂ« rezervĂ« tĂ« rĂ«ndĂ«sishme, SQL Ă«shtĂ« deklarativ! KĂ«shtu, duke shkruar njĂ« kĂ«rkesĂ« nĂ« gjuhĂ«n e algebrĂ«s relacional, nĂ« fakt thoni se si duhet tĂ« llogaritet — ndĂ«rsa me SQL, ju pĂ«rcaktoni se çfarĂ« dĂ«shironi tĂ« nxirrni, dhe mĂ« pas DBMS gjeneron (efektiv) shprehje nĂ« gjuhĂ«n e algebrĂ«s relacional (ekvivalenca e tyre Ă«shtĂ« e njohur nga teorema e Codd).

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna
Marre nga këtë të artikullit.

Pse?

Baza të dhënash relationale: Oracle, Postgres, SQL Server, etj. janë ende gjerësisht të pranishëm dhe ka një mundësi të madhe që do t'ju duhet të lidheni me to, që do të thotë se do të duhet të lexoni SQL (gjithashtu shumë e mundshme) ose ta shkruani atë (po ashtu, jo e papritur).

ÇfarĂ« tĂ« lexoni dhe tĂ« mĂ«soni

Në të njëjtat lidhje të sipërpërmendura (për algebrën relacional), ka një sasi të jashtëzakonshme materiali, për shembull, këtë.

Meqenëse, çfarë është NoSQL?

«WshtĂ« e rĂ«ndĂ«sishme tĂ« theksohet se termi “NoSQL” ka njĂ« origjinĂ« krejtĂ«sisht spontane dhe nuk ka njĂ« definicion tĂ« njohur pĂ«r çdo institucion shkencor.» PĂ«rkatĂ«sisht artikull nĂ« Habr.

NĂ« thelb, njerĂ«zit kuptonin se modeli i plotĂ« relational nuk Ă«shtĂ« i nevojshĂ«m pĂ«r tĂ« zgjidhur shumĂ« probleme, sidomos pĂ«r ata ku, pĂ«r shembull, performanca Ă«shtĂ« vendimtare dhe disa kĂ«rkesa tĂ« thjeshta me agregim dominon — aty Ă«shtĂ« kritike tĂ« llogaritĂ«sh shpejt metrikat dhe t'i shkruash ato nĂ« bazĂ«, ndĂ«rsa shumica e karakteristikave relacional dukeshin jo vetĂ«m tĂ« padobishme, por edhe dĂ«mshme — pĂ«rse tĂ« normalizosh diçka, kur kjo do tĂ« prishĂ« atĂ« qĂ« Ă«shtĂ« mĂ« e rĂ«ndĂ«sishme pĂ«r ne (pĂ«r njĂ« detyrĂ« tĂ« caktuar) — performancĂ«n?

Gjithashtu shpesh janĂ« tĂ« nevojshme skemat fleksibile nĂ« vend tĂ« skemave matematikore fikse tĂ« modelit tradicional relacional — dhe kjo e thjeshton dukshĂ«m zhvillimin e aplikacioneve, kur Ă«shtĂ« kritike tĂ« pĂ«rhapim sistemin dhe tĂ« fillojmĂ« tĂ« punojmĂ« shpejt, duke procesuar rezultatet — ose skema dhe llojet e tĂ« dhĂ«nave tĂ« ruajtur nuk janĂ« aq tĂ« rĂ«ndĂ«sishme.

PĂ«r shembull, ne po krijojmĂ« njĂ« sistem ekspert dhe duam tĂ« ruajmĂ« informacionin mbi njĂ« domen tĂ« caktuar sĂ« bashku me disa meta-informacione — mund tĂ« mos e dimĂ« tĂ« gjitha fushat dhe thjesht tĂ« ruajmĂ« JSON pĂ«r çdo regjistĂ«r — kjo na jep njĂ« ambient shumĂ« fleksibĂ«l pĂ«r shtrirjen e modelit tĂ« tĂ« dhĂ«nave dhe iterimin e shpejtĂ« — prandaj nĂ« kĂ«tĂ« rast, NoSQL do tĂ« ishte madje mĂ« e preferueshme dhe lexueshme. NjĂ« shembull regjistri (nga njĂ« nga projektet e mia, ku NoSQL ishte pikĂ«risht aty ku ishte e nevojshme).

{"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}

Mund të lexoni më shumë këtu për NoSQL.

ÇfarĂ« tĂ« studiojmĂ«?

KĂ«tu Ă«shtĂ« mĂ« mirĂ« tĂ« analizoni mirĂ« detyrĂ«n tuaj, cilat janĂ« veçoritĂ« e saj dhe cilat sisteme NoSQL i pĂ«rshtaten kĂ«tij pĂ«rshkrimi — dhe pastaj tĂ« filloni tĂ« studioni kĂ«tĂ« sistem.

Gjuha e skriptimit për kërkesa

SĂ« pari, duket se çfarĂ« ka tĂ« bĂ«jĂ« Python — Ă«shtĂ« njĂ« gjuhĂ« programuese, dhe nuk ka tĂ« bĂ«jĂ« fare me kĂ«rkesat.

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna

  • Pandas Ă«shtĂ« si njĂ« thikĂ« shumĂ« funksionale pĂ«r ShkencĂ«n e TĂ« DhĂ«nave, shumĂ« transformime tĂ« dhĂ«nash, agregime etj. ndodhin nĂ« tĂ«.
  • Numpy — llogaritje vektoriale, matrica dhe algebra lineare aty.
  • Scipy — shumĂ« matematikĂ« nĂ« kĂ«tĂ« paketĂ«, veçanĂ«risht statistikat.
  • Jupyter lab — shumĂ« analiza eksploruese tĂ« tĂ« dhĂ«nave qĂ« funksionojnĂ« mirĂ« nĂ« notebook — Ă«shtĂ« e dobishme tĂ« dish.
  • Requests — punĂ« me rrjetin.
  • Pyspark — shumĂ« popullor mes inxhinierĂ«ve tĂ« tĂ« dhĂ«nave, me siguri do t'ju duhet tĂ« ndĂ«rveproni me kĂ«tĂ« ose me Spark, thjesht pĂ«r shkak tĂ« popullaritetit tĂ« tyre.
  • *Selenium — shumĂ« i dobishĂ«m pĂ«r mbledhjen e tĂ« dhĂ«nave nga faqet dhe burimet, ndonjĂ«herĂ« thjesht nuk mund tĂ« merrni tĂ« dhĂ«na ndryshe.

Këshilli im kryesor: mësoni Python!

Pandas

Le të marrim si shembull kodin e mëposhtëm:

import pandas as pd
df = pd.read_csv(“data/dataset.csv”)
# Llogaritni dhe rinovoni agregimet
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'}))

Në thelb, ne shohim se kodi i përshtatet një modeli klasik SQL.

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

Por pjesa e rĂ«ndĂ«sishme — ky kod Ă«shtĂ« pjesĂ« e skriptit dhe pipeline-it, nĂ« tĂ« vĂ«rtetĂ« ne e integrojmĂ« kĂ«rkesat nĂ« pipeline-in e Python-it. NĂ« kĂ«tĂ« situatĂ«, gjuha e kĂ«rkesave na vjen nga libraritĂ«, siç janĂ« Pandas ose pySpark.

Në përgjithësi në pySpark ne shohim një lloj të ngjashëm transformimi të të dhënave përmes gjuhës së kërkesave në shpirtin e:

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

Ku dhe çfarë të lexojmë

PĂ«r Pythonin nĂ« pĂ«rgjithĂ«si nuk Ă«shtĂ« problem tĂ« gjejmĂ« materiale pĂ«r studim. NĂ« rrjet ka njĂ« sasi tĂ« madhe tutorialesh pĂ«r pandas, pySpark dhe kurse pĂ«r Spark (si dhe pĂ«r vetĂ« DS). NĂ« pĂ«rgjithĂ«si, materialet kĂ«tu gjenden lehtĂ«sisht nĂ« Google dhe nĂ«se do tĂ« duhet tĂ« zgjidhja njĂ« paketĂ«, nĂ« tĂ« cilĂ«n do tĂ« pĂ«rqendrohesha — kjo do tĂ« ishte pandas, sigurisht. PĂ«r lidhjen DS+Python ka shumĂ« materiale gjithashtu. shumĂ« tĂ« ndjeshme.

Shell si gjuhë e kërkesës

Ka shumĂ« projekte pĂ«r pĂ«rpunimin dhe analizimin e tĂ« dhĂ«nave me tĂ« cilat kam punuar — kĂ«to janĂ«, nĂ« thelb, skripte shell qĂ« thĂ«rrasin kodin nĂ« Python, Java dhe vetĂ« komandat shell. Prandaj, nĂ« pĂ«rgjithĂ«si, mund tĂ« merren parasysh pipeline-t nĂ« bash/zsh/etc si njĂ« kĂ«rkesĂ« tĂ« nivelit tĂ« lartĂ« (sigurisht, mund tĂ« shtohen dhe cikle, por kjo nuk Ă«shtĂ« tipike pĂ«r kodin DS nĂ« gjuhĂ«t shell), le tĂ« sjellim njĂ« shembull tĂ« thjeshtĂ« — mĂ« duheshte tĂ« krijoja njĂ« mapim tĂ« QID nga Wikidata dhe lidhjen e plotĂ« pĂ«r Wikipedi nĂ« rusisht dhe anglisht, pĂ«r kĂ«tĂ« shkrova njĂ« kĂ«rkesĂ« tĂ« thjeshtĂ« nga komandat nĂ« bash dhe pĂ«r tĂ« shpallur shkrova njĂ« skript tĂ« thjeshtĂ« nĂ« Python, qĂ« i bashkova kĂ«shtu:

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

ku

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

Ky ishte, në thelb, i gjithë pipeline-i që krijonte mapimin e nevojshëm; siç e shohim, gjithçka funksiononte në modin e rrjedhës:

  • pv filepath — ofron progresi bazuar nĂ« madhĂ«sinĂ« e skedarit dhe e kalon atĂ« mĂ« tej
  • unpigz -c lexonte njĂ« pjesĂ« tĂ« arkivit dhe ia jepte jq
  • jq me çelĂ«sin — stream menjĂ«herĂ« jepte rezultatin dhe e kalonte atĂ« te postproçesori (ashtu si me shembullin e parĂ«) nĂ« python
  • brenda postproçesorit — Ă«shtĂ« njĂ« makinĂ« e thjeshtĂ« e shteteve, e cila formatizonte daljen 

Në përfundim, një pipeline i ndërlikuar që punon në mënyrë streaming me të dhëna të mëdha (0.5TB), pa burime të konsiderueshme dhe i përbërë nga një pipeline të thjeshtë dhe disa mjete.

Një këshillë e rëndësishme: duhet të dini të punoni mirë dhe efektivisht në terminal dhe të shkruani në bash/zsh/etc.

Ku do tĂ« ndihmojĂ«? Po pothuajse kudo — materiale pĂ«r studim pĂ«rsĂ«ri ka SHUMË nĂ« rrjet. Sidomos, ja kjo artikulli im i mĂ«parshĂ«m.

R scripting

PĂ«rsĂ«ri, lexuesi mund tĂ« thotĂ« — por ky Ă«shtĂ« njĂ« gjuhĂ« e tĂ«rĂ« programimi! Dhe sigurisht qĂ« do tĂ« ketĂ« tĂ« drejtĂ«. MegjithatĂ«, zakonisht mĂ« Ă«shtĂ« dashur tĂ« pĂ«rballesh me R gjithmonĂ« nĂ« njĂ« kontekst tĂ« tillĂ«, qĂ« nĂ« thelb ishte shumĂ« e ngjashme me njĂ« gjuhĂ« kĂ«rkese.

R është një mjedis për llogaritjet statistikore dhe gjuhë për llogaritjet statistikore dhe vizualizimin (sipas këtu).

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna
Marrë këtu. Për këtë, e rekomandoj, është një material i mirë.

Pse duhet një data scientist të dijë R? Të paktën, sepse ekziston një numër i madh njerëzish jashtë IT-së që merren me analizën e të dhënave në R. Kam hasur në këto vende:

  • Sektori farmaceutik.
  • BiologĂ«t.
  • Sektori financiar.
  • NjerĂ«z tĂ« arsimuar vetĂ«m nĂ« matematikĂ« qĂ« merret me statistikat.
  • Modele statistikore tĂ« specializuara dhe modele tĂ« mĂ«simit tĂ« makinerisĂ« (tĂ« cilat shpesh gjenden vetĂ«m nĂ« versionin autorit si paketĂ« R).

Pse kjo Ă«shtĂ« nĂ« fakt njĂ« gjuhĂ« kĂ«rkese? NĂ« formĂ«n nĂ« tĂ« cilĂ«n shpesh paraqitet — kjo nĂ« tĂ« vĂ«rtetĂ« Ă«shtĂ« njĂ« kĂ«rkesĂ« pĂ«r krijimin e njĂ« modeli, duke pĂ«rfshirĂ« leximin e tĂ« dhĂ«nave dhe rregullimin e parametrave tĂ« kĂ«rkesĂ«s (modeleve), si dhe vizualizimin e tĂ« dhĂ«nave nĂ« paketa si ggplot2 — kjo Ă«shtĂ« gjithashtu njĂ« formĂ« e shkruar e kĂ«rkesave.

Shembuj kërkesash për vizualizim

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

NĂ« pĂ«rgjithĂ«si, shumĂ« ide nga R kanĂ« kaluar nĂ« paketat python, si pandas, numpy ose scipy, si dataframe dhe vektorizimi i tĂ« dhĂ«nave — prandaj shumĂ« gjĂ«ra nĂ« R do t'ju duken tĂ« njohura dhe tĂ« pĂ«rshtatshme.

Burime për të mësuar ka shumë, për shembull, këtë.

Grafikët e njohurive (Knowledge graph)

Këtu kam një përvojë të pakët të zakonshme, sepse më shpesh më pengon të punoj me grafet e njohurisë dhe gjuhët e kërkesave ndaj grafëve. Prandaj, le të kalojmë shpejt mbi bazat, pasi kjo pjesë është pak më ekzotike.

NĂ« bazat klasike relacional, kemi njĂ« skemĂ« tĂ« rregullt — kĂ«tu skema Ă«shtĂ« fleksibile, çdo predikat Ă«shtĂ« nĂ« thelb njĂ« ‘kolonë’ dhe madje mĂ« shumĂ«.

Imagjinoni se do të modelonit një person dhe do të donit të përshkruani gjëra kyçe; për shembull, le të marrim një person konkret, Douglas Adams, dhe do të bazohemi në këtë përshkrim.

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna
www.wikidata.org/wiki/Q42

NĂ«se do tĂ« kishim pĂ«rdorur njĂ« bazĂ« relacional, do tĂ« kishim duhur tĂ« krijonim njĂ« tabelĂ« tĂ« madhe ose tabela tĂ« mĂ«dha me njĂ« numĂ«r tĂ« madh kolonash, shumica prej tĂ« cilave do tĂ« ishin NULL ose tĂ« mbushura me ndonjĂ« vlerĂ« tĂ« defoltit False, pĂ«r shembull, nĂ« dyshim se shumĂ« prej nesh kanĂ« njĂ« regjistĂ«r nĂ« bibliotekĂ«n kombĂ«tare koreane — sigurisht, mund tĂ« kishim separuar ato nĂ« tabela tĂ« veçanta, por kjo nĂ« fund do tĂ« ishte pĂ«rpjekje pĂ«r tĂ« modeluar njĂ« skemĂ« logjike fleksibile me predikate, duke pĂ«rdorur njĂ« relacional tĂ« rregullt.

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna
Prandaj imagjinoni se të gjitha të dhënat ruhen si një grafo apo si shprehje logjike binare dhe uniare.

Ku mund ta hasni këtë? Së pari, duke punuar me të dhëna wiki, për të mirën e çdo baze të dhënash grafi ose të dhënash të lidhura.

Më poshtë janë gjuhët kryesore të kërkimeve që kam qenë e detyruar të aplikoj dhe me të cilat kam punuar.

SPARQL

Wiki:
SPARQL (akronim rrekursiv nga anglisht. SPARQL Protocol and RDF Query Language) — gjuhĂ« e kĂ«rkimeve pĂ«r tĂ« dhĂ«na, tĂ« paraqitura sipas modelit RDF, dhe gjithashtu protokolli pĂ«r tĂ« transmetuar kĂ«to kĂ«rkesa dhe pĂ«rgjigje mbi to. SPARQL Ă«shtĂ« njĂ« rekomandim i konsorciumit W3C dhe njĂ« nga teknologjitĂ« e internetit semantik..

Në të vërtetë, kjo është një gjuhë kërkimesh për predikate logjike uniare dhe binare. Thjesht tregohet se çfarë është e fiksuar në shprehjen logjike dhe çfarë nuk është (shumë thjesht).

Baza e vetĂ« RDF (Resource Description Framework), mbi tĂ« cilĂ«n kryhen kĂ«rkesat SPARQL — Ă«shtĂ« njĂ« trio objekt, predikate, subjekt. — dhe kĂ«rkesa zgjedh trejat e nevojshme sipas kufizimeve tĂ« caktuara, si: gjej njĂ« X, tĂ« tillĂ« qĂ« p_55(X, q_33) Ă«shtĂ« e vĂ«rtetĂ« — ku, sigurisht, p_55 Ă«shtĂ« njĂ« marrĂ«dhĂ«nie me ID 55, dhe q_33 Ă«shtĂ« njĂ« objekt me ID 33 (kjo Ă«shtĂ« e gjithĂ« historia, duke lĂ«nĂ« mĂ«njanĂ« detaje tĂ« ndryshme).

Shembulli i prezantimit të të dhënave:

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna
Imazhe dhe shembuj me vende këtu këtu.

Shembulli i kërkesës bazë

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna

Në fakt, ne duam të gjejmë vlerën e ndryshores ?country, të tillë që për predikatin
member_of, është e vërtetë që member_of(?country,q458), ndërsa q458 është ID e Bashkimit Evropian.

Shembulli i një kërkese SPARQL të vërtetë brenda motorit python:

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna

NĂ« pĂ«rgjithĂ«si, mĂ« ka ndodhur tĂ« lexoj SPARQL, e jo ta shkruaj — nĂ« njĂ« situatĂ« tĂ« tillĂ«, me siguri do tĂ« ishte njĂ« aftĂ«si e dobishme tĂ« kuptosh gjuhĂ«n, tĂ« paktĂ«n nĂ« njĂ« nivel bazik, pĂ«r tĂ« kuptuar si janĂ« nxjerrĂ« tĂ« dhĂ«nat. 

Ka shumë materiale online për të mësuar: për shembull, këtu këtë dhe këtë. Unë zakonisht kërkoj në Google për struktura dhe shembuj specifikë dhe deri tani mjafton.

Gjuhët logjike të kërkesave

Më shumë rreth temës mund të lexoni në artikullin tim këtu. Në këtë pjesë, ne do të përmendim shkurtimisht pse gjuhët logjike janë të përshtatshme për shkrimin e kërkesave. Në thelb, RDF është thjesht një koleksion i deklaratave logjike si p(X) dhe h(X,Y), ndërsa kërkesa logjike ka këtë formë:

output(X) :- country(X), member_of(X,"EU").

KĂ«tu po flasim pĂ«r krijimin e njĂ« predikati tĂ« ri output/1 (/1 do tĂ« thotĂ« njĂ«anshĂ«m), me kushte qĂ« pĂ«r X Ă«shtĂ« e vĂ«rtetĂ« qĂ« country(X) — dmth, X Ă«shtĂ« njĂ« vend dhe gjithashtu member_of(X,"EU").

Pra, në këtë rast, të dhënat dhe rregullat janë të paraqitura në të njëjtën mënyrë, çka lejon modelimin e lehtë dhe efikas të detyrave.

Ku janĂ« takuar nĂ« industri: njĂ« projekt i madh me njĂ« kompani qĂ« shkruan kĂ«rkesa nĂ« atĂ« gjuhĂ«, si dhe nĂ« projektin aktual nĂ« bĂ«rthamĂ«n e sistemit — duket se Ă«shtĂ« diçka shumĂ« ekzotike, megjithatĂ« ndonjĂ«herĂ« ndodh.

Një shembull i një fragmendi kodi në gjuhën logjike që përpunon wikidata:

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna

Burimet: do tĂ« pĂ«rmend disa lidhje pĂ«r gjuhĂ«n moderne tĂ« programimit tĂ« logjikĂ«s Answer Set Programming — rekomandoj tĂ« studiohet pikĂ«risht ajo:

Shënimet e Shkencëtarit të të Dhënave: një pasqyrë personale e gjuhëve të kërkesave për të dhëna

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster