1. Sesame
Orhun Dalabasmaz
Seyfullah Demir - N10124010
28/12/2010 Bilgi Erişim Sistemleri '10
2. İçerik
Teorik
Sesame Nedir?
Sesame Mimarisi
Sesame ve Jena Uygulama
SeRQL & SPARQL
SeRQL örnekleri
Sesame Kurulumu
Sesame Konsolu
Sesame Server
Sesame Workbench
Sesame API
Repository API
Örnek Kod Gösterimi
28/12/2010 Bilgi Erişim Sistemleri '10 2
3. Sesame nedir ?
• RDF verilerini saklamaya, sorgulamaya ve çıkarsama yapmaya
yarayan açık kaynak kodlu bir JAVA uygulama çatısıdır.
• RDF verilerinin saklandığı veri depolarına erişmek için veritabanı
sunucusu olarak da kullanılabilir.
• Sesame, farklı veri depolama mekanizmaları, çıkarsayıcılar, RDF
kütük formatları, sorgu dilleri ve sorgu sonuç formatlarıyla
çalışabilmeyi destekleyen esnek bir yapıya sahiptir.
• Dağıtık mimarileri destekler ve Jena ile ortak çalışabilir
28/12/2010 Bilgi Erişim Sistemleri '10 3
4. Sesame nedir ?
Aduna şirketi tarafından geliştirilmiştir.
Ana geliştiricileri Arjohn Kampman ve Jeen Broekstra‟dır
İlk sürümü 1999-2001 yılları arasında çıkmıştır
Son sürümü 16 Temmuz 2010‟da çıkmıştır (Sesame 2.3.2)
Eylül 2010‟da 3.0 Alpha sürümü yayınlanmıştır.
28/12/2010 Bilgi Erişim Sistemleri '10 4
5. Sesame
• Sesame‟nin çıkışı On-To-Knowledge projesine(1999 – 2001 EU IST
On-To-Knowledge project) dayanmaktadır. Sesame bu projede
ontoloji güdümlü araçların merkezinde yer alıyordu.
• Proje 2001 yılında sonlanması rağmen; Aduna, NLnet
Foundation(Ontotext geliştiricileri) işbirliğiyle ve birkaç gönüllü
geliştirici tarafından geliştirilmeye devam edildi.
28/12/2010 Bilgi Erişim Sistemleri '10 5
6. Sesame Projesi
• 1999 – 2001 EU IST On-To-Knowledge project
– Projelerde „RDF sorgulama motoru‟ olarak kullanılmak üzere geliştirildi
– Aduna, RQL‟i sorgulama dili olarak geliştirdi (RQL + RDBMS backend)
– İlk sürüm: Sesame 0.1
• 2001 – 2003 „Open Sesame‟
– NLNet şirketi tarafından sponsorluğu üstlenildi
– İki yıl boyunca açık kaynak kodlu olarak geliştirildi
– Son sürüm: Sesame 1.0
• 2004-2006 „Open Sesame 2‟
– Sesame 1.0 çıktıktan sonra Sesame geliştirilmeye devam edildi
– Amaç: Sesame‟nin yeni çıkacak uygulama çatılarıyla uyumlu olabilmesini sağlamak
– Sonuç: Sesame 2.0
• 2006‟dan sonra
– Aduna, Sesame‟nin kendi ürünlerinin bir parçası olarak geliştirilmesine karar verdi
– Açık kaynak olarak kalmasına karar verildi
28/12/2010 Bilgi Erişim Sistemleri '10 6
7. 1.x ve 2.x
• Sesame 1.x
– Üçlüleri kullanmaktadır. (Predicate-Subject-Object)
• Sesame 2.x
– Bu sürüm özellikle SPARQL desteği için çıkarılmıştır
– Sesame 2.1 sürümünde ise performansa önem verilmiştir
– Dörtlüleri kullanmaktadır (Predicate Subject Object Context)
– Dörtlüleri kullandığı için Sesame 1.x „in performansına yetişemez
28/12/2010 Bilgi Erişim Sistemleri '10 7
8. Sesame özellikleri
• Üst düzey sorgulama dil desteği
– SeRQL, SPARQL
• Farklı veri depolama olanakları
– Yerel disk (Native Store)
– İlişkisel VTYS (MySQL, PostgreSQL)
– Ana Bellek (Main Memory)
– Uzaktan erişim (Remote)
• İlişkilendirme desteği (Reasoning support)
• Bölünemez işlem desteği (Transactional support)
• Kapsam/Bağlam desteği (Context support )
• Farklı RDF formatlarıyla çalışabilme desteği
Rio (RDF okuma yazma): RDF/XML, Turtle, N3, N-Triples
28/12/2010 Bilgi Erişim Sistemleri '10 8
11. Jena ve Sesame
JENA SESAME
RDF Veri Yükleme +++ +
RDF Sorgulama + +++
Web uygulamaları için Yok Var
ölçeklenebilirlik sağlarma
(Directly focused towards web
access and scalability)
Farklı veri depolama araçları Yok Var
için esnek mimari katman
(Flexible Layer architecture for
different storage backend)
OWL desteği Var Yok
(eklenti desteği var – OntoText
OWLIM eklentisi)
28/12/2010 Bilgi Erişim Sistemleri '10 11
12. Jena ve Sesame
• Performans
Veri yüklemek için Jena daha etkili olurken, bu verileri sorgulamak
için Sesame kesinlikle daha etkili olmaktadır
2009 verileri;
• 100M üçleme yüklemek için geçen süre;
– Sesame: 3 gün 6 saat
– Jena TDB: 1.5 saat
– Jena SDB: 1 gün 15 saat
• TDB (TripleDataBase) ve SDB (SpatialDataBase) birer Jena
bileşenidir
28/12/2010 Bilgi Erişim Sistemleri '10 12
13. Jena ve Sesame
• Karışık sorgularda
JENA SDB JENA TDB SESAME
1M 10,421 4,450 18,094
25M 968 353 1,343
100M 211 81 254
– 1 saatte sorgulayabildiği üçlülerin sayısı
• Basit sorgularda
JENA SDB JENA TDB SESAME
1M 15,692 15,842 38,727
25M 4,877 1,856 39,059
100M 584 459 3,116
28/12/2010 Bilgi Erişim Sistemleri '10 13
14. Jena ve Sesame
• Özetle;
• Jena TDB Sesame‟ye göre;
– Daha ölçeklenebilir bir yapıya sahiptir
– Daha hızlı veri yükleme imkanı sağlar
– Buna karşın çok kötü sorgulama performansı vardır
• 100M‟den küçük veriler için Sesame daha ideal bir performans
sağlamaktadır
• Jena SDB ise Jena TDB ve Sesame‟ye nazaran, orta ölçekli bir
yapılanmada daha etkili performans sağlayabilir
28/12/2010 Bilgi Erişim Sistemleri '10 14
15. Sunucu kurarken
1) Çevre değişkenlerini düzenle;
a) Java Servlet Container yüklenmelidir
(önerilen: Apache Tomcat 5.x ve üzeri)
b) Java 5.0 environment yüklenmelidir
(önerilen: Sun J2SE 1.5.x)
2) sesame.war web uygulaması yerleştirilmelidir
a) Yer: [TOMCAT] /webapps/sesame
3) Sesame sunucusu ayarlanmalıdır
a) [SESAME]/WEB-INF/server.conf.example
b) XML kütüğünü herhangi bir düzenleyici ile değiştirebiliriz
28/12/2010 Bilgi Erişim Sistemleri '10 15
16. Veri deposu ayarları
• id: veri deposunun biricik anahtarı olarak kullanılır
• title: kullanıcı tarafından görülen isim
• sailstack: bir çok sail içerir (yığıt)
– Alttaki sail asıl katmandır
– Her yeni sail katmanı yeni bir işlevsellik katar
(örneğin. inferencing, caching ..)
<repository id="mem-rdfs">
<title>Main Memory RDF Schema repository</title>
<sailstack>
<sail
class="org.openrdf.sesame.sailimpl.memory.MemoryStoreRDFSInferencer"/>
<sail class="org.openrdf.sesame.sailimpl.memory.MemoryStore">
<param name=“file” value=“/data/mem-rdfs.dat”/>
</sail>
</sailstack>
</repository>
28/12/2010 Bilgi Erişim Sistemleri '10 16
17. SeRQL
• Sesame RDF Query Language
• SPARQL‟e benzemekle birlikte farklı bir sözdizimi kullanır
• RQL/RDQL dillerine alternatif olarak ortaya çıkmıştır
• W3C standardı değildir (not a W3C recommendation)
• Sesame, SeRQL ve SPARQL ile sorgulama yapmaya
olanak verir.
28/12/2010 Bilgi Erişim Sistemleri '10 17
18. SeRQL ve SPARQL
• Her ikisi de RDF sorgulama ve dönüştürme için etkili bir yapıya
sahiptir
– SELECT ve CONSTRUCT
– Opsiyonel deyimler
– context/named-graphs desteği
• SeRQL (“circle”)
– İç içe sorgular (IN, EXISTS ..)
– Kullanıcı dostu söz dizimi
– Sesame üzerine daha etkili
• SPARQL (“sparkle”)
– W3C Standard
– Diğer araçlarla uyumluluk: Jena, Redland, 3Store, Sesame, …
28/12/2010 Bilgi Erişim Sistemleri '10 18
19. SeRQL ve SPARQL örnek
SELECT DISTINCT
X, T
FROM
{X} movie:title {T};
movie:hasPart {Y} movie:characterName {Z}
WHERE
Z = “Edward Scissorhands”@en
USING NAMESPACE
movie = <http://example.org/movies/>
PREFIX movie: <http://example.org/movies/>
SELECT DISTINCT ?x ?t
WHERE { ?x movie:title ?t ;
movie:hasPart ?y .
?y movie:characterName ?z .
FILTER (?z = “Edward Scissorhands”@en)
28/12/2010 } Bilgi Erişim Sistemleri '10 19
20. SeRQL varlık ilişkilendirmesi
• {X} movie:hasPart {:role1}
• {X} movie:hasPart {Y}
• {X} P {Y}
movie:hasPart movie:characterName
movie1 role1 “Edward ScissorHands”
28/12/2010 Bilgi Erişim Sistemleri '10 20
21. Zincirleme, Dallandırma ve Karşılaştırma
(Chaining, branching and comparing)
• Zincirleme: (özneler farklı)
– {X} movie:hasPart {Y} movie:characterName {Z}
• Dallandırma: (özneler aynı)
– {Y} rdf:type {movie:Role};
movie:characterName {Z}
• Karşılaştırma işleçleri:
– String karşılaştırma:
• Z like “*Hands”
– boolean karşılaştırma:
• X < Y, X <= Y, Z < 20, Z = Y, vb.
movie:hasPart movie:characterName
movie1 role1 “Edward Scissorhands”
28/12/2010 Bilgi Erişim Sistemleri '10 21
22. SeRQL sorgu yapısı
• SeRQL, SQL benzeri söz dizimine sahiptir (select-from-
where)
SELECT
X, Y, Z
FROM
{X} movie:hasPart {Y} movie:characterName {Z}
WHERE
Z LIKE “edward scissorhands” IGNORE CASE
USING NAMESPACE
movie = <http://example.org/movies/>
28/12/2010 Bilgi Erişim Sistemleri '10 22
23. SeRQL
• RDF yarı yapısaldır
– Her ne kadar şema nesnelerin belirli
özelliklerinin olması gerektiğini belirtse de,
her zaman veride karşılığı olmayabilir.
foaf:firstName Jeen
um:User
type
type
person001
foaf:mbox
j.broekstra@tue.nl
person002
foaf:firstName Geert-Jan
28/12/2010 Bilgi Erişim Sistemleri '10 23
24. SeRQL
• Sistemdeki kullanıcıların isimlerini ve e-postalarını
listeler. (E-posta verisi olmasa da listeler)
SELECT DISTINCT
Person, Name, Email
FROM
{Person} rdf:type {um:User};
foaf:firstName {Name};
[foaf:mbox {Email}]
USING NAMESPACE
foaf = <http://xmlns.com/foaf/0.1/>,
um = <http://example.org/usermodel/>
28/12/2010 Bilgi Erişim Sistemleri '10 24
25. SeRQL - CONSTRUCT
• CONSTRUCT sorguları, RDF ifade seti döndürür
• Sonuç olarak asıl graph‟tan bir alt RDF Graph
oluşturur (subgraph)
• Ya da dönüştürülmüş graph oluşturur (yeni bir
graph)
28/12/2010 Bilgi Erişim Sistemleri '10 25
26. SeRQL
• Adı ve yapım yılı olan bütün filmleri bir graph olarak
döndürür
Böylece asıl graph‟tan bir subGraph üretmiş olur
CONSTRUCT *
FROM {M} rdf:type {movie:Movie};
movie:year {Y};
movie:title {T}
USING NAMESPACE
movie = <http://example.org/movies/>
28/12/2010 Bilgi Erişim Sistemleri '10 26
27. SeRQL
• Graph dönüştürme (Graph Transformations) ile yeni
bir graph yaratır
• Aktörler ve rol aldıkları filmler ilişkilendirilerek yeni
bir graph yaratılır
CONSTRUCT
{A} foaf:firstName {FN};
foaf:familyName {LN};
my:playsInMovie {M} movie:title {T}
FROM
{M} movie:title {T};
movie:hasPart {} movie:playedBy {A} foaf:firstName {FN};
foaf:familyName {LN}
USING NAMESPACE
movie = <http://example.org/ontology/movie/>,
foaf = <http://xmlns.com/foaf/0.1/>,
my = <http://example.org/my/own/namespace/>
28/12/2010 Bilgi Erişim Sistemleri '10 27
28. SeRQL
• İç içe sorgu yapmaya olanak verir
• SeRQL iç içe sorgulama yapmak için 3 adet sorgu
işlecine sahiptir:
– IN
– ANY, ALL
– EXISTS
28/12/2010 Bilgi Erişim Sistemleri '10 28
29. SeRQL
• EXIST: reytingi olmayanları getirir
SELECT DISTINCT movie, mtitle
FROM
{movie} rdf:type {movie:Movie};
movie:title {mtitle}
WHERE NOT EXISTS (SELECT rating
FROM {rating} rdf:type {um:MovieRating};
um:onMovie {movie})
USING NAMESPACE
movie = <http://example.org/movies/>,
um = <http://example.org/usermodel/>
28/12/2010 Bilgi Erişim Sistemleri '10 29
30. SeRQL
• ALL: Her aktörün sahip olduğu en yüksek reyting
oranını getirir
SELECT DISTINCT user, rating, fname, lname
FROM
{user} rdf:type {um:User};
um:rating {} rdf:value {rating};
um:onActor {} foaf:firstName {fname};
foaf:familyName {lname}
WHERE rating >= ALL
(SELECT otherRating
FROM {user} um:rating {} rdf:type {um:ActorRating};
rdf:value {otherRating})
USING NAMESPACE
foaf = <http://xmlns.com/foaf/0.1/>,
um = <http://example.org/usermodel/>
28/12/2010 Bilgi Erişim Sistemleri '10 30
31. SeRQL
• IN: Gone With The Wind ile en az bir ortak türe sahip
olan bütün filmleri getirir
SELECT DISTINCT movie, mtitle
FROM
{movie} rdf:type {movie:Movie};
movie:title {mtitle};
movie:genre {genre}
WHERE genre IN
(SELECT otherGenre
FROM {} rdf:type {movie:Movie};
movie:title {gwtw};
movie:genre {otherGenre}
WHERE label(gwtw) LIKE "gone with the wind" IGNORE CASE)
USING NAMESPACE
movie = <http://example.org/movies/>,
um = <http://example.org/usermodel/>
28/12/2010 Bilgi Erişim Sistemleri '10 31
32. Sesame API nasıl kullanılır;
Örnekler ve uygulamalar...
28/12/2010 Bilgi Erişim Sistemleri '10 32