å人çãªçµéšããããã€ãã©ãã§ãäœã圹ã«ç«ã£ãããã話ãããŸããããã¯æŠèŠãšè«æãªã®ã§ãã©ããããã«è©³ããæãäžããããšãã§ããããæ確ã§ããããããããã§ã¯ç§ãå®å
šã«äž»èŠ³çãªå人çãªçµéšãæã£ãŠããããããããããã¹ãŠãããªãã«ãšã£ãŠå®å
šã«ç°ãªãã§ãããã
ã¯ãšãªèšèªãç¥ãã䜿çšã§ããããã«ãªãããšã¯ãªãéèŠã§ãã?ããŒã¿ ãµã€ãšã³ã¹ã®äžæ žã«ã¯ãããã€ãã®éèŠãªäœæ¥æ®µéããããæåã®æãéèŠãªæ®µé (ããããªããã°äœãæ©èœããŸãã!) ã¯ããŒã¿ã®ååŸãŸãã¯æœåºã§ããã»ãšãã©ã®å ŽåãããŒã¿ã¯äœããã®åœ¢åŒã§ã©ããã«ä¿åãããŠããããããããååŸãããå¿ èŠããããŸãã
ã¯ãšãªèšèªã䜿çšãããšããŸãã«ãã®ããŒã¿ãæœåºã§ããŸãããããŠä»æ¥ã¯ãç§ã«ãšã£ãŠåœ¹ã«ç«ã£ãã¯ãšãªèšèªã«ã€ããŠèª¬æããæ£ç¢ºã«ã©ãã§ã©ã®ããã«åŠç¿ããå¿ èŠãããã®ãââã説æããŸãã
ããŒã¿ ã¯ãšãª ã¿ã€ãã«ã¯ 3 ã€ã®äž»èŠãªãããã¯ãããããã®èšäºã§èª¬æããŸãã
- ãæšæºãã¯ãšãªèšèªã¯ããªã¬ãŒã·ã§ãã«ä»£æ°ã SQL ãªã©ã®ã¯ãšãªèšèªã«ã€ããŠè©±ããšãã«äžè¬çã«ç解ãããŠãããã®ã§ãã
- ã¹ã¯ãªãã ã¯ãšãªèšèª: ããšãã°ãPython ããã³ããnumpyãã·ã§ã« ã¹ã¯ãªãããªã©ã§ãã
- ãã¬ããž ã°ã©ãããã³ã°ã©ã ããŒã¿ããŒã¹ã®ã¯ãšãªèšèªã
ããã«æžãããããšã¯ãã¹ãŠãåãªãå人çãªçµéšã§ãããäœã圹ã«ç«ã£ãããç¶æ³ã®èª¬æãšããªããããå¿
èŠã ã£ãã®ããã瀺ãããã®ã§ãã誰ããåæ§ã®ç¶æ³ãã©ã®ããã«èµ·ããããè©Šãããããã®èšèªãç解ããããšã§äºåã«æºåãè©Šã¿ãããšãã§ããŸãããããžã§ã¯ãã«ïŒç·æ¥ã«ïŒç³è«ããªããã°ãªããªãåããããã¯å¿
èŠãšããããããžã§ã¯ãã«çæããåã«ã
ãæšæºãã¯ãšãªèšèª
æšæºã¯ãšãªèšèªã¯ããŸãã«ç§ãã¡ãã¯ãšãªã«ã€ããŠè©±ããšãã«éåžžèãããããªæå³ã§ã®ãã®ã§ãã
é¢ä¿ä»£æ°
ãªãä»æ¥é¢ä¿ä»£æ°ãå¿ èŠãªã®ã§ãããã?ã¯ãšãªèšèªãç¹å®ã®æ¹æ³ã§æ§é åãããŠããçç±ãããç解ããæèçã«äœ¿çšããã«ã¯ãã¯ãšãªèšèªã®åºç€ãšãªãã³ã¢ãç解ããå¿ èŠããããŸãã
é¢ä¿ä»£æ°ãšã¯äœã§ãã?
æ£åŒãªå®çŸ©ã¯æ¬¡ã®ãšããã§ãããªã¬ãŒã·ã§ãã«ä»£æ°ã¯ããªã¬ãŒã·ã§ãã« ããŒã¿ ã¢ãã«å ã®é¢ä¿ã«å¯Ÿããæäœã®éããã·ã¹ãã ã§ããããå°ã人éãããèšããšãããã¯çµæãåžžã«ããŒãã«ã«ãªããããªããŒãã«ã®æäœã·ã¹ãã ã§ãã
ãã¹ãŠã®ãªã¬ãŒã·ã§ãã«æŒç®ãåç
§
ãªãã§ããïŒ
ã¯ãšãªèšèªãšã¯äœãªã®ããç¹å®ã®ã¯ãšãªèšèªã®åŒã®èåŸã«ã©ã®ãããªæäœãããã®ãââãç解ãå§ãããšãå€ãã®å Žåãã¯ãšãªèšèªã§äœãã©ã®ããã«æ©èœãããã«ã€ããŠããæ·±ãç解ã§ããããã«ãªããŸãã
ããåããã
å匷çšã®ææ:
SQL
ããåããã
SQL ã¯æ¬è³ªçã«ãªã¬ãŒã·ã§ãã«ä»£æ°ã®å®è£
ã§ããéèŠãªæ³šæç¹ããããŸãããSQL ã¯å®£èšåã§ããã€ãŸãããªã¬ãŒã·ã§ãã«ä»£æ°ã®èšèªã§ã¯ãšãªãäœæããå Žåãå®éã«ã¯èšç®æ¹æ³ãæå®ããŸãããSQL ã§ã¯æœåºããããã®ãæå®ãããšãDBMS ããã§ã«ãªã¬ãŒã·ã§ãã«ä»£æ°ã®èšèªã§ (å¹æçãª) åŒãçæããŸã (DBMS ã®ç䟡æ§ã¯ç§ãã¡ã«ã¯æ¬¡ã®ããã«ç¥ãããŠããŸã
ããåããã
ãªãã§ããïŒ
ãªã¬ãŒã·ã§ãã« DBMS: OracleãPostgresãSQL Server ãªã©ã¯äŸç¶ãšããŠäºå®äžã©ãã«ã§ãååšããŠãããããããæäœããå¿ èŠãããå¯èœæ§ãéåžžã«é«ããããSQL ãèªã¿åãã (ãã®å¯èœæ§ã¯éåžžã«é«ã)ãSQL ãæžã蟌ãå¿ èŠããããŸã (å¯èœæ§ãäœãïŒã
äœãèªãã§å匷ããã
äžèšã®åããªã³ã¯ (é¢ä¿ä»£æ°ã«é¢ãã) ã«ãããšãä¿¡ããããªãã»ã©ã®éã®è³æããããŸããäŸãã°ã
ãšããã§NoSQLã£ãŠäœã§ããïŒ
ããNoSQLããšããçšèªã¯å®å
šã«èªç¶çºççã«çãŸãããã®ã§ãããäžè¬ã«åãå
¥ããããŠããå®çŸ©ããã®èåŸã«ããç§åŠçæ©é¢ããªãããšãããäžåºŠåŒ·èª¿ãã䟡å€ããããŸããã察å¿ãã
å®éã人ã ã¯ãå€ãã®åé¡ã解決ããã®ã«å®å šãªãªã¬ãŒã·ã§ãã« ã¢ãã«ã¯å¿ èŠãªãããšã«æ°ã¥ããŸãããç¹ã«ãããã©ãŒãã³ã¹ãéèŠã§ãããéèšã䌎ãç¹å®ã®åçŽãªã¯ãšãªã倧åãå ãããããªåé¡ã§ã¯ãã¡ããªã¯ã¹ãè¿ éã«èšç®ããŠããããããŒã¿ããŒã¹ã«æžã蟌ãããšãéèŠã§ããããŒã¿ããŒã¹ãã»ãšãã©ã®æ©èœã¯ãªã¬ãŒã·ã§ãã«ã§ããããšãå€æããäžèŠã§ããã ãã§ãªãæ害ã§ããããšãå€æããŸããã(ç¹å®ã®ã¿ã¹ã¯ã«ãšã£ãŠ) æãéèŠãªããšã§ããçç£æ§ãå°ç¡ãã«ããã®ã«ããªãäœããæ£èŠåããã®ã§ãããã?
ãŸããå€å žçãªãªã¬ãŒã·ã§ãã« ã¢ãã«ã®åºå®ãããæ°åŠçã¹ããŒãã®ä»£ããã«ãæè»ãªã¹ããŒããå¿ èŠã«ãªãããšããããããŸããããã«ãããã·ã¹ãã ãå±éããŠè¿ éã«äœæ¥ãéå§ããçµæãåŠçããããšãéèŠãªå ŽåããŸãã¯ä¿åãããããŒã¿ã®ã¹ããŒããšçš®é¡ãéèŠãªå Žåã«ãã¢ããªã±ãŒã·ã§ã³éçºãå€§å¹ ã«ç°¡çŽ åãããŸããã¯ããã»ã©éèŠã§ã¯ãããŸããã
ããšãã°ããšãã¹ããŒã ã·ã¹ãã ãäœæããŠãããã¡ã¿æ å ±ãšãšãã«ç¹å®ã®ãã¡ã€ã³ã®æ å ±ãä¿åããããšèããŠããŸãããã¹ãŠã®ãã£ãŒã«ããææ¡ããŠããããã§ã¯ãªããåã¬ã³ãŒãã® JSON ãä¿åããã ããããããŸãããããã«ãããããŒã¿ãæ¡åŒµããããã®éåžžã«æè»ãªç°å¢ãåŸãããŸããã¢ãã«åããŠè¿ éã«å埩ãã - ãããã£ãŠããã®å ŽåãNoSQL ã®æ¹ãããã«å¥œãŸãããããèªã¿ããããªããŸãããšã³ããªã®äŸ (NoSQL ãå¿ èŠãªå Žæã«é©åã«äœ¿çšãããŠããç§ã®ãããžã§ã¯ãã® 1 ã€ãã)ã
{"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 ã·ã¹ãã ã¯ã©ããã培åºçã«åæããŠããããã®ã·ã¹ãã ã®ç 究ãéå§ããå¿ èŠããããŸãã
ã¹ã¯ãªããã¯ãšãªèšèª
æåã¯ãPython ãäžè¬çã«ãããšäœã®é¢ä¿ãããã®ãââãšæããããããããŸãããããã¯ããã°ã©ãã³ã°èšèªã§ãããã¯ãšãªã«é¢ãããã®ã§ã¯ãŸã£ãããããŸããã
- Pandas ã¯æåéãããŒã¿ ãµã€ãšã³ã¹ã®ã¹ã€ã¹ ã¢ãŒã㌠ãã€ãã§ããããã®äžã§èšå€§ãªéã®ããŒã¿å€æãéçŽãªã©ãè¡ãããŸãã
- Numpy - ãã¯ãã«èšç®ãè¡åãç·åœ¢ä»£æ°ãããã«ãããŸãã
- Scipy - ãã®ããã±ãŒãžã«ã¯å€ãã®æ°åŠãç¹ã«çµ±èšãå«ãŸããŠããŸãã
- Jupyter lab - ã©ãããããã«é©ããå€ãã®æ¢çŽ¢çããŒã¿åæ - ç¥ã£ãŠãããšäŸ¿å©ã§ãã
- ãªã¯ãšã¹ã - ãããã¯ãŒã¯ãæäœããŸãã
- Pyspark ã¯ããŒã¿ ãšã³ãžãã¢ã®éã§éåžžã«äººæ°ããããåã«äººæ°ãããããããããããããŸã㯠Spark ãæäœããå¿ èŠãããã§ãããã
- *Selenium - ãµã€ãããªãœãŒã¹ããããŒã¿ãåéããã®ã«éåžžã«åœ¹ç«ã¡ãŸãããå Žåã«ãã£ãŠã¯ããŒã¿ãååŸããä»ã«æ¹æ³ããªãå ŽåããããŸãã
ç§ã®äž»ãªã¢ããã€ã¹ã¯ã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èªäœå
šè¬ã«ã€ããŠ
ã¯ãšãªèšèªãšããŠã®ã·ã§ã«
ç§ããããŸã§é¢ãã£ãŠããããªãã®æ°ã®ããŒã¿åŠçããã³åæãããžã§ã¯ãã¯ãå®éã«ã¯ãPythonãJava ã®ã³ãŒããããã³ã·ã§ã« ã³ãã³ãèªäœãåŒã³åºãã·ã§ã« ã¹ã¯ãªããã§ãããããã£ãŠãäžè¬ã«ãbash/zsh/etc ã®ãã€ãã©ã€ã³ã¯ãããçš®ã®é«ã¬ãã«ã®ã¯ãšãªãšèããããšãã§ããŸã (ãã¡ãããããã«ã«ãŒããè©°ã蟌ãããšãã§ããŸãããããã¯ã·ã§ã«èšèªã® DS ã³ãŒãã§ã¯äžè¬çã§ã¯ãããŸãã)ãç°¡åãªäŸ - ãŠã£ãããŒã¿ã® QID ãããã³ã°ãšããã·ã¢èªãšè±èªã®ãŠã£ããžã®å®å šãªãªã³ã¯ãè¡ãå¿ èŠããããŸããããã®ããã«ã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 filepath - ãã¡ã€ã« ãµã€ãºã«åºã¥ããŠé²è¡ç¶æ³ããŒã衚瀺ãããã®å 容ã次ã«æž¡ããŸãã
- unpigz -c ã¢ãŒã«ã€ãã®äžéšãèªã¿åããããã jq ã«æž¡ããŸã
- jq ãšã㌠- ã¹ããªãŒã ã¯ããã«çµæãçæããããã Python ã®ãã¹ãããã»ããµãŒ (æåã®äŸãšåã) ã«æž¡ããŸãã
- å éšçã«ã¯ããã¹ãããã»ããµã¯åºåããã©ãŒãããããåçŽãªã¹ããŒã ãã·ã³ã§ããã
åèšãããšã倧ããªãªãœãŒã¹ã䜿çšããã«ãåçŽãªãã€ãã©ã€ã³ãšããã€ãã®ããŒã«ã§äœæãããã倧èŠæš¡ãªããŒã¿ (0.5 TB) ã«å¯ŸããŠãã㌠ã¢ãŒãã§åäœããè€éãªãã€ãã©ã€ã³ã§ãã
ãã 1 ã€ã®éèŠãªãã³ã: ã¿ãŒããã«ã§é©åãã€å¹ççã«äœæ¥ããbash/zsh/etc ãäœæã§ããããã«ããããšã§ãã
ã©ãã§åœ¹ã«ç«ã¡ãŸããïŒã¯ããã»ãŒã©ãã«ã§ããããŸããç¹°ãè¿ãã«ãªããŸãããã€ã³ã¿ãŒãããäžã«ã¯å匷ã§ããè³æããããããããŸããç¹ã«ããã§ã¯ã
R ã¹ã¯ãªãã
ç¹°ãè¿ãã«ãªããŸãããèªè ã¯ããå«ã¶ãããããŸãã - ãªãã»ã©ãããã¯ããã°ã©ãã³ã°èšèªãã®ãã®ã !ãããŠãã¡ããã圌ã¯æ£ããã§ããããããããç§ã R ã«ééããã®ã¯ãå®éã«ã¯ã¯ãšãªèšèªã«éåžžã«äŒŒãŠãããããªç¶æ³ã§ããã
R ã¯ãéçã³ã³ãã¥ãŒãã£ã³ã°ãšèŠèŠåã®ããã®çµ±èšã³ã³ãã¥ãŒãã£ã³ã°ç°å¢ããã³èšèªã§ã (
æ®åœ±
ããŒã¿ ãµã€ãšã³ãã£ã¹ãã R ãç¥ãå¿ èŠãããã®ã¯ãªãã§ãã?å°ãªããšãã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 ã®å€ãã®ã¢ã€ãã¢ã¯ãããŒã¿ãã¬ãŒã ãããŒã¿ã®ãã¯ãã«åãªã©ãpandasãnumpyãscipy ãªã©ã® Python ããã±ãŒãžã«ç§»è¡ãããŠããŸãããã®ãããäžè¬ã«ãR ã®å€ãã®æ©èœã¯éŠŽæã¿ãããã䟿å©ã«æãããã§ãããã
ç 究ãã¹ãæ
å ±æºã¯ãããããããŸããããšãã°ã
ãã¬ããžã°ã©ã
ããã§ç§ã¯å°ãçããçµéšãããŸããããã¬ããž ã°ã©ããšã°ã©ãã®ã¯ãšãªèšèªã䜿çšããå¿ èŠãéåžžã«é »ç¹ã«ããããã§ãããããã£ãŠããã®éšåã¯ããå°ãç¹æ®ãªã®ã§ãåºæ¬ãç°¡åã«èª¬æããŸãããã
åŸæ¥ã®ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã§ã¯åºå®ã¹ããŒãããããŸãããããã§ã¯ã¹ããŒããæè»ã§ãããåè¿°èªã¯å®éã«ã¯ãåãããŸãã¯ãã以äžã§ãã
人ç©ãã¢ãã«ã«ããŠéèŠãªããšã説æããããšæ³åããŠãã ãããããšãã°ããã°ã©ã¹ ã¢ãã ã¹ãšããç¹å®ã®äººç©ãåãäžãããã®èª¬æãåºç€ãšããŠäœ¿çšããŠã¿ãŸãããã
ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã䜿çšããå Žåãèšå€§ãªæ°ã®åãå«ã巚倧ãªããŒãã«ãäœæããå¿ èŠããããŸãããã®ã»ãšãã©ã¯ NULL ããããã©ã«ãã® False å€ã§åããããŸããããšãã°ãéåœåœç«å³æžé€šã®ãšã³ã㪠- ãã¡ãããããããå¥ã®ããŒãã«ã«çœ®ãããšãã§ããŸãããããã¯æçµçã«ã¯ãåºå®ãªã¬ãŒã·ã§ãã«åè·¯ã䜿çšããŠè¿°èªãåããæè»ãªè«çåè·¯ãã¢ãã«åããè©Šã¿ã«ãªããŸãã
ãããã£ãŠããã¹ãŠã®ããŒã¿ãã°ã©ããšããŠããŸãã¯ãã€ããªããã³åé
ããŒã«åŒãšããŠä¿åãããŠãããšæ³åããŠãã ããã
ã©ãã§ãããªããšã«ééã§ããã®ã§ããããïŒãŸããäžç·ã«äœæ¥ããã®ã¯ã
以äžã¯ãç§ã䜿çšããäœæ¥ããäž»ãªã¯ãšãªèšèªã§ãã
SPARQL
WikiïŒ
ã¹ããŒã¯ã« (ååž°çãªé åèª ããENGã SPARQL ãããã³ã«ãš RDF ã¯ãšãªèšèªïŒ -ããŒã¿ã¯ãšãªèšèª ãã¢ãã«ã§è¡šãããRDF ãšãããã³ã« ãããã®ãªã¯ãšã¹ããéä¿¡ããããã«å¿çããããã SPARQL ããå§ãã§ãW3C ã³ã³ãœãŒã·ã¢ã ãããŠãã®æè¡ã®äžã€ãã»ãã³ãã£ãã¯ãŠã§ã .
ãããå®éã«ã¯ãããã¯è«ççãªåé ããã³äºé è¿°èªçšã®ã¯ãšãªèšèªã§ããããŒã«åŒã§äœãä¿®æ£ãããäœãä¿®æ£ãããªãããæ¡ä»¶ä»ãã§æå®ããŠããã ãã§ã (éåžžã«åçŽåãããŠããŸã)ã
SPARQL ã¯ãšãªãå®è¡ããã RDF (ãªãœãŒã¹èšè¿°ãã¬ãŒã ã¯ãŒã¯) ããŒã¹èªäœã¯ãããªãã«ã§ãã object, predicate, subject
- ãããŠãã¯ãšãªã¯ç²Ÿç¥ã§æå®ãããå¶éã«åŸã£ãŠå¿
èŠãªããªãã«ãéžæããŸã: p_55(X, q_33) ã true ãšãªã X ãèŠã€ããŸã - ãã¡ãããp_55 㯠ID 55 ãšã®ããçš®ã®é¢ä¿ã§ãããq_33 ã¯ID 33 ã®ãªããžã§ã¯ã (ããã§ãã¹ããŒãªãŒå
šäœã説æããŸããããã§ãããããçš®é¡ã®è©³çŽ°ã¯çç¥ããŸã)ã
ããŒã¿è¡šç€ºã®äŸ:
åœã®åçãšäŸã¯ãã¡ã
åºæ¬çãªã¯ãšãªã®äŸ
å®éãè¿°èªã«å¯ŸããŠæ¬¡ã®ãã㪠?country å€æ°ã®å€ãèŠã€ããããšèããŠããŸãã
member_ofã確ãã« member_of(?country,q458) ããã³ q458 ã¯æ¬§å·é£åã® ID ã§ãã
Python ãšã³ãžã³å ã®å®éã® SPARQL ã¯ãšãªã®äŸ:
éåžžãSPARQL ãæžããããèªãå¿ èŠããããŸãããã®ãããªç¶æ³ã§ã¯ãããŒã¿ãã©ã®ããã«ååŸãããããæ£ç¢ºã«ç解ããããã«ãå°ãªããšãåºæ¬ã¬ãã«ã§ SPARQL èšèªãç解ããããšã圹ç«ã€ã¹ãã«ã«ãªãã§ãããã
ãªã³ã©ã€ã³ã§åŠç¿ã§ããè³æã¯ãããããããŸããããšãã°ããã¡ã
è«çã¯ãšãªèšèª
ãã®ãããã¯ã«ã€ããŠè©³ããã¯ãç§ã®èšäºãã芧ãã ãã
output(X) :- country(X), member_of(X,âEUâ).
ããã§ã¯ãX ã«å¯Ÿã㊠country(X) ã trueãã€ãŸã X ã¯åœã§ããããŸã member_of(X,"EU ") ã§ãããšããæ¡ä»¶ã§ãæ°ããè¿°èªåºå /1 (/1 ã¯åé ãæå³ããŸã) ãäœæããããšã«ã€ããŠè©±ããŠããŸãã
ã€ãŸãããã®å ŽåãããŒã¿ãšã«ãŒã«ã®äž¡æ¹ãåãæ¹æ³ã§æ瀺ããããããåé¡ãéåžžã«ç°¡åãã€é©åã«ã¢ãã«åã§ããŸãã
æ¥çå ã®ã©ãã§ç¥ãåã£ããã§ããïŒ: ãã®ãããªèšèªã§ã¯ãšãªãäœæããäŒç€Ÿãšã®å€§èŠæš¡ãªãããžã§ã¯ãå šäœãããã³ã·ã¹ãã ã®äžæ žã«ããçŸåšã®ãããžã§ã¯ã - ããã¯ããªãçããããšã®ããã«æãããããããŸããããæã èµ·ãããŸãã
ãŠã£ãããŒã¿ãåŠçããè«çèšèªã®ã³ãŒãéšåã®äŸ:
è³æ: ææ°ã®è«çããã°ã©ãã³ã°èšèªãAnswer Set Programmingããžã®ãªã³ã¯ãããã€ã玹ä»ããŸããå匷ããããšããå§ãããŸãã
http://peace.eas.asu.edu/aaai12tutorial/asp-tutorial-aaai.pdf http://ceur-ws.org/Vol-1145/tutorial1.pdf https://www.youtube.com/watch?v=gVQ0bP8zyHw https://www.youtube.com/watch?v=kdcd7Je2glc https://potassco.org/book/ http://potassco.sourceforge.net/teaching.html https://www.cs.uni-potsdam.de/~torsten/Potassco/Tutorials/fmcad12.pdf
åºæïŒ habr.com