ప్రోహోస్టర్ > బ్లాగ్ > పరిపాలన > డేటా సైంటిస్ట్ నోట్స్: డేటా క్వెరీ లాంగ్వేజెస్ యొక్క వ్యక్తిగతీకరించిన సమీక్ష
డేటా సైంటిస్ట్ నోట్స్: డేటా క్వెరీ లాంగ్వేజెస్ యొక్క వ్యక్తిగతీకరించిన సమీక్ష
ఎక్కడ మరియు ఎప్పుడు ఏది ఉపయోగపడిందో వ్యక్తిగత అనుభవం నుండి నేను మీకు చెప్తున్నాను. ఇది పర్యావలోకనం మరియు థీసిస్, తద్వారా మీరు ఇంకా ఏమి మరియు ఎక్కడ తవ్వగలరో స్పష్టంగా తెలుస్తుంది - కానీ ఇక్కడ నాకు ప్రత్యేకంగా ఆత్మాశ్రయ వ్యక్తిగత అనుభవం ఉంది, బహుశా ప్రతిదీ మీకు పూర్తిగా భిన్నంగా ఉండవచ్చు.
ప్రశ్న భాషలను తెలుసుకోవడం మరియు ఉపయోగించగలగడం ఎందుకు ముఖ్యం? దాని ప్రధాన భాగంలో, డేటా సైన్స్ పని యొక్క అనేక ముఖ్యమైన దశలను కలిగి ఉంది మరియు మొదటి మరియు అతి ముఖ్యమైనది (అది లేకుండా, ఖచ్చితంగా ఏమీ పని చేయదు!) డేటాను పొందడం లేదా సంగ్రహించడం. చాలా తరచుగా, డేటా ఏదో ఒక రూపంలో ఎక్కడో కూర్చొని ఉంది మరియు అక్కడ నుండి "పునరుద్ధరించబడాలి".
ప్రశ్న భాషలు ఈ డేటాను సంగ్రహించడానికి మిమ్మల్ని అనుమతిస్తాయి! మరియు ఈ రోజు నేను నాకు ఉపయోగకరంగా ఉన్న ఆ ప్రశ్న భాషల గురించి మీకు చెప్తాను మరియు నేను మీకు చెప్తాను మరియు ఎక్కడ మరియు ఎలా ఖచ్చితంగా - ఎందుకు అధ్యయనం చేయాలి అని మీకు చెప్తాను.
డేటా ప్రశ్న రకాలలో మూడు ప్రధాన బ్లాక్లు ఉంటాయి, వీటిని మేము ఈ కథనంలో చర్చిస్తాము:
రిలేషనల్ ఆల్జీబ్రా లేదా SQL వంటి ప్రశ్న భాష గురించి మాట్లాడేటప్పుడు "ప్రామాణిక" ప్రశ్న భాషలు సాధారణంగా అర్థం చేసుకోబడతాయి.
స్క్రిప్టింగ్ ప్రశ్న భాషలు: ఉదాహరణకు, పైథాన్ విషయాలు పాండాలు, నంపీ లేదా షెల్ స్క్రిప్టింగ్.
నాలెడ్జ్ గ్రాఫ్లు మరియు గ్రాఫ్ డేటాబేస్ల కోసం భాషలను ప్రశ్నించండి.
ఇక్కడ వ్రాసిన ప్రతిదీ కేవలం వ్యక్తిగత అనుభవం మాత్రమే, ఏది ఉపయోగకరమైనది, పరిస్థితుల వివరణతో మరియు “అది ఎందుకు అవసరమైంది” - ఇలాంటి పరిస్థితులు మీకు ఎలా వస్తాయో ప్రతి ఒక్కరూ ప్రయత్నించవచ్చు మరియు ఈ భాషలను అర్థం చేసుకోవడం ద్వారా ముందుగానే వాటిని సిద్ధం చేయడానికి ప్రయత్నించవచ్చు. మీరు ఒక ప్రాజెక్ట్పై (అత్యవసరంగా) దరఖాస్తు చేసుకోవాలి లేదా వారు అవసరమైన ప్రాజెక్ట్కి వెళ్లడానికి ముందు.
"ప్రామాణిక" ప్రశ్న భాషలు
మేము ప్రశ్నల గురించి మాట్లాడేటప్పుడు సాధారణంగా వాటి గురించి ఆలోచించే అర్థంలో ప్రామాణిక ప్రశ్న భాషలు ఖచ్చితంగా ఉంటాయి.
రిలేషనల్ బీజగణితం
ఈ రోజు రిలేషనల్ ఆల్జీబ్రా ఎందుకు అవసరం? ప్రశ్న భాషలు ఒక నిర్దిష్ట మార్గంలో ఎందుకు నిర్మించబడ్డాయి మరియు వాటిని స్పృహతో ఎందుకు ఉపయోగించాలో మంచి అవగాహన కలిగి ఉండటానికి, మీరు వాటి అంతర్లీనాన్ని అర్థం చేసుకోవాలి.
రిలేషనల్ ఆల్జీబ్రా అంటే ఏమిటి?
అధికారిక నిర్వచనం క్రింది విధంగా ఉంది: రిలేషనల్ ఆల్జీబ్రా అనేది రిలేషనల్ డేటా మోడల్లో సంబంధాలపై కార్యకలాపాల యొక్క క్లోజ్డ్ సిస్టమ్. కొంచెం మానవీయంగా చెప్పాలంటే, ఇది టేబుల్లపై ఆపరేషన్ల వ్యవస్థ, ఫలితం ఎల్లప్పుడూ పట్టికగా ఉంటుంది.
అన్ని సంబంధిత కార్యకలాపాలను చూడండి ఈ Habr నుండి వ్యాసం - మీరు ఎందుకు తెలుసుకోవాలి మరియు అది ఎక్కడ ఉపయోగపడుతుందో ఇక్కడ మేము వివరిస్తాము.
ఎందుకు?
క్వెరీ లాంగ్వేజ్లు దేనికి సంబంధించినవి మరియు నిర్దిష్ట ప్రశ్న భాషలలో వ్యక్తీకరణల వెనుక ఏ కార్యకలాపాలు ఉన్నాయో అర్థం చేసుకోవడం ప్రారంభించడం తరచుగా ప్రశ్న భాషలలో ఏమి పని చేస్తుంది మరియు ఎలా అనే దానిపై లోతైన అవగాహనను ఇస్తుంది.
నుండి తీసుకోబడింది ఈ వ్యాసాలు. ఆపరేషన్ యొక్క ఉదాహరణ: చేరండి, ఇది పట్టికలను కలుపుతుంది.
అధ్యయనం కోసం పదార్థాలు:
స్టాన్ఫోర్డ్ నుండి మంచి పరిచయ కోర్సు. సాధారణంగా, రిలేషనల్ బీజగణితం మరియు సిద్ధాంతంపై చాలా పదార్థాలు ఉన్నాయి - కోర్సెరా, ఉడాసిటీ. మంచితో సహా ఆన్లైన్లో పెద్ద మొత్తంలో మెటీరియల్ కూడా ఉంది విద్యా కోర్సులు. నా వ్యక్తిగత సలహా: మీరు రిలేషనల్ ఆల్జీబ్రాను బాగా అర్థం చేసుకోవాలి - ఇది బేసిక్స్ యొక్క ఆధారం.
SQL అనేది తప్పనిసరిగా రిలేషనల్ ఆల్జీబ్రా యొక్క అమలు - ఒక ముఖ్యమైన హెచ్చరికతో, SQL డిక్లరేటివ్! అంటే, రిలేషనల్ ఆల్జీబ్రా భాషలో ప్రశ్నను వ్రాసేటప్పుడు, మీరు నిజంగా ఎలా లెక్కించాలో చెబుతారు - కానీ SQLతో మీరు ఏమి సంగ్రహించాలనుకుంటున్నారో పేర్కొంటారు, ఆపై DBMS ఇప్పటికే రిలేషనల్ ఆల్జీబ్రా భాషలో (సమర్థవంతమైన) వ్యక్తీకరణలను రూపొందిస్తుంది. సమానత్వం మనకు తెలుసు కాడ్ యొక్క సిద్ధాంతం).
రిలేషనల్ DBMSలు: ఒరాకిల్, పోస్ట్గ్రెస్, SQL సర్వర్ మొదలైనవి ఇప్పటికీ దాదాపు ప్రతిచోటా ఉన్నాయి మరియు మీరు వారితో ఇంటరాక్ట్ అవ్వడానికి చాలా ఎక్కువ అవకాశం ఉంది, అంటే మీరు SQL (ఇది చాలా అవకాశం ఉంది) చదవాలి లేదా వ్రాయాలి ( అసంభవం కూడా కాదు).
ఏమి చదివి చదువుకోవాలి
పైన ఉన్న అదే లింక్ల ప్రకారం (రిలేషనల్ ఆల్జీబ్రా గురించి), అద్భుతమైన మొత్తంలో మెటీరియల్ ఉంది, ఉదాహరణకు, ఈ.
మార్గం ద్వారా, NoSQL అంటే ఏమిటి?
"NoSQL" అనే పదం పూర్తిగా ఆకస్మిక మూలాన్ని కలిగి ఉందని మరియు దాని వెనుక సాధారణంగా ఆమోదించబడిన నిర్వచనం లేదా శాస్త్రీయ సంస్థ లేదని మరోసారి నొక్కి చెప్పడం విలువ. సంబంధిత వ్యాసం Habr న.
వాస్తవానికి, అనేక సమస్యలను పరిష్కరించడానికి పూర్తి రిలేషనల్ మోడల్ అవసరం లేదని ప్రజలు గ్రహించారు, ప్రత్యేకించి, ఉదాహరణకు, పనితీరు కీలకమైనది మరియు అగ్రిగేషన్తో కొన్ని సాధారణ ప్రశ్నలు ఆధిపత్యం చెలాయిస్తాయి - ఇక్కడ మెట్రిక్లను త్వరగా లెక్కించి వాటిని వ్రాయడం చాలా కీలకం. డేటాబేస్, మరియు చాలా ఫీచర్లు రిలేషనల్ అవడం అనవసరం మాత్రమే కాదు, హానికరం కూడా అని తేలింది - అది మనకు అత్యంత ముఖ్యమైన (కొన్ని నిర్దిష్ట పని కోసం) - ఉత్పాదకతను పాడుచేస్తే దాన్ని ఎందుకు సాధారణీకరించాలి?
అలాగే, క్లాసికల్ రిలేషనల్ మోడల్ యొక్క స్థిరమైన గణిత స్కీమాలకు బదులుగా అనువైన స్కీమాలు తరచుగా అవసరమవుతాయి - మరియు సిస్టమ్ను అమలు చేయడం మరియు త్వరగా పని చేయడం ప్రారంభించడం, ఫలితాలను ప్రాసెస్ చేయడం - లేదా స్కీమా మరియు నిల్వ చేసిన డేటా రకాలు - ఇది చాలా కీలకమైనప్పుడు అప్లికేషన్ డెవలప్మెంట్ను చాలా సులభతరం చేస్తుంది. అంత ముఖ్యమైనవి కావు.
ఉదాహరణకు, మేము నిపుణుల వ్యవస్థను సృష్టిస్తున్నాము మరియు కొంత మెటా సమాచారంతో పాటు నిర్దిష్ట డొమైన్లో సమాచారాన్ని నిల్వ చేయాలనుకుంటున్నాము - మాకు అన్ని ఫీల్డ్లు తెలియకపోవచ్చు మరియు ప్రతి రికార్డ్ కోసం JSONని నిల్వ చేయవచ్చు - ఇది డేటాను విస్తరించడానికి మాకు చాలా సౌకర్యవంతమైన వాతావరణాన్ని అందిస్తుంది. మోడల్ మరియు శీఘ్ర పునరావృతం - కాబట్టి ఈ సందర్భంలో, NoSQL మరింత ప్రాధాన్యతనిస్తుంది మరియు మరింత చదవదగినదిగా ఉంటుంది. ఉదాహరణ నమోదు (NoSQL అవసరమైన చోట నా ప్రాజెక్ట్లలో ఒకదాని నుండి).
ఇక్కడ, బదులుగా, మీరు మీ పనిని పూర్తిగా విశ్లేషించాలి, దానిలో ఏ లక్షణాలు ఉన్నాయి మరియు ఈ వివరణకు సరిపోయే NoSQL సిస్టమ్లు అందుబాటులో ఉన్నాయి - ఆపై ఈ సిస్టమ్ను అధ్యయనం చేయడం ప్రారంభించండి.
స్క్రిప్టింగ్ ప్రశ్న భాషలు
మొదట, సాధారణంగా పైథాన్కి దానితో ఏమి సంబంధం ఉందని అనిపిస్తుంది - ఇది ప్రోగ్రామింగ్ భాష, మరియు ప్రశ్నల గురించి కాదు.
పాండాస్ అక్షరాలా డేటా సైన్స్ యొక్క స్విస్ ఆర్మీ కత్తి; భారీ మొత్తంలో డేటా ట్రాన్స్ఫర్మేషన్, అగ్రిగేషన్ మొదలైనవి ఇందులో జరుగుతాయి.
నంపీ - వెక్టార్ లెక్కలు, మాత్రికలు మరియు సరళ బీజగణితం.
Scipy - ఈ ప్యాకేజీలో చాలా గణితం ఉంది, ముఖ్యంగా గణాంకాలు.
జూపిటర్ ల్యాబ్ - చాలా అన్వేషణాత్మక డేటా విశ్లేషణ ల్యాప్టాప్లకు బాగా సరిపోతుంది - తెలుసుకోవడం ఉపయోగకరంగా ఉంటుంది.
అభ్యర్థనలు - నెట్వర్క్తో పని చేయడం.
Pyspark డేటా ఇంజనీర్లలో బాగా ప్రాచుర్యం పొందింది, వారి జనాదరణ కారణంగా మీరు దీనితో లేదా స్పార్క్తో పరస్పర చర్య చేయాల్సి ఉంటుంది.
*సెలీనియం - సైట్లు మరియు వనరుల నుండి డేటాను సేకరించడానికి చాలా ఉపయోగకరంగా ఉంటుంది, కొన్నిసార్లు డేటాను పొందడానికి వేరే మార్గం లేదు.
ముఖ్యంగా, కోడ్ క్లాసిక్ 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
కానీ ముఖ్యమైన భాగం ఏమిటంటే, ఈ కోడ్ స్క్రిప్ట్ మరియు పైప్లైన్లో భాగం; వాస్తవానికి, మేము పైథాన్ పైప్లైన్లో ప్రశ్నలను పొందుపరుస్తాము. ఈ పరిస్థితిలో, ప్రశ్న భాష పాండాస్ లేదా పైస్పార్క్ వంటి లైబ్రరీల నుండి మాకు వస్తుంది.
సాధారణంగా, pySparkలో మనం క్వరీ లాంగ్వేజ్ ద్వారా ఇలాంటి డేటా పరివర్తనను చూస్తాము:
సాధారణంగా పైథాన్లోనే సమస్య కాదు అధ్యయనం చేయడానికి పదార్థాలను కనుగొనండి. ఆన్లైన్లో భారీ సంఖ్యలో ట్యుటోరియల్లు ఉన్నాయి పాండాలు, pySpark మరియు కోర్సులు నిప్పురవ్వ (మరియు స్వయంగా కూడా DS) మొత్తంమీద, ఇక్కడ ఉన్న కంటెంట్ గూగ్లింగ్ కోసం చాలా బాగుంది మరియు నేను దృష్టి పెట్టడానికి ఒక ప్యాకేజీని ఎంచుకోవలసి వస్తే, అది పాండాలు అవుతుంది. DS+Python మెటీరియల్ల కలయికకు సంబంధించి కూడా చాలా.
ప్రశ్న భాషగా షెల్
నేను పనిచేసిన కొన్ని డేటా ప్రాసెసింగ్ మరియు విశ్లేషణ ప్రాజెక్ట్లు నిజానికి, పైథాన్, జావా మరియు షెల్ కమాండ్లలో కోడ్ని పిలిచే షెల్ స్క్రిప్ట్లు. కాబట్టి, సాధారణంగా, మీరు bash/zsh/etcలో పైప్లైన్లను ఒకరకమైన ఉన్నత-స్థాయి ప్రశ్నగా పరిగణించవచ్చు (అక్కడ మీరు స్టఫ్ లూప్లు చేయవచ్చు, కానీ ఇది షెల్ భాషల్లోని DS కోడ్కు విలక్షణమైనది కాదు), ఇద్దాం ఒక సాధారణ ఉదాహరణ - నేను వికీడేటా యొక్క QID మ్యాపింగ్ మరియు రష్యన్ మరియు ఇంగ్లీష్ వికీలకు పూర్తి లింక్లను చేయవలసి ఉంది, దీని కోసం నేను బాష్లోని ఆదేశాల నుండి ఒక సాధారణ అభ్యర్థనను వ్రాసాను మరియు అవుట్పుట్ కోసం నేను పైథాన్లో ఒక సాధారణ స్క్రిప్ట్ను వ్రాసాను, నేను ఇలా కూర్చండి:
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 కీతో - స్ట్రీమ్ వెంటనే ఫలితాన్ని ఉత్పత్తి చేసి, పైథాన్లోని పోస్ట్ప్రాసెసర్కి (మొదటి ఉదాహరణ వలె) పంపింది
అంతర్గతంగా, పోస్ట్ప్రాసెసర్ అనేది అవుట్పుట్ను ఫార్మాట్ చేసే ఒక సాధారణ స్థితి యంత్రం
మొత్తంగా, పెద్ద డేటా (0.5TB)పై ఫ్లో మోడ్లో పనిచేసే సంక్లిష్టమైన పైప్లైన్, ముఖ్యమైన వనరులు లేకుండా మరియు సాధారణ పైప్లైన్ మరియు కొన్ని సాధనాల నుండి తయారు చేయబడింది.
మరొక ముఖ్యమైన చిట్కా: టెర్మినల్లో బాగా మరియు ప్రభావవంతంగా పని చేయగలగాలి మరియు bash/zsh/ etc.
అది ఎక్కడ ఉపయోగపడుతుంది? అవును, దాదాపు ప్రతిచోటా - మళ్ళీ, ఇంటర్నెట్లో అధ్యయనం చేయడానికి చాలా పదార్థాలు ఉన్నాయి. ముఖ్యంగా, ఇక్కడ ఈ నా మునుపటి వ్యాసం.
R స్క్రిప్టింగ్
మళ్ళీ, రీడర్ ఆశ్చర్యపోవచ్చు - బాగా, ఇది మొత్తం ప్రోగ్రామింగ్ భాష! మరియు వాస్తవానికి, అతను సరిగ్గా ఉంటాడు. అయినప్పటికీ, నేను సాధారణంగా R ని అటువంటి సందర్భంలో ఎదుర్కొన్నాను, వాస్తవానికి ఇది ప్రశ్న భాషని పోలి ఉంటుంది.
R అనేది స్టాటిక్ కంప్యూటింగ్ మరియు విజువలైజేషన్ కోసం స్టాటిస్టికల్ కంప్యూటింగ్ వాతావరణం మరియు భాష (ప్రకారం ఇది).
తీసుకున్న ఇక్కడ నుండి. మార్గం ద్వారా, నేను దానిని సిఫార్సు చేస్తున్నాను, మంచి పదార్థం.
డేటా సైంటిస్ట్ R ఎందుకు తెలుసుకోవాలి? కనీసం, R లో డేటాను విశ్లేషించే IT యేతర వ్యక్తుల యొక్క భారీ లేయర్ ఉన్నందున, నేను దానిని క్రింది ప్రదేశాలలో చూశాను:
ఫార్మాస్యూటికల్ రంగం.
జీవశాస్త్రవేత్తలు.
ఆర్థిక రంగం.
గణాంకాలతో వ్యవహరించే పూర్తిగా గణిత విద్య ఉన్న వ్యక్తులు.
ప్రత్యేక గణాంక నమూనాలు మరియు యంత్ర అభ్యాస నమూనాలు (ఇది తరచుగా రచయిత యొక్క సంస్కరణలో 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 నుండి అనేక ఆలోచనలు డేటాఫ్రేమ్లు మరియు డేటా వెక్టరైజేషన్ వంటి పాండాలు, నంపీ లేదా స్కిపీ వంటి పైథాన్ ప్యాకేజీలలోకి మారాయి - కాబట్టి సాధారణంగా R లోని చాలా విషయాలు మీకు సుపరిచితమైనవి మరియు సౌకర్యవంతంగా కనిపిస్తాయి.
అధ్యయనం చేయడానికి చాలా మూలాలు ఉన్నాయి, ఉదాహరణకు, ఈ.
నాలెడ్జ్ గ్రాఫ్లు
ఇక్కడ నాకు కొంచెం అసాధారణమైన అనుభవం ఉంది, ఎందుకంటే నేను చాలా తరచుగా నాలెడ్జ్ గ్రాఫ్లు మరియు గ్రాఫ్ల కోసం ప్రశ్నల భాషలతో పని చేయాల్సి ఉంటుంది. అందువల్ల, ఈ భాగం కొంచెం అన్యదేశంగా ఉన్నందున, ప్రాథమిక విషయాలపై క్లుప్తంగా వెళ్దాం.
క్లాసికల్ రిలేషనల్ డేటాబేస్లలో మనకు స్థిరమైన స్కీమా ఉంటుంది, కానీ ఇక్కడ స్కీమా అనువైనది, ప్రతి ప్రిడికేట్ వాస్తవానికి “కాలమ్” మరియు ఇంకా ఎక్కువ.
మీరు ఒక వ్యక్తిని మోడలింగ్ చేస్తున్నారని మరియు ముఖ్య విషయాలను వివరించాలనుకుంటున్నారని ఊహించుకోండి, ఉదాహరణకు, డగ్లస్ ఆడమ్స్ అనే నిర్దిష్ట వ్యక్తిని తీసుకుందాం మరియు ఈ వివరణను ప్రాతిపదికగా ఉపయోగిస్తాము.
మేము రిలేషనల్ డేటాబేస్ను ఉపయోగించినట్లయితే, మేము భారీ సంఖ్యలో నిలువు వరుసలతో భారీ పట్టిక లేదా పట్టికలను సృష్టించాలి, వీటిలో చాలా వరకు NULL లేదా కొంత డిఫాల్ట్ తప్పుడు విలువతో నిండి ఉంటాయి, ఉదాహరణకు, మనలో చాలా మందికి ఇది ఉండే అవకాశం లేదు కొరియన్ నేషనల్ లైబ్రరీలో ప్రవేశం - వాస్తవానికి, మేము వాటిని ప్రత్యేక పట్టికలలో ఉంచవచ్చు, అయితే ఇది చివరికి స్థిరమైన రిలేషనల్ని ఉపయోగించి ప్రిడికేట్లతో సౌకర్యవంతమైన లాజికల్ సర్క్యూట్ను మోడల్ చేసే ప్రయత్నం అవుతుంది.
కాబట్టి మొత్తం డేటా గ్రాఫ్గా లేదా బైనరీ మరియు యూనరీ బూలియన్ వ్యక్తీకరణలుగా నిల్వ చేయబడిందని ఊహించండి.
మీరు దీన్ని ఎక్కడ ఎదుర్కోగలరు? మొదట, పని చేయడం డేటా వికీ, మరియు ఏదైనా గ్రాఫ్ డేటాబేస్ లేదా కనెక్ట్ చేయబడిన డేటాతో.
నేను ఉపయోగించిన మరియు పనిచేసిన ప్రధాన ప్రశ్న భాషలు క్రిందివి.
కానీ వాస్తవానికి ఇది లాజికల్ యునరీ మరియు బైనరీ ప్రిడికేట్ల కోసం ప్రశ్న భాష. మీరు బూలియన్ ఎక్స్ప్రెషన్లో ఏది స్థిరపరచబడిందో మరియు ఏది కాదో (చాలా సరళీకృతం చేయబడింది) షరతులతో కూడినదిగా పేర్కొంటున్నారు.
RDF (రిసోర్స్ డిస్క్రిప్షన్ ఫ్రేమ్వర్క్) బేస్, SPARQL క్వెరీలు ఎగ్జిక్యూట్ చేయబడతాయి, ఇది ట్రిపుల్ object, predicate, subject - మరియు క్వెరీ స్పిరిట్లో పేర్కొన్న పరిమితుల ప్రకారం అవసరమైన ట్రిపుల్లను ఎంచుకుంటుంది: p_55(X, q_33) నిజమయ్యే Xని కనుగొనండి - ఇక్కడ, p_55 అనేది ID 55తో ఒక రకమైన సంబంధం, మరియు q_33 అనేది ఒక ID 33తో ఆబ్జెక్ట్ (ఇక్కడ మరియు మొత్తం కథనం, మళ్లీ అన్ని రకాల వివరాలను విస్మరించడం).
నిజానికి, మేము ప్రిడికేట్ కోసం ?కంట్రీ వేరియబుల్ యొక్క విలువను కనుగొనాలనుకుంటున్నాము
సభ్యుడు_యొక్క, మెంబర్_ఆఫ్(?దేశం,q458) మరియు q458 అనేది యూరోపియన్ యూనియన్ యొక్క ID.
పైథాన్ ఇంజిన్ లోపల నిజమైన SPARQL ప్రశ్నకు ఉదాహరణ:
సాధారణంగా, నేను SPARQLని వ్రాయడం కంటే చదవవలసి ఉంటుంది - ఆ పరిస్థితిలో, డేటా ఎలా తిరిగి పొందబడుతుందో అర్థం చేసుకోవడానికి కనీసం ప్రాథమిక స్థాయిలో భాషను అర్థం చేసుకోవడం ఉపయోగకరమైన నైపుణ్యం.
ఆన్లైన్లో అధ్యయనం చేయడానికి చాలా అంశాలు ఉన్నాయి: ఉదాహరణకు, ఇక్కడ ఈ и ఈ. నేను సాధారణంగా నిర్దిష్ట డిజైన్లు మరియు ఉదాహరణలను గూగుల్ చేస్తాను మరియు ప్రస్తుతానికి ఇది సరిపోతుంది.
తార్కిక ప్రశ్న భాషలు
మీరు నా వ్యాసంలో అంశంపై మరింత చదువుకోవచ్చు ఇక్కడ. మరియు ఇక్కడ, ప్రశ్నలను వ్రాయడానికి తార్కిక భాషలు ఎందుకు బాగా సరిపోతాయో మాత్రమే మేము క్లుప్తంగా పరిశీలిస్తాము. ముఖ్యంగా, RDF అనేది p(X) మరియు h(X,Y) ఫారమ్ యొక్క లాజికల్ స్టేట్మెంట్ల సమితి, మరియు తార్కిక ప్రశ్న కింది ఫారమ్ను కలిగి ఉంటుంది:
output(X) :- country(X), member_of(X,“EU”).
ఇక్కడ మేము కొత్త ప్రిడికేట్ అవుట్పుట్/1 (/1 అంటే అనారీ) సృష్టించడం గురించి మాట్లాడుతున్నాము, X కోసం దేశం(X) - అంటే X అనేది ఒక దేశం మరియు సభ్యుడు_of(X,"EU ").
అంటే, ఈ సందర్భంలో, డేటా మరియు నియమాలు రెండూ ఒకే విధంగా ప్రదర్శించబడతాయి, ఇది చాలా సులభంగా మరియు బాగా సమస్యలను మోడల్ చేయడానికి అనుమతిస్తుంది.
ఇండస్ట్రీలో ఎక్కడ కలిశారు?: అటువంటి భాషలో ప్రశ్నలను వ్రాసే కంపెనీతో మొత్తం పెద్ద ప్రాజెక్ట్, అలాగే సిస్టమ్ యొక్క ప్రధాన భాగంలో ఉన్న ప్రస్తుత ప్రాజెక్ట్పై - ఇది చాలా అన్యదేశ విషయం అని అనిపించవచ్చు, కానీ కొన్నిసార్లు ఇది జరుగుతుంది.
లాజికల్ లాంగ్వేజ్ ప్రాసెసింగ్ వికీడేటాలో కోడ్ ఫ్రాగ్మెంట్ యొక్క ఉదాహరణ:
మెటీరియల్స్: ఆధునిక లాజికల్ ప్రోగ్రామింగ్ లాంగ్వేజ్ ఆన్సర్ సెట్ ప్రోగ్రామింగ్కి నేను ఇక్కడ కొన్ని లింక్లను ఇస్తాను - నేను దీన్ని అధ్యయనం చేయమని సిఫార్సు చేస్తున్నాను: