sesame

Post on 08-Jul-2015

331 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Information Retrieval Dersi - Sesame Sunumu

TRANSCRIPT

Sesame

Orhun Dalabasmaz

Seyfullah Demir - N10124010

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

İç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

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

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

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

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

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

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

Sesame Mimarisi

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

Sesame Mimarisi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

j.broekstra@tue.nl

Jeen

Geert-Jan

person002

foaf:firstName

foaf:firstName

foaf:mbox

um:User

type

type

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

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

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

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

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

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

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

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

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

Sesame API nasıl kullanılır;

Örnekler ve uygulamalar...

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

Teşekkürler ...

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

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

top related