sesame

34
Sesame Orhun Dalabasmaz Seyfullah Demir - N10124010 28/12/2010 Bilgi Erişim Sistemleri '10

Upload: seyfullah-demir

Post on 08-Jul-2015

331 views

Category:

Documents


4 download

DESCRIPTION

Information Retrieval Dersi - Sesame Sunumu

TRANSCRIPT

Page 1: Sesame

Sesame

Orhun Dalabasmaz

Seyfullah Demir - N10124010

28/12/2010 Bilgi Erişim Sistemleri '10

Page 2: Sesame

İçerik

28/12/2010 Bilgi Erişim Sistemleri '10 2

Uygulama

Sesame Kurulumu Sesame Konsolu Sesame Server Sesame Workbench Sesame API Repository API Örnek Kod Gösterimi

Teorik

Sesame Nedir? Sesame Mimarisi Sesame ve Jena SeRQL & SPARQL SeRQL örnekleri

Page 3: Sesame

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

Page 4: Sesame

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

Page 5: Sesame

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

Page 6: Sesame

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

Page 7: Sesame

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

Page 8: Sesame

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

Page 9: Sesame

Sesame Mimarisi

28/12/2010 Bilgi Erişim Sistemleri '10 9

Page 10: Sesame

Sesame Mimarisi

28/12/2010 Bilgi Erişim Sistemleri '10 10

Page 11: Sesame

Jena ve Sesame

JENA SESAME

RDF Veri Yükleme +++ +

RDF Sorgulama + +++

Web uygulamaları için

ölçeklenebilirlik sağlarma

(Directly focused towards web

access and scalability)

Yok Var

Farklı veri depolama araçları

için esnek mimari katman

(Flexible Layer architecture for

different storage backend)

Yok Var

OWL desteği Var Yok

(eklenti desteği var – OntoText

OWLIM eklentisi)

28/12/2010 Bilgi Erişim Sistemleri '10 11

Page 12: Sesame

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

Page 13: Sesame

Jena ve Sesame

• Karışık sorgularda

– 1 saatte sorgulayabildiği üçlülerin sayısı

• Basit sorgularda

28/12/2010 Bilgi Erişim Sistemleri '10 13

JENA SDB JENA TDB SESAME

1M 10,421 4,450 18,094

25M 968 353 1,343

100M 211 81 254

JENA SDB JENA TDB SESAME

1M 15,692 15,842 38,727

25M 4,877 1,856 39,059

100M 584 459 3,116

Page 14: Sesame

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

Page 15: Sesame

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

Page 16: Sesame

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

Page 17: Sesame

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

Page 18: Sesame

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

Page 19: Sesame

SeRQL ve SPARQL örnek

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)

}

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/>

28/12/2010 Bilgi Erişim Sistemleri '10 19

Page 20: Sesame

SeRQL varlık ilişkilendirmesi

• {X} movie:hasPart {:role1}

• {X} movie:hasPart {Y}

• {X} P {Y}

movie:hasPart movie:characterNamemovie1 role1 “Edward ScissorHands”

28/12/2010 Bilgi Erişim Sistemleri '10 20

Page 21: Sesame

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:characterNamemovie1 role1 “Edward Scissorhands”

28/12/2010 Bilgi Erişim Sistemleri '10 21

Page 22: Sesame

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

Page 23: Sesame

SeRQL

• RDF yarı yapısaldır

– Her ne kadar şema nesnelerin belirli

özelliklerinin olması gerektiğini belirtse de,

her zaman veride karşılığı olmayabilir.

person001

[email protected]

Jeen

Geert-Jan

person002

foaf:firstName

foaf:firstName

foaf:mbox

um:User

type

type

28/12/2010 Bilgi Erişim Sistemleri '10 23

Page 24: Sesame

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

Page 25: Sesame

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

Page 26: Sesame

CONSTRUCT *

FROM {M} rdf:type {movie:Movie};

movie:year {Y};

movie:title {T}USING NAMESPACE

movie = <http://example.org/movies/>

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

28/12/2010 Bilgi Erişim Sistemleri '10 26

Page 27: Sesame

SeRQL

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/>

• 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

28/12/2010 Bilgi Erişim Sistemleri '10 27

Page 28: Sesame

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

Page 29: Sesame

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

Page 30: Sesame

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

Page 31: Sesame

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

Page 32: Sesame

Sesame API nasıl kullanılır;

Örnekler ve uygulamalar...

28/12/2010 Bilgi Erişim Sistemleri '10 32

Page 33: Sesame

Teşekkürler ...

28/12/2010 Bilgi Erişim Sistemleri '10 33

Page 34: Sesame

Kaynaklar

http://www.openrdf.org/

http://www.devx.com/semantic/Article/40987

http://en.wikipedia.org/wiki/Sesame_(framework)

http://www.csharpnedir.com/articles/read/?id=964

http://www.semanticoverflow.com/questions/1638/jena-vs-sesame-is-there-a-serious-complete-up-to-date-unbiased-well-informed

28/12/2010 Bilgi Erişim Sistemleri '10 34