SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Sesame


              Orhun Dalabasmaz
              Seyfullah Demir - N10124010

28/12/2010    Bilgi Erişim Sistemleri '10
İç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
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              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
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
                      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
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

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

Contenu connexe

Similaire à Sesame

Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
Mustafa Tepe
 
Embarcadero ER/Studio XE3 Sunum
Embarcadero ER/Studio XE3 SunumEmbarcadero ER/Studio XE3 Sunum
Embarcadero ER/Studio XE3 Sunum
BTGrubu
 
Ibm storage sales
Ibm storage salesIbm storage sales
Ibm storage sales
Hande Hnd
 

Similaire à Sesame (16)

Ankara Spark Meetup - Big Data & Apache Spark Mimarisi Sunumu
Ankara Spark Meetup - Big Data & Apache Spark Mimarisi SunumuAnkara Spark Meetup - Big Data & Apache Spark Mimarisi Sunumu
Ankara Spark Meetup - Big Data & Apache Spark Mimarisi Sunumu
 
Nedir Bu Java ?
Nedir Bu Java ?Nedir Bu Java ?
Nedir Bu Java ?
 
Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)Bilginç IT Academy - JPA (Java Persistence API)
Bilginç IT Academy - JPA (Java Persistence API)
 
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORMAzerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
 
Kod günleri veritabnı
Kod günleri veritabnıKod günleri veritabnı
Kod günleri veritabnı
 
Raid technologies
Raid technologiesRaid technologies
Raid technologies
 
Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)Exchange Server 2010 Database Availability Group(DAG)
Exchange Server 2010 Database Availability Group(DAG)
 
Embarcadero ER/Studio XE3 Sunum
Embarcadero ER/Studio XE3 SunumEmbarcadero ER/Studio XE3 Sunum
Embarcadero ER/Studio XE3 Sunum
 
Ibm storage sales
Ibm storage salesIbm storage sales
Ibm storage sales
 
NetApp Hakkında
NetApp HakkındaNetApp Hakkında
NetApp Hakkında
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
Dba için oracle veritabanı 11g yeni özellikleri
Dba için oracle veritabanı 11g yeni özellikleriDba için oracle veritabanı 11g yeni özellikleri
Dba için oracle veritabanı 11g yeni özellikleri
 
Oracle Cloud G in gidişi C nin gelişi
Oracle Cloud G in gidişi C nin gelişiOracle Cloud G in gidişi C nin gelişi
Oracle Cloud G in gidişi C nin gelişi
 
Veritabanı kurulumu (1)
Veritabanı kurulumu (1)Veritabanı kurulumu (1)
Veritabanı kurulumu (1)
 
Dspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik IntegrationDspace Migration and Dspace Piwik Integration
Dspace Migration and Dspace Piwik Integration
 

Sesame

  • 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
  • 9. Sesame Mimarisi 28/12/2010 Bilgi Erişim Sistemleri '10 9
  • 10. Sesame Mimarisi 28/12/2010 Bilgi Erişim Sistemleri '10 10
  • 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
  • 33. Teşekkürler ... 28/12/2010 Bilgi Erişim Sistemleri '10 33
  • 34. 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