The European Union s Making the Labour Market more Inclusive III programme For North Cyprus Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals Module 4: Semantic Web Modül 4: Anlamsal Ağ Laboratuar Notları #5 A project implemented by CyberSoft Bilişim Teknolojileri Ltd. This project is funded by European Union. The contents of this publication are the sole responsibility of Cybersoft Bilişim Teknolojileri Ltd. and can in no way be taken to reflect the views of the European Union.
İçerik Bölüm 5: RDF QUERY LANGUAGE (SPARQL) 1. SPARQL Nedir?... 1 2. SELECT-FROM-WHERE Sorgusu... 2 3. DIGER SPARQL SORGULARI : CONSTRUCT, DESCRIBE ve ASK...7 3.1. CONSTRUCT Sorgusu... 7 3.2. DESCRIBE Sorgusu... 8 3.3. ASK Sorgusu... 8
1. SPARQL Nedir? Daha önceki derste de belirtildiği gibi RDF, bilgisayarların web deki verileri anlayabilmeleri ve işleyebilmeleri ve verileri farklı web içeriklerine entegre edebilmeleri için metadata tanımlamaları ile ilgili standartlar getirmektedir. İşte bu anlamda, RDF, tasarım sürecini kolaylaştırmak için standart bir veri sorgulama diline gereksinim duymaktadır. SPARQL RDF verileri için kullanılan bir sorgulama dilidir. Mesela, bir statement örneği ve onun RDF triple şeklinde yazılışı ve RDF graph olarak gösterilişi şu şekildedir: David Billington is the owner of the Web page http://www.cit.gu.edu.au/ db. Bu statament için kullanılan RDF triple şu şekildedir: (http://www.cit.gu.edu.au/~db, http://www.mydomain.org/site-owner, #DavidBillington). RDF triple graph görünümü RDF triple larını içeren bir kaynağa RDF graph denir. Örnek 1: G isminde bir graph ele alalım. G aşağıdaki triple ları içermektedir: john knows karen karen knows alex karen name "Karen" alex name "Alex" SPARQL de sorgulama yapılırken triple pattern ler kullanılır. Triple pattern bir RDF riple nın bir değişken içeren şeklidir. Değişkenler genellikle? öntakısıyla gösterilir. Triple pattern in ne olduğunu aşağıdaki örnekle daha iyi anlayalım: john knows?y Triple pattern bir RDF triple ile eşlesirse, her variable için bir binding üretir. Mesela bu örnekteki binding?y: karen. Mesela diğer bir triple pattern?x knows?y bir binding tablosu döndürür. Tablodaki herbir satır SPARQL sorgusunun sonucudur. 1
x y ================= 1 john karen ------------------- 2 karen alex Graph pattern: birden fazla triple pattern nin beraberce yazılış şeklidir. Graph pattern ler süslü parantezlerle{, belirtilirler. {?x foaf:knows?y.?y foaf:name?name. foaf vocabulary: insanlarla ilgili bilgileri içeren önceden tanımlanmıi bir dataset dir. 2. SELECT-FROM-WHERE Sorgusu: SQL de olduğu gibi SPARQL de de SELECT- FROM-WHERE yapısı kullanılmaktadır. SELECT istenilen data nın sayısını ve sırasını belirlerlemek için kullanılır. FROM ise sorgulanan kaynağı belirtir. Kullanılması zorunlu değildir, seçimi kullanıcıya kalmıştır. WHERE ise olası sonuçları isteğimize göre kısıtlamak için kullanılır. Örnek 2: Tim Berners-Lee nin foaf dosyasını kullanarak http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf deki, dosyadaki bütün isimleri döndürünüz. SELECT?name?person foaf:name?name. Bu örnekte aşağıdaki şekilde de görülebileceği gibi toplam 52 isim dönmektedir. 2
Örnek 3: Tim Berners-Lee's FOAF dosyasında isim ve email addres bilgileri bulunan kişilerin URI, name, and email addreslerini bulunuz. SELECT *?person foaf:name?name.?person foaf:mbox?email. 3
Örnek 5: by Tim Berners-Lee yi tanıyanların homepage inibulunuz. PREFIX card: <http://www.w3.org/people/berners-lee/card#> SELECT?homepage FROM <http://dig.csail.mit.edu/2008/webdav/timbl/foaf.rdf> card:i foaf:knows?known.?known foaf:homepage?homepage.?known u bir triple ın objecti diğerinin de subject i olarak kullanarak sonucu bulabiliriz. 4
Optional: Örnek 6: SELECT?name?mbox?hpage?x foaf:name?name OPTIONAL {?x foaf:mbox?mbox. OPTIONAL {?x foaf:homepage?hpage. 2.2 Solution Modifiers of SPARQL: 2.2.1 LIMIT: bir sorgudan dönen satır sayısını sınırlar. Örnek7: SELECT?name?person foaf:name?name. LIMIT 10 5
2.2.2 ORDER BY: sorgu sonuçlarını bir veya birden fazla değişkene göre sıralar. Örnek8: SELECT?name?person foaf:name?name. ORDER BY?name 6
2.2.3 DISTINCT: Dönen sonuçların içinden aynı olanları eler. Örnek 9. SELECT DISTINCT?name?x foaf:name?name 2.2.4 FILTER: İstenilmeyen sonuçları elemek için kullanılır. Örnek 10: name i K ile başlayan kişileri bulunuz. SELECT?name?x foaf:knows?y.?y foaf:name?name. FILTER regex(?name, '^K.*') 3. DIGER SPARQL SORGULARI : CONSTRUCT, DESCRIBE ve ASK 3.1 CONSTRUCT Sorgusu: Sorgulanan bilgiden bir alt küme çıkarır. Dönen değer bir RDF graph dır. Örnek 11: CONSTRUCT {?friend a foaf:person; foaf:name?name; foaf:homepage?home.?person foaf:mbox <mailto:leigh@ldodds.com>; foaf:knows?friend.?friend foaf:name?name; foaf:homepahe?home. 7
3.2 DESCRIBE Sorgusu: Örnek 12: DESCRIBE?x?x foaf:mbox <mailto:leigg@ldodds.com> 3.3 ASK Sorgusu: İstenilen değerin varolup olmadığını sorgular.true yada false değei döndürür. Örnek 13: ASK {?x foaf:name "Alice" 8