กองข้อมูลที่เชื่อมโยง - SPARQL

แบบสอบถาม: SPARQL ส่วนติดต่อผู้ใช้และการประยุกต์ใช้ เชื่อถือ การเข้ารหัสลับ พิสูจน์ ลอจิก Unifying อภิปรัชญา: นกฮูก กฎ: RIF RDF-Schema การแลกเปลี่ยนข้อมูล: RDF XML URI Unicode

เค้าโครง

  • เกี่ยวกับ SPARQL
  • SPARQL พื้นฐาน
    • การนําเสนอ
    • มือบน
  • SPARQL ในชีวิตจริง
    • การนําเสนอ
    • มือบน
  • SPARQL ขั้นสูง
    • การนําเสนอ
    • มือบน

SPARQL คืออะไร?

SPARQL ย่อมาจาก "SPARQL พิธีสารและภาษาของแบบสอบถาม RDF"

นอกเหนือไปจากภาษาของ W3C ได้กำหนดเพิ่มเติม:

  • SPARQL พิธีสารสำหรับ RDF สเปค: จะกำหนดโปรโตคอลระยะไกลสำหรับการออกคำสั่ง SPARQL และรับผล
  • ผลลัพธ์การค้นหา SPARQL ข้อกำหนดรูปแบบ XML: จะกำหนดรูปแบบเอกสาร XML สำหรับการแสดงผลของ SPARQL

ภาษาแบบสอบถามสำหรับ RDF และ RDFS

มีข้อเสนอมากมายสำหรับ RDF และ RDFS ภาษาสอบถาม:

  • RDQL (http://www.w3.org/Submission/2004/SUBM-RDQL-20040109/)
  • ICS-FORTH RQL (http://139.91.183.30:9090/RDF/RQL/) และ SeRQL (http://www.openrdf.org/doc/sesame/users/ch06.html)
  • SPARQL (http://www.w3.org/TR/rdf-sparql-query/)
  • ...

ในหลักสูตรนี้เราจะครอบคลุม SPARQL ซึ่งเป็นคำแนะนำ W3C ปัจจุบันสำหรับการสอบถามข้อมูล RDF

SPARQL 1.1

  • ในหลักสูตรนี้เราจะครอบคลุมมากที่สุดของ SPARQL 1.0 จากปี 2008 และบางส่วนของ SPARQL 1.1
  • มาตรฐานของ SPARQL จะดำเนินการโดย W3C โดยคณะทำงาน SPARQL
  • ข้อมูลเพิ่มเติมเกี่ยวกับการทำงานอย่างต่อเนื่องโดยคณะทำงานนี้สามารถพบได้ที่ http://www.w3.org/2009/sparql/wiki/Main_Page
  • ดู http://www.w3.org/TR/sparql11-query/ สำหรับรุ่นใหม่ของภาษา SPARQL (SPARQL 1.1)

โครงสร้างพื้นฐาน SPARQL - Outline

  • บิตของเว็บ RDF และความหมาย
  • อย่างรวดเร็วก่อนที่รูปแบบที่สาม
  • ส่วนประกอบของแบบสอบถาม SPARQL
    • รูปแบบกราฟ
    • ชนิดของคำสั่ง
    • ปรับเปลี่ยน



อเนกประสงค์

อเนกประสงค์งบเกี่ยวกับสิ่งที่ (ทรัพยากร) โดยใช้ยูริและค่าอักษร


อเนกประสงค์

กราฟ

กราฟกับยูริ

คำนำหน้า

คำศัพท์

แบ่งปันแนวคิดของโดเมน

ใช้ยูริเป็นตัวระบุที่ไม่ซ้ำกัน

กำหนดคุณสมบัติและชั้นเรียน, และอื่น ๆ ....


คำศัพท์ที่รู้จักกันดี

RDF: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

rdfs: <http://www.w3.org/2000/01/rdf-schema#>

foaf: <http://xmlns.com/foaf/0.1/>

DBpedia: <http://dbpedia.org/resource>


ร้านค้าและจุดสิ้นสุดทริปเปิ SPARQL

  • ปลายทาง SPARQL exposes หนึ่งหรือมากกว่าหนึ่งกราฟ
  • HTTP
  • คาดว่าพารามิเตอร์ "แบบสอบถาม" ทั้งที่มีโพสต์หรือ GET กับแบบสอบถามที่เข้ารหัส
  • ไม่มีความสัมพันธ์ที่จำเป็นระหว่างชื่อกราฟและชื่อปลายทาง แต่การปฏิบัติที่ดี

คำถามง่ายๆ

คำถามง่ายๆ

Query ซับซ้อนมากขึ้นเล็กน้อย

Query ซับซ้อนมากขึ้นเล็กน้อย



SELECT ?friend ?friendname WHERE { jwebsp:John foaf:knows ?friend. ?friend foaf:firstname ?friendname }

Query ซับซ้อนมากขึ้นเล็กน้อย

Query ซับซ้อนมากขึ้นเล็กน้อย

โครงสร้างของแบบสอบถาม SPARQL

# ประกาศคำนำหน้า
อดีตคำนำหน้า: <http://example.com/resources/>
....
ชนิดของแบบสอบถามฉาย # # # ชุดคำนิยาม
SELECT? x? y จาก ...

รูปแบบกราฟ #
WHERE {
? XA? y
}

การปรับเปลี่ยนแบบสอบถาม #
ORDER BY? y

คำนำหน้า

น้ำตาลที่เกี่ยวกับการสร้างประโยคเพื่อให้คำสั่งที่สามารถอ่านได้


ตัวอย่าง:

คำนำหน้า: <http://example.com/base/>

คำนำหน้า foaf: <http://xmlns.com/foaf/0.1/>

<http://xmlns.com/foaf/0.1/knows> == foaf: รู้

<http://example.com/base/Tim> ==: ทิม

ประเภทแบบสอบถาม

SELECT

  • ตารางผลตอบแทนที่ได้ผล

ASK

  • ผลตอบแทน (boolean) จริงถ้ารูปแบบที่สามารถจับคู่

สรรค์สร้าง

  • สร้างโดยใช้แม่แบบอเนกประสงค์

อธิบาย

  • รายละเอียดผลตอบแทนของทรัพยากร

จากประโยค

ระบุที่กราฟควรพิจารณาโดยปลายทาง

  • ถ้ามองข้ามกราฟเริ่มต้นที่เรียกว่าถูกนำมาใช้
  • ถ้าระบุแบบสอบถามที่มีการประเมินโดยใช้กราฟที่กำหนดทั้งหมด
  • ถ้าเป็นกราฟระบุชื่อกราฟชื่อสามารถนำมาใช้ในส่วนของแบบสอบถาม

กราฟสามารถ dereferenced โดยปลายทาง SPARQL

การปรับเปลี่ยนวิธีการแก้ปัญหา

เปลี่ยนผลของแบบสอบถาม

จำกัด และ OFFSET ชิ้น resultset มีประโยชน์สำหรับการให้เลขหน้า

ตัวอย่างเช่น SELECT * WHERE {..... } 10 LIMIT

-> แสดงผลเพียง 10

ORDER BY ทุกประเภทชุดผลลัพธ์

ตัวอย่างเช่น: LIMIT SELECT * WHERE {..... } ORDER BY ASC (... ) 10

-> แสดง 10 อันดับแรกของชุดผลลัพธ์เรียง

ข้อที่

  • มีรูปแบบกราฟ
  • ซึ่งเชื่อมต่อ
  • ตัวแปรที่ถูกผูกไว้กับค่าเดียวกัน

รูปแบบที่สาม

  • รูปแบบทั่วไปสาม (SPO)
  • ในตำแหน่งตัวแปรทั้งหมดที่อาจเกิดขึ้น
  • ตัวแปรที่จะผูกพันตามปลายทาง SPARQL



รูปแบบ Triple Room - ตัวอย่าง

: จอห์น foaf: รู้: ทิม
: จอห์น foaf: ชื่อ "จอห์น"
: ทิม foaf: รู้: จอห์น

: ทิม foaf: ชื่อ "ทิม"

เลือกชื่อที่ไหน? {: ชื่อ: จอห์น foaf}
-> "จอห์น"

SELECT เพื่อนที่ไหน? {: จอห์น foaf: รู้ว่าเพื่อน}
->: ทิม

SELECT เพื่อนชื่อที่ {:? จอห์น foaf: รู้ว่าเพื่อน : จอห์น foaf: ชื่อ}
->: ทิม "จอห์น"

SELECT friendsname WHERE {: จอห์น foaf: รู้ว่าเพื่อน ? foaf เพื่อน: ชื่อ}
-> "ทิม"


รูปแบบ Triple Room - ผลิตภัณฑ์ Cartesian

: จอห์น foaf: รู้: ทิม
: จอห์น foaf: ชื่อ "จอห์น"
: ทิม foaf: รู้: จอห์น
: ทิม foaf: ชื่อ "ทิม"

? เลือกบุคคล friendsname WHERE {foaf คนที่:? รู้ว่าเพื่อน ? foaf คน: friendsname ชื่อ}


: จอห์น "จอห์น"
: จอห์น "ทิม"
: ทิม "จอห์น"
: ทิม "ทิม"

ทรัพยากร Matching

ตรงกับตัวอักษรตามตัวอักษร

ทั้งที่มีคำนำหน้าหรือ <URI> เต็ม

  • foaf: ชื่อ <http://xmlns.com/foaf/spec/name> ==

เปอร์เซ็นต์ของการเข้ารหัสอักษร (เช่นพื้นที่)

  • myns: 20Doe% จอห์น = myns: John Doe | ข้อผิดพลาด!

กรณีที่สำคัญ

  • foaf: name = <http://xmlns.com/foaf/spec/Name>

ตัวอักษรที่ตรงกัน

ตัวอักษรต้องตรงกับความเท่าเทียมกันทางตัวอักษรตามตัวอักษร

  • สามารถมีประเภทข้อมูล: XSD: int, XSD วัน
    • เครื่องยนต์ SPARQL อาจทราบความหมายของประเภทข้อมูล
    • เพื่อความเท่าเทียมกันจะต้องตรงกับ
  • สามารถมีแท็กภาษา


กรอง

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

ภาพรวมการกรอง

  • ตรรกะ: &&, | |
  • คณิตศาสตร์: +, -, *, /
  • เปรียบเทียบ: =, =,>, <, ...
  • การทดสอบ SPARQL: isURI, ISBLANK, isLiteral, ผูกพัน
  • accessors SPARQL: Str, lang, ประเภทข้อมูลอื่น ๆ : langMatches sameTerm, regex
  • ผู้ขายที่เฉพาะเจาะจง: คำนำหน้าเช่น BIF: มี

กรองสตริง

Str () เพียงแค่มูลค่าที่แท้จริงโดยไม่ต้องประเภทข้อมูล

regex ​​() นิพจน์ปกติเต็มรูปแบบ

BIF: ประกอบด้วยสตริงการค้นหาโดยใช้ดัชนีพิเศษ

สตริงตัวอย่างการกรอง

: จอห์น: อายุ 32
: จอห์น foaf: ชื่อ "จอห์น" @ en
: ทิม: อายุ 20

: ทิม foaf: ชื่อ "ทิม" ^ ^ XSD: สตริง


SELECT เพื่อน {foaf เพื่อน: ชื่อ "ทิม".}

-> ที่ว่างเปล่า

SELECT เพื่อน {foaf เพื่อน: ชื่อ?
FILTER str ((ชื่อ?) = "ทิม")}

->: ทิม

SELECT เพื่อน {foaf เพื่อน: ชื่อ? ? ชื่อ BIF: ประกอบด้วย "im")}

->: ทิม

ภาษาและประเภทข้อมูลการกรอง

lang accessor ​​(x) กับภาษาของตัวอักษร

langMatches (lang (x), "en") ประเมินถ้าแท็กภาษาที่ตรงกับแท็กภาษาอื่น ๆ

ประเภทข้อมูล (x) เข้าใช้งานประเภทข้อมูลของตัวอักษร? x

การกรองตัวเลข

: จอห์น: อายุ 32
: จอห์น foaf: ชื่อ "จอห์น" @ en
: ทิม: อายุ 20

: ทิม foaf: ชื่อ "ทิม" ^ ^ XSD: สตริง

SELECT เพื่อน WHERE {เพื่อน:? อายุ?
FILTER (อายุ?> 25)}

->: จอห์น

ดำเนินการเชิงตรรกะ

: จอห์น: อายุ 32
: จอห์น foaf: ชื่อ "จอห์น" @ en
: ทิม: อายุ 20

: ทิม foaf: ชื่อ "ทิม" ^ ^ XSD: สตริง

SELECT เพื่อน {foaf เพื่อน: ชื่อ?

FILTER str ((ชื่อ?) = "ทิม"? &&> อายุ 25)}

-> โมฆะ

SELECT เพื่อน {foaf เพื่อน: ชื่อ?
FILTER str (ชื่อ () = "ทิม" |? |? อายุ> 25)}

->: ทิม
->: จอห์น

ค่าตัวเลือก

  • ที่คล้ายกันไปทางซ้ายเข้าร่วมใน SQL
  • ช่วยให้มีการสอบถามสำหรับข้อมูลที่ไม่สมบูรณ์
  • เลือกใช้รูปแบบกราฟเต็ม
  • ไวยากรณ์ {} pattern1 เสริม {optpattern}

ตัวอย่างที่เป็นตัวเลือก

: จอห์น foaf: รู้: ทิม
: จอห์น foaf: ชื่อ "จอห์น"
: จอห์น foaf: โทรศัพท์ "123456"
: ทิม foaf: รู้: จอห์น

: ทิม foaf: ชื่อ "ทิม"

SELECT? ชื่ออะไร? โทรศัพท์
ชื่อ: {foaf บุคคล?
foaf คนที่: โทรศัพท์โทรศัพท์}?

-> "จอห์น" "123456"

นี้เป็นบิตพอใจ

ตัวอย่างที่เป็นตัวเลือก

: จอห์น foaf: รู้: ทิม
: จอห์น foaf: ชื่อ "จอห์น"
: จอห์น foaf: โทรศัพท์ "123456"
: ทิม foaf: รู้: จอห์น

: ทิม foaf: ชื่อ "ทิม"

เลือกชื่อโทรศัพท์ {ผู้ foaf:? ชื่อ?
ตัวเลือก {foaf คนที่:? โทรศัพท์โทรศัพท์}}
-> "จอห์น" "123456"
-> "ทิม"


สหภาพ

ไวยากรณ์ {กราฟรูปแบบ} {ยูเนี่ยนรูปแบบกราฟ}

ช่วยให้การสอบถาม (บางส่วน) โครงสร้างข้อมูลที่แตกต่างกัน

ตัวอย่างยูเนี่ยน

: จอห์น RDF: ประเภท foaf: คน
: จอห์น foaf: ชื่อ "จอห์น"
: ทิม RDF: ประเภท foaf: คน
: ทิม foaf: ชื่อ "ทิม"
: เจน RDF: ประเภท foaf: คน

: เจน rdfs: ฉลาก "เจน"

เลือกชื่อ WHERE {ผู้ foaf:? คน ? foaf บุคคล: ชื่อ}

-> "จอห์น"
-> "ทิม"

เลือกชื่อ WHERE {ผู้ foaf:? คน
{foaf คนที่:? ชื่อยูเนี่ยน} {? rdfs คนที่: ป้ายชื่อ}}

-> "จอห์น"
-> "ทิม"
-> "เจน"

SELECT? ชื่อที่ {
{foaf คนที่:?. ชื่อชื่อของบุคคล foaf: คน ?} ยูเนี่ยน {rdfs บุคคล: ทำป้ายชื่อของบุคคล foaf:. คน   }}


เงื้อม

WHERE SELECT * {..... }

-> ตัวแปรทั้งหมดที่กล่าวถึงในรูปแบบกราฟ

SELECT หรือไม่? o {WHERE หรือไม่? P o}

- ตัวแปร> เฉพาะที่ระบุไว้ในกรณีนี้และ o?

SELECT DISTINCT ........

-> eleminates ซ้ำกันในผลที่ตามมา

นับ

ฟังก์ชันการรวมง่าย

นับความถี่ที่ตัวแปรที่ถูกผูกไว้

ตัวอย่าง:

: จอห์น foaf: รู้: ทิม
: จอห์น foaf: ชื่อ "จอห์น"
: ทิม foaf: รู้: จอห์น

: ทิม foaf: ชื่อ "ทิม"

นับเลือก (คนที่?) {foaf บุคคล: ชื่อ?}

-> 2

SPARQL ในชีวิตจริง - Outline

  • เราใช้ความรู้ ackquired ก่อนหน้านี้สำหรับ
    • การสำรวจข้อมูลที่ไม่รู้จักโครงสร้างและคำศัพท์
    • สอบถามข้อมูลที่ไม่สอดคล้องกันโครงสร้าง


บางจุดสิ้นสุด SPARQL สาธารณะ

SPARQLer : ปลายทางแบบสอบถามวัตถุประสงค์ทั่วไปสำหรับข้อมูลบนเว็บที่สามารถเข้าถึงได้

DBpedia : กว้างขวาง RDF ข้อมูลจากวิกิพีเดีย

DBLP : ข้อมูลบรรณานุกรมจากวารสารวิทยาศาสตร์คอมพิวเตอร์และการประชุม

LMDB : ข้อมูลจาก MDB - ฐานข้อมูลภาพยนตร์ (ไม่มีรูปแบบ html)

World Factbook : สถิติประเทศจากซีไอเอ World Factbook

เกี่ยวกับ DBpedia

จุดตกผลึกของเว็บแบบ Semantic

โสดแหล่งข้อมูลที่สำคัญที่สุด

ความพยายามของชุมชน

สารสกัดจากข้อมูลกึ่งโครงสร้างในวิกิพีเดีย

เนื้อหาที่ไม่ curated



ทราบข้อ จำกัด ของคุณ!

ปลายทาง DBpedia นิยมและเป็นที่ใช้

มักจะเพิ่มงบ LIMIT, เมื่อสร้างคำสั่ง

สำรวจคำศัพท์

การสำรวจโดยการตรวจสอบข้อมูลเช่น

  • ค้นหาข้อมูลรายละเอียดเกี่ยวกับข้อมูล
  • ใช้เครื่องมือ
  • วิเคราะห์การถ่ายโอนข้อมูลแบบสอบถาม
  • URI dereference
  • แบบสอบถาม

ข้อมูลรายละเอียด

สิ่งพิมพ์ชุดข้อมูลได้มากที่สุด decribing พวกเขา

ค้นหาเอกสารเกี่ยวกับพวกเขาโดยใช้ scholar.google.com


เครื่องมือค้นหาความสัมพันธ์

http://www.visualdataweb.org/relfinder.php

URIs dereference

หลักการเชื่อมโยงข้อมูลให้ dereferencing ยูริสจะได้รับการ decriptions

ข้อมูลอินสแตนซ์ที่เมืองไลพซิก

-> http://dbpedia.org/resource/Leipzig

ข้อมูลเกี่ยวกับคำศัพท์ foaf: ชื่อ

-> http://xmlns.com/foaf/0.1/name


สอบถาม

อธิบาย <http://dbpedia.org/resource/Leipzig>

SELECT? p? o WHERE {<http://dbpedia.org/resource/Leipzig>? p? o}


? คำสั่ง p

ในแบบสอบถามที่มีตัวแปรในตำแหน่งกริยาของรูปแบบสาม

? คำสั่ง p - ตัวอย่าง

: จอห์น foaf: ชื่อ "จอห์น"
: จอห์น rdfs: ฉลาก "นี่คือจอห์น"
: จอห์น foaf: โทรศัพท์ "12312"


SELECT P o ที่ไหน? {:? จอห์น P o}

-> foaf: ชื่อ "จอห์น"
- rdfs>: ฉลาก "นี่คือจอห์น"
- foaf>: โทรศัพท์ "12312"


มีการสอบถามสำหรับชั้นเรียน

คำศัพท์ที่กำหนดระดับชั้น

  • foaf: คน
  • foaf: เอกสาร

RDF: ประเภท / ร่วมกับชั้นเรียนเช่น

  • : จอห์น foaf: == คน: คน: จอห์น RDF: ประเภท foaf


มีการสอบถามสำหรับชั้นเรียน - ตัวอย่าง

: จอห์น foaf: คน
: ดาวพลูโตสัตว์: สุนัข

เลือกบุคคลที่ไหน? {คน foaf: คน}

->: จอห์น

SELECT? ชั้น WHERE {? เช่นคลาส}

- foaf>: คน
- สัตว์>: สุนัข


บางจุดสิ้นสุด SPARQL สาธารณะ

SPARQLer : ปลายทางแบบสอบถามวัตถุประสงค์ทั่วไปสำหรับข้อมูลบนเว็บที่สามารถเข้าถึงได้

DBpedia : กว้างขวาง RDF ข้อมูลจากวิกิพีเดีย

DBLP : ข้อมูลบรรณานุกรมจากวารสารวิทยาศาสตร์คอมพิวเตอร์และการประชุม

LMDB : ข้อมูลจาก MDB - ฐานข้อมูลภาพยนตร์ (ไม่มีรูปแบบ html)

World Factbook : สถิติประเทศจากซีไอเอ World Factbook

ประเภท

รับทุกประเภทเป็นไปได้ของแนวคิดใน DBpedia

ประเภท

เลือกประเภทที่แตกต่างกัน?

WHERE {
ประเภทของ EA?
}

คุณสมบัติของรายการ

รับคุณสมบัติทั้งหมดของชั้นนักแสดงนำชาย แสดงนอกจากนี้ยังมีชื่อของพวกเขา

รายการของคุณสมบัติ

เลือกที่แตกต่างกัน? p? ชื่อ

WHERE {
? rdfs p: ป้ายชื่อ?
? <http://dbpedia.org/ontology/Actor> EA
? e? p? วี
}

การทำงานกับ DBpedia หน้า

มองผ่าน อีวานแย่มาก หน้า DBpedia คุณสมบัติอะไรที่คุณอาจใช้เพื่อให้ได้รายชื่อของผู้นำรัสเซีย

ตรวจสอบข้อเสนอแนะของคุณโดยใช้ ปลายทาง DBpedia

การทำงานกับหน้า DBpedia

SELECT? e
WHERE {
? dcterms e: หมวดหมู่เรื่อง: Russian_leaders
}

SELECT? e
WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
}

...

COUNT

เปรียบเทียบปริมาณของผลการใช้ฟังก์ชัน COUNT รวม

COUNT

นับเลือก (e)

WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
}

รูปแบบหลาย ๆ

เปลี่ยนแบบสอบถามก่อนหน้านี้เพื่อแสดงยังเป็นชื่อที่แท้จริงของผู้นำ

รูปแบบหลาย ๆ

SELECT? e? ชื่อ
WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
ชื่อ: dbpprop e?

}

รุ่นที่ดีกว่า:

SELECT? e? ชื่อ
WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?
}

LIMIT

แสดงเฉพาะ 20 รายการแรก แล้วแสดงถัดไป 20 เปลี่ยน OFFSET ถึง 10

LIMIT

SELECT? e? ชื่อ

WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?
}

20 LIMIT
OFFSET 10

FILTER

กรองรายการและแสดงผลเฉพาะ Ivan_the_Terrible

FILTER

SELECT? e? ชื่อ
WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?

FILTER (? E = <http://dbpedia.org/resource/Ivan_the_Terrible>)
}

สตริงที่จับคู่

แสดงรายการของผู้นำรัสเซียทั้งหมดที่มีชื่อ "อีวาน"

จับคู่สาย

SELECT? e? ชื่อ
WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?

FILTER regex ​​(ชื่อ? "อีวาน", "i")
}

Langmatching

แสดงรายการของผู้นำรัสเซียที่มีป้ายชื่อเฉพาะรัสเซีย

Langmatching

SELECT? e? ชื่อ
WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?

FILTER (langMatches (lang (ชื่อ), "EN"))
}

คุณสมบัติของการเลือกที่จะแสดง

เขียนแบบสอบถามก่อนหน้านี้เพื่อแสดงรายการชื่อชื่อของบรรพบุรุษและชื่อของผู้สืบทอด

การเลือกคุณสมบัติที่จะแสดง

SELECT? ชื่อ? predecessor_name? successor_name
WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?
ทายาทผู้สืบทอด: e-DBpedia นกฮูก?
? rdfs ตัวตายตัวแทน: ฉลาก successor_name?
dbpprop e: บรรพบุรุษบรรพบุรุษ?
? rdfs บรรพบุรุษ: ฉลาก predecessor_name?
FILTER (langMatches (lang (ชื่อ), "EN") langMatches && (lang (? successor_name), "EN") langMatches && (lang (? predecessor_name), "EN"))
}

การปฏิบัติเพิ่มเติม

ค้นหาชื่อที่แท้จริงของผู้นำรัสเซียซึ่งเป็นบนบัลลังก์ขวาก่อนที่แคทเธอรี I ("แคเธอรีนแห่งรัสเซียผม" @ TH)

คุณสามารถหาวิธีอื่นที่จะทำงานเดียวกัน?

การปฏิบัติเพิ่มเติม

SELECT? ชื่อ
WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?
ทายาทผู้สืบทอด: e-DBpedia นกฮูก?
? rdfs ตัวตายตัวแทน: ฉลาก "แคเธอรีนแห่งรัสเซียผม" @ en

} หรือ

SELECT? ชื่อเป็น? ผู้นำ
WHERE {
dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?
ทายาทผู้สืบทอด: e-DBpedia นกฮูก?
? rdfs ตัวตายตัวแทน: ฉลาก successor_name?
FILTER (? successor_name = "แคเธอรีนแห่งรัสเซียผม" @ TH)
}

optionals

มองไปที่หน้า: http://dbpedia.org/page/Dmitry_of_Suzdal

ทำไมผู้นำนี้ไม่ได้อยู่ในผลของคำสั่งก่อนหน้านี้?

แก้ไขปัญหาที่เกิดขึ้น

optionals

SELECT successor_name? e? ชื่อ? predecessor_name?
WHERE {dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?
FILTER (langMatches (lang (ชื่อ), "EN"))
ตัวเลือก {e-DBpedia นกฮูก: ทายาทผู้สืบทอด?
? rdfs ตัวตายตัวแทน: ฉลาก successor_name?
FILTER (langMatches (lang (? successor_name), "EN"))
}
ตัวเลือก {dbpprop e: บรรพบุรุษบรรพบุรุษ?
? rdfs บรรพบุรุษ: ฉลาก predecessor_name?
FILTER (langMatches (lang (? predecessor_name), "EN"))
}
}

สหภาพแรงงาน

ดูที่ http://dbpedia.org/page/Dmitry_of_Suzdal หน้าอย่างระมัดระวังมากขึ้น สิ่งที่คุณสามารถพูดเกี่ยวกับผู้สืบทอดและบรรพบุรุษของผู้นำ?

แก้ไขปัญหาที่เกิดขึ้น

สหภาพแรงงาน

SELECT successor_name? e? ชื่อ? predecessor_name?
WHERE {dbpprop e: ชื่อ DBpedia: List_of_Russian_rulers
? rdfs e: ทำป้ายชื่อ?
FILTER (langMatches (lang (ชื่อ), "EN"))
ตัวเลือก {{e-DBpedia นกฮูก:? ทายาทผู้สืบทอดยูเนี่ยน} {dbpprop e: หลังจากสืบ}?
? rdfs ตัวตายตัวแทน: ฉลาก successor_name?
FILTER (langMatches (lang (? successor_name), "EN"))
}
ตัวเลือก {{dbpprop e:? บรรพบุรุษบรรพบุรุษยูเนี่ยน} {dbpprop e: ก่อนที่บรรพบุรุษ}?
? rdfs บรรพบุรุษ: ฉลาก predecessor_name?
FILTER (langMatches (lang (? predecessor_name), "EN"))
}
}

งานสุดท้าย

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

ชนิดแบบสอบถามอื่น ๆ

สรรค์สร้าง

-> สร้างกราฟโดยตัวแปรที่มีผลผูกพันในแม่แบบ

ASK

-> ส่งกลับค่าบูลีนถ้ารูปแบบที่สามารถพบได้

อธิบาย

-> ให้คำอธิบายสั้น ๆ เกี่ยวกับทรัพยากรบางอย่าง


ประเภทอื่น ๆ ตัวอย่าง Query

: จอห์น foaf: รู้: ทิม
: จอห์น foaf: ชื่อ "จอห์น"
: จอห์น foaf: โทรศัพท์ "123456"
: ทิม foaf: รู้: จอห์น
: ทิม foaf: ชื่อ "ทิม"

สรรค์สร้าง {foaf บุคคล: ชื่อ? foaf คนที่: โทรศัพท์โทรศัพท์}?
ชื่อ: {foaf บุคคล? foaf คนที่: โทรศัพท์โทรศัพท์}?


->: จอห์น foaf: ชื่อ "จอห์น"
->: จอห์น foaf: โทรศัพท์ "123456"


ประเภทอื่น ๆ ตัวอย่าง Query

: จอห์น foaf: รู้: ทิม
: จอห์น foaf: ชื่อ "จอห์น"
: จอห์น foaf: โทรศัพท์ "123456"
: ทิม foaf: รู้: จอห์น
: ทิม foaf: ชื่อ "ทิม"

อธิบายคนที่ WHERE {foaf บุคคล: ชื่อ? foaf คนที่: โทรศัพท์โทรศัพท์}?

->: จอห์น foaf: ชื่อ "จอห์น"
->: จอห์น foaf: โทรศัพท์ "123456"


ประเภทอื่น ๆ ตัวอย่าง Query

: จอห์น foaf: รู้: ทิม
: จอห์น foaf: ชื่อ "จอห์น"
: จอห์น foaf: โทรศัพท์ "123456"
: ทิม foaf: รู้: จอห์น
: ทิม foaf: ชื่อ "ทิม"

ชื่อ: ASK {foaf บุคคล? foaf คนที่: โทรศัพท์โทรศัพท์}?
-> จริง


ฟังก์ชันการรวม

ฟังก์ชันการรวมที่คล้ายกับ SQL ถูกนำมาใช้กับ SPARQL 1.1

นาทีสิ่งที่สำคัญที่สุด, สูงสุด, Avg Sum, Count

กลุ่มโดยกลุ่มผลตามจำเป็นสำหรับการฉาย


ฟังก์ชั่นรวม - ตัวอย่าง

: จอห์น: อายุ 32
: จอห์นเพศ: ชาย
: ทิม: อายุ 20
: ทิมเพศ: ชาย
: เจนเพศ: หญิง

: เจน: อายุ 23

SELECT เฉลี่ย WHERE (อายุ?) {คนที่:? อายุ}

-> 25

เลือกเพศนาที WHERE {บุคคล (อายุ?) อายุ? บุคคล: เพศเพศ} GROUP BY เพศ?

->: ชาย 20
->: หญิง 23

Grahps ชื่อ

อนุญาตให้มีการควบคุมเพิ่มเติมเกี่ยวกับกราฟที่สามมาจาก

SELECT *
จาก <http://mygraph.example/> ตั้งชื่อ
WHERE {กราฟกรัม {s หรือไม่? p? o}}

-> <http://mygraph.example/> <S> <p> <o>

กราฟ Named - ตัวอย่าง

SELECT? g? o? p2? o2
จาก <http://www.w3.org/People/Berners-Lee/card.rdf>
จาก <http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf> ตั้งชื่อ
{s หรือไม่? p? o
กราฟกรัม {o? p2? o2}}

-> รายการใหญ่ของอเนกประสงค์

แบบสอบถามย่อยที่มีจากประโยค

subqueries ในราคาถูก:

  1. เขียนแบบสอบถามที่คุณต้องการใช้เป็นพื้นฐานเป็นแบบสอบถามสร้าง
  2. URL เข้ารหัส
  3. สร้างแบบสอบถามอื่น ๆ
  4. ใส่ปลายทางสำหรับแรก + แบบสอบถามที่เข้ารหัสในข้อ FROM ของแบบสอบถามอื่น ๆ


-> * เลือกจาก <http://dbpedia.org/sparql?query=SELECT%20....>



การปฏิเสธ

คำถาม: วิธีการหารายชื่อทั้งหมดที่ไม่ได้มีหมายเลขโทรศัพท์


ใช้การรวมกันของไม่ได้ถูกผูกไว้และตัวเลือก!

ตัวอย่างการปฏิเสธ

: จอห์น foaf: รู้: ทิม
: จอห์น foaf: ชื่อ "จอห์น"
: จอห์น foaf: โทรศัพท์ "123456"
: ทิม foaf: รู้: จอห์น

: ทิม foaf: ชื่อ "ทิม"

โทรศัพท์ SELECT? ชื่อ {
ชื่อ: foaf บุคคล?
ตัวเลือก {foaf คนที่:? โทรศัพท์โทรศัพท์}
FILTER (! จำกัด (โทรศัพท์?))}

-> ทิม

สหพันธ์แบบสอบถาม

คำหลักที่ช่วยให้บริการสหพันธ์ระหว่าง endpoints SPARQL หลาย

endpoints กระจายแบบสอบถาม

เหตุผลและ SPARQL

เหตุผลที่ไม่ได้เป็นคุณลักษณะ SPARQL

เหตุผลบางอย่างที่สามารถจำลองด้วย SPARQL

ที่ขาดหายไปของสมาคมโดยตรงกับชั้นเรียนผู้ปกครองสามารถสอบถามได้ที่มีรูปแบบเช่น

{rdfs ย่อย:? subClassof ผู้ปกครอง
? subsub rdfs: subClassOf ย่อย ... }

เส้นทางที่ให้บริการ

ทั้งที่เกี่ยวกับการสร้างประโยคน้ำตาล:

? บุคคล foaf: รู้ / foaf: ชื่อ ==

? บุคคล foaf: รู้ว่าเพื่อน? ชื่อ: foaf เพื่อน?

หรือสำรวจตรวจ:

? x foaf: รู้ + / foaf: ชื่อ






ข้อซักถามและพีชคณิต

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

ตัวอย่าง:

เลือก * {s หรือไม่? p? o FILTER (p = foaf:? && o ชื่อ = "แองเจลาเมอร์เค" @ TH)}

เลือก * {foaf s: ชื่อ "แองเจลาเมอร์เค" @ en}


พีชคณิต

PREFIX  foaf: <http://xmlns.com/foaf/spec/>

SELECT  *
WHERE
  { ?s foaf:name "Angela Merkel"@en }
คอมไพล์เป็น
  1 (base <http://example/base/>
  2   (prefix ((foaf: <http://xmlns.com/foaf/spec/>))
  3     (bgp (triple ?s foaf:name "Angela Merkel"@en))))


พีชคณิต

PREFIX  foaf: <http://xmlns.com/foaf/spec/>

SELECT  *
WHERE
  { ?s ?p ?o
    FILTER ( ( ?p = foaf:name ) && ( ?o = "Angela                                    Merkel"@en ) )
  }

คอมไพล์เป็น

(base <http://example/base/>
  (prefix ((foaf: <http://xmlns.com/foaf/spec/>))
    (filter (&& (= ?p foaf:name) (= ?o "Angela                                     Merkel"@en))
      (bgp (triple ?s ?p ?o)))))

การประเมินผล

  • คำสั่ง SPARQL มีการประเมินซ้ำที่เริ่มต้นจากรูปแบบที่สาม (โหนดใบ)
  • ชุดผลกลางจะสร้าง

การใช้งานของดัชนีสำหรับ:

  • ทรัพยากร
  • ตัวอักษร

แต่ไม่ใช่สำหรับ:

  • regex
  • ฟังก์ชันการรวม

แทนที่จะพิจารณา BIF: มี และพิจารณาผลักดันตัวกรองที่ลึกลงไปในคำสั่งที่เป็นไปได้

ไม่ผูกพัน

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

ไม่ผูกพัน

SELECT ?movie_label WHERE { ?movie dbpedia-owl:starring <http://dbpedia.org/resource/Julia_Roberts> . ?movie rdfs:label ?movie_label . OPTIONAL {?movie dbpedia-owl:director ?director} . FILTER (langMatches(lang(?movie_label), "EN") && !bound(?director)) }

การรวมตัว

รวบรวมสถิติเกี่ยวกับรัสเซีย: หาประชากรจำนวนรวมของเมืองหลายเมืองที่มีประชากรมากกว่า 1billion ประชากรโดยเฉลี่ยของเมือง

A1 รวม


SELECT ?population count(?city) WHERE { <http://dbpedia.org/resource/Russia> dbpprop:populationEstimate ?population . ?city a dbpedia-owl:PopulatedPlace . ?city dbpedia-owl:country <http://dbpedia.org/resource/Russia> . }

A2 รวม


SELECT count(?billioners) WHERE { ?billioners a dbpedia-owl:PopulatedPlace . ?billioners dbpedia-owl:country <http://dbpedia.org/resource/Russia> . ?billioners dbpprop:pop2002census ?city_population . FILTER (?city_population > 1000000) }

A3 รวม


SELECT AVG(?population) WHERE { ?city a dbpedia-owl:PopulatedPlace . ?city dbpedia-owl:country <http://dbpedia.org/resource/Russia> . ?city dbpprop:pop2002census ?population . }

AS

เปลี่ยนคำสั่งก่อนหน้านี้เพื่อแสดงชื่อที่ถูกต้องของคอลัมน์ของตาราง

AS


SELECT ?population count(?city) AS ?number_of_cities WHERE { <http://dbpedia.org/resource/Russia> dbpprop:populationEstimate ?population . ?city a dbpedia-owl:PopulatedPlace . ?city dbpedia-owl:country <http://dbpedia.org/resource/Russia> . }

ลบ

ไม่รวม Novosibirsk เมื่อนับประชากรเฉลี่ยในเมืองที่รัสเซีย

ลบ


SELECT AVG(?population) WHERE { ?city a dbpedia-owl:PopulatedPlace . ?city dbpedia-owl:country <http://dbpedia.org/resource/Russia> . ?city dbpprop:pop2002census ?population . MINUS {<http://dbpedia.org/resource/Novosibirsk> dbpprop:pop2002census ?population} }

การนำข้อมูล

แสดงข้อมูลเกี่ยวกับมอสโก แสดงอเนกประสงค์ที่กรุงมอสโกเป็นทั้งเรื่องหรือวัตถุ

การนำข้อมูล


SELECT ?s ?p ?o WHERE { { ?s ?p ?o. filter (?s = <http://dbpedia.org/resource/Moscow>) } UNION { ?s ?p ?o. filter (?o = <http://dbpedia.org/resource/Moscow>) } }

ค้นหาคอมมอนส์

ค้นหาคอมมอนส์ระหว่างมิคาอิล Gorbachev และอีวานแย่มาก

ค้นหาคอมมอนส์


SELECT ?p ?c ?o WHERE { <http://dbpedia.org/resource/Ivan_the_Terrible> ?p ?o . <http://dbpedia.org/resource/Mikhail_Gorbachev> ?c ?o }

การใช้การค้นหาความสัมพันธ์

ทำงานเดียวกันใน RelFinder

การใช้ Hanne

ค้นหาวิธีที่ดีที่สุดเพื่อรับรายชื่อของสโมสรฟุตบอลรัสเซียใช้ Hanne

วิธีการเชื่อมต่อ

ดาวน์โหลด ไฟล์

ที่จะเขียนแบบสอบถาม

ค้นหาส่วนนี้:

คุณสามารถป้อนแบบสอบถามที่คุณต้องการใด ๆ

วิธีการแสดงผล

กรอกตารางตามด้วยโครงสร้างวัตถุ JSON

ปลายทาง SPARQL

http://www.sparql.org/

http://dbpedia.org/sparql

http://www.w3.org/wiki/SparqlEndpoints

SPARQL ร้านค้าที่สามเปิดการใช้งาน

โอเพนซอร์ส Virtuoso http://virtuoso.openlinksw.com/ ---

Jena & Fuseki --- http://jena.apache.org/

งา --- http://www.openrdf.org/

เครื่องมือเพิ่มเติม

http://www.fluidops.com/fedx/ FedX ---

แหล่งการเรียนรู้เพิ่มเติม

  • เทรนเนอร์ SPARQL (http://aksw.org/projects/sparqltrainer)
  • การเรียนรู้ SPARQL บ๊อบชาร์มรีลลี่ (2011)
  • เว็บแบบ Semantic สำหรับ Ontologist ทำงานคณบดี Allemang และเจมส์ Hendler, มอร์แกน Kaufmann (2011)
  • SPARQL โดยยกตัวอย่างเช่น http://www.cambridgesemantics.com/semantic-university/sparql-by-example

หัวข้อเพิ่มเติม

GeoSparql

งานหน้าจอ 30 กม. อนุเสาวรีย์ไปบนแผนที่

ปรับปรุง sparql

งาน: สร้างกราฟที่มีข้อมูลส่วนบุคคลบางอย่างเกี่ยวกับคุณ



ปลาย!

งานสุดท้าย


SELECT ?director_name ?movie_name ?actor_name WHERE { ?movie dbpedia-owl:starring <http://dbpedia.org/resource/Julia_Roberts> . ?movie dbpedia-owl:starring ?actor . ?movie rdfs:label ?movie_name . ?actor rdfs:label ?actor_name . ?movie dbpedia-owl:director ?director . ?director rdfs:label ?director_name . FILTER (langMatches(lang(?movie_name), "EN") && langMatches(lang(?actor_name), "EN") && langMatches(lang(?director_name), "EN")) . } ORDER BY ?director ?movie