หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว
ฉันกำลังบอกคุณจากประสบการณ์ส่วนตัวว่าอะไรมีประโยชน์ที่ไหนและเมื่อไหร่ เป็นภาพรวมและวิทยานิพนธ์เพื่อให้ชัดเจนว่าคุณสามารถเจาะลึกอะไรและที่ไหนได้บ้าง - แต่ที่นี่ฉันมีประสบการณ์ส่วนตัวโดยเฉพาะบางทีทุกอย่างอาจแตกต่างไปจากเดิมอย่างสิ้นเชิงสำหรับคุณ

เหตุใดการรู้และสามารถใช้ภาษาคิวรีจึงเป็นเรื่องสำคัญ โดยแก่นแท้แล้ว Data Science มีขั้นตอนการทำงานที่สำคัญหลายขั้นตอน และขั้นตอนแรกและสำคัญที่สุด (หากไม่มีขั้นตอนนี้ ก็จะไม่มีอะไรทำงานได้เลย!) คือการได้รับหรือดึงข้อมูล โดยส่วนใหญ่ ข้อมูลจะอยู่ที่ไหนสักแห่งในรูปแบบใดรูปแบบหนึ่ง และจำเป็นต้อง "ดึงข้อมูล" จากที่นั่น 

ภาษาแบบสอบถามช่วยให้คุณสามารถดึงข้อมูลนี้ได้! และวันนี้ฉันจะบอกคุณเกี่ยวกับภาษาแบบสอบถามที่เป็นประโยชน์สำหรับฉันและฉันจะบอกคุณและแสดงให้คุณเห็นว่าที่ไหนและอย่างไร - เหตุใดจึงจำเป็นต้องศึกษา

จะมีประเภทการสืบค้นข้อมูลอยู่สามบล็อกหลัก ซึ่งเราจะกล่าวถึงในบทความนี้:

  • ภาษาคิวรี "มาตรฐาน" คือสิ่งที่เข้าใจกันโดยทั่วไปเมื่อพูดถึงภาษาคิวรี เช่น พีชคณิตเชิงสัมพันธ์หรือ SQL
  • ภาษาคิวรีการเขียนสคริปต์: ตัวอย่างเช่น Python เช่น pandas, numpy หรือการเขียนสคริปต์เชลล์
  • ภาษาสืบค้นกราฟความรู้และฐานข้อมูลกราฟ

ทุกสิ่งที่เขียนที่นี่เป็นเพียงประสบการณ์ส่วนตัว สิ่งที่มีประโยชน์ พร้อมคำอธิบายสถานการณ์และ "เหตุใดจึงจำเป็น" - ทุกคนสามารถลองดูว่าสถานการณ์ที่คล้ายกันจะเกิดขึ้นกับคุณได้อย่างไร และพยายามเตรียมตัวรับล่วงหน้าด้วยการทำความเข้าใจภาษาเหล่านี้ ​​ก่อนที่คุณจะต้องสมัคร(ด่วน)เข้าโครงการหรือแม้แต่เข้าโครงการที่ต้องการ

ภาษาคิวรี "มาตรฐาน"

ภาษาการสืบค้นมาตรฐานนั้นมีความหมายที่ชัดเจนว่าเรามักจะคิดถึงภาษาเหล่านี้เมื่อเราพูดถึงการสืบค้น

พีชคณิตเชิงสัมพันธ์

เหตุใดพีชคณิตเชิงสัมพันธ์จึงจำเป็นในปัจจุบัน เพื่อให้มีความเข้าใจที่ดีว่าเหตุใดภาษาคิวรีจึงมีโครงสร้างในลักษณะใดลักษณะหนึ่งและใช้งานอย่างมีสติ คุณจะต้องเข้าใจแกนกลางที่อยู่เบื้องหลังภาษาเหล่านั้น

พีชคณิตเชิงสัมพันธ์คืออะไร?

คำจำกัดความที่เป็นทางการมีดังนี้ พีชคณิตเชิงสัมพันธ์เป็นระบบปิดของการดำเนินการเกี่ยวกับความสัมพันธ์ในแบบจำลองข้อมูลเชิงสัมพันธ์ เพื่อให้ดูเป็นธรรมชาติมากขึ้นอีกหน่อย นี่คือระบบการดำเนินการบนโต๊ะซึ่งผลลัพธ์จะเป็นตารางเสมอ

ดูการดำเนินการเชิงสัมพันธ์ทั้งหมดได้ใน นี้ บทความจาก Habr - เราจะอธิบายว่าทำไมคุณถึงต้องรู้และมีประโยชน์ตรงไหน

ทำไม?

การเริ่มเข้าใจว่าภาษาคิวรีทั้งหมดเกี่ยวกับอะไรและการดำเนินการใดที่อยู่เบื้องหลังนิพจน์ในภาษาคิวรีเฉพาะมักจะให้ความเข้าใจที่ลึกซึ้งยิ่งขึ้นว่าอะไรทำงานในภาษาคิวรีและอย่างไร

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว
เอามาจาก นี้ บทความ ตัวอย่างของการดำเนินการ: join ซึ่งรวมตาราง

วัสดุการศึกษา:

คอร์สเบื้องต้นดีๆจากสแตนฟอร์ด. โดยทั่วไปมีเนื้อหามากมายเกี่ยวกับพีชคณิตและทฤษฎีเชิงสัมพันธ์ - Coursera, Udacity นอกจากนี้ยังมีเนื้อหาออนไลน์มากมายรวมถึงเนื้อหาที่ดีด้วย หลักสูตรวิชาการ. คำแนะนำส่วนตัวของฉัน: คุณต้องเข้าใจพีชคณิตเชิงสัมพันธ์เป็นอย่างดี - นี่คือพื้นฐานของพื้นฐาน

SQL

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว
เอามาจาก นี้ บทความ

โดยพื้นฐานแล้ว SQL นั้นเป็นการนำพีชคณิตเชิงสัมพันธ์ไปใช้ - ด้วยข้อแม้ที่สำคัญ SQL จึงเป็นการประกาศ! นั่นคือ เมื่อเขียนแบบสอบถามในภาษาพีชคณิตเชิงสัมพันธ์ คุณพูดวิธีคำนวณจริงๆ แต่ด้วย SQL คุณจะระบุสิ่งที่คุณต้องการแยก จากนั้น DBMS จะสร้างนิพจน์ (มีประสิทธิภาพ) ในภาษาของพีชคณิตเชิงสัมพันธ์ ( ความเท่าเทียมกันของพวกเขาเป็นที่รู้จักสำหรับเราในชื่อ ทฤษฎีบทของค็อดด์).

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว
เอามาจาก นี้ บทความ

ทำไม?

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 เกี่ยวข้องกับอะไรโดยทั่วไป มันเป็นภาษาโปรแกรม และไม่เกี่ยวกับการสืบค้นเลย

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว

  • Pandas คือมีดของกองทัพสวิสแห่ง Data Science โดยแท้จริงแล้วมีการเปลี่ยนแปลงข้อมูล การรวมกลุ่ม ฯลฯ จำนวนมหาศาลเกิดขึ้นในนั้น
  • 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/etc เป็นการสืบค้นระดับสูงบางประเภท (แน่นอนว่าคุณสามารถวนลูปในนั้นได้ แต่นี่ไม่ใช่เรื่องปกติสำหรับโค้ด DS ในภาษาเชลล์) มาดูกัน ตัวอย่างง่ายๆ - ฉันจำเป็นต้องทำการแมป QID ของ wikidata และลิงก์แบบเต็มไปยังวิกิภาษารัสเซียและอังกฤษ ด้วยเหตุนี้ฉันจึงเขียนคำของ่ายๆ จากคำสั่งใน 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
  • ภายใน postprocessor เป็นเครื่องสถานะธรรมดาที่จัดรูปแบบเอาต์พุต 

โดยรวมแล้ว ไปป์ไลน์ที่ซับซ้อนที่ทำงานในโหมดโฟลว์บนข้อมูลขนาดใหญ่ (0.5TB) โดยไม่ต้องใช้ทรัพยากรจำนวนมาก และสร้างขึ้นจากไปป์ไลน์ธรรมดาและเครื่องมือสองสามอย่าง

เคล็ดลับสำคัญอีกประการหนึ่ง: สามารถทำงานได้ดีและมีประสิทธิภาพในเทอร์มินัลและเขียน bash/zsh/etc

มันจะมีประโยชน์ที่ไหน? ใช่ เกือบทุกที่ - ขอย้ำอีกครั้งว่ามีสื่อการเรียนรู้มากมายบนอินเทอร์เน็ต โดยเฉพาะที่นี่ นี้ บทความก่อนหน้าของฉัน

การเขียนสคริปต์ R

ผู้อ่านอาจอุทานอีกครั้ง - นี่คือภาษาการเขียนโปรแกรมทั้งหมด! และแน่นอนว่าเขาจะพูดถูก อย่างไรก็ตาม ฉันมักจะพบ R ในบริบทที่จริงๆ แล้ว มันคล้ายกับภาษาคิวรีมาก

R คือสภาพแวดล้อมการประมวลผลทางสถิติและภาษาสำหรับการคำนวณและการแสดงภาพแบบคงที่ (ตาม นี้).

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว
ถ่าย ด้วยเหตุนี้. โดยวิธีการที่ฉันแนะนำวัสดุที่ดี

ทำไม Data Scientist จึงต้องรู้ R? อย่างน้อยก็เนื่องจากมีผู้ที่ไม่ใช่ไอทีจำนวนมากที่วิเคราะห์ข้อมูลใน 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 เช่น dataframes และ data vectorization ดังนั้นโดยทั่วไปแล้ว สิ่งต่างๆ มากมายใน R ดูเหมือนจะคุ้นเคยและสะดวกสำหรับคุณ

มีแหล่งให้ศึกษามากมาย เช่น นี้.

กราฟความรู้

ที่นี่ฉันมีประสบการณ์ที่ผิดปกติเล็กน้อยเพราะฉันมักจะต้องทำงานกับกราฟความรู้และภาษาคิวรีสำหรับกราฟ ดังนั้น เรามาดูข้อมูลพื้นฐานคร่าวๆ กันก่อนดีกว่า เนื่องจากส่วนนี้จะแปลกใหม่กว่าเล็กน้อย

ในฐานข้อมูลเชิงสัมพันธ์แบบคลาสสิก เรามีสคีมาคงที่ แต่ในที่นี้ สคีมามีความยืดหยุ่น แต่ละเพรดิเคตจริงๆ แล้วเป็น “คอลัมน์” และอื่นๆ อีกมากมาย

ลองจินตนาการว่าคุณกำลังสร้างโมเดลบุคคลและต้องการอธิบายสิ่งสำคัญ เช่น ลองพิจารณาบุคคลใดบุคคลหนึ่งอย่าง Douglas Adams และใช้คำอธิบายนี้เป็นพื้นฐาน

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว
www.wikidata.org/wiki/Q42

หากเราใช้ฐานข้อมูลเชิงสัมพันธ์ เราจะต้องสร้างตารางขนาดใหญ่หรือตารางที่มีคอลัมน์จำนวนมาก ซึ่งส่วนใหญ่จะเป็น NULL หรือเติมด้วยค่าเท็จเริ่มต้นบางส่วน ตัวอย่างเช่น ไม่น่าเป็นไปได้ที่พวกเราหลายคนจะมี เข้าสู่หอสมุดแห่งชาติเกาหลี - แน่นอนว่าเราสามารถแยกพวกมันไว้ในตารางแยกกัน แต่ท้ายที่สุดแล้ว นี่จะเป็นความพยายามที่จะสร้างแบบจำลองวงจรลอจิคัลที่ยืดหยุ่นพร้อมเพรดิเคตโดยใช้วงจรเชิงสัมพันธ์แบบตายตัว

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว
ลองจินตนาการว่าข้อมูลทั้งหมดถูกจัดเก็บในรูปแบบกราฟหรือเป็นนิพจน์บูลีนแบบไบนารีและเอกภาค

คุณจะเจอสิ่งนี้ได้ที่ไหน? ประการแรก การทำงานด้วย วิกิข้อมูลและกับฐานข้อมูลกราฟหรือข้อมูลที่เชื่อมต่อ

ต่อไปนี้เป็นภาษาคิวรีหลักที่ฉันใช้และทำงานด้วย

สปาร์คิวแอล

วิกิพีเดีย:
สปาร์คิวแอล (คำย่อแบบเรียกซ้ำ จาก เอ็ง โปรโตคอล SPARQL และภาษาแบบสอบถาม RDF) - ภาษาการสืบค้นข้อมูลซึ่งแสดงโดยโมเดล RDFและ มาตรการ เพื่อส่งคำขอเหล่านี้และตอบกลับ SPARQL คือคำแนะนำ สมาคม W3C และหนึ่งในเทคโนโลยี เว็บความหมาย.

แต่ในความเป็นจริงแล้ว มันเป็นภาษาคิวรีสำหรับเพรดิเคตเชิงตรรกะและไบนารี คุณเพียงระบุเงื่อนไขว่าสิ่งใดได้รับการแก้ไขในนิพจน์บูลีนและสิ่งใดที่ไม่ได้รับการแก้ไข (ง่ายมาก)

RDF (Resource Description Framework) เป็นฐานของตัวเองซึ่งมีการดำเนินการแบบสอบถาม SPARQL นั้นเป็นฐานสาม object, predicate, subject - และการสืบค้นจะเลือกค่าสามเท่าที่ต้องการตามข้อจำกัดที่ระบุในจิตวิญญาณของ: ค้นหา X โดยที่ p_55(X, q_33) เป็นจริง - โดยที่แน่นอนว่า p_55 เป็นความสัมพันธ์บางประเภทกับ ID 55 และ q_33 คือ วัตถุที่มี ID 33 (ที่นี่และเรื่องราวทั้งหมด โดยละเว้นรายละเอียดทุกประเภทอีกครั้ง)

ตัวอย่างการนำเสนอข้อมูล:

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว
รูปภาพและตัวอย่างประเทศต่างๆ ที่นี่ ด้วยเหตุนี้.

ตัวอย่างแบบสอบถามพื้นฐาน

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว

ที่จริงแล้ว เราต้องการค้นหาค่าของตัวแปร ?country เช่นนั้นสำหรับภาคแสดง
member_of เป็นความจริงที่ member_of(?country,q458) และ q458 เป็น ID ของสหภาพยุโรป

ตัวอย่างของแบบสอบถาม SPARQL จริงภายในเอ็นจิ้นหลาม:

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว

โดยปกติแล้ว ฉันต้องอ่าน SPARQL แทนที่จะเขียน ในสถานการณ์นั้น น่าจะเป็นทักษะที่มีประโยชน์ในการทำความเข้าใจภาษาอย่างน้อยในระดับพื้นฐาน เพื่อให้เข้าใจว่าข้อมูลถูกดึงออกมาอย่างไร 

มีสื่อการเรียนออนไลน์มากมาย เช่น ที่นี่ นี้ и นี้. ฉันมักจะค้นหาการออกแบบและตัวอย่างที่เฉพาะเจาะจงใน Google และนั่นก็เพียงพอแล้วสำหรับตอนนี้

ภาษาคิวรีเชิงตรรกะ

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับหัวข้อนี้ได้ในบทความของฉัน ที่นี่. และที่นี่เราจะตรวจสอบสั้น ๆ เท่านั้นว่าเหตุใดภาษาเชิงตรรกะจึงเหมาะสมอย่างยิ่งสำหรับการเขียนแบบสอบถาม โดยพื้นฐานแล้ว RDF เป็นเพียงชุดของคำสั่งเชิงตรรกะในรูปแบบ p(X) และ h(X,Y) และการสืบค้นเชิงตรรกะมีรูปแบบดังต่อไปนี้:

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

ที่นี่เรากำลังพูดถึงการสร้างภาคแสดงเอาต์พุตใหม่/1 (/1 หมายถึงเอกภาค) โดยมีเงื่อนไขว่าสำหรับ X มันเป็นความจริงที่ประเทศ(X) - นั่นคือ X คือประเทศและยัง member_of(X,"EU ")

นั่นคือในกรณีนี้ ทั้งข้อมูลและกฎจะถูกนำเสนอในลักษณะเดียวกัน ซึ่งทำให้เราสามารถจำลองปัญหาได้อย่างง่ายดายและดี

เจอกันในวงการไหนครับ?: โครงการขนาดใหญ่ทั้งหมดกับบริษัทที่เขียนคำสั่งในภาษาดังกล่าวตลอดจนโครงการปัจจุบันในแกนกลางของระบบ - ดูเหมือนว่านี่จะเป็นสิ่งที่ค่อนข้างแปลกใหม่ แต่บางครั้งก็เกิดขึ้น

ตัวอย่างของส่วนย่อยของโค้ดในภาษาตรรกะที่ประมวลผลข้อมูลวิกิ:

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว

สื่อการสอน: ฉันจะให้ลิงก์สองสามรายการไปยังภาษาการเขียนโปรแกรมเชิงตรรกะสมัยใหม่ Answer Set Programming - ฉันแนะนำให้ศึกษามัน:

หมายเหตุนักวิทยาศาสตร์ข้อมูล: การตรวจสอบภาษาของแบบสอบถามข้อมูลเป็นการส่วนตัว

ที่มา: will.com

เพิ่มความคิดเห็น