oracle 10g rdf veri deposu üze - Ege Üniversitesi Açık Erişim Sistemi

advertisement
EGE ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ
(YÜKSEK LİSANS TEZİ)
İLİŞKİSEL VERİTABANI
İLE
ONTOLOJİLER ARASINDA DÖNÜŞÜMÜN
GERÇEKLEŞTİRİLMESİ:
ORACLE 10G RDF VERİ DEPOSU ÜZERİNDE
ÖRNEK BİR UYGULAMA
Kıvanç URGANCIOĞLU
Bilgisayar Mühendisliği Anabilim Dalı
Bilim Dalı Kodu: 619.01.00
Sunuş Tarihi:28.08.2006
Tez Danışmanı: Yrd. Doç. Dr. Murat Osman ÜNALIR
III
Kıvanç Urgancıoğlu tarafından yüksek lisans tezi olarak sunulan “İlişkisel Veritabanı İle
Ontolojiler Arasında Dönüşümün Gerçekleştirilmesi:Oracle 10g Rdf Veri Deposu Üzerinde Örnek
Bir Uygulama” başlıklı bu çalışma E.Ü. Lisansüstü Eğitim ve Öğretim Yönetmeliği ile E.Ü. Fen
Bilimleri Enstitüsü Eğitim ve Öğretim Yönergesi’nin ilgili hükümleri uyarınca tarafımızdan
değerlendirilerek savunmaya değer bulunmuş ve 28.08.2006 tarihinde yapılan tez savunma
sınavında aday oybirliği/oyçokluğu ile başarılı bulunmuştur.
Jüri Üyeleri:
İmza
Jüri Başkanı : ...........................................
.................................
Raportör Üye: ...........................................
.................................
Üye
.................................
: ...........................................
IV
V
ÖZET
İLİŞKİSEL VERİTABANI İLE ONTOLOJİLER ARASINDA DÖNÜŞÜMÜN
GERÇEKLEŞTİRİLMESİ:
ORACLE 10G RDF VERİ DEPOSU ÜZERİNDE ÖRNEK BİR UYGULAMA
URGANCIOĞLU, Kıvanç
Yüksek Lisans Tezi, Bilgisayar Mühendisliği Bölümü
Tez Yöneticisi: Yrd. Doç. Dr. Murat Osman ÜNALIR
Ağustos 2006, 122 sayfa
Anlamsal Web günümüz web sayfalarının anlamsal içeriğine yapı kazandırmak ve yazılım
etmenleri tarafından işlenebilir hale getirilmesi hedefini taşımaktadır. Böylelikle sayfalar sadece
kullanıcılar tarafından değil aynı zamanda akıllı etmenler tarafından işlenebilir hale getirilebilecektir.
Buradaki en büyük problemlerden biri günümüz bilgi kaynaklarının anlamsal web’e nasıl dâhil edileceği
konusudur. Özellikle veri odaklı dinamik sayfaların anlamsal web’e dâhil edileceği konusu son derece
önemlidir. Bu konuda iki yaklaşım öne çıkmaktadır. Bunlardan bir tanesi web sayfalarına yorum ekleme
“annotation” işlemidir. İkinci yaklaşımda ise dinamik sayfaların içeriklerinin oluşturulduğu
veritabanlarının ontolojilere otomatik olarak eşlenmesi hedeflenmiştir. Bu yaklaşım ile veritabanlarındaki
üst veriler ile birlikte veriler de ontolojisel yapılara dönüştürülmüştür
Bu tez kapsamında, ilişkisel veritabanlarının ontolojisel varlıklara eşlenmesi ele alınmaktadır.
Eşlenme sırasında ortak bir alan ontolojisine göre sistemlerin kendilerine özgü ontolojileri oluşturulur ve
veriler oluşturulan ontolojiler üzerinden eşlenir. Böylelikle veri odaklı sistemler ortak ve paylaşılan
ontolojiler kullanılarak anlamsal bir yapı kazanır. Ek olarak sistemler ortak bir ontolojiye göre eşlendikleri
için birbirleriyle entegrasyonları da kolaylaşmaktadır. İlişkisel veritabanlarından ontolojilere eşlenen
ontoloji varlıkları Oracle RDF veri deposunda saklanmıştır. Eşlenen varlıklar için ek olarak gerekli kural
tabanları ve kural indeksleri de oluşturulmuştur. Ek olarak kullanıcı istediği takdirde Oracle RDF veri
deposunda saklanmakta olan eşlenmiş ilişkisel veri tabanı ve verilerini yeniden oluşturmaları için gerekli
kodları oluşturan modüllere de sahiptir.
Anahtar sözcükler: Anlamsal web, RDF, tersine mühendislik, ontoloji eşleme, Oracle RDF veri deposu
VI
VII
ABSTRACT
REVERSE ENGINEERING OF RELATIONAL DATABASE SCHEMAS TO ONTOLOGIES:
A SAMPLE APPLICATION ON ORACLE 10G RDF DATASTORE
URGANCIOĞLU, Kıvanç
MSc in Computer Eng.
Supervisor: Assist: Yrd. Doç. Dr. Murat Osman ÜNALIR
AUGUST 2006, 122 pages
The vision of Semantic Web is to enable machine processability of web content with a well-defined
meaning represented by ontologies. The ontologies provide consensual domain models, which are
understandable to both human beings and machines as a shared conceptualization. The main problem arises in
adapting today’s information resources into Semantic Web. Especially today’s web sites are dynamically
generated from databases and commonly these pages do not exist. There are two major approaches exists on
adapting today’s information resources into Semantic Web. One of them is annotating the web sites with
ontological structures. The other one is mapping relational schemas into ontological structures.
In this thesis we propose a system for Reverse Engineering of Relational Database Schemas into
ontological structures. The shared, common relational ontology is used in abstract level and relational
schemas are mapped into ontological structures by using relational ontology. The data included in
relational databases are also mapped with ontological structures. The mapped ontological structures
expressed in RDF are stored in Oracle RDF Datastore. Rulebases and rule indexes are also implemented
by the system. The system also has modules to map the ontological structures stored in RDF Datastore
into schema creation scripts.
Keywords: Semantic Web, RDF, Reverse engineering, ontoloji mapping ,Oracle RDF Datastore,
Relational database schema
VIII
IX
TEŞEKKÜR
Bu tez çalışması sırasında gösterdiği ilgi ve destek için değerli danışmanım sayın Yrd. Doç. Dr.
Murat Osman Ünalır’a teşekkürlerimi sunarım.
Sevgi, sabır ve desteklerinden dolayı sevgili eşime, aileme ve İzmir’deki yakın dostlarıma minnettar
olduğumu belirtmek isterim.
X
XI
İÇİNDEKİLER
Sayfa
ÖZET………………………………………………………………………………………..
ABSTRACT…………………………………………………………………………………
TEŞEKKÜRLER……………………………………………………………………………
İÇİNDEKİLER……………………………………………………………………………...
ŞEKİLLER DİZİNİ…………………………………………………………………………
ÇİZELGELER DİZİNİ……………………………………………………………………...
1.GİRİŞ………………………………………………………………………………………
2. ANLAMSAL WEB……………………………………………………………………….
2.I XML Sözdizimi Katmanı ………………………………………………………..
2.2 RDF(Kaynak tanımlama Çatısı) Veri Katmanı…………………………………..
2.3 Ontoloji Katmanı…………………………………………………………………
3. VERİ MODELLERİ……………………………………………………………………….
3.1 İlişkisel Model……………………………………………………………………
3.2 RDF Şema………………………………………………………………………..
XII
İÇİNDEKİLER(devam)
Sayfa
3.3 Ontolojiler ve İlişkisel Veri tabanları……………………………………………………
4. ORACLE SPATİAL KAYNAK TANIMLAMA ÇATISI………………………………………...
4.1 ORACLE 10g Spatial Kaynak Tanımlama Çatısı Özellikleri……………………………
4.2 Veritabanında RDF Veri Modeli ………………………………………………………..
4.2.1 RDF Modelleri için Üst Veri…………………………………………………..
4.2.2 RDF İsim alanları (RDF Namespaces) ………………………………………..
4.2.3 RDF Deyimleri………………………………………………………………...
4.2.3.1 Üçlülerin eşsizliği ve Sabitler için Veri Tipleri………………….......
4.2.4 Tipli Sabitler…………………………………………………………………...
4.2.5 RDF Özne ve Nesneleri………………………………………………………..
4.2.6 Boş Düğümler………………………………………………………………….
4.2.7 RDF Yüklemleri (“Predicates”) ……………………………………………….
4.2.8 RDF Reifikasyon(Reification) ………………………………………………...
4.2.9 RDF Kapları(“RDF Collections”) …………………………………………….
4.2.10 RDF Üst Veri Tabloları ve Görünümleri …………………………………….
4.2.11 Oracle Uzamsal Ağ Modelinde Veri Depolama………………………………
4.2.12 RDF veri deposuna üçlülerin eklenmesi………………………………………
4.2.13 RDF Nesne Tipleri………………………………………………....................
4.2.14 Üçlülerin Eklenmesi için “Constructor” Yapıları…………………………….
4.2.15 Boş düğümler için Yapıcı Yapıları…………………………………………...
XIII
İÇİNDEKİLER(devam)
Sayfa
4.3 RDF Şema………………………………………………...………………………………..
4.3.1 Kurallar ve Kural Tabanları…………………...…………………………………
4.3.2 Kural İndeksleri………………………………...………………………………..
4.4 RDF verisinin SDO_RDF_MATCH Tablo Fonksiyonu ile Sorgulanması………………..
4.5 RDF Güvenlik Hususları………………………………...…………………………………
4.6. Oracle RDF Yapısı için ilk adımlar……………………...………………………………..
5. EŞLEME MİMARİSİ VE SÜREÇ………………………………...……………………………….
5.1 Tasarım Mantığı………………………………...…………………………………………
5.2 İlişkisel RDF Ontolojisi………………………………...…………………………………
5.3 Eşleme Mimarisi………………………………...………………………………………..
5.4 Eşleme İşlemi………………………………...…………………………………………...
5.4.1 Şema Dönüşümü ………………………………...……………………………
5.4.1.1 ORACLE RDF modelinin yaratılması...……………………………
5.4.1.2 İlişkisel RDF ontolojisinin Oracle 10g RDF veri deposuna eklenmesi
5.4.1.3 Oracle Veri sözlüklerinin kullanılması.……………………………..
5.4.1.4 Tabloların Eşlenmesi……………………...…………………………
5.4.1.5 Kolonların Eşlenmesi ……………………...………………………..
5.4.1.6 İndekslerin Eşlenmesi……………………...………………………...
5.4.1.7 Kısıtlamaların Eşlenmesi……………………...……………………..
XIV
İÇİNDEKİLER(devam)
Sayfa
5.4.1.8 İlişkilerin Eşlenmesi……………………...…………………………
5.4.1.9 İlişkisel Veritabanındaki Anlamsallığın Eşlenmesi…………………
5.4.1.10 Kural tabanları, Kurallar ve Kural İndeksleri……………………….
5.4.2 Verilerin Taşınması…………………………………………………………….
5.5 Oracle 10g RDF veri deposundan ilişkisel şemanın elde edilmesi……………….
5.5.1 Tablo kodlarının elde edilmesi………………………………………….
5.5.2 Verilerin elde edilmesi………………………………………………….
5.5.3 Indekslerin elde edilmesi……………………………………………….
5.5.4 Birincil kısıtlamaların elde edilmesi……………………………………
5.5.6 Dış anahtar kısıtlamaların elde edilmesi………………………………..
5.5.7 Kontrol kısıtlama kodlarının elde edilmesi……………………………..
6. İLGİLİ ÇALIŞMALAR……………………………..……………………………..……………..
6.1 Veri Depolama Sistemleri……………..……………..……………..……………………
6.2 Ontoloji Eşleme Sistemleri……………..……………..……………..…………………..
7. İZLEYECEK ÇALIŞMALAR……………..……………..……………..………………………..
8.SONUÇ……………..……………..……………..………………………………………………..
KAYNAKÇA……………..……………..……………..………………………..…………………..
XV
İÇİNDEKİLER(devam)
Sayfa
EK A: ORASEMWEB Yükleme Adımları………………..………………..……………………..
EK B: ORASEMWEB PAKETİ ALTPROGRAMLARI..………………..………………………
EK C: KURAL TABANI ÜZERİNDE YARATILAN KURALLAR…..………………………..
EK D: EŞLEME SONUCU OLUŞAN YAPININ SORGULANMASI…..………………………
EK E: İLİŞKİSEL RDF ONTOLOJİSİ…..…………………………..……………………………
EK F SÖZLÜK …..…………………………..……………………………………………………
XVI
ŞEKİLLER DİZİNİ
Şekil
Sayfa
Şekil 1:Anlamsal Web katmanları…..…………………………..………………………………..
Şekil 2:RDF yönlendirilmiş çizge…..…………………………..………………………………..
Şekil 3:Tipi Sabitler…..…………………………..………………………………………………
Şekil 4: “Bag” deyimleri için örnek RDF/XML…..………………………………………………
Şekil 5: Oracle NDM RDF veri modelinde ”Bag” kap yapısı……………………………………
Şekil 6:RDF üçlüleri…………………………..………………………………………………….
Şekil 7 : Sistem Mimarisi……………………..………………………………………………….
XVII
ÇİZELGELER DİZİNİ
Çizelge
Sayfa
Çizelge 1: Örnek bir RDF Şema……………………..……………………………………………
Çizelge 2: RDF modeli için kullanıcı tablosu………..……………………………………………
Çizelge 3: RDF modelinin yaratılması………..…………………………………………………..
Çizelge 4: RDF_VALUE$ görünümü yapısı..…………………………………………………….
Çizelge 5: RDF_BLANK_NODE$ görünümü yapısı…………………………………………….
Çizelge 6: Boş düğüm yapıcısı……………………..……………………………………………..
Çizelge7: Boş düğümün eklenmesi………………..………………………………………………
Çizelge 8:RDF_LINK$ görünümü………………..……………………………………………….
Çizelge 9: Reifikasyon dörtlüsünü örneği………..………………………………………………..
Çizelge 10: “Bag” deyimleri için örnek RDF/XML……………………………………………….
Çizelge 11:SDO_RDF_TRIPLE tipi………………..……………………………………………..
Çizelge 12: Üçlülerin Eklenmesi için Yapıcı “Constructor” Yapıları…………………………….
Çizelge 13:Boş düğümler için Yapıcı Yapıları……..…………………………………………….
Çizelge 14: Kural tabanının yaratılması……..……………………………………………………
Çizelge 15: Kural tabanının sorgulanması……..…………………………………………………
Çizelge 16: Kural tabanı üzerinde indeks yaratılması……..……………………………………..
XVIII
ÇİZELGELER DİZİNİ
Çizelge
Sayfa
Çizelge 17: SDO_RDF_MATCH Tablo Fonksiyonu……..………………………………………
Çizelge 18: Tabloların Eşlenmesi……..…………………………………………………………..
Çizelge 19: Eşlenmiş tabloların RDF veri deposuna girilmesi…………………………………..
Çizelge 20: Kolonların Eşlenmesi……..…………………………………………………………
Çizelge 21: Eşlenmiş kolonların RDF veri deposuna girilmesi…………………………………..
Çizelge 22: İndekslerin Eşlenmesi……..…………………………………………………………
Çizelge 23: Eşlenmiş kolonların RDF veri deposuna girilmesi…………………………………..
Çizelge 24: Kısıtlamaların Eşlenmesi……..……………………………………………………...
Çizelge 25: Eşlenmiş Kısıtlamaların RDF veri deposuna girilmesi………………………………
Çizelge 26: İlişkilerin Eşlenmesi……..…………………………………………………………...
Çizelge 27: Örnek kural tabanı oluşturulması…………………………………………………….
Çizelge 28: Verilerin taşınması için boş düğüm……..……………………………………………
Çizelge 29: Verilerin taşınması için hücrelerin eklenmesi……………………………………….
Çizelge 30: Verilerin elde edilmesi……..…………………………………………………………
Çizelge 31: Tablo kodlarının elde edilmesi……..…………………………………………………
Çizelge 32: Tablo kolon kodlarının elde edilmesi…………………………………………………
XIX
ÇİZELGELER DİZİNİ
Çizelge
Sayfa
Çizelge 33: Veri girdi kodlarının elde edilmesi……………………………………………………….
Çizelge 34: Indeks kodlarının elde edilmesi…………………………………………………………...
Çizelge 35: Birincil kısıtlamaların elde edilmesi……………………………………………………...
Çizelge 36: Dış anahtar kısıtlamaların elde edilmesi……………………………………………….....
Çizelge 37: Kontrol kısıtlamaların elde edilmesi……………………………………………………...
1
1.GİRİŞ
Anlamsal Web günümüzün en çok konuşulan konularından biridir. Günümüz web sayfalarının
anlamsal içeriğine yapı kazandırmak ve yazılım etmenleri tarafından işlenebilir hale getirilmesi hedefini
taşımaktadır(Berners-Lee, 2000). Etmenler bu şekilde kullanıcılar için sayfaları tarayabilecek ve istenen
bilgileri elde edebilecektir. Web sayfalarının anlamsal olarak işlenebilmesi için Web içeriğine biçimsel
anlamsallık kazandıran üst veriler kullanılmaktadır. Üst veri için anahtar kavram ontolojilerdir. Ontolojiler
ortak etki alanı modelleri sunmaktadır. Bu modeller hem insanlar hem de makineler tarafından
anlaşılabilir yapıdadır ve belirli etki alanının ortak kavramsallaştırılmış halini sunmaktadır. Günümüzdeki
web sayfalarının sadece insanlar tarafından kullanılabilir olmasının tersine, ontolojiler kullanılarak
hazırlanan içerik, makinelerce de işlenebilecek bir hale gelmiştir.
Günümüz Web ortamında statik, değişiklik göstermeyen web sayfaları yerine kullanıcıların
isteklerine göre dinamik olarak değişen dinamik web sayfalarını kullanır hale gelmiştir. Bu tarz web
sayfaları veri odaklı web sayfaları olarak da adlandırılabilirler. Bu tarz web sayfalarına örnek olarak eticaret uygulamaları gösterilebilmektedir. Bu tarz web sayfaları web tasarımını ve içeriğinin
güncellenmesi işlemlerini çok kolaylaştırmaktadır. Ancak bu da bazı problemleri beraberinde
getirmektedir. Veri odaklı web siteleri genelde dinamik olarak yaratıldığı için, bu tarz sayfaların URLleri
genelde arama motorları tarafından incelenmez. Ek olarak bu tarz sayfalar veritabanlarından gelen verileri
kullandıkları için etmenler tarafından işlenebilir biçimde değillerdir. Bu yüzden Anlamsal Web’e de dahil
olmamaktadırlar.
Veri odaklı web sayfalarının Anlamsal Web’e dahil edilebilmesi için iki temel yaklaşım
bulunmaktadır. Bunlardan bir tanesi web sayfalarına yorum ekleme “annotation” işlemidir. Sayfalara
ontoloji yapıları kullanarak yorumlar eklenir. Böylelikle makineler yorumlar sayesinde sayfalar hakkında
bilgi sahibi olabilecektir. Ancak günümüz webinin büyüklüğü göz önüne alındığında yorumlama sürecinin
otomatik olması gerekmektedir. Her koşulda yorumlama işlemi çok zaman isteyen bir işlemdir.
İkinci yaklaşımda ise dinamik sayfaların içeriklerinin oluşturulduğu veritabanlarının ontolojilere
otomatik olarak eşlenmesi hedeflenmiştir. Bu yaklaşım ile veritabanlarındaki üst veriler ile birlikte veriler
de ontolojisel yapılara dönüştürülmüştür. Eşleme sırasında üst veri bilgileri RDFS gibi şema yapılarında
veriler ise RDF gibi yapılarda saklanabilmektedir.
2
Kaynak tanımlama Çatısı, Evrensel Kaynak Belirteçleri “Universal Resource Identifier” tarafından
tanımlanabilen bilgilerin gösterimi için kullanılan bir standarttır. Özellikle Web kaynakları ile ilgili üst
verilerin betimlenmesi amacını taşır(RDF_PRIMER 2004). RDF birçok uygulama alanında verinin
gösterimi için kullanılmaktadır. Bunlardan bazıları Dijital kütüphaneler, Geospatial Teknolojileri, Akıllı
Elektronik Ticaret ve kişisel bilgi yönetim sistemleridir. RDF, Anlamsal Web’in gerçekleştirilmesi için
temel yapı taşlarını sağlar(Berners-Lee,2000). Yapısındaki yalınlık değişik uygulamaların birlikte
çalışabilmeleri için kolaylık sağlar ve RDF’in makineler tarafından anlaşılabilir yapısı Web kaynaklarının
otomatik olarak işlenebilmesine olanak sağlar(RDF_FAQ).
Oracle Spatial 10g v2 ile birlikte RDF verilerinin Oracle’da yönetilebilmesi için yeni veri tipleri
tanımlanmıştır. Çizge veri modeli ile birlikte RDF üçlüleri diğer veri tipleri gibi indekslenebilir ve
sorgulanabilir hale getirildi. Bunların yanı sıra RDF diğer ilişkisel veri tabanı nesneleriyle birlikte
sorgulanabilir hale getirilmiştir.
Bu rapor kapsamında ikinci yaklaşım kullanılmaktadır. Bu yaklaşım dâhilinde genel ilişkisel bir
ontoloji yardımıyla ilişkisel veri tabanı üst verileri RDFS şekline dönüştürülüp ORACLE RDF depolama
aracına eklenmektedir. Eşlenme sonucu ortaya çıkan ontoloji daha sonra veritabanlarındaki verilerin, rdf
üçlüleri şeklinde Oracle RDF deposuna aktarılabilmesi için kavramsal model olarak kullanılmaktadır.
Sonraki aşamada ise ilişkisel veritabanındaki ilişkiler ve anlamsallığı desteklemek ve çıkarsama
gerçekleştirebilmek için kural tabanları oluşturulmaktadır. Süreç sonucunda Oracle deposunda oluşacak
yapı ters mühendisliğe uygun halde veritabanı yapılarına geri dönüştürülebilir bir yapıda olmaktadır.
3
2. ANLAMSAL WEB
Anlamsal Web, biçimsel anlamsallarla içeriği geliştiren yeni bir WWW mimarisi sunma çabalarını
ifade etmektedir(Berners-Lee,2000). Bu sayede otomatik hale getirilmiş etmenler Web içeriklerini
işleyebilecek, yorumlayabilecek ve kullanıcı istekleri doğrultusunda daha zeki görevleri
gerçekleştirebilecektir. Anlamı ifade edebilmek anlamsal webin en temel görevlerindendir. Bu amaç
doğrultusunda çok sayıda anlatımsal katman yapılarına ihtiyaç duyulmaktadır. Şekil 1 Anlamsal Web’in
katmanlarını ifade etmektedir.
Şekil 1:Anlamsal Web katmanları(Berners-Lee’den 2000)
• XML katmanı sözdizimi katmanı olarak kullanılmaktadır
• RDF katmanı veri katmanını ifade etmektedir.
• Ontoloji katmanı üzerinde ortak bir karara dayanan verinin anlamını ifade eden katmandır.
• Mantık katmanı akıllı çıkarsamanın gerçekleştirebilmesi için kurallar sunar.
• Kanıt katmanı etmenler arası iletişimde tanıtların değiş tokuşunu destekleyen
katmandır(Stojanovic et al., 2002).
Tez kapsamında daha çok en üstteki üç katman üzerinde yoğunlaşacaktır. Anlamsal Web’in
geliştirilebilmesi için gerekli ilk iki katman şu an kullanılmaktadır. Bunlar XML ve RDF olarak ilk iki
katmanda kullanılabilmektedir. Bu nedenle son iki katman tez kapsamında değildir.
4
2.I XML Sözdizimi Katmanı
XML dili kullanıcıların dokümanlarına gelişigüzel yapılar eklemesine olanak sunar ancak yapının
ne anlama geldiği konusunda fikir vermez. İmleç isimleri anlamsallık kazandırmaz. Anlamsal Web XML’i
sadece sözdizimi için kullanmaktadır.
2.2 RDF(Kaynak tanımlama Çatısı) Veri Katmanı
Kaynak tanımlama Çatısı(“Resource Description Framework”) (RDF) Evrensel Kaynak
Belirteçleri “Universal Resource Identifier” (URI) tarafından tanımlanabilen bilgilerin gösterimi için
kullanılan bir standarttır. RDF üst verilerin kodlanması, değiş-tokuşu ve tekrardan kullanılabilmesini
sağlayan bir mimari sunmaktadır. Özellikle Web kaynakları ile ilgili üst verilerin betimlenmesi amacını
taşır(RDF_PRIMER) RDF birçok uygulama alanında verinin gösterimi için kullanılmaktadır. Bunlardan
bazıları Dijital kütüphaneler, Geospatial Teknolojileri, Akıllı Elektronik Ticaret ve kişisel bilgi yönetim
sistemleridir. RDF, Anlamsal Web’in gerçekleştirilmesi için temel yapı taşlarını sağlar(BernersLee,2000). Yapısındaki yalınlık değişik uygulamaların birlikte çalışabilmeleri için kolaylık sağlar ve
RDF’in makineler tarafından anlaşılabilir yapısı Web kaynaklarının otomatik olarak işlenebilmesine
olanak sağlar(RDF_FAQ). RDF’te veri gösterimi üçlüler “triples” ile gerçekleştirilir. Her bir üçlü özne
(“subject”) yüklem (“predicate”) ve nesneden(“object”) oluşmaktadır. Bu üçlü yapı yönlendirilmiş
çizgelerle modellenebilir. Üçlü ile tanımlanan deyimlerin özne ve nesne parçaları çizgede düğüm, yüklem
parçası ise bu iki düğüm arasındaki bağlantı ile betimlenebilir. Yüklem bu kısımda iki düğüm arasındaki
ilişkiyi tanımlar. Bağlantının yönü her zaman nesneye doğrudur(Şekil 2).
Özne
Nesne
Yüklem
Şekil 2:RDF yönlendirilmiş çizge (RDF Primer’den 2004)
5
2.3 Ontoloji Katmanı
Anlamsal web’in üçüncü temel katmanı ontolojilerdir. Yapay zekâ ve Web araştırmalarında
ontoloji belirli bir ilgi etki alanının resmi, ortak bir biçimde kavramsallaştırılmasıdır. Web üzerinde
bulunana içerikler gibi heterojen, dağıtık ve yarı-yapılı bilgi kaynaklarının tanımlanması için birebirdir.
Ortak ve paylaşılmış etki alanı teorilerinin tanımlanmasıyla birlikte hem insanların hem de makinelerin
birbirleriyle düzgün bir haberleşmelerini sağlamakla beraber sadece sözdizimlerinin değil ayrıca
anlamsalların da değiş tokuşunu desteklemektedir. Web ortamında bulunan anlamsalların ontolojileri
temel alması son derece önemlidir. Bu şekilde Anlamsal Web dâhilinde tüketici ve üretici etmenler
haberleşmeleri için gerekli olan sözlükleri ontolojilerin değiş tokuşuyla elde edebileceklerdir.
6
3. VERİ MODELLERİ
Bu bölüm eşleme işlemi sırasında kullanılacak veri modellerini tanıtmaktadır.
3.1 İlişkisel Model
İlişkisel veritabanlarının altında yatan model ilişkisel veri modelidir. İlişkisel veri modelinin resmi
tanımıyla birlikte SQL DDL’lerinde bulunan yapılar şu şekilde düşünülebilir.
Model bileşenleri şu şekildedir
• İlişkiler(“Relations”)
• Öznitelikler(“Attributes”)
SQL-DDLlerin daha fazla söylemlere sahip olduğu aşikârdır. SQL-DDL ile “NOT NULL”,
“UNIQUE” gibi kısıtlamalar belirtmek de mümkündür. Kısıtlamalar geliştirilen modelde kavramların
özellikleri şeklinde belirtilecek ama anlamsallıkları ise kural tabanlarına kuralların eklenmesiyle
korunmaya çalışılacaktır. Böylelikle gerektiğinde çıkarsama sonucu elde edilen ilişkiler ve anlamsallık
kullanılabilecektir. Ek olarak ilerdeki çalışmalarda ontolojilerin statik yapısı nedeniyle SQL-DDLlerin
dinamik özelliklerinden tetikleyicilerin “triggers” ontolojilere eşlenmesi de hedeflenmektedir.
SQL-DDL’lerde ek olarak göndergesel bütünlük kısıtlamaları da belirtilebilir. Bu bilgi özellikle
ontoloji kavramları arasındaki ilişkileri belirlemede son derece önemlidir. Dışsal anahtarlar olarak
kullanılan bu kısıtlamalar da sistemde kavramların özellikleri olarak kullanılacak ve anlamsal bilgileri ise
kural tabanlarına kuralların eklenmesiyle elde edilecektir.
3.2 RDF Ontoloji Modeli
Temel olarak RDF şema şartnamesi bazı eşsiz özellikleriyle birlikte nesne tabanlı modelleme dili
sunmaktadır:
• Özniteliklerle ilişkiler arasında bir ayrım yoktur, her ikisi de özellik olarak betimlenir.
• Sadece ikili ilişkiler özelliklerle modellenebilir, n-ary ilişkiler için yardımcı sınıflar bulunmaktadır.
• Tip sistemi sadece iki temel tipe sahiptir. (rdf:Literal ve rdf:Resource).
• Sınıflar ve özellikler “Resource” tipindedir,
• RDF ile birlikte diğer nesne odaklı modeller gibi sınıf hiyerarşileri değil aynı zamanda özellikler için de
hiyerarşiler tanımlanabilir.
7
<rdf:RDF>
<rdfs:Class rdfs:ID="Student"/>
<rdfs:Class rdfs:ID="PhDStudent" >
<rdfs:subClassOf
rdf:resource="http://xyz.org#Student"/>
</rdfs: Class>
<rdfs:Class rdfs:ID="School"/>
<rdf:Property ID="schoolID"
<rdfs:domain rdf:resource="#Student"/>
<rdfs:range rdf:resource="School"/>
</rdf:Property>
</rdf:RDF>
Çizelge 1: Örnek bir RDF Şema(RDF Primer’den 2004)
3.3 RDF Ontoloji Modeli ve İlişkisel Model
Geliştirilen sistem ilişkisel veritabanını ontolojilere eşlemeyi hedeflemektedir. Ontolojiler ilişkisel
veritabanı şemalarından şu yönlerle ayrılmaktadır:
− Tip sisteminde temel tipler yoktur her şey birer kavramdır.
− Kavramda öznitelik ya da ilişkiler yoktur, her şey özelliktir.
− Kavramlar ve özellikler kalıtsal hiyerarşi oluşturulabilecek şekilde sınıflandırılabilir.
8
4. ORACLE UZAMSAL KAYNAK TANIMLAMA ÇATISI
4.1 ORACLE 10g Uzamsal Kaynak Tanımlama Çatısı Özellikleri
Oracle Spatial 10g v2 ile birlikte RDF verilerinin Oracle’da yönetilebilmesi için yeni veri tipleri
tanımlanmıştır(Alexander et al., 2004). Çizge veri modeli ile birlikte RDF üçlüleri diğer veri tipleri gibi
indekslenebilir ve sorgulanabilir hale getirildi. Bunların yanı sıra RDF diğer ilişkisel veri tabanı
nesneleriyle birlikte sorgulanabilir hale getirilmiştir.
RDF Uygulama Alanları
•
•
•
•
•
•
Web Üst veri: Web kaynakları ve sistemleri hakkından bilgi verme amacıyla kullanılabilir.(içerik
değerlendirme, kişisel gizlilik)
Hayat Bilimi Uygulamaları: Basit taksonomilerden gerçek tam yapılı ontolojilere kadar uzanan
bilgi tabanlarının sorgulanması.
Toplumsal Ağ Uygulamaları: “Friend of a Friend” uygulamaları, toplumsal ağ izleme ve zeka
uygulamaları
Anlamsal Bilgi Entegrasyonları: Değişik uygulamalar arasının bilgi paylaşımı için ortak,merkezi iş
bilgi modellerinin tanımlanması
Anlamsal Web : Etmenler yardımıyla Web üzerinde bilgi kaynaklarının otomatik olarak
işlenebilmesi Universal Resource Identifier
Portallar ve e-ticaret uygulamaları: Çok miktarda üst verinin sorgulanması
RDF’e Özgü İşlevsellik
•
•
•
•
•
•
•
•
•
•
•
•
•
RDF deyimleri ve şeması için tam destek
Çizge örüntüleri kullanarak RDF modellerinin sorgulanabilmesi ve elde edilmesi
RDF veri tiplerinin tamamının desteklenmesi (URIs, boş uçlar, basit ve tipli sabitler, koleksiyon
yapılarının desteklenmesi
RDF şema üzerinde çıkarsamanın gerçekleştirilmesi
RDF modelinin çizge örüntüleri kullanılarak RDF modelinin sorgulanması
RDF modelinin çıkarsama sonucu oluşturulmuş üçlüler kullanılarak sorgulanabilmesi
Deyimlerin açıklanması(reification)
Çizge örüntülerinde takma isimli(alias) URI’ların kullanılabilmesi.
Kullanıcı tarafından tanımlanabilen kuralların oluşturabilmesi
SQL ve Java API’leriyle veriye ulaşılabilmesi
Sınıflandırma subClassOf ve subPropertyOf desteği
Kullanıcı tarafından tanımlanabilen çıkarsama kuralları
RDF verisinin mantıksal çizgesinin gösterilmesi
9
Oracle DBMS ilişkili Özellikler
•
•
•
•
•
•
•
•
•
•
•
Kümelenmiş(Clustered) veritabanı sunucuları
Bölümleme(Partitioning): Büyük grafikleri saklayabilmek için tabloların bölümlere ayrılması
Paralellik: ): Büyük grafiklerin yüklenmesi, indekslenmesi ve sorgulanması sırasında paralelliğin
kullanılabilmesi
Veri Yükleme: Verinin üçlü formatta içeri ve dışarı aktarılabilmesi.
Konum tabanlı bilginin uzamsal analizi
Geçici Analizler(zaman serileri, zaman damgalama)
Versiyonlama
Metin arama
Yapısız veri tipi desteği(:XMP, uzamsal, resimler, müzik, video vs)
XML araçları
Oracle Uygulama sunucusu mimarisiyle tümleştirilme
4.2 Veritabanında RDF Veri Modeli
RDF deyimleri <özne, yüklem, özne> şeklindeki üçlüler halinde ifade edilir. Her bir üçlü belirli bir
konuya özgü tam ve eşsiz bir olgudur ve yönlendirilmiş çizgede bir bağlantı şeklinde ifade edilebilir.
Oracle 10g, Oracle Uzamsal Ağ veri Modeli(NDM) dâhilinde yönlendirilmiş ve yönlendirilmemiş
çizgeleri destekler. Önerilen RDF veri modeli RDF üçlülerini NDM tarafından yönetilen mantıksal veri
ağlarına eşler. Temel veriye ek olarak katalog servisi sunar. Katalog servisi değişik RDF modelleri
hakkında bilgi içerir.
RDF üçlü verisi özne ve yüklemlerin düğüm olarak ve yüklemlerin ise bağlantılar şeklinde
eşlenmesi şeklinde çizge ile eşlenmektedir. RDF veri deposu Oracle tarafından yönetilir ve tüm RDF
verisi tek bir şema altında yönetilir ve kullanıcı düzeyinde erişim fonksiyonları ve yapılar RDF verisinin
sorgulanması ve güncellenmesi için kullanılabilmektedir. Veritabanında depolanacak tüm RDF verisi için
tek bir evren vardır. Her bir RDF üçlüsüne eşsiz bir veritabanı nesnesi olarak davranılır. Sonuç olarak
birden çok RDF üçlüsünden oluşan RDF dokümanı birden çok veritabanı nesnesi oluşturur.
4.2.1 RDF Modelleri için Üst Veri
Veritabanında tanımlı tüm veri modelleri ile ilgili bilginin depolanabilmesi için sistem düzeyinde
bir tablo yaratılmıştır. Yeni bir RDF modeli yaratıldığında bu tabloya yeni bir giriş yapılır. Yeni bir model
yaratabilmek için kullanıcı bu model için bir isim, model içi rdf verilerini depolayabileceği bir tablo ve bu
tabloda da RDF üçlülerine ait referansları depolayacağı bir kolonu belirtmek zorundadır. Bu bilgiler
verildikten sonra sistem otomatik olarak bir modelid oluşturur ve bu modelid daha sonra model ismi
10
yerine kullanılabilmektedir. Modelid bilgisinin model ismi yerine kullanılabilmesi yer kaybına engel
olmaktadır.
Oracle sisteminde RDF modelleri hakkındaki bilgi MDSYS.RDF_MODEL$ tablosunda tutulur ve
yeni bir model eklendiğinde ve çıkartıldığında bu tablo Oracle tarafından otomatik olarak yönetilebilir. Bu
tablo üzerinde kullanıcılar DML operasyonları gerçekleştiremez.
Yeni bir model yaratabilmek için ilk aşamada RDF verilerinin referanslarının tutulacağı kullanıcı
tablosu yaratılmalıdır.
CREATE TABLE FAMILY_RDF_DATA
(id NUMBER, triple,SDO_RDF_TRIPLE_S) ;
Çizelge 2: RDF modeli için kullanıcı tablosu (Murray et al.’dan 2005)
Model yaratılabilmesi için model ismi, kullanıcı tablo ismi ve rdf veri referanslarının tutulacağı
SDO_RDF_TRIPLE_S tipindeki kolon bilgisi kullanılmalıdır.
EXECUTE SDO_RDF.CREATE_RDF_MODEL
('FAMILY', 'FAMILY_RDF_DATA', 'TRIPLE');
Çizelge 3: RDF modelinin yaratılması(Murray et al.’dan 2005)
Yeni bir RDF modeli yaratıldığında bu modelle ilişkili tüm RDF üçlüleri mdsys şeması altında
RDFM_modelismi formatındaki “view” altında depolanır. Bu “view” sadece modelin sahibi veya modeli
sorgulamaya yetkisi olan kullanıcılar tarafından görüntülenebilir. Her bir MDSYS.RDFM_modelismi “
view”ı her bir üçlü için bir kayıt içerir.
4.2.2 RDF İsim Uzayları
İsim uzayları RDF/XML dokümanlarının daha okunulabilir hale getirilmesi için kullanılmaktadır.
Oracle RDF veri modelinde namespace’ler özne, yüklem ve nesnelerle birlikte tutulmaktadır ancak ek
olarak RDF evreninde kullanılabilecek tüm namespacelerin tutulabilmesi için ek isteğe bağlı yapılar da
mevcuttur. Yeni bir RDF namespace’i veritabanına eklendiğinde namespace ID otomatik olarak yaratılır.
Bu namespaceid daha sonra isim uzayı göstermek için dış anahtar olarak kullanılabilmektedir.
11
Yeni bir isim uzayı eklendiğinde Oracle MDSYS.RDF_NAMESPACE$ tablosunu otomatik olarak
yönetir. Yeni bir namespace ekleyebilmek için
“SDO_RDF.ADD_NAMESPACES” işlemi
gerçekleştirilmelidir.
MDSYS.RDF_NAMESPACE$
tablosu
üzerinde
DML
işlemleri
gerçekleştirilmemelidir.
4.2.3 RDF Deyimleri
RDF deyimleri özne, nesne ve yüklemden oluşan üçlülerden oluşmaktadır. Oracle RDF veri
modelinde bu üçlünün değerleri RDF_VALUE$ tablosunda tutulur.
SQL> desc RDF_VALUE$;
Name Type
---------------------------------------------------VALUE_ID NUMBER
VALUE_NAME URITYPE
VALUE_TYPE VARCHAR2(10)
LITERAL_TYPE XMLTYPE
Çizelge 4: RDF_VALUE$ görünümü yapısı(Murray et al.’dan 2005)
RDF modeline yeni bir deyim ekleneceği zaman bu tabloda üçlünün her bir parçası için bir kayıt
eklenir. Bu parka değeri VALUE_NAME kolonuna eklenir. Eğer bu değerler sistemde mevcut ise
RDF_VALUE$ tablosuna yeni bir değer eklenmez.
VALUE_TYPE kolonu için kullanılabilecek tipler şu şekildedir:
VALUE_TYPE=’UR’: metin değeri URI ise
VALUE_TYPE=’PL’: metin değeri basit sabit ise
VALUE_TYPE=’TL’: metin değeri tipe sahip sabit ise
VALUE_TYPE=’TC_BAG’: metin değeri rdf:Bag koleksiyonu için boş düğüm ise
VALUE_TYPE=’TC_ALT’: metin değeri rdf:Alt koleksiyonu için boş düğüm ise
VALUE_TYPE=’TC_SEQ’: metin değeri rdf:Seq koleksiyonu için boş düğüm ise
12
VALUE_TYPE=’BN’: metin değeri boş düğüm ise
Eğer bir deyimin nesne sabit ise bu değerin tipe sahip olması beklenebilir. Bu durumda tip bilgisi
LITERAL_TYPE kolonunda saklanır diğer şekilde bu kolon “null” değer taşır. RDF_VALUE$ tablosu
boş düğümler, URI’lar, basit sabitler, tipe sahip sabitler ve tipe sahip koleksiyonlar ve bağlantılar için
bilgi bulundurmaktadır.
4.2.3.1 Üçlülerin eşsizliği ve Sabitler için Veri Tipleri
Veri tabanında çoklayan üçlüler depolanmamaktadır. Yeni girilen bir üçlünün çoklanıp
çoklanmadığı bilgisini kontrol edebilmek için üçlüdeki özne, yüklem ve nesnenin model içerisinde var
olup olmadığı kontrol edilir. Eğer üçlünün herhangi bir parçası URI ise değerlerin birebir eşlenip
eşlenmediği kontrol edilir. Ancak üçlünün nesnesi sabit ise öznenin ve yüklemin birebir eşlenmesi ile
birlikte nesnenin kuralsal(canonical) eşlenmesi de kontrol edilir. Örneğin aşağıdaki üçlüler birbirlerinin
aynısı olarak kabul edilir.
<eg:a> <eg:b> "123"^^http://www.w3.org/2001/XMLSchema#int
<eg:a> <eg:b> "123"^^http://www.w3.org/2001/XMLSchema#unsignedByte
Buradaki ikinci üçlü ilkinin çoklanmış hali olarak Kabul edilir çünkü bu değerler kuralsal olarak
aynıdır.
"123"^^http://www.w3.org/2001/XMLSchema#int değeri kuralsal olarak
"123"^^http://www.w3.org/2001/XMLSchema#unsignedByte değerine eşittir.
Kuralsal olarak eşit olan iki varlık birbiriyle eşit olarak kabul edilir.
RDF dışında bir örnek vermek gerekirse A*(B-C), A*B-C*A, (B-C)*A, ve -A*C+A*B aynı
kuralsal değere denk gelir.
Değer baz alınarak yapılacak elemelerde aşağıdaki tipler kullanılabilir.
■ STRING: sabit değer, xsd:string ve buna bağlı bazı XML şema alt tipleri
■ NUMERIC: xsd:decimal ve buna bağlı bazı XML şema alt tipleri, xsd:float, ve xsd:double.
■ DATETIME: xsd:datetime, ancak timezone desteği yoktur.
■ DATE: xsd:date, ancak timezone desteği yoktur
■ OTHER: Geri kalan tüm tipler. Bu durumda farklı gösterimler için karşılaştırma
gerçekleştirilmez.
13
RDF_VALUE$ tablosunda bir sabitin ilk defa görüldüğü anda sabit bu değer için kuralsal biçim
olarak kabul edilir.
Kuralsal olarak eşit değerler RDF_VALUE$ tablosunda saklanabilir ancak kuralsal olarak eşit
üçlüler veritabanında tekrar etmez.
4.2.4 Tipli Sabitler
Tipli sabitler RDF_VALUE$ tablosunda LITERAL_TYPE xml tipi kolonunda sabitlerin tiplerinin
saklanmasıyla depolanabilir. RDF Primer dokümanından alınmış aşağıdaki tipli sabitin karakter değeri
‘1999-08-16’ VALUE_NAME kolonuna http://www.w3.org/2001/XMLSchema#date’ tipi ise
LITERAL_TYPE kolonuna eklenir. VALUE_TYPE kolonu değeri ise ‘TL’. Olarak oluşturulur.
Şekil 3:Tipi Sabitler(RDF Primer’den 2004)
4.2.5 RDF Özne ve Nesneleri
Oracle RDF veri modelinde özneler ve nesneler ağ veri modelinde düğümlere karşılık gelmektedir.
Özne düğümleri grafikteki bağlantıların başlangıç düğümlerini ve nesne düğümleri ise bitiş düğümleri
şeklindedir. Sabit olamayan değerler özne ya da nesne olabilir. RDF_NODE$ tablosu özne ve nesne
bilgilerinin tutulduğu tablodur. RDF_VALUE$ tablosundaki VALUE_ID gibi bu tabloda NODE_ID
kolonu bulunmaktadır. RDF_NODE$ tablosu sadece düğümlere ait VALUE_ID değerini tutar.
14
4.2.6 Boş Düğümler (“Blank Nodes”)
RDF yapısında üçlüler bilinen ve bilinmeyen özne düğümlerine sahip olabilir. Boş uçlar
bilinmeyen düğümleri betimlemek için kullanılmaktadır. Boş uçlar aynı zamanda bir özne düğümü ile
nesne düğümü arasındaki ilişkinin koleksiyonlarda olduğu gibi n-ary olduğu durumlarda da
kullanılmaktadır. Oracle RDF veri modelinde RDF üçlüsündeki her bir boş düğüm için bir kayıt girilir.
Varsayılan olarak iki farklı nesneye karşılık gelen iki boş düğüm aynı ağ düğümüne karşılık gelmez.
Ancak kullanıcı boş düğümleri tekrardan kullanılabilecek şekilde tanımlaması mümkündür. Eğer kullanıcı
boş düğümleri tekrardan kullanabilmek isterse bu düğümleri RDF_BLANK_NODE$ tablosuna
ekleyebilmektedir.
Bu tablo aşağıdaki kolonlara sahiptir:
SQL> desc RDF_BLANK_NODE$;
Name Type
-----------------------------------------------NODE_ID NUMBER
NODE_VALUE VARCHAR2
ORIG_NAME VARCHAR2
MODEL_ID NUMBER
Çizelge 5: RDF_BLANK_NODE$ görünümü yapısı(Murray et al.’dan 2005)
Boş düğümün NODE_VALUE ya da VALUE_NAME değeri düğüm için eşsiz VALUE_ID
değerini _:blankNode kısmına eklenmesi şeklinde elde edilebilir. Bu da boş düğümün VALUE_NAME
değerinin blankNodenode_id şeklinde oluşmasını sağlar. Boş düğümün tekrardan kullanılabilmesi için boş
düğüm yapıcısının(“constructor”) kullanılması gerekmektedir.
15
SDO_RDF_TRIPLE_S (
model_name VARCHAR2, -- Model ismi
sub_or_bn VARCHAR2, -- Özne ya da boş düğüm
property VARCHAR2, -- Yüklem
obj_or_bn VARCHAR2, -- Nesne ya da boş düğüm
bn_m_id NUMBER) – tekrardan kullanılacak boş düğümün
modelid’si
RETURN SELF;
SDO_RDF_TRIPLE_S (
model_name VARCHAR2, -- Model ismi
sub_or_bn VARCHAR2, -- Özne ya da boş düğüm
property VARCHAR2, -- Yüklem
obj_or_bn CLOB Nesne
bn_m_id NUMBER) – tekrardan kullanılacak boş düğümün
modelid’si
RETURN SELF;
Çizelge 6: Boş düğüm yapıcısı(Murray et al.’dan 2005)
Boş düğümün eklenmesi:
INSERT INTO nsu_data VALUES (SDO_RDF_TRIPLE_S(
‘nsu’,
'_:BNSEQN1001A',
'<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>',
'<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq>',
4));
Çizelge7: Boş düğümün eklenmesi(Murray et al.’dan 2005)
Boş düğüm yapıcısının kullanılması halinde RDF_BLANK_NODE$ tablosu aynı MODEL_ID ve
ORIG_NAME ya da NODE_VALUE değerine sahip bir başka boş düğümün olup olmadığını kontrol
etmek amacıyla sorgulanır. Eğer aynı özelliklere sahip bir boş düğüm bulunmazsa yeni bir boş düğüm
girdisi gerçekleştirilir. RDF_BLANK_NODE$ tablosundan bir değerin silinmesi halinde RDF_VALUE$
ve RDF_NODE$ tablolarında bu düğüme karşılık gelen değerler silinmez. Ancak silinen boş düğümlerin
tekrardan kullanılabilmesi engellenmiş olur.
16
4.2.7 RDF Yüklemleri (“Predicates”)
RDF yüklemleri bağlantılara karşılık gelir. RDF modele yeni bir üçlü eklendiği zaman ilk aşamada
özne, yüklem ve nesne değerlerinin RDF_VALUE$ tablosunda var olup olmadığı kontrol edilir. Eğer
değerler mevcut ise yeni giriş gerçekleştirilmez. Eğer değerler mevcut değilse 3 tane yeni kayıt
RDF_VALUE$ tablosuna eklenir. Eğer bu üçlü daha önceden var ise bir diğer kontrol de üçlünün daha
önce var olup olmadığının kontrolüdür. Bu karşılaştırma RDF_LINK$ üzerinden gerçekleştirilir.
RDF_LINK$ tablosu yüklemler ve üçlüler hakkında bilgi depolar.
Bu tablo aşağıdaki kolonları içerir.
SQL> desc RDF_LINK$;
Name Type
------------------------------------------------------LINK_ID NUMBER
VALUE_ID NUMBER
START_NODE_ID NUMBER
END_NODE_ID NUMBER
LINK_TYPE VARCHAR2(10)
ACTIVE VARCHAR2(1)
LINK_LEVEL NUMBER
PARENT_LINK_ID NUMBER
MODEL_ID
NUMBER görünümü(Murray et al.’dan 2005)
Çizelge 8:RDF_LINK$
Eğer belirli bir model için bu üçlü daha önceden var ise yeni bir üçlü eklenmez. Eğer bu üçlü daha
önceden sistemde yok ise bu üçlü için yenir bir “unique ID” yaratılır. Bu id LINK_ID (RDF_T_ID)
şeklinde saklanır. Üçlü için RDF_VALUE$ tablosunda özneye karşılık gelen VALUE_ID
START_NODE_ID ve nesneye karşılık gelen VALUE_ID END_NODE_ID olarak kaydedilir.
4.2.8 RDF Reifikasyon(Reification)
Bir reifikasyon deyimi bir RDF deyiminin başka bir RDF deyimi ile açıklanması şeklinde
tanımlanmaktadır. Oracle RDF veri modelinde deyimler hakkında tanımlama yapan diğer deyimleri ifade
edebilmek için hiyerarşik bir bağlantı yapısı sunulmaktadır. RDF_LINK$ tablosundaki LINK_TYPE
kolonu iki şekilde oluşabilmektedir (i) SS,bu deyimin basit bir deyim olduğunu ,(ii) RS ise bu deyimin bir
reifikasyon deyimi olduğunu ifade etmektedir.
Bağlantı tipinin RS olduğu durumda şu an ki deyimin başka bir deyim hakkında bir deyim
oluşturduğunu ifade etmektedir.
17
Bir RDF deyiminin reifikasyonu, bu rdf deyimi için üst veri sağlanması şeklinde tanımlanabilir.
Bu şekilde deyim bir başka RDF deyiminde nesne ya da özne olarak kullanılabilmektedir. Örneğin B
kişisi A kişisinin belirli bir iş için iyi bir aday olduğunu söylerken C kişisi A kişisinin bu iş için uygun
olmadığını belirtebilir.
■ PersonB: PersonA iş için uygun adaydır
■ PersonC PersonA iş için uygun aday değildir..
PersonB ve PersonC bu tarz deyimleri gerçekleştirebilmesi için “PersonA iş için uygun adaydır”
reifikasyon dörtlüsünün “reification quad” sistemde bulunması gerekmektedir.
<a:Stmt1, rdf:type, rdf:Statement>
<a:Stmt1, rdf:subject, a:PersonA>
<a:Stmt1,
rdf:predicate,
a:Aday>
Çizelge
9: Reifikasyon
dörtlüsünü örneği
<a:Stmt1, rdf:object, "iyi">
PersonB ve PersonC daha sonra bu deyim hakkında kendi deyimlerini oluşturabilirler.
<a:PersonB, a:kabul, a:Stmt1>
<a:PersonC, a:red, a:Stmt1>
SDO_RDF.IS_REIFIED_QUAD fonksiyonu bir deyim için reifikasyon dörtlüsünün sistemde olup
olmadığını kontrol etmek için kullanılabilir.
Ör:)
SELECT SDO_RDF.IS_REIFIED_QUAD('modelismi', 'a:PersonA', 'a:aday',
'iyi') FROM DUAL;
Sorgusu aşağıdaki sonucu türetir.
<a:Stmt1> <rdf:type> <rdf:Statement>
Bir reifikasyon deyiminin işlenebilmesi için özne düğümü(reifikasyonu yaratan deyimin öznesinin
URIsi) ,rdf:Statement yüklemi ve bir boş düğüm RDF_VALUE$ tablosuna eklenir. Daha sonra
RDF_LINK$ tablosuna yeni bir LINK_ID, rdf:Statement’I için VALUE_ID, özne VALUE_ID değeri
START_NODE, ve boş düğüm VALUE_ID’si ise END_NODE olarak kaydedilir. Daha sonra
reifikasyonu yapılan deyimin LINK_ID kolonu veritabanında bulunur ve reifikasyon yapan deyimin
18
PARENT_LINK_ID değeri bu LINK_ID değerini alır. Birden çok RDF deyimi bir deyim hakkında
açıklamalarda bulunabilir. Bu veri modelinde birçok alt linke sahip link şeklinde ifade edilebilir.
4.2.9 RDF Kapları(“RDF Collections”)
Çoğu kez birden çok varlığı içeren grupları tanımlamak gerekmektedir. Örneğin birden çok yazarı olan
bir kitap ya da bir kurstaki öğrenci sayısı. RDF grupları tanımlayabilmek için yerleşik tipleri kullanıma
sunmuştur. Kap “container” birden çok varlığı içeren kaynak olarak tanımlanabilir. Kap içerisindeki
varlıklara ise üye varlıklar denmektedir. Bir kap içerisindeki üyeler kaynaklar(boş düğümler dahil)
olabildiği gibi sabitler de olabilir. RDF 3 tip kap sunmaktadır:
•
•
•
rdf:Bag
rdf:Seq
rdf:Alt
“Bag” (rdf:Bag tipindeki kaynaklar) kaynak ya da sabitlerden oluşan grupları tanımlamak için
kullanılabilir. Çoklayan üyelere sahip olabilir ve üyelerin sıralanmasının herhangi bir önemi
bulunmamaktadır.
Sequence ya da Seq (rdf:Seq tipindeki kaynaklar) kaynak ya da sabitlerden oluşan grupları tanımlamak
için kullanılabilir. Çoklayan üyelere sahip olabilir ve üyelerin sıralanmasının önemi bulunmaktadır.
Alternative ya da Alt (rdf:Alt tipindeki kaynaklar) birbirine alternatif olabilecek kaynak ya da
sabitlerden oluşan grupları tanımlamak için kullanılabilir . Örneğin bir kitabın farklı dillerde yer alan
başlıklarını içeren kaynaklardan oluşan bir grup alt tipinde olabilir.
Şekil 4, örnek bir “bag” kap yapısını kullanmaktadır. “6.001 nolu kursa Amy, Mohamed, Johann,
Maria, ve Phuong öğrencileri kayıtlıdır”
19
Şekil 4: “Bag” deyimleri için örnek RDF/XML(RDF Primer’den 2004)
20
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdfsyntax-ns#"
xmlns:s="http://example.org/students/vocab#">
<rdf:Description rdf:about="http://example.org/courses/6.001">
<s:students>
<rdf:Bag>
<rdf:li rdf:resource="http://example.org/students/Amy"/>
<rdf:li
rdf:resource="http://example.org/students/Mohamed"/>
<rdf:li
rdf:resource="http://example.org/students/Johann"/>
<rdf:li
rdf:resource="http://example.org/students/Maria"/>
<rdf:li
rdf:resource="http://example.org/students/Phuong"/>
</rdf:Bag>
</s:students>
</rdf:Description>
</rdf:RDF>
Çizelge 10: “Bag” deyimleri için örnek RDF/XML(RDF Primer’den 2004)
Oracle RDF modelinde bu kap yapıları aşağıdaki üçlü yaratma prensiplerini kullanır.
Bir boş düğüm yaratılır. Bu boş düğümün VALUE_NAME değeri _:blankNodeNode_id,
şeklindedir ve VALUE_TYPE değeri TC_CollectionType. Daha sonra her bir kap üyesi için Üçlü
{_:blankNodeNode_id, rdf:blankNodeNode_id_coll#,collection_value} eklenir. Diğer üçlülerde olduğu
gibi “collection_value” nesnesi daha önce veritabanında bulunuyorsa tekrar kullanılmaktadır. Kap
üyeleri bağlantıları için PARENT_LINK_ID olarak, nesnesi kap’ın boş düğümü olan kaynak ilişki
bağlantısının LINK_ID’si kullanılır.
21
Şekil 5: Oracle NDM RDF veri modelinde ”Bag” kap yapısı (Murray et al.’dan 2005)
4.2.10 RDF Üst Veri Tabloları ve Görünümleri
Uzamsal veri modeli RDF ile ilişkili birçok üst veriyi tutabilmek için mdsys şeması altında çok
sayıda tablo
ve
görünüm
içermektedir.
Bu tabloların
ve görünümlerin
çoğu
SDO_RDF.CREATE_RDF_NETWORK
yordamıyla oluşturulmaktadır. Tablo 1–1 bu tablo ve
görünümleri göstermektedir.
22
Ad
RDF_MODEL$
RDFM_model-name
RDF_NAMESPACE$
RDF_RULEBASE_
INFO
RDF_RULES_INDEX_
DATASETS
RDF_RULES_INDEX_
INFO
İçerdiği Bilgi
Veritabanında tanımlı tüm RDF modelleri
Belirli model içerisindeki tüm üçlüler
RDF XML dokümanlarında kullanılabilecek isim
uzayları
Kural tabanları (RDF Rulebases)
Kural indekslerinde kullanılan veritabanı nesneleri
Kural İndeksleri(Rules indexes )
RDFR_rulebase-name
RDF deyimlerini tanımlamakta kullanılan
özne,yüklem ve nesneler
Bir kural tabanındaki kurallar
RDFI_rules-index-name
Belirli kural indeksindeki üçlüler
RDF_VALUE$
Tablo 1 RDF Üst Veri Tabloları ve Görünümleri(Murray et al.’dan 2005)
4.2.11 Oracle Uzamsal Ağ Modelinde Veri Depolama
Oracle RDF deposu Oracle Uzamsal Ağ Veri modelinin “Oracle Spatial Network Data Model
(NDM),” üzerine kurulmuştur. NDM içerisinde ağ ya da çizge nesneler arasındaki ilişkileri bağlantılar
sayesinde elde eder. RDF çizgeleri NDM içerisinde yönlendirilmiş mantıksal çizgeler şeklinde modellenir.
Bu ağ içerisinde nesneler ve özneler düğümlere eşlenir. Yüklemler ise bu iki düğüm arasındaki ilişkiyi
ifade eden başlangıç noktası özne ve bitiş noktası nesneler olan bağlantılar şeklinde eşlenmektedir.
Böylelikle bir bağlantı bütün bir RDF üçlüsünü tanımlar. Oracle içerisinde RDF depolamanın anahtar
özelliği düğümlerin üçlülerde kaç defa yer aldığına bakılmaksızın sadece tek bir kere depolanmasıdır.
Ancak yeni üçlü eklendiğinde bir bağlantı her zaman oluşturulmaktadır. Şekil 6 RDF üçlüleri <S1, P1,
O1>; <S1, P2, O2>; <S2, P2, O2> nin nasıl modellendiğini göstermektedir. Bir üçlü veritabanından
silindiğinde buna karşılık gelen bağlantı da silinmektedir. Ancak bu bağlantıyla ilişkili düğümler eğe
bunlara bağlı başka bağlantılar var ise silinmemektedir
23
Şekil 6:RDF üçlüleri(RDF Primer’den 2004)
Oracle’da RDF üçlüleri merkezi bir şema(mdsys) altında parçalanır ve depolanır. RDF çizgeleri
içerisindeki her bir üçlü bu şema altındaki nesnelerde depolanır. Kullanıcı tarafından tanımlanan
tablolarda sadece bu üçlülere ait referans idler depolanır. Ek olarak bu üçlülere erişim sağlamak için
fonksiyonlar da sunulmuştur. RDF veri depolanması için gerekli tablolar
RDF_MODEL$,
RDF_VALUE$, RDF_NODE$, RDF_LINK$ ve RDF_BLANK_NODE$’dır.
4.2.12 RDF veri deposuna üçlülerin eklenmesi
Kullanıcı sisteme üçlü eklemeye çalıştığı zaman ilk aşamada RDF_MODEL$ tablosu RDF
çizgesinin olup olmadığını belirlemek amacıyla kontrol edilir. Daha sonra RDF_VALUE$ tablosu
üçlünün her bir değerinin veritabanında olup olmadığını tespit edebilmek için kontrol edilir. Eğer daha
önceden veritabanında bulunurlarsa bu değerlerin VALUE_IDleri elde edilir. Bir sonraki adımda belirli
bir çizge için daha önceden bu üçlünün var olup olmadığı RDF_LINK$ yardımıyla kontrol edilir. Eğer
üçlü sistemde daha önceden depolanmış ise daha önce eklenmiş üçlünün Id değeri geri döndürülür ve veri
deposuna yeni bir giriş yapılmaz.
Eğer üçlü için veri değerleri RDF_VALUE$ tablosunda bulunmuyor ise bu değerler tabloya
eklenir ve yeni VALUE_ID değerleri atanır. Özne ve nesneye karşılık gelen VALUE_ID değerleri
RDF_NODE$ tablosuna eklenir. RDF_LINK$ tablosunda oluşturulan üçlü için yeni bir LINK_ID atanır
ve öznenin VALUE_ID değeri START_NODE_ID değeri olarak ve nesne değeri ise END_NODE_ID
değeri olarak atanır. Yeni bir üçlü çizgeye eklendiğinde RDF_LINK$ tablosuna yeni bir kayıt eklenir.
24
Eklenen üçlüler özne ya da nesne olarak boş düğümleri içerebilir. Böyle bir durumda boş düğümler
otomatik olarak küresel eşsiz bir değere dönüştürülür. Oracle sistemi tarafına otomatik olarak
_:ORABNuniqueID formatında oluşturulan boş düğümler tekrardan kullanılmazlar. Ancak boş düğüler
koleksiyonlarda olduğu gibi kullanılmak istenirlerse değerleri RDF_BLANK_NODE$ tablosuna kullanıcı
tarafından eklenebilir. Böyle bir durumda boş düğümün orijinal ismi, Oracle sistemi tarafından oluşturulan
ismi, ve VALUE_ID değeri RDF_BLANK_NODE$ tablosuna eklenir. Daha sonra eklenecek boş
düğümler aynı çizgeye aitse ve eğer aynı değere sahipse veri tabanındaki varolan boş düğüm değeri
tekrardan kullanılır. Kapların kullanılması sırasında boş düğümlerin kullanılması gerekmektedir.
RDF_BLANK_NODE$ tablosundaki değerler istendiği zaman güvenilir bir şekilde sistemden silinebilir.
4.2.13 RDF Nesne Tipleri
SDO_RDF_TRIPLE nesne tipi RDF verisini üçlü formatta göstermek için kullanılmaktadır.
SDO_RDF_TRIPLE_S nesne tipi is kalıcı RDF verisini veritabanında tutmak için kullanılmaktadır. RDF
verisi sadece merkezi bir şemada depolandığı için SDO_RDF_TRIPLE_S tipi veriye yönelik referanslara
sahiptir. Bu tip tüm üçlüyü ya da üçlünün istenilen parçalarını elde edebilmek için metotlara sahiptir.
SDO_RDF_TRIPLE
tipi
RDF
üçlülerinin
gösterimi
için
kullanılmaktayken
SDO_RDF_TRIPLE_S tipi veritabanı tablolarında RDF üçlülerinin depolanması için kullanılmaktadır.
SDO_RDF_TRIPLE nesne tipi aşağıdaki özniteliklere sahiptir:
SDO_RDF_TRIPLE (
subject VARCHAR2(4000),
property VARCHAR2(4000),
object VARCHAR2(10000))
Çizelge 11:SDO_RDF_TRIPLE tipi(Murray et al.’dan 2005)
SDO_RDF_TRIPLE_S nesne tipi ise aşağıdaki özniteliklere sahiptir(Murray et al.’dan 2005):
SDO_RDF_TRIPLE_S (
RDF_T_ID NUMBER, -- RDF üçlü ID (link ID)
RDF_M_ID NUMBER, -- RDF model ID
Çizelge
12:SDO_RDF_TRIPLE_S
tipi
RDF_S_ID
NUMBER,
-- Özne value ID
RDF_P_ID NUMBER, -- Yüklem value ID
RDF_O_ID NUMBER) -- Nesne value ID
25
SDO_RDF_TRIPLE_S tipinde kaydedilen RDF_T_ID ve RDF_M_ID değerleri birlikte
veritabanında bir RDF deyimini eşsiz olarak ifade edebilir.
SDO_RDF_TRIPLE_S tipi üçlünün tamamını ya da belirli bir parçasını elde edebilmek için
kullanılabilecek metotlara sahiptir:
GET_TRIPLE() SDO_RDF_TRIPLE tipinde sonuç döndürür
GET_SUBJECT()VARCHAR2 tipinde sonuç döndürür
GET_PROPERTY()VARCHAR2 tipinde sonuç döndürür
GET_OBJECT() CLOB tipinde sonuç döndürür
Bu metotların kullanımlarına aşağıdaki sorgular örnektir.
Sorgu:
SELECT a.triple.GET_TRIPLE() AS triple
FROM articles_rdf_data a WHERE a.id = 1;
TRIPLE(SUBJECT, PROPERTY, OBJECT)
Sorgu Sonucu:
SDO_RDF_TRIPLE('http://www.nature.com/nature/Article1', 'http://purl.org/dc/elem
ents/1.1/title', 'All about XYZ')
Sorgu:
SELECT a.triple.GET_SUBJECT() AS subject
FROM articles_rdf_data a WHERE a.id = 1;
SUBJECT
Sorgu Sonucu
http://www.nature.com/nature/Article1
Sorgu:
SELECT a.triple.GET_PROPERTY() AS property
FROM articles_rdf_data a WHERE a.id = 1;
PROPERTY
26
Sorgu Sonucu
http://purl.org/dc/elements/1.1/title
Sorgu:
SELECT a.triple.GET_OBJECT() AS object
FROM articles_rdf_data a WHERE a.id = 1;
OBJECT
Sorgu Sonucu
X,Y,Z hakkındaki herşey
4.2.14 Üçlülerin Eklenmesi için Yapıcı “Constructor” Yapıları
RDF modeline üçlülerin eklenebilmesi için aşağıdaki yapıcı formatları kullanılabilmektedir. Bu iki
yapı formatı arasındaki tek fark bir tanesinin nesne tipinin çok uzun sabitleri depolamak için kullanılan
CLOB tipinde olmasıdır.
SDO_RDF_TRIPLE_S (
model_name VARCHAR2, -- Model ismi
subject VARCHAR2, -- Özne
property VARCHAR2, -- Yüklem
object VARCHAR2) -- Nesne
RETURN SELF;
SDO_RDF_TRIPLE_S (
model_name VARCHAR2, -- Model ismi
subject VARCHAR2, -- Özne
property VARCHAR2, -- Nesne
object CLOB) -- Yüklem
RETURN SELF;
Çizelge 12: Üçlülerin Eklenmesi için Yapıcılar(Murray et al.’dan 2005)
27
Aşağıdaki örnek üçlü ekleyebilmek için ilk yapıcı formatı kullanmaktadır. Aşağıdaki örnekte
“articles_rdf_data” kullanıcı tarafından tanımlanmış bir tablodur.
INSERT INTO articles_rdf_data VALUES (2,
sdo_rdf_triple_s ('articles','<http://www.nature.com/nature/Article1>',
'<http://purl.org/dc/elements/1.1/creator>',
'"Jane Smith"'));
4.2.15 Boş düğümler için Yapıcı Yapıları
RDF model tablosuna boş düğümlere refere eden üçlüleri eklenmesi için aşağıdaki yapıcı
formatları kullanılabilmektedir. Boş düğümün tekrardan kullanılabilmesi için boş düğüm
yapıcısının(“constructor”) kullanılması gerekmektedir.
SDO_RDF_TRIPLE_S (
model_name VARCHAR2, -- Model ismi
sub_or_bn VARCHAR2, -- Özne ya da boş düğüm
property VARCHAR2, -- Yüklem
obj_or_bn VARCHAR2, -- Nesne ya da boş düğüm
bn_m_id NUMBER) – tekrardan kullanılacak boş düğümün modelidsi
RETURN SELF;
SDO_RDF_TRIPLE_S (
model_name VARCHAR2, -- Model ismi
sub_or_bn VARCHAR2, -- Özne ya da boş düğüm
property VARCHAR2, -- Yüklem
obj_or_bn CLOB Nesne
bn_m_id NUMBER) – tekrardan kullanılacak boş düğümün modelidsi
RETURN SELF;
Çizelge 13:Boş düğümler için Yapıcı Yapıları(Murray et al.’dan 2005)
Boş düğümün eklenmesi:
INSERT INTO nsu_data VALUES (SDO_RDF_TRIPLE_S(
‘nsu’,
'_:BNSEQN1001A',
'<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>',
'<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq>',
4));
28
4.3 RDF Şema
RDF, herhangi bir uygulama alanı hakkında varsayımlarda bulunmaz, ya da herhangi bir alan
hakkında anlamsallığı tanımlamaz. Örneğin aile modeli düşünülecek olursa sadece erkeklerin “fatherOf”
ilişkisinin nesneleri olabileceği konusunda bir kısıtlama bulunmamaktadır. RDF şema kullanıcılara
uygulamalar için etki alanı tanımlarına imkân sağlar. Bu bilgi sınıflar, özellikler öznitelikler şeklinde
betimlenebilir.
Aile örneğinde İnsan bir sınıftır ve iki alt sınıfa sahiptir: Bay ve Bayan. parentOf özelliği ise iki alt
özelliğe sahiptir: fatherOf ve motherOf. siblingOf özelliği de iki alt özelliğe sahiptir. “:brotherOf” ve
“sisterOf”. brotherOf ve fatherOf özellikleri “Bay”, “motherOf” ve “sisterOf” özellikleri ise bayan
özniteliklerine sahiptir.
4.3.1 Kurallar ve Kural Tabanları
Bir kural RDF verisinde çıkarsama yapılabilmesi için uygulanan bir nesnedir. Bir kural bir isimle
tanımlanır ve aşağıdaki parçalardan oluşmaktadır:
■ IF bölümü
■ IF bölümüne karşılık gelen alt çizgelerin belirli filtrelerden geçirilmesi
■ THEN bölümü
Örneğin “bir konferansın kurul başkanı aynı zamanda konferansın eleştirmenlerinden biridir”
kuralı aşağıdaki gibi temsil edilebilir.
('kurulbaskaniRule', --kural ismi
‘(?r :KurulBaskani ?c)’, -- IF bölümü
NULL, -- filtre koşulu
‘(?r :elestirmen ?c)’, -- THEN bölümü
SDO_RDF_Aliases (MDSYS.RDF_Alias(‘, 'http://some.org/test/'))
)
Bu durumda kural belirli bir filtreleme koşuluna sahip değildir. Bu yüzden filtreleme kısmı “null”
olarak bırakılmıştır. Bir “IF” bölümü eşleşmesi için birçok üçlü çıkarsamasının gerçekleştirilebilmesi için
“Then” kısmında birden çok üçlü kullanılabilir.
29
Bir kural tabanı kuralları barındıran nesnedir. Oracle tarafından sağlanan kural tabanları şu
şekildedir.
■ RDFS
■ RDF (RDFS’in alt kümesi)
RDFS ve RDF kural tabanları veritabanına RDF desteği sağlamak için çalıştırılan
SDO_RDF.CREATE_RDF_NETWORK yordamının çalıştırılması ile birlikte yaratılır. RDFS kural
tabanları http://www.w3.org/TR/rdf-mt/ adresindeki World Wide Web Consortium (W3C) RDF
Semantics dokümanında tanımlanan gereklilik kurallarını uygular. RDF kural tabanları RDFS gereklilik
kurallarının bir alt kümesi olan RDF gereklilik kurallarını temsil eder. Bu kural tabanlarının içeriği
MDSYS.RDFR_RDFS ve MDSYS.RDFR_RDF görünümlerinde görüntülenebilmektedir.
Ek olarak SDO_RDF_INFERENCE.CREATE_RULEBASE yordamı kullanılarak kullanıcılar
tarafından tanımlanan kural tabanları tanımlanabilir. Kullanıcı tarafından tanımlanan kural tabanları ek
olarak özelleştirilmiş çıkarsama yetenekleri sunar.
Her bir kural tabanı için bu kural tabanına ait kuralları tutulduğu sistem tabloları yaratılmaktadır ve
MDSYS.RDFR_kuraltabanıismi formatında bir görünüm sağlanmaktadır. Bu görünüm kural tabanına
yeni bir kuralın eklenmesi, çıkartılması ya da güncellenmesi amacıyla kullanılmalıdır.
Tüm kural tabanları hakkındaki bilgiler MDSYS.RDF_RULEBASE_INFO görünümünde
tutulmaktadır.
Aşağıdaki örnek family_rb adında bir kural tabanı yaratmaktadır ve bu kural tabanına
grandparent_rule adında bir kural eklemektedir. Bu kural eğer bir kişi(x) bir çocuğun(y) ebeveyni ise ve o
kişi(y) de başka bir çocuğun(z) ebeveyni ise bu kişi(x) çocuğun(z) büyük ebeveynidir.
EXECUTE
SDO_RDF_INFERENCE.CREATE_RULEBASE('family_rb');
INSERT INTO mdsys.rdfr_family_rb VALUES(
'grandparent_rule',
'(?x :parentOf ?y) (?y :parentOf ?z)',
NULL,
'(?x :grandParentOf ?z)',
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.example.org/family/'
)));
30
Çizelge 14: Kural tabanının yaratılması(Murray et al.’dan 2005)
SDO_RDF_MATCH tablo fonksiyonu kullanırken birden fazla kural tabanı tanımlanabilmektedir.
Aşağıdaki örnek family_rb kural tabanı ve grandParentOf ilişkisi kullanılarak aile modelinde yer
alan tüm büyük ebeveynlerin ve torunların nasıl bulunduğunu göstermektedir. Çıkarsama yapılırken
RDFS ve family_rb kural tabanları kullanılmaktadır.
SELECT x, y
FROM TABLE(SDO_RDF_MATCH(
'(?x :grandParentOf ?y) (?x rdf:type :Male)',
SDO_RDF_Models('family'),
SDO_RDF_Rulebases('RDFS','family_rb'),
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.example.org/family/'))
,
null));
Çizelge 15: Kural tabanının sorgulanması(Murray et al.’dan 2005)
4.3.2 Kural İndeksleri
Bir kural indeksi belirli model kümelerine belirli kural tabanlarını uygulanmasından çıkarsama
yolu ile elde edilen üçlüleri içeren nesnelerdir. Eğer bir SDO_RDF_MATCH sorgusu bir kural tabanını
refere ederse sorgudaki bu kural tabanı-model kombinasyonu için bir kural indeksi var olmalıdır.
Kural indeksi yaratılırken SDO_RDF_INFERENCE.CREATE_RULES_INDEX
Yordamı çağrılır. Bir kural indeksini silmek için ise SDO_RDF_INFERENCE.DROP_RULES_INDEX
yordamı çağrılır.
Bir kural indeksi yaratıldığında bu kural indeksiyle ilişkili olan üçlüler mdsys şeması altında bir
görünümde saklanır. Bu görünüm RDFI_kuralindeksismi formatında bir isme sahiptir ve sadece kural
indeksinin sahibi ve yetkisi olan kullanıcılar tarafından görüntülenebilmektedirler. MDSYS.
RDFI_kuralindeksismi her bir üçlü için bir kayıt içermektedir ve RDFM_modelismi görünümü ile aynı
kolonlara sahiptir.
31
Kural indeksleriyle ilgili tüm bilgiler MDSYS.RDF_RULES_INDEX_INFO görünümünde tutulur
ve bu görünüm her bir kural indeksi için bir kayıt içermektedir..
Bir kural indeksi ile ilgili
modeller ve kural tabanları gibi tüm veritabanı nesneleri
MDSYS.RDF_RULES_INDEX_DATASETS görünümünde saklanır.
Aşağıdaki örnek
“family” modeli ve RDFS ve family_rb kural tabanlarını kullanarak
family_rb_rix_family isminde bir kural indeksi tanımlar.
BEGIN
SDO_RDF_INFERENCE.CREATE_RULES_INDEX(
'rdfs_rix_family',
SDO_RDF_Models('family'),
SDO_RDF_Rulebases('RDFS','family_rb'));
END;
/
Çizelge 16: Kural tabanı üzerinde indeks yaratılması(Murray et al.’dan 2005)
4.4 RDF verisinin SDO_RDF_MATCH Tablo Fonksiyonu ile Sorgulanması
RDF verisinin sorgulanabilmesi SDO_RDF_MATCH tablo fonksiyonu kullanılmaktadır. Bu
fonksiyon aşağıdaki özellikleri içermektedir.
SDO_RDF_MATCH(
sorgu VARCHAR2,
model SDO_RDF_MODELS,
kural tabanı
SDO_RDF_RULEBASES,
alias SDO_RDF_ALIASES,
filtre VARCHAR2
) RETURN ANYDATASET;
Çizelge 17: SDO_RDF_MATCH Tablo Fonksiyonu(Murray et al.’dan 2005)
Sorgu özelliği SDO_RDF_MATCH tablo fonksiyonu için gereklidir. Diğer özellikler ise
opsiyoneldir. Sorgu özelliği dizgi sabitidir ve bir ya da birden fazla üçlü örüntülerinden oluşabilmektedir.
32
Genellikle değişkenleri içerir ve bağlı değişken ya da bağlı değişken içeren ifadelerden oluşamaz. Bir üçlü
örüntüsü parantezlerle çevrelenmiş üçlü öğeciklerinden oluşmaktadır. Her bir öğe bir değişken(ör, ?x),
varsayılan isim alanı kullanılarak genişletilebilen nitelendirilmiş ad(ör, rdf:type),arma(“alias”) parametre
değeri ya da tam bir URI(ör <http://www.example.org/family/Male>) olabilir. Ek olarak üçüncü öğe
sayısal sabit(ör, 3.14),basit sabit(ör, “herman”) ya da tipli sabit(ör, 123"^^xsd:int) olabilir.
Örneğin aşağıdaki sorgu özelliği büyükbabaları ve torunlarına ait boyları bulmaya yönelik bir üçlü
örüntüsünü ifade etmektedir.
(?x :grandParentOf ?y) (?x rdf:type :Male) (?y :height ?h)'
Model özelliği hangi RDF modelinin ya da modellerini kullanılacağını belirtir. Veri tipi TABLE
OF VARCHAR2(25) tanımına sahip SDO_RDF_MODELS şeklindedir.
Kural tabanı özelliği sorguya bir ya da daha fazla kural tabanlarının uygulanacağını belirtir.
Veritipi TABLE OF VARCHAR2(25) tanımına sahip SDO_RDF_RULEBASES şeklindedir.
Arma özelliği varsayılan sorgularda nitelendirilmiş adları genişletirken, varsayılan isim alanlarına
ek olarak bir ya da birden fazla isim alanlarının kullanılabileceğini ifade etmek için kullanılır.
Veri tipi TABLE OF RDF_ALIAS tanımına sahip SDO_RDF_ALIASES şeklindedir ve her bir
RDF_ALIAS elemanı bir namespaceid ve namespace değer içermektedir. RDF_ALIAS veri
tipi(namespace_id VARCHAR2(30), namespace_val VARCHAR2(4000)) tanımına sahiptir.
Aşağıdaki isim alanları SDO_RDF_MATCH fonksiyonu tarafından varsayılan olarak kullanılır.
('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')
('rdfs', 'http://www.w3.org/2000/01/rdf-schema#')
('xsd', 'http://www.w3.org/2001/XMLSchema#')
Varsayılan isim alanları, arma özelliğine namespace_id değeri ve farklı bir namespace_val değeri
tanımlanmasıyla geçersiz kılınabilir.
Filtreleme özelliği ek bir seçim kriterinin belirtilmesiyle oluşturulur. Eğer bu değer “null” değilse
“where” yan tümcesi şeklinde bir dizgi olmalıdır. Örneğin ‘h>=6’ filtrelemesi ile sonuçlar üzerinde
torunun boyunun 6dan büyük olması şeklinde bir limit uygulanabilir.
33
SDO_RDF_MATCH tablo fonksiyonu girdi değişkenlerine bağlı olarak değişen ANYDATASET tipinde
bir nesne geri döndürür.
Aşağıdaki örnek RDFS ve family_rb kural tabanlarından çıkarsama gerçekleştirerek “family rdf”
modelindeki büyükbabaları ve torunlarını seçmek için kullanılan bir tablo fonksiyonudur.
SELECT x, y
FROM TABLE(SDO_RDF_MATCH(
'(?x :grandParentOf ?y) (?x rdf:type :Male)',
SDO_RDF_Models('family'),
SDO_RDF_Rulebases('RDFS','family_rb'),
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.example.org/family/')),
null));
RDF verisinin SQL ile birlikte işlenmesi ile birlikte normal veritabanı tabloları RDF verileriyle
beraber sorgulanabilmektedir. Örneğin bir sorguda RDF sorgusundan gelen sonuçlarla birlikte geleneksel
veritabanı tabloları birleştirilebilir ve bu şekilde bir sorgu oluşturulabilmektedir.
SELECT t.r reviewer, e.emailid emailid
FROM TABLE(RDF_MATCH(
‘(?r ReviewerOf ?c)
(?r rdf:type Faculty)’,
RDFModels('reviewers'),
NULL, NULL)) t, employees e
WHERE t.r = e.name;
SQL’de RDF sorgulama yeteneğinin bulunması uygulamaların, alana özel RDF verisi şeklinde
saklanan anlamsalları rahatlıkla işlemesine neden olur.RDF’in anlamsal Web’in önemli bir yapı taşı
olduğu düşünüldüğünde anlamsal web uygulamaları için bu özellik büyük bir önem arz eder.
Ayrıca gelecekte ilişkisel veri tabanlarında tutulan çoğu bilgi RDF üçlüleri şeklinde
saklanabilecektir, bu nedenle RDF_MATCH fonksiyonu bu verilerin sorgulanmasında kullanılabilecektir.
Ek olarak büyük miktarda üst veri içeren e-pazaryerleri ve Portaller bu fonksiyonellikten
faydalanabilecektir.
34
4.5 RDF Güvenlik Hususları
RDF kullanımında aşağıdaki veritabanı güvenlik hususları uygulanmıştır.
•
Bir model ya da kural indeksi yaratıldığında bu nesnelerin sahibi GRANT opsiyonu ile birlikte
select yetkisine sahip olur. Select yetkisi olan kullanıcılar SDO_RDF_MATCH tablo
fonksiyonunu kullanarak model ya da sorgu indeksini üzerinde sorgulama yapabilirler.
•
Bir kural tabanı yaratıldığında kural tabanının sahibi kural tabanı üzerinde GRANT opsiyonu ile
birlikte SELECT, INSERT, UPDATE, ve DELETE yetkilerine sahip olur. Kural tabanı üzerinde
Select yetkisine sahip olan kullanıcılar kural tabanını kullanan kural indeksleri yaratabilir. ,
INSERT, UPDATE, ve DELETE yetkileri kullanıcıların kural tabanlarını kimlerin ve hangi
şekilde değiştirebileceklerini kontrol eder.
•
Bir model üzerinde DML işlemleri gerçekleştirilebilmesi için kullanıcıların temel tablo üzerinde
DML işlemi gerçekleştirme yetkisine sahip olması gerekmektedir.
•
Bir model için temel tabloyu yaratan kişi diğer kullanıcılara yetki verebilir.
•
Bir kural tabanı üzerinde DML işlemleri gerçekleştirilebilmesi için kullanıcı ilgili veritabanı
görünümü üzerinde gerekli yetkilere sahip olmalıdır.
•
Modelin yaratıcısı modele karşılık gelen veritabanı görünümleri için diğer kullanıcılara select
yetkisi verebilir.
•
Kullanıcılar sadece yetkilerinin olduğu veritabanı görünümleri üzerinde işlem gerçekleştirebilir.
•
Sadece kural tabanının sahibi bu kural tabanını silebilir.
4.6. Oracle RDF Yapısı için ilk adımlar
Oracle veritabanında RDF verileriyle çalışabilmek için aşağıdaki adımlar izlenmelidir. RDF
verilerinin büyümeye meyilli olduğu göz önünde bulundurulursa RDF tablolarının ayrı bir “tablespace”te
tutulması önerilmektedir(Murray et al.’dan 2005). Kullanıcıların “tablespace” yaratabilmek için gerekli
yetkilere sahip olması gerekmektedir. Aşağıdaki komut RDF_TBLSPACE adında bir tablespace
oluşturmaktadır.
35
CREATE TABLESPACE rdf_tblspace
DATAFILE '/oradata/orcl/rdf_tblspace.dat' SIZE 1024M REUSE
AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED
SEGMENT SPACE MANAGEMENT AUTO;
RDF ağının yaratılması: RDF ağının yaratılması ile birlikte Oracle veritabanı RDF
depolayabilecek yeteneklere sahip olur. Veritabanı yöneticisi yetkisine sahip olan kullanıcılar RDF ağını
yaratabilmektedir. Bir veritabanı örneği için sadece bir kez RDF ağı yaratılmalıdır. Aşağıdaki örnek
RDF_TBLSPACE “tablespace”i kullanılarak bir RDF ağının yaratılmasını göstermektedir.
EXECUTE SDO_RDF.CREATE_RDF_NETWORK('rdf_tblspace');
Kullanıcıların RDF uygulama tablolarını kullanabilmesi RDF modellerini yaratabilmesi için
yetkilendirilmesi gerekmektedir. Aşağıdaki komut örnek SCOTT kullanıcısına yetki vermek için
kullanılmalıdır.
GRANT EXECUTE ON MDSYS.RDF_APIS_INTERNAL TO SCOTT;
RDF verisi merkezi bir şema altında tutulur. Kullanıcı tarafından tanımlanan tablolar ise RDF
verilerine referanslar gösterir. RDF verisine ait referansların tutulması için kullanıcı tarafınsan tablo
oluşturulmalıdır. Kullanıcılar bu adımda veritabanı yöneticisi yetkisine sahip olmak zorunda değillerdir.
Tablo tek bir modelle ilişkili olan RDF verilerine ait referansları tutabilmek için SDO_RDF_TRIPLE_S,
tipinde bir kolona sahip olması gerekmektedir. Bu tablonun NUMBER tipinde bir id kolonuna ve
SDO_RDF_TRIPLE_S tipinde TRIPLE ismine sahip bir kolona sahip olmaları önerilmektedir. Aşağıdaki
örnek FAMILY_RDF_DATA adında bir tablo oluşturmaktadır. .
CREATE TABLE FAMILY_RDF_DATA (id NUMBER, triple SDO_RDF_TRIPLE_S);
RDF modeli bir model ismi, model için RDF verilerine ait referansları depolayan bir tablo ismi ve
bu tablo içinde SDO_RDF_TRIPLE_S tipindeki kolonun isminin parametre olarak verilmesiyle
oluşturulur.
EXECUTE SDO_RDF.CREATE_RDF_MODEL('FAMILY', 'FAMILY_RDF_DATA', 'TRIPLE');
36
5. EŞLEME MİMARİSİ VE SÜREÇ
5.1 Tasarım Mantığı
Bir veritabanı yönetim sistemi tüm sistemi düzgün şekilde yönetebilmek için büyük miktarda üst
veri barındırır. Günümüzde çoğu ilişkisel veritabanı sistemlerinde bu bilgi genellikle daha önceden
tanımlanmış tablolarda tutulmaktadır. Bu tablolar Veri Sözlüğü ya da Veri havuzu olarak da
adlandırılabilir. Geliştirilen model Oracle veritabanını kullanmaktadır. Oracle veri tabanında da üst veriler
veri sözlükleri adı altında sistem tablolarında tutulmaktadır. Tablo tanımları, kolon bilgileri ayrıntıları ve
kısıtlamalar, erişim yetkileri de dâhil olmak üzere çok sayıda üst veri daha önceden tanımlanmış Oracle
veri sözlük tablolarında tutulur. Bir kullanıcı sadece kendi erişim yetkisinin olduğu tabloların üst verilerini
elde edebilir.
Genel anlamda veri havuzlarında tutulan bilgilerin büyük miktarının sisteme özgü olması ve
anlamsal betimleme için uygun olmaması nedeniyle geliştirilen sistemde genel bir ontoloji tanımlanmıştır.
Sadece en üst seviyede ve en genel üst verileri içermektedir. Gerçek veri gösteriminin düzgün bir şekilde
yorumlanabilmesi için son derece önemlidir. Şema varlıkları daha sonradan genişletilebilmektedir. Genel
ontoloji “Relational OWL (Laborda et al., 2004)’da tanımlanan ontoloji temel alınarak hazırlanmıştır.
Tezde yapılan çalışma ilişkisel veri modeli teorisinden gelen kuralların kural tabanlı ontolojiksel
bir yaklaşım ile eşleştirilmesinin gerçekleştirilmesiyle diğer çalışmalardan ayrılmaktadır. Ek olarak var
olan yaklaşımlar daha çok tek taraflı bir eşleme mimarisini tanımlarken geliştirilen tasarım çift yönlü
eşlemeye olanak sağlamaktadır. Eşleme sırasında ilişkisel şemada var olan tüm varlıklar ontolojiksel
varlıklara eşlenmektedir. Böylelikle geri dönüşüm de tam olarak gerçekleştirilmektedir.
İlişkisel RDF ontolojilerine aşağıdaki üst veri varlıkları eklenmiştir:
Tablo ve Kolonlar: İlişkisel bir veri tabanı şemasının en önemli bileşeni tablolardır(ilişkiler). Tablolar ek
olarak gerçek verinin depolandığı kolonlardan(öznitelik) oluşmaktadır. Bu iki şema bileşeni ilişkisel
veritabanı şeması gösterimi için en gerekli bilgileri içermektedir bu yüzden genel RDF gösterimine dahil
edilmelidir.
Birincil ve Dış Anahtarlar: Bir ya da birden çok kolon bir tablonun birinci kolonu olabilir. Bu bilgi
özellikle veri güncellemelerinin senkronize olması zorunlu olduğu durumlarda hedef sistem için son
derece kullanışlı olmaktadır. Diğer türlü eski değerlere yenilerinin atanması sırasında problem çıkması
37
muhtemeldir. Aynı şekilde dış anahtarlar da gösterilmek zorundadır. Diğer türlü hedef sistem tutarsız olur
ve verinin bütünlüğü sağlanamaz.
Kısıtlamalar: Kısıtlamalar veriler üzerinde tutarlılığın kontrolünün en basit yoldan gerçekleştirilmesini
sağlarlar. Örneğin bir tablodaki maaş kolonun değerinin ‘null’ değer girilmemesini ya da sıfırdan büyük
değer girilmesini kontrol edebildiğimiz gibi birincil ve dış anahtarların da birbiriyle olan tutarlılığın
sağlanması kısıtlamalar sayesinde gerçekleştirilebilir. Birincil ve dış anahtarlar dışında kontol
kısıtlamaları da sisteme dâhil edilmiştir.
İndeksler: İndeksler özellikle büyük miktarda veri barındıran sistemlerde verilerin daha hızlı edilmesini
sağlayan veritabanı nesneleridir. Sorgunun kayıtların %2 ile %4 arasında değer döndürdüğü, null
değerlerin çok olduğu durumlarda ve çok güncellemenin olmadığı durumlarda sorgu performansını üst
düzeylere taşımaktadırlar. İndeksler ontoloji varlıkları olarak sistemde bulunmaktadır.
Veri Tipleri: Veri tipleri bir kolonun alabileceği değerleri kısıtlar. Bu tarz tutarlılık kısıtlamaları ikili veri
senkronizasyonlarının gerçekleşmesinde bir gerekliliktir ve hedef sisteme verinin gelmesi sırasında
tutarlılık kontrollerinin yapılmasın çok kullanışlıdırlar. RDF’te kullanılan veri tipleri XML Şema: Veri
Tipleri XML-SCHEMA dokümanındaki veri tipleriyle uyumludur. Ancak kolonlardaki değerlerin
maksimum değerlerini belirten kısıtlamaların da sistemde gösterimi için bir teknik uygulanmalıdır.
Sonuç olarak ortak RDF ontolojisi tablolar,kolonlar,indeksler,veri tipleri, veri tiplerine ait kısıtlamalar,
birincil ve dışsal anahtarlar ve bunlar arasındaki ilişkileri kapsamalıdır.
5.2 İlişkisel RDF Ontolojisi
Modelimizde ilişkisel veri tabanı şemasını soyut bir şekilde ifade edebilecek bir RDF ontolojisi
kullanılmaktadır. Bu RDF ontolojisi RDF ontolojisini kullanabilen herhangi bir uzak veritabanı ya da
uygulama tarafından rahatlıkla yorumlanabilmelidir. Bir sonraki adımda bu RDF ontolojisi gerçek
verilerine karşılık gelen gösterim formatını oluşturmak için de kullanılacaktır. Veritabanı şemasını RDF
ile tanımlayabilmek için merkezi bir ontoloji yaratılmalıdır. Bu ontoloji veritabanını tanımlayan herhangi
bir doküman tarafından kullanılabilmelidir. Bu ontoloji içerisinde tablo, kolon gibi sınıflar soyut bir
şekilde betimlenmiştir ve bilgi gösterim işleminin merkezini oluşturmaktadır. Ek olarak sınıflar ve
kolonlar arasındaki ilişkileri de tanımlamamız bu ontolojiyle mümkündür.
38
Benzer şekilde RDF’I temel alan herhangi bir gösterim ilişkisel RDF ontolojisini kullanabilir ya da
geliştirebilecektir. Sonuç olarak bu ontolojiler kullanılarak eşlenen veritabanı gösterimleri bu ontolojileri
kullanan herhangi bir uygulama tarafından yorumlanabilecektir. Ontolojiler arasında anlamsal eşlemeler
kurmak bu ontolojileri değiş tokuşunu sağlamak için yeterlidir.
İlişkisel RDF ontolojisi içerisinde betimlenen tüm sınıflar Tablo 2’de gösterilmiştir. Tablo 3 de ise
bu sınıfları birbirine bağlayan tüm ilişkiler yer alacaktır. İlişkisel ontolojide ilişkisel şemada yer alan tüm
üst veriler yer almamaktadır ancak tetikleyiciler, sıralamalar gibi bilgiler de ontolojiye rahatlıkla
eklenebilecektir. Ek olarak Oracle 10g RDF veri deposu kullanılmasıyla veri sözlüklerinden elde edilecek
kullanıcı erişim hakları da ilişkisel şemanın RDF şemasına eşlenmesiyle Oracle 10g içerisine birlikte
eklenecektir. Bu modelde hedeflenen daha çok veritabanında depolanan bilgilerin ontolojiye
eşlenebilmesidir. Eşlenen ontoloji ve veriler Oracle RDF veri deposuna eklenecektir.
rdf:ID
Database
Schema
Table
Column
Index
SuperClass
SubClass
EquivalentClass
EquivalentColumn
rdfs:subClassOf
rdf:Bag
rdf:Bag
rdf:Seq
rdfs:Resource
rdfs:Resource
rdf:Bag
rdf:Bag
rdf:Bag
rdf:Bag
rdfs:comment
Veri tabanı sınıfı
Veritabanı Şema sınıfı
Veri tabanı tablo sınıfı
Veritabanı kolonları sınıfı
Veritabanı index sınıfı
Veritabanı tablo üst sınıfı
Veritabanı tablo alt sınıfı
Veritabanı tablo denk sınıfı
Veritabanı kolon denk sınıfı
Tablo 2: İlişkisel ontoloji tarafından tanımlanan sınıflar
39
rdf:ID
rdfs:domain
rdfs:range
rdfs:comment
:has
Rdfs:Class
Rdfs:Class
:hasSchema
:Database
:Schema
:hasTable
:hasColumn
:referTable
:Schema
:Table
:Table
:Table
:Column
:Table
:referColumn
:Column
:Column
:hasConstraint
:Column
:Costraint
:hasIndex
:Table
:Index
:columnHasIndex
:Column
:Index
:subclassOfTable
:Table
:SubClass
:superclassOfTable
:Table
:SuperClass
:equivalentclassOfTable
:equivalentOfColumn
:Table
:Column
:EquivalentClass
:EquivalentColumn
Başka sınıfları içinde
tutmak için kullanılır
Veritabanına ait
şemalar
Şema altındaki tablolar
Tabloya ait kolonlar
Kolonun referans
kolonu
Kolonun referans
kolonu
Kolon üzerindeki
kısıtlama
Tablo üzerindeki
indeksler
Kolon üzerindeki
indeksler
Tablonun alt
sınıfı(tablosu)
Tablonun üst
sınıfı(tablosu)
Tablonun denk sınıfı
Kolonun denk sınıfı
Tablo 3: İlişkisel ontolojide tanımlanan özellikler
İlişkisel ontolojide tanımlanan özellikler EK E’ de ifade edilmektedir. Tablo 2 ve Tablo 3’te belirtilen
özellikler dışında kolonun veritipi, veri uzunluğu gibi özellikler de EK E’de bulabilirsiniz
5.3 Eşleme Mimarisi
Veritabanı şeması ontolojiye eşleme işlemi sonucu dönüştürülür. Eşleme sırasında her bir veri
tabanı şema bileşeni için farklı kurallar uygulanmaktadır. Aynı şekilde veritabanı verileri de ontolojiyi
temel alan bilgi tabanı sayesinde eşlenmektedir. İlk aşama Oracle 10g RDF veri deposunun işlemler için
hazırlanması şeklindedir. Bunun için RDF veri kaynağında eşlenecek veritabanı için ilgili model
oluşturulmaktadır. Bu aşamadan sonra ilişkisel RDF ontolojisi sisteme yüklenir. Eşleme ilk aşamada
veritabanı şeması bileşenlerinin(tablo, kolon, kısıtlamalar vs) RDF şemasına dönüştürmektedir. Veritabanı
şema bilgileri için Oracle veritabanı veri sözlükleri kullanılmaktadır. Veritabanı şemasından ontolojiye
eşleme sırasında RDF veri deposuna yüklenen ilişkisel soyut RDF şemasını kullanmaktadır. Bu şema da
daha sonra Oracle 10g RDF veri deposuna eklenir.
40
Bir sonraki aşamada ise ilişkisel veritabanındaki bilgilerin Oracle RDF veri deposuna yüklenmesi
işlemidir. Bu işlem sırasında veritabanından eşlenen ontoloji kullanılarak RDF üçlüleri oluşturulmaktadır.
Üçlüler daha sonra Oracle RDF veri deposuna eklenecektir. Bir sonraki aşamada ontolojideki varlıkların
aralarındaki ilişkilerin çıkarsanabilmesi için kural tabanları oluşturulmaktadır. Kural tabanları özellikle
tablolar arasındaki ilişkilerin çıkarsanması işlemi sırasında kullanılmaktadır. Oracle 10g RDF veri
deposundaki bu kural tabanlarına varlıklar arasındaki ilişkileri betimleyen kurallar eklenecek ve daha
sonra bu kurallar sayesinde Oracle 10g veri deposu üzerinde çıkarsama yolu ile istenen üçlüler ve bilgiler
elde edilebilmektedir.
Veritabanından eşleme sonucu oluşacak ontoloji sadece bir kez oluşturulacağından şemadaki
yapılacak değişikliklerde tekrar oluşturulması gerekmektedir. İşlemler sonucunda Oracle RDF veri
deposunda ilgili veri tabanı şemasının eşlenmiş hali yer alacak ve istendiği zaman veritabanı kodları
halinde dosyalara aktarılabilmektedir.
Veritabanı olarak Oracle veritabanı kullanılmaktadır ve RDF şemalarının oluşturulması ve RDF
üçlülerinin sisteme eklenmesi sırasında PL/SQL depolanmış yordamlar kullanılmaktadır. Sistem mimarisi
Şekil 7’de gösterilmektedir.
Şekil 7: Sistem Mimarisi
41
5.4 Eşleme İşlemi
Eşleme işlemi veritabanındaki anlamsallığı ek ontolojik varlıklar kullanarak geliştirir. Geliştirilen
veritabanından ontoloji oluşturma işlemi aşağıdaki adımlardan oluşur.
1.İlişkisel RDF ontolojisi Oracle 10g RDF veri deposuna eklenir.
2.Oracle veritabanındaki ilişkisel şema bilgileri(tablolar, kolonlar, kolon özellikleri,birincil ve dışsal
anahtarlar vb.) elde edilir.
3.Elde edilen şema bilgisi analiz edilir ve şema üzerinde eşleme kuralları uygulanmasıyla ilişkisel RDF
ontolojisini temel alan gerçek ontoloji yaratılır ve RDF veri deposuna eklenir.
4. Eşleme tüm ontolojik varlıkları elde eder ve ontolojideki varlıkların aralarındaki ilişkilerin
çıkarsanabilmesi için kural tabanları oluşturulacaktır. Oracle 10g RDF veri deposundaki bu kural
tabanlarına varlıklar arasındaki ilişkileri betimleyen kurallar eklenecek ve daha sonra bu kurallar
sayesinde Oracle 10g veri deposu üzerinde çıkarsama yolu ile istenen üçlüler ve bilgiler elde
edilebilmektedir.
5. En son aşamada ise ilişkisel veritabanındaki bilgilerin Oracle RDF veri deposuna yüklenmesi işlemidir.
Bu işlem sırasında veritabanından eşlenen ontoloji kullanılarak RDF üçlüleri oluşturulmaktadır. Bu
üçlüler Oracle RDF veri deposuna eklenir.
6. Kural indekslerinin oluşturulmasıyla çıkarsama yoluyla elde edilmiş üçlüler de sorgulanabilmektedir.
İşlem sonunda oluşturulacak ontoloji tersine mühendisliğin tüm özelliklerini taşımaktadır. Yaratılan
ontolojiden kolaylıkla veri tabanı şeması oluşturulabilmektedir. İşlem tamamen otomatik olarak
gerçekleşmektedir ve eşleme sırasında kullanıcı etkileşimine gerek duymamaktadır.
Eşleme işlemi temel olarak iki işlemden oluşmaktadır. İlki şemanın dönüştürülmesi, ikincisi ise verilerin
taşınmasıdır.
42
5.4.1 Şema Dönüşümü
Şema dönüşümü ilişkisel veritabanı şemasının ontolojiye çevrimini ifade etmektedir. Şema
dönüşümü sırasında yaratılacak ontoloji ilişkisel ontolojiyi temel almaktadır. Şema dönüşümü sırasında
Oracle veritabanındaki tablo, kolon ve kısıtlama bilgileri sorgulanır. Sorgulama sonucu elde edilen şema
ilişkisel veritabanın tüm şema özelliklerini taşımaktadır. Ek olarak tablolar arasındaki ilişkiler Oracle RDF
kural tabanlarına işlenmektedir. Kural tablolarında yaratılan kurallar sayesinde birbiriyle ilişkili olan
yapılar rahatlıkla elde edilebilmektedir.
Tablolar arasındaki ilişkilerin tam olarak bilinebilmesi için dış anahtarlar kullanılmaktadır. Eşleme
işlemi örneklerle devam eden bölümlerde anlatılmaktadır.
5.4.1.1 ORACLE RDF modelinin yaratılması
Oracle RDF veri deposunda saklanacak verilerin büyük miktarda yer tutacağı düşünülerek sadece RDF
verilerini saklayabilmek için ayrı bir tablo alanı oluşturulmalıdır. Bu işlem DBA yetkisine sahip bir
kullanıcı tarafından yapılmalıdır.
CREATE TABLESPACE rdf_tblspace
DATAFILE '/oradata/orcl/rdf_tblspace.dbf' SIZE 1024M REUSE
AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED
SEGMENT SPACE MANAGEMENT AUTO;
Oracle veritabanı üzerinde RDF veri deposunun çalışır hale getirilebilmesi için RDF ağının oluşturulması
gerekmektedir. Her bir Oracle örneği için bir tane ağ yaratılmalıdır. Bu işlem DBA yetkisine sahip bir
kullanıcı tarafından yapılmalıdır.
EXECUTE SDO_RDF.CREATE_RDF_NETWORK('rdf_tblspace');
Sistemde Oracle RDF verileriyle çalışacak kullanıcının gerekli yetkiye sahip olması gerekmektedir. Bu
işlem DBA yetkisine sahip bir kullanıcı tarafından yapılmalıdır.
GRANT EXECUTE ON MDSYS.RDF_APIS_INTERNAL TO SCOTT;
43
Orasemweb paketi altındaki “pre_install” yordamı kullanıcının RDF verilerini saklayabilmek için
kullanabileceği tabloları ve RDF modellerini oluşturmaktadır. Ek olarak ortak RDF ontolojisinin RDF veri
deposuna yüklenmesi de bu yordam ile gerçekleştirilmektedir. Orasemweb paketi yordamlarının
kullanılabilmesi için bu yordamın çağrılması gerekmektedir.
Sistemin kurulumu için gerekli adımlar EK A’da anlatılmaktadır.
5.4.1.2 İlişkisel RDF ontolojisinin Oracle 10g RDF veri deposuna eklenmesi
İlişkisel RDF ontolojisinin EK E’de görülen varlıkları ve ilişkileri Oracle RDF veri deposuna girdiler
şeklinde eklenmektedir. Eklenen ilişkisel RDF ontolojisi sistemin temelini oluşturmaktadır ve şemaya ait
varlıklar bu ontolojiyi kullanarak modellenmektedir.
5.4.1.3 Oracle Veri sözlüklerinin kullanılması
Şemanın eşlenebilmesi için ilk aşamada veritabanı şemasının elde edilmesi gerekmektedir. Bir
kullanıcı yetkisi dâhilinde başka bir şemaya ait varlıkları sorgulayabilmektedir. Şema bilgilerinin elde
edilebilmesi için Oracle veri sözlükleri kullanılmaktadır. Veri sözlüklerindeki verinin en güncel ve doğru
halinin elde edilebilmesi için şema istatistiklerinin toplanması gerekmektedir. “All_” ön ekiyle başlayan
veri sözlükleri şema bilgilerini toplamakta kullanılacaktır ve kullanıcının erişebildiği varlıkları belirtir.
Örneğin “all_tables ” veri sözlük yapısı kullanıcının erişim hakkı olduğu tablolara ait bilgileri
göstermektedir.
select t.table_name, TABLESPACE_NAME,STATUS
, nvl(NUM_ROWS,0) NUM_ROWS
,nvl(DEGREE,1)DEGREE
from all_tables t where owner=:schemaname
and upper(t.table_name) not in(:excludelist)';
Table_name: Tablo ismi
Tablespace: Tabloların tutulacağı tablo alanı
Status: Tablonun statusu
Num_rows: Tablodaki kayıt sayısı
Degree: Tablonun parallellik derecesi
:schemaname : İşlemler sırasında kullanılacak şema ismi. Tablonun sahibi
:excludelist: Eşleme işleminin gerçekleşmesinin istenmediği tablolar.
44
5.4.1.4 Tabloların Eşlenmesi
İlk aşamada belirli bir şema altındaki tabloların veri sözlüklerindeki tanımları elde edilir. Bu işlem
gerçekleştirilirken all_tables görünümü kullanılmaktadır.
INSERT INTO semwebdata—RDF üçlülerinin tutulacağı tablo ismi
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(:modelismi,
:tabloismi,
'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',
'http://www.ege.edu.tr/semweb/Table'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
v_table,
'http://www.ege.edu.tr/semweb/tableTablespace',
'"' tablo alanı ismi
'"^^xsd:string'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
v_table,
'http://www.ege.edu.tr/semweb/tableNumrows',
'"' kayıt sayısı '"^^xsd:integer'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
v_table,
'http://www.ege.edu.tr/semweb/tableDegree',
'"' parallelik derecesi '"^^xsd:integer'));
Çizelge 18: Tabloların Eşlenmesi
45
Ontoloji yapıları oluşturulurken genel ilişkisel RDF ontolojisi kullanılmaktadır. Eşlenen tablo
varlıkları Oracle RDF veri deposuna bir bir eklenmektedir. Tabloya ait her bir özellik birer girdiye denk
gelmektedir. İlk aşamada veri sözlüklerinden elde edilen tablonun ilişkisel ontolojideki ‘Table’ tipinde
olduğunu belirtmemiz gereklidir. Bir sonraki aşamada tablo özellikleri sisteme girilmektedir. Son aşamada
tablonun hangi şemaya ait olduğunu ‘hasTable’ ile birlikte bir girdi olarak tanımlayabiliriz. Tablolar arası
dışsal
anahtarlardan
dolayı
yaratılan
ilişkiler
sonraki
bölümlerde
ele
alınacaktır.
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
v_table,
'http://www.ege.edu.tr/semweb/tableValidity',
'"' tablo durumu '"^^xsd:string'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
şema ismi,
'http://www.ege.edu.tr/semweb/hasTable',
tablo ismi));
Çizelge 19: Eşlenmiş tabloların RDF veri deposuna girilmesi
5.4.1.5 Kolonların Eşlenmesi
Tablolardaki her bir kolon birincil ve dış anahtar olan kolonlar da dahil olmak üzere ontolojide
birer ilişkiye karşılık gelir. Kolonların birincil ya da dış anahtar olduğu bilgisi kısıtlamalardan elde
edilecektir. Kolonlar eşlenirken sadece kolonun isminde gitmek doğru bir yaklaşım olmayacaktır. Aynı
isimli bir kolon farklı tablolarda farklı özelliklere sahip olabilir bu yüzden kolon isimleri sistem eklenirken
‘tabloismi.kolonismi’ formatına sahiptir.
Kolon bilgileri Oracle all_tab_columns görünümünden elde edilmektedir.
46
select k.table_name,COLUMN_NAME
,DATA_TYPE, DATA_LENGTH
, nvl(DATA_PRECISION,DATA_LENGTH) DATA_PRECISION
,nvl(DATA_SCALE,0) DATA_SCALE, nvl(NULLABLE,’Y’) NULLABLE
,CHARACTER_SET_NAME from all_tab_columns k
where owner=upper(:şemaismi)
and upper(k.table_name) not in(:istenmeyentablolar);
table_name: tablo ismi
column_name: kolon ismi
DATA_TYPE : kolon veritipi
DATA_LENGTH : veri uzunluğu
DATA_PRECISION: Özellikle Number tipindeki kolonlarda ondalıktan önceki kısım
DATA_SCALE: Özellikle Number tipindeki kolonlarda ondalıktan sonraki kısım
NULLABLE: Kolonun değerinin ‘null’ olup olamayacağı bilgisi
CHARACTER_SET_NAME : Karakter bilgisi
Çizelge 20: Kolonların Eşlenmesi
Genel anlamda bir tablonun kolonu genel ontolojide şu şekilde ifade edilir:
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
tabloismi.kolonismi,
'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',
'http://www.ege.edu.tr/semweb/Column'));
Kolon özellikleri sisteme şu şekilde girilir:
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
tabloismi.kolonismi,
'http://www.ege.edu.tr/semweb/columnDataPrecision',
'"' data_precision
'"^^xsd:integer'));
INSERT INTO semwebdata
VALUES
47
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
tabloismi.kolonismi,
'http://www.ege.edu.tr/semweb/columnDataType',
'"' data_type '"^^xsd:string'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
tabloismi.kolonismi,
'http://www.ege.edu.tr/semweb/columnDataLength',
'"data_length '"^^xsd:integer'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
tabloismi.kolonismi,
'http://www.ege.edu.tr/semweb/columnDataPrecision',
'"' data_precision '"^^xsd:integer'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
tabloismi.kolonismi,
'http://www.ege.edu.tr/semweb/columnDataScale',
'"' data_scale
'"^^xsd:integer'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
tabloismi.kolonismi,
48
'http://www.ege.edu.tr/semweb/columnNullable',
'"' nullable '"^^xsd:string'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
tabloismi.kolonismi,
'http://www.ege.edu.tr/semweb/columnCharset',
'"' character_set_name
'"^^xsd:string'));
Bir kolonun hangi tabloya ait olduğunu şu şekilde belirtiriz.
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
v_table,
'http://www.ege.edu.tr/semweb/hasColumn',
tabloismi.kolonismi));
Çizelge 21: Eşlenmiş kolonların RDF veri deposuna girilmesi
Kolonların veri tipleri eşlenirken veri tipi rdfs:range ile belirtilirken kolonun alabileceği maksimum değer
“data_length” özelliği ile örnegin number(3,2) şeklinde tanımlanmış bir veri tipi ise bu tanımın ondalık
kısmı olan “2” “data_scale” özelliğine yazılır.
5.4.1.6 İndekslerin Eşlenmesi
İndeksler özellikle büyük miktarda veri barındıran sistemlerde verilerin daha hızlı edilmesini sağlayan
veritabanı nesneleridir. İndeksler ile ilgili veri sözlük görünümleri all_indexes, all_ind_columns ve
all_ind_expressions görünümleridir. All_indexes görünümü tablo üzerindeki indeksler hakkında bilgi
verir. all_ind_columns ise hangi kolonlar üzerinde indeks oluşturulduğu, all_ind_expressions ise indeksler
için deyimlerin bulunabilmesi için kullanılmaktadır. Birincil anahtar ve benzersiz kısıtlamaları için
49
indeksler otomatik olarak oluşturulmaktadır ve “SYS_” ön ekine sahip olmaktadırlar. Ek olarak
‘BITMAP’ indeksler de siste tarafından ele alınmaktadırlar.
select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS '
' , JOIN_INDEX,GENERATED '
' , nvl(TABLESPACE_NAME,’ tabloalanı
‘) TABLESPACE_NAME ' ' from all_indexes t '
' where owner=upper(‘ şemaismi
‘) and upper(t.table_name) not in(' istenmeyentablolar ')';
select INDEX_NAME,TABLE_NAME,COLUMN_NAME,DESCEND '
' from all_ind_columns t '
' where upper(index_owner)=upper(‘ şemaismi
‘) and upper(t.table_name) not in(' istenmeyentablolar ')';
INDEX_NAME: index ismi
INDEX_TYPE: indeks Bitmap mi normal mi
TABLE_NAME:tablo ismi
COLUMN_NAME:kolon ismi
UNIQUENESS: eşsiz indeks olup olmadığı
GENERATED: İndex isminin otomatik yaratılıp yaratılmadığı
TABLESPACE_NAME: Tablo alanı ismi
DESCEND: İndex artarak mı yoksa azalan şeklinde organize edilecek
Çizelge 22: İndekslerin Eşlenmesi
İndeksler için sistemde şu girdiler gerçekleşir:
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_index,
'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',
'http://www.ege.edu.tr/semweb/Index'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_index,
'http://www.ege.edu.tr/semweb/indexType',
'"' index_record.index_type '"^^xsd:string'));
50
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_index,
'http://www.ege.edu.tr/semweb/indexUniqueness',
'"' index_record.uniqueness '"^^xsd:string'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_index,
'http://www.ege.edu.tr/semweb/indexJoin',
'"' index_record.join_index '"^^xsd:string'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_index,
'http://www.ege.edu.tr/semweb/indexGenerated',
'"' index_record.generated '"^^xsd:string'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_index,
'http://www.ege.edu.tr/semweb/indexTablespace',
'"' index_record.tablespace_name
'"^^xsd:string'));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_index,
'http://www.ege.edu.tr/semweb/indexExpression',
v_expression));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_index,
'http://www.ege.edu.tr/semweb/indexDescend',
51
'"' index_record.descend '"^^xsd:string'));
İndeksin hangi tablo üzerinde olduğu bilgisi şu şekilde girilir.
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_table,
'http://www.ege.edu.tr/semweb/hasIndex',
v_index));
İndeksin hangi kolon üzerinde olduğu bilgisi şu şekilde girilir
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(p_model,
v_column,
'http://www.ege.edu.tr/semweb/columnHasIndex',
v_index));
Çizelge 23: Eşlenmiş kolonların RDF veri deposuna girilmesi
5.4.1.7 Kısıtlamaların Eşlenmesi
Kısıtlamalar bir tabloya geçersiz veri girilmesini engellemeye yönelik yapılardır. Tablo düzeyinde
bir kayıt eklendiğinde, güncellendiğinde veya silindiğinde kuralların uygulanmasını sağlamaktadırlar. Ek
olarak başka tabloların bağlı olduğu bir tablonun silinmesini engellemektedir. Oracle’da kullanılan
kısıtlamalar şu şekildedir.
•
•
•
•
•
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
Oracle veri sözlüğündeki “all_constraints” ve “all_cons_columns” görünümleri kısıtlamalar
hakkında bilgi vermektedir. Bu görünümlerden all_constraints kısıtlamalar hakkında tablo düzeyinde bilgi
vermekteyken “all_cons_columns” görünümü kolon düzeyinde kısıtlamalar hakkında bilgi vermektedir.
Veriler elde edilirken kullanılan sorgular şu şekildedir:
52
select distinct t.CONSTRAINT_NAME,t.Table_Name,t.R_CONSTRAINT_NAME
,t.CONSTRAINT_TYPE,
getConsCondition(CONSTRAINT_NAME)SEARCH_CONDITION
from all_constraints t
where owner=upper(:şemaismi) and upper(t.table_name)
not in(:istenmeyentablolar)';
table_name: tablo ismi
CONSTRAINT_name: kısıtlama ismi
R_CONSTRAINT_NAME: Kısıtlamanın hangi kısıtlamayı referans gösterdiğini belirtir. Özellikle dış
anahtarların bulunması açısından kullanılmaktadır
CONSTRAINT_TYPE: R dış anahtar kısıtlamasını, P birincil anahtar kısıtlamasını, C control
kısıtlamasını ifade etmektedir.
SEARCH_CONDITION: Kontrol kısıtlamaları ve ‘NOT NULL’ kısıtlamaları için koşulları belirtir.
select t.CONSTRAINT_NAME,t.TABLE_NAME,t.COLUMN_NAME
from all_cons_columns t where owner=şemaismi and
upper(t.table_name) not in(istenmeyentablolar)';
table_name: tablo ismi
column_name: kolon ismi
CONSTRAINT_name: kısıtlama ismi
Çizelge 24: Kısıtlamaların Eşlenmesi
Kısıtlamalar ilk aşamada ilgili ilişkisel RDF ontolojisindeki varlıkla eşleştirilir.
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
kısıtlamaismi,
'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',
'http://www.ege.edu.tr/semweb/Constraint'));
Bir sonraki aşamada kısıtlama özellikleri girilir.
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
kısıtlamaismi,
'http://www.ege.edu.tr/semweb/constraintType',
'"constraint_type '"^^xsd:string'));
53
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
kısıtlamaismi,
'http://www.ege.edu.tr/semweb/R_CONSTRAINT_NAME',
referansgosterilenkısıtlama));
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
kısıtlamaismi,
'http://www.ege.edu.tr/semweb/constraintCondition',
'"search_condition
'"^^xsd:string'));
Çizelge 25: Eşlenmiş Kısıtlamaların RDF veri deposuna girilmesi
Hangi kolon üzerinde hangi kısıtlamanın olduğunu şu şekilde sisteme eklenmektedir.
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelimsi
, kolonismi,
'http://www.ege.edu.tr/semweb/hasConstraint',
kısıtlamaismi));
Eğer kısıtlama tipi ‘P’ ise bu bir birincil anahtarı temsil etmektedir ve sisteme şu şekilde
eklenmektedir.
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
v_table,
'http://www.ege.edu.tr/semweb/isIdentifiedBy',
kısıtlamaismi));
Eğer kısıtlama tipi ‘R’ ise bu bir dışsal anahtarı temsil etmektedir ve sisteme şu şekilde
eklenmektedir.
54
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
v_table,
'http://www.ege.edu.tr/semweb/foreignCons', kısıtlamaismi));
Eğer kısıtlama tipi ‘C’ ise bu bir kontrol ya da ‘Not Null’ kısıtlamasını ifade etmektedir ve sisteme
şu şekilde eklenmektedir.
INSERT INTO semwebdata
VALUES
(semweb_seq.NEXTVAL,
sdo_rdf_triple_s(modelismi,
v_table,
'http://www.ege.edu.tr/semweb/checkCons',
kısıtlamaismi));
5.4.1.8 İlişkilerin Eşlenmesi
Sistem dahilinde ilişkiler, birincil ve dışsal anahtarlar temel alınarak bulunmaktadır. Birincil ve
ikincil anahtar bilgileri kısıtlamalarda tutulmaktadır. Tablolar ve kolonlar arasındaki ilişkileri tespit
edebilmek için kısıtlamalar üzerinde kurallar oluşturulmuş ve kural indeksleriyle gerekli üçlüler elde
edilmiştir. Yaratılan kurallar EK C’de gösterilmektedir.
Bu çalışma kapsamında ele alınan ilişkiler şu şekildedir:
referTable: Bir tablonun hangi tabloyu referans gösterdiğini belirtir. Birincil ya da dış anahtarlar
yoluyla başka bir tablo referans gösterilebilir.
referColumn: Bir kolonun hangi kolonu dışsal anahtar olarak kullandığını belirtmek için
kullanılmaktadır.
hasPrimaryKey: Bir tablonun birincil anahtarını ifade etmektedir. İlişkiler açısından bakıldığında
ise bir tablonun birincil anahtarının başka bir tabloyu referans gösterdiği durumları inceleyebilmek için
kullanılabilir.
hasForeignKey: Bir tabloya ait dışsal anahtarların bulunabilmesi amacıyla kullanılmaktadır.
55
Örneğin bir tablonun hangi tabloyu referans gösterdiği şu şekilde bulunabilmektedir.
SELECT x , y
FROM TABLE(SDO_RDF_MATCH(
'(?x :referTable ?y)',
SDO_RDF_Models('semweb'),
SDO_RDF_Rulebases('RDFS','semweb_rb'),
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null));
Çizelge 26: İlişkilerin Eşlenmesi
Yukardaki sql hangi tabloların hangi tabloları referans gösterdiği bilgisini sonuç olarak döndürmektedir.
5.4.1.9 İlişkisel Veritabanındaki Anlamsallığın Eşlenmesi
Bu bölüme kadar özellikle sistemde tablolar, kolonlar ve kısıtlamalar hakkında eşlemeler üzerinde
duruldu. Şu bir gerçektir ki ilişkisel veritabanlarından ontolojilere otomatik olarak eşleme
gerçekleştirirken bazı anlamsallıkların sistemde nasıl gösterileceği konusu bir muammadır. Örneğin bir
tablonun, özellikle büyüklüğü nedeniyle, küçük özet tabloları oluşturulabilmektedir. Büyük tablo ile
küçük tablonun arasındaki kalıtsal ilişki kısıtlamalar ile elde edilemeyebilmektedir. Büyük tablo ile küçük
tablonun kolon isimleri farklı olmasına rağmen aynı değerlere sahip olabilir. Örneğin bir
tablodaki(equipment_id) kalıt aldığı tablodaki (equipment_type_id) kolonuna karşılık gelebilir. Bu tarz
problemleri çözebilmek için farklı yöntemler sunulmaktadır. Bunlardan bazıları verilerin eşleşip
eşleşmediği konusunda yapılan analizlerle gerçekleştirilir. Ancak sadece değer bazlı yapılan analizler Web
ortamının büyüklüğü göz önüne alındığında ve veritabanlarının giderek büyümesi nedeniyle gerçekçi
değildir. Bir diğer yöntem ise sistemde sıklıkla kullanılan SQL sorgularının incelenmesiyle
gerçekleştirilebilir. SQL sorguları ilişkisel veritabanındaki ilişkileri tanıma konusunda yardımcı
olabilmektedir. Ancak hiç sorgulanmayan tablolar hakkında bilgi sahibi olmamız çok zordur. Ek olarak
aralarında kalıt ilişkisi olan tablolar genellikle SQL’le birbirleriyle birleştirilmez. Çünkü bu tarz tablolar
sistemlerde sorgunun performansını arttırmaya yönelik oluşturulmuş tablolardır.
Bu tez kapsamında önerilen yöntem Oracle veri tabanındaki veri sözlüklerinin kullanılmasıdır.
Veri sözlüklerinin gerçek değerlerinin elde edilebilmesi için aşağıdaki yordamların çağrılması
gerekmektedir.
• gather_table_stats
• gather_index_stats
56
• gather_schema_stats
• gather_database_stats
• gather_stale_stats
Yukarıdaki yordamlar sonucu oluşan kolon istatistiklerini aşağıdaki örnek sorgu ile inceleyebiliriz.
SQL> SELECT column_name, num_distinct, low_value,
2 high_value, num_nulls "NULLS", num_buckets "BUCKETS"
3 FROM user_tab_col_statistics
4 WHERE table_name = 'EMPLOYEES'
5 AND column_name = 'SALARY';
Tablo istatistikleri ise şu şekilde bulunabilir.
SELECT num_rows, blocks, empty_blocks,
2 avg_space, avg_row_len, sample_size
3 FROM dba_tables
4 WHERE table_name = 'ORDERS' AND owner = 'OE';
Bu iki sorgu sonucu elde ettiğimiz değerler ile sık kullanılan sqllerin incelenmesi sonucu
gerçekleştirilecek yöntem örtülü kalmış kalıt ve ilişkileri bulunması açısından daha uygun olacaktır.
İzleyecek çalışmalarda bu konular üzerinde çalışma yapılması öngörülmektedir.
5.4.1.10 Kural tabanları, Kurallar ve Kural İndeksleri
Oracle RDF veri deposunda kural tabanları yaratıp bu kural tabanlarına ilgili kuralların
girilmesiyle gerçekleşir. Kurallar tanımlandıktan sonra kural indeksleri yaratılır. Bir kural indeksi belirli
model kümelerine belirli kural tabanlarını uygulanmasından çıkarsama yolu ile elde edilen üçlüleri içeren
nesnelerdir.
Tablolar ve kolonlar arasındaki ilişkileri tespit edebilmek için kısıtlamalar üzerinde kurallar
oluşturulmuş ve kural indeksleriyle gerekli üçlüler elde edilmiştir. Yaratılan kurallar EK C’de
gösterilmektedir.
57
Örneğin aşağıdaki girdi bir kolonun hangi kolonu referans gösterdiğinin bulunması amacıyla
kullanılmaktadır.
INSERT INTO mdsys.rdfr_semweb_rb
VALUES
('referColumn',
'(?a :foreignCons ?b)
(?c :hasConstraint ?b)
(?b :R_CONSTRAINT_NAME ?d)
(?e :hasConstraint ?d)',
NULL,
'(?c :referColumn ?e)',
sdo_rdf_aliases(sdo_rdf_alias(‘, 'http://www.ege.edu.tr/semweb/')));
Çizelge 27: Örnek kural tabanı oluşturulması
Kural tabanları ve indekslerinin kullanılmasına örnek olarak bir tablonun hangi kolonunun hangi
tablodaki hangi kolonunu dışsal anahtar olarak kullandığının bulunması gösterilebilir.
SELECT x tabloismi,y kolonismi ,z referekolonsmi,t referetabloismi
FROM TABLE(SDO_RDF_MATCH(
'(?s :hasTable ?x)
(?x :hasForeignKey ?y)
(?y :referColumn ?z)
(?t :hasColumn ?z)',
SDO_RDF_Models(‘semweb’),
SDO_RDF_Rulebases('RDFS','semweb_rb'),
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
Çizelge 28: Örnek kural tabanı sorgulanması
5.4.2 Verilerin Taşınması
Verilerin taşınma işlemi ilişkisel veritabanındaki verilerin RDF şemadaki yapılar kullanılarak RDF
üçlüleri şeklinde sisteme aktarılmasıdır. Bunun gerçekleşebilmesi için veritabanı kayıtları ontolojik
örneklere eşlenmesi gerekmektedir. Bu adımın gerçekleşebilmesi için veri tabanı şemasının ontolojiye
dönüşümünün tamamlanması gerekmektedir. Her bir örnek üçlüler şeklinde ORACLE RDF deposuna
eklenir. Buradaki temel nokta her bir kayıt için “_BNSEQN” ön ekine sahip birer boş düğümün
oluşturulmasıdır. Ek olarak veriler hücre tabanlı eklenmektedir. Bu demektir ki eğer bir tablonun 10
58
kolonu 100 kaydı var ise sonuç olarak 1000 tane girdi deyimi çalıştırılacaktır. Aynı zamanda 100 tane boş
düğüm oluşturulacaktır. Böylelikle sorgular yardımıyla bir tablodaki istenen kolonların değerleri elde
edilebilecektir. Aynı boş düğüme ait olan girdiler aynı kayıda aittir. Sistem sadece şemanın eşlenip verinin
istenmediği durumlarda eşlenmemesini desteklemektedir.
Verilerin eşlenmesi sırasındaki temel problem büyük miktarda veri barındıran sistemlerde çok
yoğun girdi işleminin yapılmasına neden olmasıdır.
İlk aşamada boş düğümün hangi tablo tipinde olduğu belirlenir.
INSERT INTO semwebdata VALUES (
semweb_seq.nextval ,SDO_RDF_TRIPLE_S(
modelismi
,boş düğüm,
‘http://www.w3.org/1999/02/22-rdf-syntax-ns#type’
,tablo_uri
,modelid));'
Çizelge 28: Verilerin taşınması için boş düğüm
Diğer aşamada tabloya ait her bir hücre için aşağıdaki deyim çalıştırılır.
INSERT INTO semwebdata VALUES (semweb_seq.nextval,SDO_RDF_TRIPLE_S(‘
modelismi ,boşdüğüm,kolonismi
,veri"^^veritipi ‘));';
Çizelge 29: Verilerin taşınması için hücrelerin eklenmesi
Belirli bir kolona ya da tabloya ait eşlenmiş verilerin bulunması şu şekilde gerçekleşir:
SELECT x,y,z,t,t$rdfLTYP
FROM TABLE(SDO_RDF_MATCH(
'(?s :hasTable ?x)(?x :hasColumn ?y)(?z ?y ?t)',
SDO_RDF_Models('semweb'),
null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null));
59
Çizelge 30: Verilerin elde edilmesi
‘z’ her bir kayıt için yaratılan boş düğümü, ‘y’ kolon değerini, ‘t$rdfLTYP’ ise kolon değer tipini
ifade etmektedir.
5.5 Oracle 10g RDF veri deposundan ilişkisel şemanın elde edilmesi
İlişkisel şema yapıları ve verileri sisteme başarılı bir şekilde aktarıldıktan sonra kullanıcılar Oracle 10g
RDF veri deposunu kullanarak şema yaratma ve veri girdi kodlarını elde edebilmektedirler. Bu kodlar
başka bir sistem ya da şemada çalıştırılarak istenen yere taşınabilmektedir. Oluşturulan kodlar ilk
eşlemede kullanılan şemanın birebir aynısını üretebilmektedir.
Oracle 10g RDF veri deposundan ilişkisel şemanın elde edilmesi işlemi 4 aşamadan oluşmaktadır:
- Tablo kodlarının elde edilmesi
- Verilerin elde edilmesi
- Indexlerin elde edilmesi
- Birincil kısıtlamaların elde edilmesi
- Dış anahtar kısıtlamaların elde edilmesi
- Kontrol kısıtlama kodlarının elde edilmesi
Kod oluşturma adımlarının sırası son derece önemlidir. Örneğin bir tablodaki birincil ve eşsiz
kısıtlamaları için otomatik olarak eşsiz indeks oluşturulur. Eğer birincil veya eşsiz kısıtlama kodları index
yaratma kodlarından önce gelirse kodlar bu indeksler otomatik olarak oluşturulacağı için aynı kolonlar
üzerinde kullanıcı kendi yarattığı benzer özellikteki indeksler yaratılamaz. Ek olarak veriler girildikten
sonra kısıtlamaların eklenmesi verilerin bir başka sisteme eklenme sırasındaki performansını arttıracaktır.
5.5.1 Tablo kodlarının elde edilmesi
Tablo ve özellikleri Oracle RDF veri deposundan şu sorguyla elde edilir.
SELECT s,a,b,c
FROM TABLE(SDO_RDF_MATCH(
'(?t :hasSchema ?s)
(?s :hasTable ?a)
(?a :tableDegree ?b)
(?a :tableTablespace ?c)',
SDO_RDF_Models(‘p_model'),
null,
60
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))';
where upper(t) like upper(‘% p_dbname%');
and upper(s) like upper('%p_schema%');
Çizelge 31: Tablo kodlarının elde edilmesi
Her bir tabloya ait kolonlar şu şekilde bulunmaktadır.
SELECT b,c,d,e,f,g,trim(h) h
FROM TABLE(SDO_RDF_MATCH(
‘(?t :hasSchema ?s)(?s :hasTable ?a)
(?a :hasColumn ?b)
(?b :columnDataType ?c)
(?b :columnDataLength ?d)
(?b :columnDataPrecision ?e)
(?b :columnDataScale ?f)
(?b :columnNullable ?g)
(?b :columnDefaultValue ?h)',
SDO_RDF_Models(p_model),
null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
where upper(substr(t,instr(t,'/',-1)+1)) = upper('p_dbname')';
and upper(substr(s,instr(s,'/',-1)+1)) = upper('p_schema')';
and upper(substr(a,instr(a,'/',-1)+1)) = upper('p_table');
b:kolon ismi
c:kolon veritipi
d:kolon veri uzunluğu
e:duyarlık,ondalıktan önceki uzunluk
f:ondalık kısım uzunluğu
g:null değer alıp alamayacağı
Çizelge 32: Tablo kolon kodlarının elde edilmesi
Bir kolon tipine göre sistemde tablo yaratma koduna dönüştürülür. Eğer kolonun varsayılan değeri var ise
bu da kodlara aktarılır. Eğer veri tipi ‘NUMBER’ ise duyarlık ve ondalık kısımları kullanılacaktır. Ek
olarak kolon formatı ‘tabloismi.kolonismi’ biçiminden ‘kolon’ ismi formatına dönüştürülmelidir.
Sonuç olarak her bir tablonun oluşturma kodları parametre olarak verilen dosyaya aktarılır.
61
5.5.2 Verilerin elde edilmesi
Tablo ve kolon yaratma kodları oluşturulduktan bir sonraki adım tablolara ait verilerin aktarılmasıdır.
Buradki temel problem bir kayıttaki her bir hücre için birer girdinin sistemde yer almasıdır. Bir hücre
girdisinin hangi kolona ait olduğunun ve bir boş düğümün hangi tabloya ait olduğunun bulunması
gerekmektedir. Aynı boş düğüme ait olan girdiler tek bir girdi deyimine dönüştürülmelidir. Ek olarak
kolon sıralarının da değerlerle aynı sırada olması gerekmektedir.
Bir tabloya ait olan veriler aşağıdaki sorguyla bulunabilmektedir.
SELECT x,y,z,t,t$rdfLTYP
FROM TABLE(SDO_RDF_MATCH(
'(?s :hasTable ?x)(?x :hasColumn ?y)(?z ?y ?t)',
SDO_RDF_Models('p_model'),
null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘‘,’http://www.ege.edu.tr/semweb/’)),
null))
where upper(substr(s,instr(s,'/',-1)+1)) = upper('p_schema ‘)
order by x,z;
x: tablo ismi
y: kolon ismi
z:boş düğüm
t:hücre değeri
t$rdfLTYP: hücre değer tipi
Çizelge 33: Veri girdi kodlarının elde edilmesi
Sorgu sonucu elde edilen kümeler belirli dönüşümlerden geçirilerek girdi deyimlerine dönüştürülür ve
parametre olarak belirtilen dosyaya yazılır.
5.5.3 Indekslerin elde edilmesi
Indeksler şemalar için önemli bir yer tutmaktadır. İndekslerin RDF veri deposundan elde edilebilmesi
sırasında en önemli nokta işlevsel indeksler, eşsiz indeksler ve Bitmap indexlerin birbirlerinden ayırt
edilme şekilleridir. Özellikle işlevsel indeksler için deyimlerin düzgün bir şekilde aktarılmaları
gerekmektedir. Ek olarak indeksler bir ya da birden çok kolonu içerecek şekilde oluşturulabilmektedir.
Sistem tüm bu durumları göz önünde bulundurmalıdır.
62
SELECT distinct a,t,b,c,d,g,h,i
FROM TABLE(SDO_RDF_MATCH(
‘(?s :hasTable ?a)
(?a :hasIndex ?b)
(?b :indexType ?c)
(?b :indexUniqueness ?d)
(?b :indexTablespace ?g)
(?b :indexDescend ?h)
(?b :indexExpression ?i)’,
SDO_RDF_Models(‘p_model '),
SDO_RDF_Rulebases(‘RDFS’,’semweb_rb’),
SDO_RDF_Aliases(SDO_RDF_Alias(‘‘,’http://www.ege.edu.tr/semweb/’)),
null))';
where upper(substr(s,instr(s,’/’,-1)+1)) = upper(‘' p_schema')';
order by b;
Çizelge 34: Indeks kodlarının elde edilmesi
Sorgu sonucu elde edilen indeks bilgileri belirli dönüşümlerden geçirilerek girdi deyimlerine dönüştürülür
ve parametre olarak belirtilen dosyaya yazılır.
5.5.4 Birincil kısıtlamaların elde edilmesi
Birincil anahtarlar birden çok kolondan oluşabildiği gibi birincil anahtarda kullanılan kolon aynı zamanda
bir dış anahtar olabilmektedir. Kod yaratılma sırasında kural tabanları üzeride oluşturulan kural indeksleri
kullanılarak birincil anahtarlar elde edilir.
SELECT x,y
FROM TABLE(SDO_RDF_MATCH(
'(?s :hasTable ?x)(?x :hasPrimaryKey ?y)',
SDO_RDF_Models(' p_model '),
SDO_RDF_Rulebases('RDFS','semweb_rb'),
SDO_RDF_Aliases(SDO_RDF_Alias('','http://www.ege.edu.tr/semweb/')),
null))
where upper(substr(s,instr(s,'/',-1)+1)) = upper(' p_schema')';
order by x;
Çizelge 35: Birincil kısıtlamaların elde edilmesi
63
5.5.6 Dış anahtar kısıtlamaların elde edilmesi
Dış anahtarlar tablolar arasında bütünlüğün korumasında çok önemli bir yere sahiptir. Ek olarak tablolar
arasındaki ilişkilerin bulunmasında da önemli bir role sahiptir. Dış anahtarlar bazı durumlarda aynı
zamanda tablonun birincil anahtarı olabilmektedir.
SELECT x,y,z,t
FROM TABLE(SDO_RDF_MATCH(
'(?s :hasTable ?x)(?x :hasForeignKey ?y)
(?y :referColumn ?z) (?t :hasColumn ?z)',
SDO_RDF_Models('p_model'),
SDO_RDF_Rulebases(''RDFS'',''semweb_rb''),
SDO_RDF_Aliases(SDO_RDF_Alias('''',''http://www.ege.edu.tr/semweb/'')),
null))';
where upper(substr(s,instr(s,'/',-1)+1)) = upper('p_schema ')
Çizelge 36: Dış anahtar kısıtlamaların elde edilmesi
5.5.7 Kontrol kısıtlama kodlarının elde edilmesi
Kontrol kısıtlamaları bir kolondaki değerlerin belirli koşulları sağlamasının en basit yollarından
biridir. Kontrol kısıtlamaları aşağıdaki sorguyla elde edilir.
SELECT distinct a,t
FROM TABLE(SDO_RDF_MATCH(
'(?s :hasTable ?a)(?a :checkCons ?b)(?b :constraintCondition ?t)',
SDO_RDF_Models('p_model'),
null,
SDO_RDF_Aliases(SDO_RDF_Alias('','http://www.ege.edu.tr/semweb/')),
null))
where upper(substr(s,instr(s,'/',-1)+1)) = upper(' p_schema ');
Çizelge 37: Kontrol kısıtlamaların elde edilmesi
64
6. İLGİLİ ÇALIŞMALAR
6.1 Veri Depolama Sistemleri
Bu bölüm RDBM S(İlişkisel veritabanı Yönetim Sistemleri) ya da arka uçları temel alan ana
anlamsal web veri depolama sistemlerinin özelliklerini özetlemektedir. Temel özellikler RDF ya da
ontolojiler gibi şema desteği, çıkarsama, indeksleme, sabit değerlerin sorgulanması ve uygulama dili ya da
altta yatan ilişkisel veritabanı sistemleri için bağımlılıklar ve gereksinimleri içermektedir.
JENA
Jena(Jena) MySQL PostgreSQL, Oracle, Interbase gibi birçok veritabanlarıyla JDBC ya da
Sleepycat / Berkeley DB yollarıyla depolamamayı gerçekleştiren Java anlamsal web aracıdır. Desteklenen
her bir veritabanı için optimizasyonu sağlamak amacıyla farklı yapılandırma dosyaları bulunmaktadır. Tek
bir veritabanında birden çok veritabanının saklanabilmesi ya da depolanmış yordamların kullanılabilmesi
gibi farklı seçenekler sunmaktadır. RDBMS APIsi diğer veritabanları için kolaylıkla özelleştirilebilir ve
standart SQL ile çalışabilecek genel bir şemaya sahiptir. Performans yaklaşımları ve veritabanları analiz
edilmiş ve optimize edilmiştir. Jena RDBMS arka ucu sadece JDBC ile doğrudan çalışabilecek şekilde
sınırlandırılmıştır, ancak daha özelleştirilmiş RDBMS veritabanı depolama sistemleri optimize edilecek
şekilde rahatlıkla yazılabilir.
Jena şuan Anlamsal Web programlama araçları içerisinde en önde gelen araçlardandır ve şu an
ikinci nesil ürünü kullanılmaktadır. Jena 2 Jena1’de karşılaşılan bazı problemlerin üstesinden gelebilmek
için oluşturulmuştur. Özellikle şema tasarımı çoklu tablo birleşimleri yüzünden oluşan performans
problemlerini aşabilmek için değiştirilmiştir. Ek olarak reifikasyonlar yüzünden depolamadaki gereksiz
şişmeler de engellenmeye çalışılmıştır. Jena 1 normalize edilmiş üçlü depolama yöntemini tercih etmiştir.
Bir deyim tablosu özne, nesne, yüklemlere ait referansların ve URIların ve sabitlerin gerçek değerlerinin
tutulduğu iki ana tabloyu kullanmaktadır. Tasarım tekrarlanan değerlerin üçlülerde ne kadar kullanıldığına
bakılmaksızın sadece bir kez depolanmasını sağladığı için yer anlamında etkindir. Ancak bir işlemi
bulabilmek için üç yönlü bir birleştirmenin gerçekleştirilmesi gerekmekteydi. Ek olarak tek bir deyim
tablosu çoklu veri kümeleri için ölçeklenebilir değildi.
65
Jena 2 denormalize edilmiş çoklu model üçlü depolama yaklaşımını kullanır. Modeller farklı
tablolarda tutulur ve her bir model belirtilen deyimler ve reifike edilmiş deyimleri ayrı tablolarda tutar. Bu
yaklaşımlar opsiyoneldir ve yapılandırma sırasında değiştirilebilir. Belirtilen deyimlerin tutulduğu tablo
üçlülerdeki özne, nesne ve yüklemlerin gerçek değerlerini depolar. Saklanan değerlerin farklı üçlülerde
tekrardan girilmesi ile birlikte metin değerleri birden fazla tekrarlanabilir ve gereksiz şekilde tutulmuş
olur. Jena 2 böylelikle Jena 1’e göre daha fazla yer kaplar ancak tablo birleştirme sayılarının daha az
sayıda olması sorgulama performanslarını olumlu şekilde etkilemektedir. Reife edilmiş deyimler yüklemsınıf tablosunda tutulur ve StmtURI(reife edilmiş deyim), “rdf:subject”, “rdf:predicate”, “rdf:object”, ve
rdf:type kolonlarına sahiptir. Tüm özniteliklere sahip bir kayıt reife edilmiş bir üçlüyü temsil eder.
Belirtilen ve reife edilen deyimlere ek olarak Jena 2 çizge yaratımı sırasında deyimler için de bir
tablo yaratılması şeklinde yapılandırılabilir. Bu tablolar belirli yüklemler için özne-değer ikililerini
kaydeder. Tablo kolonları özne ve tabloda temsil edilecek her bir yüklemi barındırmaktadır. Örnek olarak
Dublin Core yüklem tablosu “subject”, “dc:title”, “dc:Publisher”, ve “dc:description” kolonlarını
içerebilir. Tek bir kayıt ortak bir özne için yüklem değerlerini kaydeder. Yüklem tabloları yüklem
URIlarını içermediği için depolamada en uygun indirgeme seçeneğini sağlamaktadır. Ek olarak ortak
olarak erişilen yüklemleri bir arada tutmaya çalışır, böylelikle performans kazancı sağlar.
Sesame ve SAIL
Sesame (Sesame) RDF e RDF şemanın depolanması ve sorgulanabilmesi için geliştirilmiş bir
mimaridir. Farklı güçlü yanlara ve zayıflıklara sahip veritabanları gibi depolama sistemlerini kullanır. Bu
sisemler çeşitli şekiller RDF verisini depolamak için kullanılabilir. Depolama ve çıkarsama
arayüzü(SAIL) RDF’e özel metotlarla veritabanı api’si arasında arayüz olarak görev alır. Ayrıca bellekte
kalıcı depolama işlemini gerçekleştirmek için dosyaları kullanan SAIL uygulaması bulunmaktadır. SAIL
ayrıca RQL sorgulama dilini, yönetim(RDF verisinin ve şemasının yüklenmesi, silinmesi) ve RDF
verisinin RDF/XML formatında dışarı verebilme gibi özellikleri içinde barındıran sesame modülleri için
arayüzler sunmaktadır. SAIL, RDF şema anlamsalığını ve veri akış işlemini destekleyen yüksey düzeyli
ve lightweight java APIsidir.
SAIL herhangi bir RDBMS, ODBMS, var olan RDF depoları, RDF dosyaları ya da ağ
servislerinin üzerinde çalışabilmektedir. Sesame JDBC’ye sahip her türlü veritabanını desteklemektedir ve
şuan PostgreSQL, MySQL ve Oracle vertabanlarını desteklemektedir.
66
The PostgreSQL deposu nesne-ilişkisel RDBMS özelliklerini kullanarak tablolar arasında alt tablo
ilşkisini destekler. Böylelikle RDF şema sınıf ve özelliklerin sınıflandırılması için uygundur. Mysql
deposu sınıflandırmayı bir baksa mekanizma kullanarak destekler.
SAIL in “Querying Community Web Portals(Karvounarakis et al.)” dokümanından esinlenrek
dinamik veritabanı şeması kullanmaktadır. Bu yapıda her bir sınıf alt sınıf ilişkisi için yeni tablolar
eklenmiş ve böylelikle tablonunun üst tablaların alt tablosu olması sağlanmıştır. Aynı durum özellikler
için de geçerlidir.
Sesame ek olarak SQL şeması üzerinde doğrudan çalışabilecek RDF model teori çıkarsama
özelliğine de sahiptir. Kullanılmakta olan tabloların bilgilerini kullanmasına rağmen RDBMS’ten
bağımsızdır. Çıkarsama aracının bir diğer versiyonunda deyimlerin çıkarsanmasında kullanılan diğer
deyimler de izlenmektedir. Bu sisteme “Truth Maintainance System (TMS”) adı verilmiştir.
Sesame’da örneğin PostgreSQL kaynağı yavaştır ve özellikle tablo yaratılması masraflı olduğu
için şema değişmektedir. Ek olarak var olan iki sınıf arasında alt sınıflar eklemek çok yavaştır, çünkü bu
işlem var olan tablolar üzerinde gerçekleştirilemez.
Sesame SAIL Sorgulama Modülü
Sorgulama modülü RQL sorgusunu bir modele dönüştürür ve bu modeli başka bir modele optimize
eder. Değerlendirme RQL sorgulama motoru içinde SAIL sistemine çağrılar şeklinde gerçekleşir. RQL
sorgusu kendi başına veri havuzuna iletilebilirdi ancak bu şekilde sadece RQL destekleyen veri
havuzlarına erişme şeklinde kendini kısıtlamış olacaktı. RDFSuite örneğin bunun tam ters bir yaklaşım
sergiler ve sadece RQL destekleyen veri havuzlarını kullanmaktadır.
Sesame SAIL Yönetim Modülü
Bu modül veri havuzuna veri eklenmesi, veri havuzundan veri silinmesi, RDF parçalayıcıdan gelen
veriler gibi veri akımlarının eklenmesi gibi özellikler sağlar ve deyimlerin şemalarıyla uygunluğunun
kontrol edilmesi ve çıkarsama yapılabilmesi için RDF şema bilgisini içermektedir.
Sesame SAIL Dış veri Aktarma Modülü
67
Veri havuzunu RDF veri değişim biçimi olan RDF/XML şekline getirilmesinde görev alır.
KAON
KAONprojesi
“Karlsruhe
Ontology
and
Semantic
Web
Infrastructure
Developer's
Guide(KAON)”da tanımlandığı üzere verinin ilişkisel veri tabanında JDBC yardımıyla depolanabildiği
J2EE uygulama sunucuları üzerinde kullanılabilen RDF veri havuzu sunmaktadır.
Varsayılan sürerlilik EJB kabı ile sağlanmaktadır ancak gelişmiş “Mühendislik” ilişkisel şema ontolojiler
oluşturulurken Mühendislik Sunucusunun parçası olarak sunulmaktadır. Bu yapıda ham içerik üzerinde
kompleks indeksleme gerçekleştirilebilir.
Kaon sunucusu yüksek seviyede ontolojiksel ara yüzler sunmaktadır. Bu ara yüzler yardımıyla
üçlülere erişim sağlanabilmektedir. Ek olarak yüksek seviyede mantıksallar çıkarsama için eklenebilir.
Parka Veritabanı
Parka veritabanı(PARKA-DB) Praka-KB’nin bir parçası olarak anlamsal ağlar temel alınarak
geliştirilmiş bir bilgi gösterim sistemidir. İlişkisel veritabanı altında yapıları kullanarak katmanlaşmıştır.
Operasyonların daha kısa sürede gerçekleştirilebilmesi için yüklemler için sabit tablo boyutları
kullanmaktadır ve her zaman bellekte depolanan sınıflar,yüklemlere ait kalıtsallığı işleyebilmek için
optimize yapılara sahiptir. Yüklem tabloları disk ve bellek arasında ihtiyaca göre yer değiştirilir.
RDF Suit
ICS-FORTH’a ait Java RDFSuite(RDFSuite) ORDBMS modeli temel alınarak kalıcı bir depo
yaratmayı hedeflemiştir. Temelde iki yaklaşım bulunmaktadır: genel depo ya da uygulamaya özel
RDBMS şemaları. RDF üst verisinin (SQL3) nesne-ilişkisel gösterimini yaratabilmek için şema bilgisi
kullanmaktadır. Sınıf, özellik, altsınıf, altözellik ve kullanılan RDF şema için belirli sınıf ve özelliklere ait
tablolara sahiptir. Ek olarak sabit değerler için XML şema veri tiplerine, ilkel değerleri gruplama ve
filtreleme özelliğine ve sıralama yeteneğine sahiptir.
68
TAP
TAP Projesi(TAP Project, 2002) bir Apache modülü olarak C dilinde yazılmıştır ve RDF
depolama sorgulama, ağ/web servisleri APIsi ve PERL ve Java dillerinde API’ler sunmaktadır.Ek olarak
RDF şema altsınıf, altözellik sorgulama ve indeksleme konusunda BerkeleyDB deposu ya da MySQL
üzerinde etkin bir çözüm sunmaktadır. MySql şeması TAP Bilgi Tabanı(TAP Knowlege Base, 2002) için
optimize edilmiştir ancak farklı şemaları indeksleyebilecek şekilde özelleştirilebilmektedir. SOAP XML
arayüzünde hazırlanmış GetData adında sorgulama diline sahiptir.
Tez kapsamında Oracle RDF Veri deposu kullanılmaktadır. Oracle RDF veri deposu ölçeklenebilir yapısı,
grafiksel verilerin depolanmasına yönelik yetenekleriyle diğer sistemlerden ayrılmaktadır.
SDO_RDF_MATCH fonksiyonu Oracle mimarisinin sunduğu en önemli katkılardan biridir. Bu fonksiyon
yardımıyla herhangi bir ilişkisel veri tabanı tablosu ile Oracle RDF veri deposundaki ontolojiksel varlıklar
birlikte sorgulanmaktadır. Ek olarak bu fonksiyon ile çıkarsama sonucu elde edilmiş ontoloji varlıkları da
sorgulanabilmektedir. Oracle RDF veri deposunun bir temel özelliği de RDF kural tabanları üzerinde
tanımlanan kurallar yardımı ile rahat bir şekilde çıkarsama yapılabilmesine imkan sunan yapılara sahip
olmasıdır. Bu yapının en büyük eksikliği, kurallarda yapılan bir değişiklikte tüm kural indeksinin baştan
yaratılmasını gerektirmesidir.
6.2 Ontoloji Eşleme Sistemleri
İlişkisel Veriden RDFS Modele (“From Relational Data to RDFS Models”)
FDR2(Korotkiy ve Top) ilişkisel verilerin RDF/S yardımıyla daha önce tanımlanmış ontolojiyle
bağlantısının tanımlanması ve gerçekleştirilmesi konu edilmiştir. Daha çok elektronik çizelgelerde
saklanan ilişkisel verinin işlenmesi hedeflenmiştir. Buradaki temel amaç ilişkisel verinin ontoloji
sorgularıyla birlikte sorgulanabilmesinin sağlanmasıdır. Ek olarak RDF/S e dönüştürülüş halinden tekrar
ilişkisel veri elde edilebilmelidir. Bu yaklaşım doğrultusunda gerçek verinin yapısal üst verileri elde
edilmeye çalışılmıştır.
FDR2 sisteminde ilişkisel veri ve ontoloji sözdizimsel ve yapısal olarak birbirleriyle uygun halde
olmalıdırlar. Bu yüzden ilk aşama tablolar halinde tutulan ilişkisel verinin şemasının elde edilmesidir.
İkinci aşamada tablo verileri RDF halinde elde edilen ilişkisel şema cinsinden ifade edilmelidir. Üçüncü
aşamada ilişkisel şemadaki varlıkların alan ontolojisiyle kullanıcı yardımıyla bağlantı kurulması işlemidir.
69
FDR2 sistemi ilişkisel verilerin ontolojilere eşlenmesi konusunda örnek bir yaklaşım sergilese de
ilkel elektronik çizelgelerde saklanan ilişkisel verinin anlamsallığının elde edilmesi doğru bir yaklaşım
sunmamaktadır. Günümüz bilgi teknolojileri düşünüldüğünde ilişkisel verilerin bu tarz çizelgelerde
tutulamayacağı açıktır. Ek olarak eğer çizelgede birden çok tablo var ise bunların aralarındaki ilişkilerin
nasıl ifade edileceği net bir şekilde ifade edilmemiştir. İki yapı arasındaki ilişki çizelgelerde
belirtilemediği gibi hangi kolonun birincil hangi kolonun dışsal anahtar olacağı bilgisinin alınabileceği bir
yapı çizelgelerde mevcut değildir. Bu yüzden karmaşık ilişkisel veri şemalarının bu sistemle ifade
edilemeyeceği açıktır. Ek olarak yapısal problemler de mevcuttur. Örneğin bir tablodaki üç kolonun(kitap,
yazar, editör) aralarındaki ilişkileri ifade edebilmek için kartezyen çarpım kullanılmıştır. Bu da bir
tablodaki kolon sayısının çok olduğu durumlarda gereksiz çoklamalara neden olacaktır ve performans
kaybı yaratacaktır.
Anlamsal Web verilerinin İlişkisel veri tabanlarıyla eşlenmesi
(“SWAD-Europe Deliverable 10.2: Mapping Semantic Web Data with RDBMSes”)
SWAD (SWAD) , RDF üçlülerinin ilişkisel veritabanlarında saklanması konusunda bir yaklaşım
sunmasının yanı sıra ilişkisel veritabanlarının RDF’e eşlenmesi konusunda da bir yaklaşım sunmaktadır.
İlişkisel sistemdeki bir tablo tarafından ifade edilen özellikler boş düğümler ya da özellikler olarak
ifade edilmektedir. Bu yaklaşım özellikler bir varlığı ifade edebilmek için belirli bir URIref’in var
olmadığı durumlarda kullanılabilmektedir.
Böylelikle bir kayıt RDF N-TRIPLE biçiminde şu şekilde gösterilebilmektedir.
_:x(p1, ..., pn) <eg:p1> p1 .
...
_:x(p1, ..., pn) <eg:pn> pn .
_:x(p1, ..., pn) <eg:a1> a1 .
...
_:x(p1, ..., pn) <eg:am> am .
Burada _:x(p1, ..., pn) bir boş düğümü ifade etmektedir. Bir çizgeyi seri hale getirebilmek için bu
varlığın birincil anahtarı kullanılarak bir isimlendirme kullanılabilir. Tabloların tam olarak normalize
olmadığı durumlarda bire-bir ilişki halindeki varlıklar aynı ilişki tarafından tanımlanabilir. Örneğin aj ...
ak öznitelikleri farklı bir varlığı tanımladığı varsayılırsa aşağıdaki RDF daha doğal bir ifade olabilir.
70
_:x(p1, ..., pn) <eg:r1> _:y(p1, ..., pn) .
_:y(p1, ..., pn) <eg:aj> aj .
...
_:y(p1, ..., pn) <eg:ak> ak .
Burada _:y(p1, ..., pn) benzer şekilde yaratılmış ikinci bir boş düğümdür ve kaynağı
belirleyebilmek için gerekli bilgiye sahiptir. Bu tarz denormalizasyonlar üretim sistemlerinde sıkça
görülen bir yapıdır. Altyapı olarak kullanılan ER çizeneklerine başvurulası ya da ilgi alanına özel bilginin
kullanılması birden çok varlığın tek bir ilişkide temsil edilebilmesi için verilecek karar için önemlidir.
Yukarıdaki örneklerden de görüleceği üzere <eg:p1> ... <eg:am> yay etiketleri bir kaynağı
özniteliklerine bağlamak için kullanılmıştır. Eşleştirme işlemi için daha uygun bir öznitelik isimlendirme
yöntemi kullanmak daha doğru olacaktır. Aynı özellik etiketinin birden çok kaynakta doğal olarak
kullanılabileceği de açıktır.
Bu çalışmada ek olarak dışsal anahtarlar ve birden çok tablo konusuna değinilmiştir.
Örneğin:
Table 1: (p1, ..., pn, a1, ..., ar)
Table 2: (f1, ..., fn, b1, ..., bs)
Burada (fi) dışsal anahtarı ifade etmektedir. Bu konuda en basit yaklaşım birden çok yayın yaratılmasıdır.
Tablo 2 de (fi) = (pi) olan her kayıt için aşağıdaki oluşturulur.
_:x(p1, ..., pn) <eg:b1> b1 .
...
_:x(p1, ..., pn) <eg:bs> bs .
Ancak yukarıdaki yaklaşım bir çok durumda yanlıştır. Tablo1 ve tablo2 Bire-çok ilişkinin var
olduğu durumlarda tablo2deki çoklu kayıtlardan oluşturulan üçlülerin birbirlerinden ayırt edilmesi
mümkün değildir. Bu sebeple çalışmada tablo 2deki her bir kayıt için boş düğüm oluşturulmasını öngören
bir yapı sunulmuştur.
Tablo 2deki (fi) = (pi) denklemini sağlayan her bir kayıt
_:x(p1, ..., pn) <eg:t1t2> _:y(p1, ..., pn) .
71
_:y(p1, ..., pn) <eg:b1> b1 .
...
_:y(p1, ..., pn) <eg:bs> bs .
Burada <eg:t1t2> tablo 1de tanımlanan varlığı tablo2deki değerler ile eşleyen bir yaydır. Ek olarak
RDF ve RDFs daha etkin dillerde var olan kardinaliti kısıtlamaları konusunda pek bir şey ifade etmez.
SWAD raporu daha çok RDF verilerinin eşlenmesi konusunda bir yaklaşım sunmaktadır. İlişkisel
şemadan RDFS üst verisine eşlenebilmesi konusunda bir yaklaşım sunmamaktadır. Ayrıca kap yapıları da
yaklaşımda kullanılmamıştır. Bu yaklaşımda en temel eksiklik üst verinin eşlenmesi konusunda bir
yaklaşım sunmamasıdır. Ek olarak ilişkisel tablo verileri RDF’e eşlendikten sonra tekrar ilişkisel veri
sistemine geri dönüştürülebilmesi için bir yaklaşım sunmamaktadır. Ek olarak bir tabloda birden çok
birincil anahtar ve ya dışsal anahtarın olduğu durumlarda ve tablonun sadece dışsal anahtara sahip olduğu
durumlarda neler yapılması gerektiği konusunda bir yaklaşım sergilememektedir. Ek olarak ‘NULL’
değerlerin nasıl ifade edilmesi gerektiği konusu pek açık değildir ve uygulamada anlam kazandırılması
gerektiği belirtilmiştir , bud a eşleştirme mantığına uygun bir yaklaşım olmamaktadır. Aynı zamanda iki
tablo arasındaki ilişkinin şemada tanımlanmadığı durumlarda neler yapılabileceği konusunu ele
almamıştır.
İlişkisel Verilerin Anlamsal Web’de Sergilemek “Cross ile Exposing relational data on the Semantic
Web with CROSS”
CROSS(Champin et al., 2005) bir ilişkisel veritabanının OWL tanımının gerçekleştirilmesi ve
gerçekleştirilen tanımın ek OWL deyimleriyle zenginleştirilmesine imkan tanıyan bir sistem sunmaktadır.
Bu sistem ile amaçlanan uygulamalarda bir tanesi de OWL’s eşlenen ilişkisel veritabanı ile diğer eşlenmiş
ilişkisel veritabanları ve OWL veri kaynakları ile arabuluculuk işlevini gerçekleştirmektir.
CROSS tasarımında ilişkisel veritabanının dönüştürülmesi tam otomatik olarak gerçekleştirilmesi
ve daha sonra özelleştirme ya kurulum ayarlarının yapılmasına imkan tanıyan bir mimariyi
kullanmaktadır. Brada kullanıcıların hedef dili OWL dilini öğrenmeleri gerekmektedir. Bu yaklaşımda
özelleştirme işlemi artan şekilde gerçekleştirilebilmektedir, yeni tanımların girilmesi daha hızlıdır çünkü
tüm eşleme işleminin tekrar çalıştırılması gerekmez. Kurulum ve ya özelleştirme işlemi veri kaynağı ile ek
bilgi sisteme girilir.
DBMS tarafından ele alınamayan bilgi ve kısıtlamalar genellikle uygulama kodları, kullanıcı ara
yüzleri ve uygulama dokümantasyonları ile çözülmektedir. Veritabanı yapısında ya da anlamsallığında
72
yapılacak değişiklikler uygulamaya yansıtılabilir ama bu daha çok merkezi sistemlerde gerçekleştirilebilir.
Web ortamı düşünüldüğünde bunu gerçekleştirmek zordur çünkü bilgiyi kullanan etmenler daha çok farklı
yerlerde bulunurlar ve bağımsızdırlar. Cross tarafından sağlanan bilgi veritabanı ile ilgili tanımları en açık
şekilde ifade eder ve veritabanı hakkında sabit bilgileri içerir.
Cross platformu çevirme ve sarmalama olarak iki yapıyı sunmaktadır. Çevirme işlemi statik bir
işlem iken sarım işlemi ie belirli bir sorgu gerçekleştiğinde dinamik olarak gerçekleşen bir işlemdir. Cross
prototipinde ilişkisel şema evirme işlemine tabi tutulmuştur. Bu yaklaşım ilişkisel şemanın çoğunlukla pek
değişime uğramadığını varsaymaktadır. Veriler ise sarma işlemine tabi tutulmaktadır çünkü veri sıklıkla
değişmektedir ve genellikle verinin saklanması ve güncellenmesi için çok büyüktür.
Cross ile dönüştürülen OWL yapısının üç bileşeni bulunmaktadır. Bunlar şema, veri ve ek
bilgilerdir. Şema ve veri, ilişkisel veritabanı şemasının ve verilerin otomatik olarak dönüştürülmesi ile
elde edilir. Ek bilgi bileşeni ise ilişkisel yapılardan otomatik olarak elde edilemeyen ve kullanıcılar
tarafından elle girilen bilgileri içerir. Kullanıcıların otomatik dönüştürme işlemine müdahale etmeleri
sistem tarafından engellenmiştir. Şema ve veri bileşenleri daha çok veritabanının kendisine ait olan
bilgileri, ek bilgi bileşeni ise OWL çıkarsamaları için daha çok durum elde edilmesini sağlayabilmek
amacıyla kullanılmaktadır.
Çevrim işlemi sırasında her bir tablo bir sınıf ve her kayıt da bu sınıfın örnekleri şeklinde
oluşturulur. Ayrıca her bir tablo ‘same-t’ nesne özelliği ile ilişkilendirilir. Her bir kayıt örneği de kendisini
işaret eden bir ‘same-t’ özelliğine sahiptir.
Cross sisteminde kolon değerleri doğrudan kayıtlarla ilişkili değildir ama hücreler tarafından
tutulur. Böylelikle her bir kolon için bir nesne özelliği karşılık gelir ve kolona karşılık gelen hücre örneği
ile kayıt örneği arasında bağlantı kurmak için kullanılmaktadır. Şemada ilişkisel kolonların genel
özniteliklerini ifade edebilmek için ve şemada belirtilen özel kısıtlamalar için uygun aksiyomlar da
bulunmaktadır.
Son olarak da her bir dışsal anahtar bir nesne özelliğine dönüştürülür ve iki kayıt örneğini
birbirleriyle ilişkilendirilmesini hedefler. Kolonlarla birlikte özellik ile ilgili uygun aksiyomları da şema
bileşenine ekler.
Şema ve veri bileşeni ilişkisel veritabanından otomatik olarak oluşturulur ve sadece ilişkisel
yapının çevrimini oluşturur. Ek bilgi bileşeni ise kullanıcı tarafından bilgilerin çıkartıldığı bileşendir. İlk
iki kısım sadece kullanıcılar tarafından değil ek olarak çıkarsama motorları tarafından
73
kullanılabilmektedir. Bu bileşen dahilinde başka ontolojilerden terimlerle tanımlanan sınıflar
ilişkilendirilebilir. Ek olarak birden çok kolonun tek bir kolona karşılık gelebildiği(ör: ad,soyadı kolonları
birleştirilip ad soyadı) durumlarda kolonların birleştirilmesi gerçekleştirilebilir. Sistemde OWL dilinin
kullanılmasıyla kardinalitiler de eklenebilmektedir. Ek olarak sistemde tablolar arasında altsınıf üst sınıf
ilişkileri de kullanıcılar tarafından tanımlanabilmektedir.
Cross ilişkisel veritabanından ontolojilere çevrim konusunda güzel bir yaklaşım sunmaktadır.
İlişkisel şemanın ontolojilere otomatik olarak çevrimi çoğu durumda sistem hakkındaki tüm bilgiyi
içermez. Bir miktar bilgi uygulamalarda, sql sorgularında ve kullanıcı dokümantasyonlarında
tutulmaktadır. Örneğin alt sınıf üst sınıf ilişkilerinin otomatik olarak çıkarsanması tam olarak doğru
sonuçlar vermemektedir. Cross bu sebeple kullanıcıyı devreye sokup bu tarz bilgilerin kullanıcılar
tarafından sağlanmasını desteklemiştir. Ancak bu konuda temel problem kullanıcıların OwL dilini
bilmelerini gerektirmesidir. Kullanıcıların OWL dilini bilmesinin beklenmesi çok doğru bir yaklaşım
değildir. Ek olarak kardinalitelerden başlayarak alt sınıf üst sınıf ilişkilerinin belirlenmesine kadar çoğu
bilgi kullanıcı tarafından ele alınmaktadır. Bu da hatalara neden olabilecektir.Bunun yanı sıra
dönüştürülen OWL ontolojilerden veritabanı şemasına geri dönmek istendiği taktirde nasıl bir yaklaşım
sergilenmesi gerektiği de açıklanmamıştır.
Bir diğer problem de oluşturulan ontolojilerin saklanabilmesi ve bakım işlemleridir. Örneğin
veritabanı şemasında yapılan bir değişikliğin sistemi nasıl etkileyeceği, böyle bir durumda sadece
değişikliklerin mi yoksa tüm şemanın mı baştan çevrim işlemine tabi tutulacağı net olarak ifade
edilmemiştir.
İlişkisel OWL OWL temel alan veri ve şema gösterim formatı
“Relational.OWL - A Data and Schema Representation Format Based on OWL”
Bu çalışmada(Laborda ve Conrad, 2004) ilişkisel şema ve verilerin OWL dili ile gösterim
formatının hazırlanması hedeflenmiştir. OWL dilinde hazırlanmış olan bu gösterim uzak veritabanı
sistemleri arasında varlıkların değiş tokuşu için uygun halde gerçekleştirilmesi amacını taşımaktadır.
OWL fikir olarak Anlamsal Web’te sadece verinin değil verinin yorumunun(biçim,kaynak,kullanım vs) da
gösterimini sağlamak amacıyla oluşturulmuştur. Böylelikle uzak veritabanları her iki tarafta da OWL
kullanarak yeni bir veri değişimi formatına ihtiyaç duymadan birbirlerini anlayabilmiş olurlar. Bu xml
diliyle sağlanamayacak bir özelliktir. Bu yaklaşım çoklu veritabanı sistemleri, bileşen veritabanlarının
şema ve veriyi paylaştığı sistemlerde yaygın olarak kullanılabilecektir.
74
RDF verisinin ilişkisel şemalarda saklanmasının ve ilişkisel verilerin RDF’e çevrilmesi işlemine
aksi bir yaklaşım olarak bu yaklaşım veritabanı verisinin ve şema bileşenlerinin OWL dilini temel alan
ortak bir ara dil ile gösterimini hedeflemektedir. Bir diğer ifadeyle bu çalışma ile veritabanında depolanan
şema ve veriler için OWL bilgi gösterim tekniklerini kullanan bir gösterim formatı oluşturulmuştur.
Çalışma sonucunda herhangi bir sağlayıcıya bağlı kalmaksızın herhangi bir ilişkisel veritabanını ait
şemayı daima aynı tarzda tanımlamak ve paylaşmak mümkün olacaktır. Sonuç olarak model 3 katmandan
oluşmaktadır. En üst seviyede en soyut katman İlişkisel OWL’dır. Bir alt katman ise ilişkisel OWL’I
kullanarak oluşturulan ontoloji katmanıdır ve belirli bir ilişkisel veritabanına ait şemanın gösterimi için
kullanılmaktadır. En alt katmanda ise ikinci katmandaki ontoloji kullanılarak hazırlanan veri katmanı
bulunmaktadır.
İlişkisel owl en üst ve soyut düzeyde üst veri bilgisini içermektedir ve bu üst verinin kaynağı daha
önceden sistem tarafından tanımlanmış veri sözlüğü ile ifade edilen sistem tablolarından alınmıştır.
Bunun nedeni çok büyük miktardaki verinin sisteme özel olması ve anlamsal gösterim için uygun
olmamasıdır. Seçilen üst veri gerçek verinin yorumlanabilmesi için vazgeçilmezdir. Ek olarak şema
varlıkları rahatlıkla genişletilebilmektedir. Sonuç olarak ilişkisel owl ontolojisine veri sözlüklerinde yer
alan tablolar,kolonlar, birincil ve dışsal anahtarlar ve veri tipleri barındırılmaktadır.
Bir sonraki aşamada ilişkisel veritabanı şemasını soyut olarak tanımlayan bir owl ontolojisine
ihtiyaç duyulmaktadır. Bu owl gösterimi ilişkisel owl’a erişimi olan ve owl işleyebilme yeteneğine sahip
herhangi bir uzak veritabanı ya da uygulama tarafından kullanılabilmelidir. Bu gösterim şekli veri
varlıklarının gösterimi için uygun olan gösterim biçimini yaratabilmek için temel ontoloji olarak
kullanılacaktır. İlişkisel veritabanına ait şemanın tanımlanabilmesi için OWL sınıfları merkezi olarak
tanımlanmalıdır, böylelikle bir veritabanını tanımlayan herhangi bir doküman rahatlıkla bu sınıfları
referans olarak kullanabilecektir. Tablo ya da kolon gibi sınıfların soyut tanımları bilginin gösterimi için
merkezi bir role sahiptir. Ek olarak sınıflar arası muhtemel ilişkilerin tanımlanması gerekmektedir. Bu
soyut şema bileşenleri ve aralarındaki ilişkilerin merkezi gösterimi ilişkisel owl olarak ifade edilmektedir.
Benzer şekilde RDF ya da OWL kullanılarak başka bir yerde geliştirilen sistemler ilişkisel owl’a
owl:equivalentClass ya da owl:equivalentProperty ilişkileri kullanarak bağlanabilmektedir. Sonuç olarak
bir ontoloji kullanılarak yapılan veri tabanı gösterimleri birbiriyle ilişkili başka gösterim formatlarında
hazırlanmış dokümanları ele alabilmektedir.
Sonuç olarak ilişkisel owl yaklaşımı ilişkisel veritabanlarının ontolojilere eşlenebilmesi için çok
temel bir yaklaşım sergilemiştir. Bu yaklaşım ile birlikte çıkarsama işlemine gerek duymadan sadece
ontolojilerin birbiriyle anlamsal olarak eşlenmesiyle ontolojiler değiş tokuşa uygun hale getirilmiştir. Bu
75
yaklaşımda tablo alanları(“tablespace”) , indeksler, tetikler ele alınmamıştır. İlişkisel şemadan ontolojiye
çevrim konusunda bilgi verilse de yaratılan ontoloji ve oluşan veri gösterimlerinin nasıl tekrar ilişkisel
şemaya dönüştürüleceği konusunda bir bilgi vermemektedir. Ek olarak sistemlerin çoğunda var olan “not
null” kısıtlamaları, “check” kısıtlamaları ve birden çok dışsal anahtara sahip tablolar için bir yaklaşım
sunulmamıştır. Örneğin tablolara ait birincil anahtarlar bir kap içinde tutulmaktadır ancak dışsal anahtarlar
bir kap yapısı altında tutulmamaktadır. Bunun yanı sıra tablolar arası alt sınıf üst sınıf ilişkileri,
kardinalitiler için bir çalışma yapılmamıştır. Son olarak da yaklaşım sonuçta ortaya çıkan ontoloji
üzerinde çıkarsama yapılmasına engel olan OWL-Full üst veri modelleme yeteneklerini kullanmaktadır.
Veri odaklı Web sitelerinin Anlamsal Web’e aktarılması
“Migrating data-intensive Web Sites into the Semantic Web”
Veritabanından yaratılan web siteleri makineler tarafından anlaşılabilir bir halde değildir ve daha
çok kullanıcıların tüketimi için bilgi sunulmuştur(Stojanovic et al., 2002). Bu bildiride veri odaklı web
sitelerinin otomatik olarak anlamsal web’e dâhil edilebilmesi için bir yaklaşım sunulmaktadır. Bu hedefi
gerçekleştirebilmek için ilişkisel veritabanı şemaları ontolojilere dönüştürülür, dönüştürülen ontolojiler
veritabanı örneklerinden otomatik olarak türetilen üst veri yorumları için alt yapı sunmaktadır. Önerilen
yaklaşımın avantajlarından biri burada yaratılan anlamsal yorumlamanın ucuz ve hızlı olmasıdır. Ayrıca
Dinamik web sayfalarının içeriği makineler tarafından anlaşılır hale getirilmiş olacaktır. Ek olarak üst veri
gösterimi ile birlikte bilgi sistemleri arasında içerik bilgisinin iletişimi basitleştirilmiş olacaktır.
Eşleme işlemi veritabanı anlamsallığını ek ontoloji varlıkları kullanarak geliştirmektedir. Veri
tabanlarından ontoloji yaratılma işlemi sırasında şu adımlar izlenmektedir:
1- İlişkisel şemadaki bilgiyi(tablolar, kolonlar, kolon tipleri, birincil anahtarlar, dışsal anahtarlar) elde
etmek
2-Elde edilen bilgi analiz edilir ve eşleme kuralları kullanılarak ontolojik varlıkların yaratılması
3-Kurallar uygulanarak ontolojinin yaratılması. Çevrim işlemi tüm ontoloji varlıklarını yaratmalı,
kavramları sınıflandırmalı, yardımcı ilişkileri tespit etmeli ve gereksiz bilgiyi silmelidir.
4-Elde edilen ontoloji değerlendirilir, onaylanır ve arıtılır.
5-Bilgi tabanının oluşturulması(veri aktarımı)
76
Geliştirilen sistem her aşamada yardım sağlamaktadır. Aslında tersine mühendisliğin tam olarak
otomatik olarak gerçekleştiği söylenemez. Bazı durumlarda özellikle etki alanı anlamsallığının
çıkarsanamadığı durumlarda kullanıcı etkileşimine ihtiyaç duyulmaktadır.
Kurallar hem tablolar hem de kalıtsallığın tespiti amacıyla kullanılmıştır. Tablolar için kurallar şu
şekildedir:
Kural 1: bazı tablolar sadece tablolar arası ilişkileri ifade edebilmek için yaratılmıştır. Bu durumda tablo
sadece dışsal anahta içermektedir.
Kural 2: Bilginin birden çok tablo arasında dağıtıldığı durumlarda bu tablolar tek bir varlık altında
toplanabilir.
Kural 3: Diğer kurallar uygulanamadığı zaman tablo doğrudan kavrama dönüştürülür.
Kalıtsallıkla ilgili kurallar iki tablonun anahtarları arasında kapsama bağlılığının olduğu
durumlarda kullanılmaktadır. Örneğin PhD öğrencileri hem PhD öğrenci tablosunda hem de Öğrenci
tablosundaki kayıtlarda yer almaktadır.
Bu çalışma çoğu veritabanından ontolojiye eşleme işlemini gerçekleştiren çalışmalar için temel
olmuştur. Değişik durumlarda tablolar üzerinde kurallar uygulanarak bazen tek bir kavrama çevrilmiş
bazen kalıtsallık elde edilmiştir. Bu yaklaşımdaki problem kurallar belirlenirken genellikle kolon
isimlendirmelerinden gidilmesidir. Veritabanında farklı tablolarda kolonlar farklı isimlerle kaydedilmiş
olabilir. Ek olarak tabloların tek bir kavram haline dönüştürüldüğü durumlarda tekrar veritabanına geri
dönülemeyeceği açıktır. Tersine mühendisliğin bu sebeple bu çalışmada uygulanmadığı görülmektedir
Bazı durumlarda birincil ve dışsal anahtarlar kullanılmamaktadır..Tablolar arasındaki anlamsal bağın
açığa çıkartılması bu tarz durumlarda mümkün olmayacaktır.
İlişkisel Veritabanlarından ontolojilere tersine mühendislik
“Reverse Engineering of Relational Databases to Ontologies “
Web teknolojilerinin gelişmesiyle birlikte ilişkisel veritabanlarını temel alan web sayfalarının
Anlamsal Web’e dâhil edilebilmesi için yollar aranmaya başladı. Tersine mühendislik alanında yapılan
çalışmaların çoğu varlık-ilişki ve nesne modellerinin ilişkisel veritabanlarından çıkartılması üzerineydi.
Çok az çalışma tersine mühendisliğin sonucunda ontolojiyi hedef almaktaydı(Astrova, 2004).
77
Bu çalışmada ilişkisel veritabanlarından ontolojilere dönüşümü sağlayabilmek için tersine
mühendislik yaklaşımı sergilenmektedir. Yaklaşım anahtar, veri ve öznitelik analizlerini temel almıştır.
Bu yaklaşım kullanıcıların ilişkisel veritabanından kalıtsallık ve eniyileme yapıları gibi daha çok
anlamsallık elde edebilmesini sağlamayı hedeflemektedir. Ek olarak çıkartılan anlamsallığın onaylanması
ve daha uygun isimlendirilmenin yapılabilmesi için gerekli olan kullanıcı etkileşimi de azaltılmıştır.
Geçiş işlemi ilişkisel veritabanı şemasının ontolojiye eşlenmesi ile başlar. Ontoloji daha sonra
ilişkisel veritabanındaki kayıtların ontoloji örneklerine eşlenmesi işleminde kullanılır. Ontoloji örnekleri
bilgi tabanını oluşturur. Bilgi tabanındaki olgular RDF deyimlerine dönüştürülür ve Web’te yayınlanır.
Web ortamında yayımlanan içerik makineler tarafından anlaşılabilir biçimdedir.
Şema dönüştürme işlemi ilişkisel veritabanının ontolojiye eşlenme işlemini içerir. Bu işlemin iki fazı şu
şekildedir:
—Anahtar, veri ve öznitelik ilintileri kullanılarak kavramsal şema çıkartılır. Kavramsal şema ilişkisel
şema ile ilgili anlamsallığı barındırır.
— Kavramsal şema anlamsal eşdeğer ontolojiye çevrilir
İşlem veritabanının üçüncü normal formdaki halini girdi olarak alır. Beş ana adımdan oluşur.
-Tabloların sınıflandırılması
-Tabloların Eşlenmesi
-Kolonların Eşlenmesi
-İlişkilerin Eşlenmesi
-Kısıtlamaların Eşlenmesi
Tablolar temel, bağımlı ya da bileşik tablolar halinde sınıflandırılır. Eğer bir tablo diğer
tablolardan bağımsız ise bu tablo temel tablodur. Eğer bir tablonun birincil anahtarı başka bir tablonun
birincil anahtarına bağımlı ise tablo bağımlı tablodur. Temel ya da bağımlı olmayan tablolar bileşik tablo
tipine girer.
78
Tabloların eşlenmesi düz bir yöntemdir, şema dönüştürme işlemi sırasında pek sorun çıkartmamaktadır.
Bileşik tipli tablolar hariç tablolar kavramlara karşılık gelir. Bileşik tipteki bir tablo ise duruma göre hem
özellik olarak hem de kavram olarak kullanılabilir.
Bir tablodaki her bir kolon kavramdaki bir özelliğe karşılık gelmektedir. Dışsal ve birincil
anahtarlar istisnadır. Birincil ve dışsal anahtarlar ilişkileri ifade etmektedir.
Bir ilişkisel veritabanında ilişkiler birincil ve dışsal anahtarlarla ifade edilir. Birincil ve dışsal
anahtarlar anahtar, veri, ya da kolon ilintilerinin tipine göre kavram, özellik ya da kalıtsallık ilişkisine
karşılık gelebilir.
SQL dilinde birincil anahtar, tek (‘unique’), tanımsız (‘Not null’) gibi kısıtlamaları belirtmek
mümkündür. İlişkisel veritabanlarında kısıtlamalar içerisinde gömülü olan tüm anlamsallık Frame Logic
belitleri kullanılarak korunmaktadır.
Bilgi geçiş işlemi ise ilişkisel veritabanındaki verilerin ontolojik örneklere eşlenmesi ile
gerçekleştirilir. İki aşamadan oluşur:
-
Ontoloji örnekleri yaratılır. Her bir örneğe kendisini tek olarak tanımlayan bir isim atanır.
-
Ontoloji örnekleri arasında ilişkiler yaratılır.
Bu yaklaşımda tabloların temel, bağımlı bileşik olarak sınıflandırılması doğru bir yaklaşım olarak
gözükse de ilişkisel şemaya geri dönüş işlemi sırasında tabloların birleşerek bir kavramı oluşturduğu
durumlarda bir tablonun kavramdan tekrar nasıl geri oluşturulacağı konusu problem teşkil edecektir. Ek
olarak büyük sistemlerde veri analizleri yapmak da pek gerçekçi değildir. Kolon isimleri kullanarak
yapılan analizlerin de doğru sonuç vermeyeceği de açıktır. Örneğin bir tablodaki “bolumid” başka bir
kolonda “bolid” şeklinde yer alabilir. Bu tarz bir durumda iki kolon arasında ilişki olsa bile açığa
çıkartılamayacaktır.
D2R Eşleme: bir Veritabanından RDF’e eşleme Dili
“D2R MAP – A Database to RDF Mapping Language”
İlişkisel veritabanlarından RDF’e veri aktarılabilmesi için ilişkisel veri modeli çizge tabanlı RDF
veri modeline döznüştürlmelidir. “D2R MAP”(Bizer, 2003) bu tarz eşlemeleri tanıtan bildirim deyimli
79
XML tabanlı bir dildir. Bu dilin tasarlanmasındaki temel hedef, var olan ilişkisel şemayı değiştirmeden
karmaşık ilişkisel yapıların esnek şekilde eşlenebilmesidir. Buradaki esneklik SQL durumlarının eşleme
kuralları içerisinde doğrudan yer almasıyla gerçekleştirilir. Sonuçta ortaya çıkan veri kümeleri daha sonra
gruplanır ve veri yaratılan örneklere eşlenir. Bu yaklaşım ikili veya daha yüksek seviyedeki ilişkilerin, çok
değere sahip sınıf özelliklerini, karmaşık koşulları ve veri örneklerinin birden çok tabloya dağıtıldığı veri
örneklerinin olduğu yüksek seviyede normalize tabl yapılarını ele alabilecek özelliklere sahiptir. Eşleme
işlemi D2R işlemcisi tarafından 4 mantıksal adımda gerçekleştirilir. Her bir sınıf ya da benzer sınıf
grupları için veritabanında veri seti seçilir. İkinci adımda “ClassMap”te tanımlanan “groupBy” kolonları
kullanılarak veri setleri gruplanır. Daha sonra sınıf örnekleri yaratılır ve bu örneklere birer URI ya da boş
düğüm belirteci atanır. Son olarak da örnek özellikleri veri tipi ve nesne özelliği köprüleri kullanılarak
yaratılmaktadır.
“D2R Map” sisteminde veritabanı bağlantısı ve isim alanlarının kullanımı dışında kalan asıl
eşlemeler sadece üç öğeden oluşmaktadır. Ontolojideki benzer her bir sınıf ya da sınıf grupları için
ClassMap öğesi kullanılmaktadır. Her bir “ClassMap” öğesi bir sql ve groupBy özniteliğine sahiptir. URI
örnekleri yaratabilmek için örüntüler ve değer ikame tabloları kullanılmaktadır. Sabit değerler için örnek
özellikleri “DataTypePropertyBridge” öğeleri kullanılarak oluşturulmaktadır. Bu işlem sırasında XML
veritipleri ve “xml:lang” özniteliği kullanılabilir. Veritipi özellikleri örüntüler ve değer ikame tabloları
kullanılarak da çevrilebilir. Model içerisindeki dış kaynaklara ya da örneklere olan referanslar
ObjectPropertyBridge öğesi ile birlikte yaratılmaktadır. Yaratılacak olan örneklere referans verme işlemi
sırasında referredClass özniteliği ile birlikte referredGroupBy özniteliği kullanılmaktadır. Bir özelliğe
sahip çoklu değerler “rdf:Bag”, “rdf:Alt” ya da “rdf:Seq” kapları içerisine konabilir. Bu işlem sırasında
useContainer özniteliği “DataTypePropertyBridge” ve ya “ObjectPropertyBridge” öğeleri ile birlikte
kullanılır.
“D2R Map” aracı sadece ilişkisel veri ve RDF örnekleri üzerinde durmuştur. Sınıflar ve
özelliklerin başka bir yerde tanımlandığını varsaymaktadır. Ancak bir OWL ontolojisini katalog
tablolarına gönderilecek sorgularla yaratabilmek mümkündür. Ek olarak kural tabanlı sistemlerde
kullanıcının çevrim kurallarını adanmış bir dilde hazırlamaları gerekmektedir. Bu kurallar sonra ilişkisel
veritabanları üzerinde kullanmaktadır. Bu işlem kullanıcının bu dili bilmesini gerektirdiği için doğru bir
yaklaşım değildir.
Tezde yapılan çalışma İlişkisel owl’ı temel almakla beraber temel anlamda bu çalışmadan
ayrılmaktadır. Tezde belirtilen yaklaşım, ilişkisel veri modeli teorisinden gelen kuralların kural tabanlı
ontolojiksel bir yaklaşım ile eşleştirilmesinin gerçekleştirilmesiyle diğer çalışmalardan ayrılmaktadır. Ek
olarak var olan yaklaşımlar daha çok tek taraflı bir eşleme mimarisini tanımlarken geliştirilen tasarım çift
80
yönlü eşlemeye olanak sağlamaktadır. Bu bölümde anlatılan mimarilerde eşleme tam olarak
gerçekleşmemekle birlikte oluşturulan ontolojilerden geri dönüşüm de sağlanmamaktadır. Tez kapsamında
eşleme sırasında ilişkisel şemada var olan tüm varlıklar ontolojiksel varlıklara eşlenmektedir. Böylelikle
geri dönüşüm de tam olarak gerçekleştirilmektedir.
81
7. İZLEYECEK ÇALIŞMALAR
Bu tez kapsamında Oracle veritabanı üzerinde veri sözlükleri kullanılarak ontolojiye eşleme
gerçekleşti ve sonuçta ortaya çıkan RDf üçlüleri Oracle RDF veri deposu kullanılarak depolandı. Ancak
Oracle dışındaki veri tabanı şemaları için bir çözüm bu tez kapsamında getirilmemiştir. Oracle veritabanı
dışındaki veritabanlarının da desteklenmesiyle çoğu veritabanı ontolojileri baz alarak tanımlanabilecek ve
böylelikle farklı sistemler çok fazla çaba gerektirmeden entegre edilebilecektir.
Ek olarak kısımlara ayrılmış veya indeksle organize edilmiş tablolar bu çalışma kapsamına
alınmamıştır. LOB, CLOB, BFILE gibi veri tipine sahip kolon değerleri de aynı şekilde sistemde
yeralmamıştır.
Oracle OWL desteği geldikten sonra sistem OWL’ı da ele alacak şekilde genişletilecektir. OWL’ın
ifade konusunda RDF’e göre çok daha güçlü özelliklere sahip olması nedeniyle ilişkisel şemaların
eşlenmesi çok daha başarılı bir şekilde gerçekleşecektir.
Ek olarak eşlenmiş RDF yapısıyla ilişkisel veritabanı arasında kurulacak bir entegrasyon sistemi de
planlar dahilindedir. Böylelikle iki taraftan herhangi birine yalpan bir değişiklik diğer sistemde de
gerçekleşecektir.
82
8.SONUÇ
Anlamsal Web’in geleceği açısından var olan bilgi kaynaklarının anlamsal web’e dahil edilmesi
çok önemlidir. Günümüzde bilginin büyük bölümünün ilişkisel veritabanında tutulduğu göz önünde
tutulduğunda ilişkisel bilgi sistemlerinin anlamsal varlıklar kullanılarak geliştirilmesi gerekmektedir.
Geliştirilen sistem ilişkisel veritabanları şemalarının ontolojilere eşlenmesine örnek bir yapı
sunmaktadır. Sistem şemada var olabilecek tüm varlıkları genel bir ontolojide, varlıkların şemaya özgü
hallerini ise özelleştirilmiş ontolojilerde tutmaktadır. Herhangi bir etmen genel ontoloji kullanarak
rahatlıkla eşlenmiş ontoloji kaynakları üzerinde gezinme ve kullanıcı istekleri doğrultusunda görevlerini
yerine getirebilecektir.
Ayrıca ilişkisel veritabanlarının büyüklükleri göz önünde bulundurulduğunda oluşturulacak
ontoloji yapılarının ve verilerinin etkin ve iyi bir şekilde saklanması ve yönetilebilir olması gerekmektedir.
Oracle 10g RDF veri deposu bu konuda çok iyi bir çözüm sunmaktadır. Ek olarak SDO_RDF_MATCH
fonksiyonun geliştirilmiş özellikleriyle birlikte herhangidir ilişkisel tablo ile SDO_RDF_MATCH
fonksiyonu sonucu oluşan ontolojik yapılar birbirleriyle birleştirilebilmektedir.
Kural tabanlarını desteklemesiyle ontoloji varlıkları için çıkarsama imkanı da sunulmaktadır.
Kural tabanları üzerinde kural indeksleri kullanılarak üçlüler elde edilebilmekte ve bu üçlüler üzerinde
SDO_RDF_MATCH fonksiyonu ile sorgulanabilmektedir. Kural indekslerinin en kötü özelliği kuralın
temelinde yatan yapıdaki her bir değişiklikten sonra kural indekslerinin baştan yaratılmasını
gerektirmesidir.
Sistem sonucu oluşan ontoloji yapıları(RDF) üçlüler şeklinde sistemde saklanmaktadır. İstendiği
takdirde RDF veri deposunda saklanan üst veri kullanılarak şema yaratma kodları oluşturulabilecektir.
Sonuç olarak ilişkisel veritabanlarındaki şema bilgileri(tablolar, kolonlar, kolon özellikleri, birincil
ve dışsal anahtarlar vb.) tam olarak eşlenebilmektedir. Ancak burada önemli nokta ilişkisel veri
tabanlarında gizli kalmış anlamsal sınıflandırma bilgilerinin de elde edilmesidir. Sınıflandırma bilgileri
elde edilirken sık kullanılan SQL’ler ve tablo analizleri kullanılabilir. Ancak her şekilde iyi tasarımı
olmayan mimarilerde ve çok büyük sistemlerde eşleşmenin tam olarak gerçekleşebilmesi için yeni
metodolojiler üzerinde çalışılmaktadır.
83
KAYNAKLAR DİZİNİ
Alexander N., Lopez X., Ravada S., Stephens S., and Wang J.., 2004, RDF Data Model in Oracle. in
W3C Workshop on Semantic Web for Life Sciences. Cambridge, Massachusetts, USA.
Astrova Irina, 2004, Reverse Engineering of Relational Databases to Ontologies Tallinn University of
Technology, Ehitajate tee 5 19086 Tallinn, Estonia
Atzeni P., Mecca G. ve Merialdo P., 1998, Design and Maintenance of Data-Intensive Web Sites, In:
th
Proceedings of the 6 International Conference on Extending Database Technology ,436.450
Behm A., Geppert A. ve Dittrich K., 1997, On the migration of relational database schemas and data to
th
object-oriented database systems, In: Proceedings of the 5 International Conference on ReTechnologies for Information Systems ,13.33
Berners-Lee T., 2000, XML. Semantic Web Talk,
tbl/slide10-0.html (2000)
http://www.w3.org/2000/Talks/1206-xml2k-
Bizer Christian , 2003, D2R MAP – A Database to RDF Mapping Language
Freie Universität Berlin Institut für Produktion,Wirtschaftsinformatik und OR Garystr
Brickley D. ve Miller L., 2000, University of Bristol, UK, RDF, SQL and the Semantic Web - a case
study, http://ilrt.org/discovery/2000/10/swsql/
Carroll J., Dickinson I., Dollin C., Reynolds D., Seaborne A., ve Wilkinson K.. 2004, Jena:
Implementing the Semantic Web Recommendations. in World Wide Web Conference 2004. New York,
New York, USA.
Champin Pierre-Antoine, Thiran Philippe, Houben Geert-Jan, ve Broekstra Jeen, 2005,Cross
,Exposing relational data on the Semantic Web with CROSS,LIRIS, Universit´e Claude Bernard Lyon ,
Facult´es Universitaires Notre-Dame de la Paix, Namur, Vrije Universiteit Brussel, Technische
Universiteit Eindhoven
84
Chiang R., Barron T. ve Storey V., 1996, A Framework for the Design and Evaluation of Reverse
Engineering Methods for Relational Databases, In: Data and Knowledge Engineering, Vol. 21, No. 1
,57.77
Dogan G. ve Islamaj R., 2002, Importing Relational Databases into the Semantic Web,
http://www.mindswap.org/webai/2002/fall/Importing_20Relational_20Databases_20into_20the_20Sem
antic_20Web.html
Erdmann M., Maedche A., Schnurr H. ve Staab S., 2000, From Manual to Semi-automatic Se-mantic
Annotation: About Ontology-based Text Annotation Tools, In: Proceedings of the Workshop on
Semantic Annotation and Intelligent Content (COLING), P. Buitelaar and K. Hasida (eds.)
Jena,Jena Semantic Web Toolkit, HP Labs Semantic Web Activity, http://www.hpl.hp.com/semweb/
KAON, The Karlsruhe Ontology and Semantic Web Tool Suite (KAON), http://kaon.semanticweb.org/
Karvounarakis G., Christophides V., Plexousakis D., ve Alexaki S., Querying Community Web
Portals, , Technical Report, ICS-FORTH, Heraklion, Greece
Korotkiy Maksym ve Top Jan L., From Relational Data to RDFS Models, Vrije Universiteit
Amsterdam, Department of Computer Science, De Boelelaan 1081a,1081 HV Amsterdam, The
Netherlands
Kowari,2005, http://www.kowari.org/.
Laborda C. P., Conrad S., 2004, Relational.OWL - A Data and Schema Representation Format Based
on OWL, , Institute of Computer Science,Heinrich-Heine-UniversitÄat DÄusseldorf D-40225
DÄusseldorf, Germany
Lawrence S. and Giles C., 1999, Accessibility of Information on the Web, In: Nature, No. 400,107.109
Murray Chuck, Alexander Nicole, Das Souri, Eadon George, Ravada Siva, 2005, Oracle Spatial
Resource Description Framework (RDF), 10g Release 2 (10.2),
Noy N. ve Klein M., 2003, Ontology Evolution: Not the Same as Schema Evolution, In: Knowl-edge and
Information Systems, No. 5 17. A. Maedche, S. Staab, N. Stojanovic, R. Studer and Y. Sure, Semantic
85
Portal . The Seal Approach, In: Creating the Semantic Web, D. Fensel, J. Hendler, H. Lieberman and
W. Wahlster (eds.), MIT Press, MA, Cambridge (2001)
Oracle Corporation,2003a, Application Developer's Guide – Object-Relational Features. 10g Release 1
(10.1) ed.
Oracle Corporation, 2003b, Topology and Network Data Models. 10g Release 1 (10.1) ed. 2003.
Oracle Corporation, 2003c, Oracle XML DB Developer's Guide, 10g Release 1 (10.1) ed. 2003.
PARKA-DB: A Scalable Knowledge Representation System,
http://www.cs.umd.edu/projects/plus/Parka/parka-db.html
Powers S., 2003, Practical RDF. First ed.: O'Reilly & Associates, Inc. 331.
RDFSuite Project, http://139.91.183.30:9090/RDF/
Sesame, 2005, Sesame Open Source RDF Schema-based Repository and Querying facility,
http://sourceforge.net/projects/sesame/
Stojanovic L., Stojanovic N. ve Volz R., 2002, Migrating Data-intensive Web Sites into the Se-mantic
th
Web, In: Proceedings of the 17 ACM Symposium on Applied Computing (SAC) (2002)
SWAD-Europe Deliverable 10.2: Mapping Semantic Web Data with RDBMSes,
http://www.w3.org/2001/sw/Europe/reports/scalable_rdbms_mapping_report/
TAP Project, 2002, Stanford University, http://tap.stanford.edu/
TAP Knowlege Base, 2002, Stanford University, , http://tap.stanford.edu/tapkb/
W3C, ,RDF Primer, 2005, http://www.w3.org/TR/rdf-primer/.
Berners-Lee, T. XML , 2000 - Semantic Web talk, http://www, w3.org/2OlX)/Talks/1206-xml2k-thl/slide
l O-O.html
W3C, 2003,Frequently Asked Questions about RDF, http://www.w3.org/RDF/FAQ,
86
EK A
ORASEMWEB Yükleme Adımları
Orasemweb sisteminin kullanılabilmesi için gerekli ön hazırlıklar şu şekildedir.
Sistem gereksinimleri:
İşletim sistemi: İşletim sistemi bağımsız
İşlemci: Pentium III 600 Mhz işlemci ya da daha yükseği
Bellek: En az 256 MB RAM
Depolama alanı: RDF verilerinin depolanabilmesi için greksinime göre en az 200 MB
Veri tabanı : Oracle 10g Release2
Not: Oracle RDF desteği 10g Release2 ile birlikte gelmiştir. Sistem Oracle Spatial 10g release 2 ile
birlikte çalışacaktır.
ORASEMWEB Paketi Yükleme Adımları
1. Orasemweb paketinin sisteme yüklenebilmesi için orasemweb.spc ve orasemweb.bdy PL/SQL
kodlarının bir seferlik derlenmesi gerekmektedir.
2. Orasemweb projesi iki yönlü bir eşleme işlemini içinde barındırmaktadır. Oracle RDF veri deposunda
saklanan şema tanımlarının ve verilerin kod halinde metine aktarabilmesi için güvenlik nedeniyle
Oracle’ın hangi dizinlere dosya oluşturabileceğini belirtmemiz gerekmektedir. Herhangi bir dizine yazma
işlemini gerçekleştirebilmesini sağlayabilmek için ‘*’ imlecini kullanabiliriz. Ek olarak utl_file_dir
parametresine istediğimiz bir dizini de parameter olarak verebiliriz.
alter system set utl_file_dir=* scope=spfile
87
3. Orasemweb paketi kullanıcısının bir başka kullanıcıya ait şemayı işleyebilmesi için o kullanıya ait
varlıklar üzerinde ‘select’ sorgulama yetkisine sahip olmalıdır. Aşağıdaki sorgu scott kullanıcısa herhangi
bir tablo üzerinde sorgulama yapabilmesi için yetki vermektedir.
Grant select any table to scott;
4. Sorgulanan bir şemadaki varlığın varsayılan tablo alanı üst verilerde mevcut değilse kullanıcıya ait
varsayılan tablo alanı kullanılarak tanımlanmaktadır. Bu yüzden kullanıcıya ait varsayılan tablo alanının
bulunabilmesi için gerekli yetkilere sahip olması gerekmektedir. Bu işlem DBA yetkisine sahip bir
kullanıcı tarafından yapılmalıdır.
Grant select on dba_users to scott;
5-Oracle RDF veri deposunda saklanacak verilerin büyük miktarda yer tutacağı düşünülerek sadece RDF
verilerini saklayabilmek için ayrı bir tablo alanı oluşturulmalıdır. Bu işlem DBA yetkisine sahip bir
kullanıcı tarafından yapılmalıdır.
CREATE TABLESPACE rdf_tblspace
DATAFILE '/oradata/orcl/rdf_tblspace.dbf' SIZE 1024M REUSE
AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED
SEGMENT SPACE MANAGEMENT AUTO;
6. Oracle veritabanı üzerinde RDF veri deposunun çalışır hale getirilebilmesi için RDF ağının
oluşturulması gerekmektedir. Her bir Oracle örneği için bir tane ağ yaratılmalıdır . Bu işlem DBA
yetkisine sahip bir kullanıcı tarafından yapılmalıdır.
EXECUTE SDO_RDF.CREATE_RDF_NETWORK('rdf_tblspace');
7. Sistemde Oracle RDF verileriyle çalışacak kullanıcının gerekli yetkiye sahip olması gerekmektedir. Bu
işlem DBA yetkisine sahip bir kullanıcı tarafından yapılmalıdır.
GRANT EXECUTE ON MDSYS.RDF_APIS_INTERNAL TO SCOTT;
88
8. Orasemweb paketi altındaki “pre_install” yordamı kullanıcının RDF verilerini saklayabilmek için
kullanabileceği tabloları ve RDF modellerini oluşturmaktadır. Ek olarka ortak RDF ontolojisinin RDF veri
deposuna yüklenmesi de bu yordam ile gerçekleştirilmektedir. Orasemweb paketi yordamlarının
kullanılabilmesi için bu yordamın çağrılması gerekmektedir. Orasemweb paketi dahilindeki
process_model yordamı doğrudan kulanılacaksa bu yordamın çağrılmasına gerek yoktur. Bu yordam
kendi içinde bu yordamı kullanmaktadır.
Execute orasemweb.pre_install(‘model ismi’,‘şemaismi’)
89
EK B ORASEMWEB PAKETİ ALTPROGRAMLARI
Orasemweb paketi Oracle RDF veritabanında Kaynak tanımlama çatısı ile birlikte çalışan foksiyon ve
yordamlara sahiptir. Orasemweb paketi iki yönlü çevrim işlemi gerçekleştirmektedir. Orasemweb
paketinin düzgün bir şekilde kullanılabilmesi için kavramsal yapının iyi bir şekilde anlaşılması
gerekmektedir.
90
ORASEMWEB.PRE_INSTALL
Biçim
ORASEMWEB.PRE_INSTALL (
modelismi IN VARCHAR2,
şemaismi IN VARCHAR2
veritabanısmi IN VARCHAR2
);
Tanım
Orasemweb paketinin çalışabilmesi için gerekli işlemleri gerçekleştirir.
Parametreler
Modelismi: Orasemweb paketi için yaratılacak RDF veri modelinin ismidir.
Şemaismi: Orasemweb paketinin hangi şema üzerinde işlem yapacağını belirtir.
Kullanım Notları
RDF verilerinin kullanıcı tarafında tutulabilmesi için gerekli olan tabloyu yaratır.Bu tablonun ismi
‘semwebdata’ . Bir sonraki aşamada RDF veri modelini yaratır. Ek olarak sistem için gerekli
Oracle ‘sequence’ yapıları yaratılır. Bu yordamın en önemli özelliklerinden bir tanesi kullanıcı
şema istatiğini toplamasıdır. Diğer önemli özelliği ise ilişkisel RDF ontolojisinin sisteme
yüklenmesi için gerekli yordamı çağırmasıdır.
Örnek
Aşağıdaki örnek
EXECUTE ORASEMWEB.PRE_INSTALL (‘semwebmodel’,’scott’);
91
ORASEMWEB.PROCESS_RELATIONALRDF
Biçim
ORASEMWEB. PROCESS_RELATIONALRDF(
modelismi IN VARCHAR2,
);
Tanım
Ortak ve paylaşılan RDF ontolojisinin Oracle RDF veri deposuna yerleştirilmesi görevine sahiptir.
Parametreler
Modelismi:Orasemweb paketi için ortak ilişkisel ontolojinin giriliceği RDF veri modelinin ismidir.
Kullanım Notları
İlişkisel RDF ontolojisi ilişkisel veritabanı şemasının ontolojilere eşlenmesi sırasında
kullanılmaktadır. İlişkisel RDF ontolojisi şemanın eşlenmesi sonucunda oluşan ontolojinin temel
aldığı ontolojidir.
Örnek
Aşağıdaki örnek
EXECUTE ORASEMWEB. PROCESS_RELATIONALRDF (‘semwebmodel’);
92
ORASEMWEB.PROCESS_MODEL
Biçim
ORASEMWEB. PROCESS_MODEL (
modelismi
IN VARCHAR2,
p_dbname
IN VARCHAR2,
şemaismi
IN VARCHAR2,
p_excludetable IN VARCHAR2,
p_dataflag IN VARCHAR2);
Tanım
Sistemin bütün eşleme işlevlerini birleştiren modüldür. Bu yordam eşlemenin tamamını
gerçekleştirir.
Parametreler
Modelismi: Orasemweb paketi için yaratılacak RDF veri modelinin ismidir.
P_dbname: Orasemweb paketinin kullanılacağı veritabanını belirtir..
Şemaismi: Orasemweb paketinin hangi şema üzerinde işlem yapacağını belirtir.
P_excludetable: Eşleme sırasında kullanılması istenmeyen tabloların listesini barındırır. Formatı
‘tablo1,tablo2….’ şeklindedir.
P_ dataflag: Eşleme sırasında verilerin eşlemeye dahil edilip edilmeyeceğini belirtir. İki değer alır.
(‘Y’ ya da ‘N’).
Kullanım Notları
Eşleme için gerekli olan tüm adımları üzerinde barındırmaktadır. RDF verilerinin kullanıcı
tarafında tutulabilmesi için gerekli olan tabloyu yaratır.Bu tablonun ismi ‘semwebdata’dır . Bir
sonraki aşamada RDF veri modelini yaratır. Ek olarak sistem için gerekli Oracle ‘sequence’
yapıları yaratılır. Kullanıcı şema istatiği toplanır. İlişkisel RDF ontolojisinin sisteme yüklenmesi
93
için gerekli yordamı çağırır. Tablo, kolon, index, kısıtlama gibi eşleme işlemleri ile çıkarsama için
gerekli kural tabanları, kural indekslerinin oluşturulması için gerekli yordamları çağırmaktadır.
Örnek
Aşağıdaki örnek
EXECUTE ORASEMWEB. PROCESS_MODEL
(‘semwebmodel’,’orcl’,’scott’,’semwebdata,depts’,’Y’);
ORASEMWEB. PROCESS_TABLE
Biçim
ORASEMWEB. PROCESS_TABLE (
modelismi
IN VARCHAR2,
p_dbname
IN VARCHAR2,
şemaismi
IN VARCHAR2,
p_excludetable IN VARCHAR2,
p_dataflag IN VARCHAR2
);
Tanım
Şema altındaki tabloların eşlenebilmesini sağlayan yordamdır.
Parametreler
Modelismi:Orasemweb paketi için yaratılacak RDF veri modelinin ismidir.
P_dbname:Orasemweb paketinin kullanılacağı veritabanını belirtir..
Şemaismi:Orasemweb paketinin hangi şema üzerinde işlem yapacağını belirtir.
P_excludetable:Eşleme sırasında kullanılması istenmeyen tabloların listesini barındırır. Formatı
‘tablo1,tablo2….’ şeklindedir.
94
P_ dataflag:Eşleme sırasında verilerin eşlemeye dahil edilip edilmeyeceğini belirtir. İki değer alır.
(‘Y’ ya da ‘N’).
Kullanım Notları
Şema altındaki tabloların eşlenebilmesini sağlayan yordamdır. Tablolar ontolojideki varlıklara
karşılık gelmektedir.Eğer verilerin aktarılması istenirse bu işlemi de gerçekleştirmektedir.
Örnek
Aşağıdaki örnek
EXECUTE ORASEMWEB. PROCESS_TABLE
(‘semwebmodel’,’orcl’,’scott’,’semwebdata,depts’,’Y’);
ORASEMWEB. PROCESS_COLUMN
Biçim
ORASEMWEB. PROCESS_ COLUMN (
modelismi
IN VARCHAR2,
şemaismi
IN VARCHAR2,
p_excludetable IN VARCHAR2
);
Tanım
Şema altındaki kolonların eşlenebilmesini sağlayan yordamdır.
Parametreler
Modelismi:Orasemweb paketi için yaratılacak RDF veri modelinin ismidir.
Şemaismi:Orasemweb paketinin hangi şema üzerinde işlem yapacağını belirtir.
P_excludetable:Eşleme sırasında kullanılması istenmeyen tabloların listesini barındırır. Formatı
‘tablo1,tablo2….’ şeklindedir.
95
Kullanım Notları
Şema altındaki kolonların eşlenebilmesini sağlayan yordamdır. Kolonlar ontolojideki özniteliklere
karşılık gelmektedir.
Örnek
Aşağıdaki örnek
EXECUTE ORASEMWEB. PROCESS_COLUMN (‘semwebmodel’,
,’scott’,’semwebdata,depts’);
ORASEMWEB. PROCESS_INDEX
Biçim
ORASEMWEB. PROCESS_ INDEX (
modelismi
IN VARCHAR2,
şemaismi
IN VARCHAR2,
p_excludetable IN VARCHAR2
);
Tanım
Şema altındaki indekslerin eşlenebilmesini sağlayan yordamdır.
Parametreler
Modelismi:Orasemweb paketi için yaratılacak RDF veri modelinin ismidir.
Şemaismi:Orasemweb paketinin hangi şema üzerinde işlem yapacağını belirtir.
P_excludetable: Eşleme sırasında kullanılması istenmeyen tabloların listesini barındırır. Formatı
‘tablo1,tablo2….’ şeklindedir.
96
Kullanım Notları
Şema altındaki indekslerin eşlenebilmesini sağlayan yordamdır. İndeksler ontolojideki valıklara
karşılık gelmektedir.
Örnek
Aşağıdaki örnek
EXECUTE ORASEMWEB. PROCESS_ INDEX (‘semwebmodel’, ,’scott’,’semwebdata,depts’);
ORASEMWEB. PROCESS_CONSTRAINTS
Biçim
ORASEMWEB. PROCESS_ CONSTRAINTS (
modelismi
IN VARCHAR2,
şemaismi
IN VARCHAR2,
p_excludetable IN VARCHAR2
);
Tanım
Şema altındaki kısıtlamaların eşlenebilmesini sağlayan yordamdır.
Parametreler
Modelismi:Orasemweb paketi için yaratılacak RDF veri modelinin ismidir.
Şemaismi:Orasemweb paketinin hangi şema üzerinde işlem yapacağını belirtir.
P_excludetable:Eşleme sırasında kullanılması istenmeyen tabloların listesini barındırır. Formatı
‘tablo1,tablo2….’ şeklindedir.
97
Kullanım Notları
Şema altındaki kısıtlamaların eşlenebilmesini sağlayan yordamdır. Kısıtlamalar ontolojideki
varlıklardandır.
Örnek
Aşağıdaki örnek
EXECUTE ORASEMWEB. PROCESS_ CONSTRAINTS (‘semwebmodel’,
,’scott’,’semwebdata,depts’);
ORASEMWEB. PROCESS_RULEBASE
Biçim
ORASEMWEB. PROCESS_ RULEBASE (
modelismi
IN VARCHAR2);
Tanım
Kural tabanı oluşturulması ve kural tabanı üzerine gerekli kuralların eklenmesini sağlar.
Parametreler
Modelismi:
Orasemweb paketi için hangi model üzerinde kural tabanının oluşturulacağını ifade etmektedir.
Kullanım Notları
Şemanın eşlendikten sonra birbiriyle ilişkili tabloların bulunabilmesi için gerekli kural tabanı
oluşturulması ve kuralların eklenmesi görevini üstlenir. Ek olarak bu kural tabanı için kural indeksi
de oluşturulmaktadır. Eklenen kurallar EK C’de bulunmaktadır.
98
Örnek
Aşağıdaki örnek
EXECUTE ORASEMWEB. PROCESS_ RULEBASE (‘semwebmodel’);
ORASEMWEB. PROCESS_ RULESINDEX
Biçim
ORASEMWEB. PROCESS_ RULESINDEX (
modelismi
IN VARCHAR2
p_rulebase
IN VARCHAR2);
Tanım
Kural tabanı oluşturulması ve kural tabanı üzerine gerekli kuralların eklenmesini sağlar.
Parametreler
Modelismi:Orasemweb paketi için hangi model üzerinde kural indeksinin oluşturulacağını ifade
etmektedir.
P_rulebase:Orasemweb paketi için hangi kural tabanı için kural indeksinin oluşturulacağını ifade
etmektedir.
Kullanım Notları
Oluşturulan kural tabanı için kural indeksinin oluşturulması hedeflenmektedir.
Örnek
Aşağıdaki örnek
EXECUTE ORASEMWEB. PROCESS_ RULESINDEX (‘semwebmodel’,’semweb_rb’);
99
ORASEMWEB. GETTABLESCRIPT
Biçim
ORASEMWEB. GETTABLESCRIPT (
modelismi IN VARCHAR2,
p_dbname IN VARCHAR2,
şemaismi IN VARCHAR2,
p_path IN VARCHAR2,
p_dataflag IN VARCHAR2);
Tanım
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı şeması ve verisinin geri elde
edilmesi işlemini gerçekleştirir
Parametreler
Modelismi:Orasemweb paketi için hangi model üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir.
P_dbname:Orasemweb paketi için hangi veritabanı üzerinde tersine eşleme gerçekleştirileceğini
ifade etmektedir. Bu parametre daha önce eşlenmiş olan veritabanının ismini içermelidir.
Şemaismi:Orasemweb paketi için hangi şema üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir. Bu parametre daha önce eşlenmiş olan şema ismini içermelidir.
P_path:Tersine eşleme sonucu elde edilen kodların yazılacağı dizini ifade eder. Kullanıcının bu
dizin üzerinde yazma yetkisine sahip olması gerekmektedir. ‘c:\a.txt’ gibi bir değer içermelidir.
P_dataflag:Tersine eşlemenin veriler için de gerçekleştirilip gerçekleştirilmeyeceğini ifade eder.
Kullanım Notları
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı şeması ve verisinin geri elde
edilmesi işlemini gerçekleştirir . İşlem sonucunda yaratılan kodlar P_path parametresiyle
100
belirtilmiş olan dosyaya aktarılır. Tüm terine eşleme işlemlerini üzerinde barındırır. Tüm şema
yaratma kodları bu yordamla oluşturulabilir.
Örnek
EXECUTE ORASEMWEB. GETTABLESCRIPT
(‘semwebmodel’,’orcl’,’semweb’,’c:\a.sql’,’Y’);
ORASEMWEB. GETTABLEDATASCRIPT
Biçim
ORASEMWEB. GETTABLEDATASCRIPT (
modelismi IN VARCHAR2,
şemaismi IN VARCHAR2,
p_path IN VARCHAR2);
Tanım
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı verilerinin oluşturulma
kodlarını belirtilen dizindeki dosyaya yazar.
Parametreler
Modelismi:Orasemweb paketi için hangi model üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir.
Şemaismi:Orasemweb paketi için hangi şema üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir. Bu parametre daha önce eşlenmiş olan şema ismini içermelidir.
P_path:Tersine eşleme sonucu elde edilen kodların yazılacağı dizini ifade eder. Kullanıcının bu
dizin üzerinde yazma yetkisine sahip olması gerekmektedir. ‘c:\a.txt’ gibi bir değer içermelidir.
101
Kullanım Notları
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı verilerinin oluşturulma
kodlarını belirtilen dizindeki dosyaya yazar.
Örnek
EXECUTE ORASEMWEB. GETTABLEDATASCRIPT (‘semwebmodel’,’semweb’,’c:\a.sql’);
ORASEMWEB. GETINDEXSCRIPT
Biçim
ORASEMWEB. GETTABLEDATASCRIPT (
modelismi IN VARCHAR2,
şemaismi IN VARCHAR2,
p_path IN VARCHAR2);
Tanım
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı indekslerinin oluşturulma
kodlarını belirtilen dizindeki dosyaya yazar.
Parametreler
Modelismi:Orasemweb paketi için hangi model üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir.
Şemaismi:Orasemweb paketi için hangi şema üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir. Bu parametre daha önce eşlenmiş olan şema ismini içermelidir.
P_path:Tersine eşleme sonucu elde edilen kodların yazılacağı dizini ifade eder. Kullanıcının bu
dizin üzerinde yazma yetkisine sahip olması gerekmektedir. ‘c:\a.txt’ gibi bir değer içermelidir.
102
Kullanım Notları
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı indekslerinin oluşturulma
kodlarını belirtilen dizindeki dosyaya yazar.
Örnek
EXECUTE ORASEMWEB. GETINDEXSCRIPT (‘semwebmodel’,’semweb’,’c:\a.sql’);
ORASEMWEB. GETPRIMARYKEYSCRIPT
Biçim
ORASEMWEB. GETPRIMARYKEYSCRIPT (
modelismi IN VARCHAR2,
şemaismi IN VARCHAR2,
p_path IN VARCHAR2);
Tanım
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı birincil anahtarlarının
oluşturulma kodlarını belirtilen dizindeki dosyaya yazar.
Parametreler
Modelismi:Orasemweb paketi için hangi model üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir.
Şemaismi:Orasemweb paketi için hangi şema üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir. Bu parametre daha önce eşlenmiş olan şema ismini içermelidir.
P_path:Tersine eşleme sonucu elde edilen kodların yazılacağı dizini ifade eder. Kullanıcının bu
dizin üzerinde yazma yetkisine sahip olması gerekmektedir. ‘c:\a.txt’ gibi bir değer içermelidir.
103
Kullanım Notları
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı birincil anahtarlarının
oluşturulma kodlarını belirtilen dizindeki dosyaya yazar.
Örnek
EXECUTE ORASEMWEB. GETPRIMARYKEYSCRIPT (‘semwebmodel’,’semweb’,’c:\a.sql’);
ORASEMWEB. GETFOREIGNKEYSCRIPT
Biçim
ORASEMWEB. GETFOREIGNKEYSCRIPT (
modelismi IN VARCHAR2,
şemaismi IN VARCHAR2,
p_path IN VARCHAR2);
Tanım
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı dışsal anahtarlarının
oluşturulma kodlarını belirtilen dizindeki dosyaya yazar.
Parametreler
Modelismi:Orasemweb paketi için hangi model üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir.
Şemaismi:Orasemweb paketi için hangi şema üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir. Bu parametre daha önce eşlenmiş olan şema ismini içermelidir.
P_path:Tersine eşleme sonucu elde edilen kodların yazılacağı dizini ifade eder. Kullanıcının bu
dizin üzerinde yazma yetkisine sahip olması gerekmektedir. ‘c:\a.txt’ gibi bir değer içermelidir.
104
Kullanım Notları
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı dışsal anahtarlarının
oluşturulma kodlarını belirtilen dizindeki dosyaya yazar.
Örnek
EXECUTE ORASEMWEB. GETFOREIGNKEYSCRIPT (‘semwebmodel’,’semweb’,’c:\a.sql’);
ORASEMWEB. GETFOREIGNKEYSCRIPT
Biçim
ORASEMWEB. GETCHECKCONSSCRIPT (
modelismi IN VARCHAR2,
şemaismi IN VARCHAR2,
p_path IN VARCHAR2);
Tanım
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı kontrol kısıtlamalarının
oluşturulma kodlarını belirtilen dizindeki dosyaya yazar.
Parametreler
Modelismi:Orasemweb paketi için hangi model üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir.
Şemaismi:Orasemweb paketi için hangi şema üzerinde tersine eşleme gerçekleştirileceğini ifade
etmektedir. Bu parametre daha önce eşlenmiş olan şema ismini içermelidir.
P_path:Tersine eşleme sonucu elde edilen kodların yazılacağı dizini ifade eder. Kullanıcının bu
dizin üzerinde yazma yetkisine sahip olması gerekmektedir. ‘c:\a.txt’ gibi bir değer içermelidir.
105
Kullanım Notları
Oracle Rdf veri deposunda eşlenmiş olarak tutulan ilişkisel veritabanı kontrol kısıtlamalarının
oluşturulma kodlarını belirtilen dizindeki dosyaya yazar.
Örnek
EXECUTE ORASEMWEB. GETCHECKCONSSCRIPT (‘semwebmodel’,’semweb’,’c:\a.sql’);
106
EK C
KURAL TABANI ÜZERİNDE YARATILAN KURALLAR
1-İki tablonun birbirini referans göstermesi
INSERT INTO mdsys.rdfr_semweb_rb
VALUES
('referTable',
'(?a :foreignCons ?b)
(?b :R_CONSTRAINT_NAME ?c)
(?d :hasConstraint ?c)
(?e :hasColumn ?d)',
NULL,
'(?a :referTable ?e)',
sdo_rdf_aliases(sdo_rdf_alias(‘, 'http://www.ege.edu.tr/semweb/')));
2- Kolonların birbirlerini referans göstermesi
INSERT INTO mdsys.rdfr_semweb_rb
VALUES
('referColumn',
'(?a :foreignCons ?b)
(?c :hasConstraint ?b)
(?b :R_CONSTRAINT_NAME ?d)
(?e :hasConstraint ?d)',
NULL,
'(?c :referColumn ?e)',
sdo_rdf_aliases(sdo_rdf_alias(‘, 'http://www.ege.edu.tr/semweb/')));
3. Tablonun birincil anahtarının bulunması
INSERT INTO mdsys.rdfr_semweb_rb
VALUES
('hasPrimaryKey',
'(?a :isIdentifiedBy ?b)
(?c :hasConstraint ?b)',
NULL,
'(?a :hasPrimaryKey ?c)',
sdo_rdf_aliases(sdo_rdf_alias(‘, 'http://www.ege.edu.tr/semweb/')));
107
4. Bir tablonun dışsal anahtarının bulunması
INSERT INTO mdsys.rdfr_semweb_rb
VALUES
('hasForeignKey',
'(?a :foreignCons ?b)
(?d :hasConstraint ?b)',
NULL,
'(?a :hasForeignKey ?d)',
sdo_rdf_aliases(sdo_rdf_alias(‘, 'http://www.ege.edu.tr/semweb/')));
108
EK D
EŞLEME SONUCU OLUŞAN YAPININ SORGULANMASI
Bir modele ait model_id’nin bulunması
select /*+ +*/ orasemweb.getmodelid('SEMWEB') from dual;
Eşlenen Veritabanın Bulunması
select t schemaname
from
Table(SDO_RDF_MATCH('(?s rdf:type :Database)',
SDO_RDF_Models(‘modelismi’), null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
Eşlenen şemanın Bulunması
select t schemaname
from
Table(SDO_RDF_MATCH('(?s rdf:type :Schema)',
SDO_RDF_Models(‘modelismi’), null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
Tablo örnek sorguları:
Ör:Belirli bir modeldeki tüm tabloların bulunması
select t tablename
from
Table(SDO_RDF_MATCH('(?t rdf:type :Table)',
SDO_RDF_Models(‘modelismi’), null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
109
Ör:Belirli bir veritabanı ve şemaya ait tabloların bulunması:
select /*+ +*/ d database,s schema,t tablename
from
Table(SDO_RDF_MATCH('(?d :hasSchema ?s)(?s :hasTable ?t)',
SDO_RDF_Models('semweb'), null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
where d like '%orcl%'
and s like '%semweb%'
Ör: Dışsal Anahtarla birbirlerine bağlı tabloların bulunması
X tablosu y tablosuyla dışsal anahtar ile bağlıdır.
SELECT x , y
FROM TABLE(SDO_RDF_MATCH(
'(?x :referTable ?y)',
SDO_RDF_Models('semweb'),
SDO_RDF_Rulebases('RDFS','semweb_rb'),
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null));
Not: Bu tarz bir ilişkinin bulunabilmesi için semweb_rb kural tabanı temel alınmalıdır.
Ör: Bir tablonun birincil anahtarının bulunması
SELECT x, y
FROM TABLE(SDO_RDF_MATCH(
'(?x :hasPrimaryKey ?y)',
SDO_RDF_Models('semweb'),
SDO_RDF_Rulebases('RDFS','semweb_rb'),
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
order by x;
Not: Bu tarz bir ilişkinin bulunabilmesi için semweb_rb kural tabanı temel alınmalıdır
110
Ör: Bir tablonun dışsal anahtarının bulunması
SELECT x, y
FROM TABLE(SDO_RDF_MATCH(
'(?x :hasForeignKey ?y)',
SDO_RDF_Models('semweb'),
SDO_RDF_Rulebases('RDFS','semweb_rb'),
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
order by x;
Not: Bu tarz bir ilişkinin bulunabilmesi için semweb_rb kural tabanı temel alınmalıdır
Ör: Bir tablonun özelliklerinin elde edilmesi
Semweb şemasına ait tabloların parallellik derecesinin ve tablo uzayının elde edilmesi
SELECT s,a,b,c
FROM TABLE(SDO_RDF_MATCH(
'(?s :hasTable ?a)(?a :tableDegree ?b)(?a :tableTablespace ?c)',
SDO_RDF_Models('semweb'),
null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
where upper(s) like upper('%semweb%')
order by 2
Ör: Bir tabloya ait kolonların bulunması
select /*+ +*/ distinct s,a,b from
Table(SDO_RDF_MATCH('(?s :hasTable ?a)(?a :hasColumn ?b)',
SDO_RDF_Models('semweb'), null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
111
Ör: Bir tabloya ait indekslerin ve indeks özelliklerinin bulunması
select a,t,b,c,d,i from
Table(SDO_RDF_MATCH('
(?s :hasTable ?a)
(?a :hasIndex ?b)
(?t :columnHasIndex ?b)
(?b :indexType ?c)
(?b :indexUniqueness ?d)
(?b :indexExpression ?i)',
SDO_RDF_Models('semweb'), null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
order by b
Ör: Bir tablonun hangi kolonunun hangi tablodaki hangi kolonunu
kullandığının bulunması
dışsal anahtar olarak
SELECT x tabloismi,y kolonismi ,z referekolonsmi,t referetabloismi
FROM TABLE(SDO_RDF_MATCH(
'(?s :hasTable ?x)
(?x :hasForeignKey ?y)
(?y :referColumn ?z)
(?t :hasColumn ?z)',
SDO_RDF_Models(‘semweb’),
SDO_RDF_Rulebases('RDFS','semweb_rb'),
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
Not: Bu tarz bir ilişkinin bulunabilmesi için semweb_rb kural tabanı temel alınmalıdır
Belirli bir kolona ya da tabloya ait verilerin bulunması:
SELECT x,y,z,t,t$rdfLTYP
FROM TABLE(SDO_RDF_MATCH(
'(?s :hasTable ?x)(?x :hasColumn ?y)(?z ?y ?t)',
SDO_RDF_Models('semweb'),
null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null));
112
Not:z her bir kayıt için yaratılan boş düğümü, y kolon değerini, t$rdfLTYP ise kolon değer tipini ifade
etmektedir.
Bir tabloya ait kontrol kısıtlamasının ve kıstlama koşulunun bulunması
select /*+ +*/ s,a,t from
Table(SDO_RDF_MATCH(
‘(?s :hasTable ?a)
(?a :checkCons ?b)
(?b :constraintCondition ?t)',
SDO_RDF_Models('semweb'), null,
SDO_RDF_Aliases(SDO_RDF_Alias(‘,'http://www.ege.edu.tr/semweb/')),
null))
where t not like '%NOT NULL%' –not null kısıtlaması dahil değildir.
113
EK E
İLİŞKİSEL RDF ONTOLOJİSİ
<?xml version="1.0" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:semweb="http://www.ege.edu.tr/semweb "
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>
<rdfs:Class rdf:ID="Database">
<rdfs:label xml:lang="en">Database</rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:bag"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Schema">
<rdfs:label xml:lang="en"> Schema </rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:bag"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Table">
<rdfs:label xml:lang="en">Table</rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:Seq"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Column">
<rdfs:label xml:lang="en">Column</rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:resource"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Index">
<rdfs:label xml:lang="en">Index</rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:resource"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Constraint">
<rdfs:label xml:lang="en"> Constraint </rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:resource"/>
</rdfs:Class>
<rdfs:Class rdf:ID="SuperClass">
<rdfs:label xml:lang="en">SuperClass</rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:Bag"/>
</rdfs:Class>
114
<rdfs:Class rdf:ID="SubClass">
<rdfs:label xml:lang="en">SubClass</rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:Bag"/>
</rdfs:Class>
<rdfs:Class rdf:ID="EquivalentClass">
<rdfs:label xml:lang="en">EquivalentClass</rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:Bag"/>
</rdfs:Class>
<rdfs:Class rdf:ID="EquivalentColumn">
<rdfs:label xml:lang="en">EquivalentColumn</rdfs:label>
<rdfs:subClassOf rdf:resource="rdf:Bag"/>
</rdfs:Class>
<rdf:Property rdf:ID="has">
<rdfs:domain rdf:resource="rdf:Class"/>
<rdfs:range rdf:resource="rdf:Class"/>
<rdfs:label xml:lang="en">has</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasSchema">
<rdfs:subPropertyOf rdf:resource="#has" />
<rdfs:domain rdf:resource="#Database"/>
<rdfs:range rdf:resource="#Schema" />
<rdfs:label xml:lang="en"> hasSchema </rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasTable">
<rdfs:subPropertyOf rdf:resource="#has" />
<rdfs:domain rdf:resource="#Schema"/>
<rdfs:range rdf:resource="#Table" />
<rdfs:label xml:lang="en">hasTable</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasColumn">
<rdfs:subPropertyOf rdf:resource="#has" />
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="#Column" />
<rdfs:label xml:lang="en">hasColumn</rdfs:label>
</rdf:Property>
115
<rdf:Property rdf:ID="referColumn">
<rdfs:subPropertyOf rdf:resource="#has" />
<rdfs:domain rdf:resource="#Column "/>
<rdfs:range rdf:resource="#Column" />
<rdfs:label xml:lang="en"> referColumn </rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasIndex">
<rdfs:subPropertyOf rdf:resource="#has" />
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="#Index" />
<rdfs:label xml:lang="en">hasIndex</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasConstraint">
<rdfs:subPropertyOf rdf:resource="#has" />
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="#Constraint" />
<rdfs:label xml:lang="en">hasConstraint</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="columnHasIndex">
<rdfs:subPropertyOf rdf:resource="#has" />
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="#Index" />
<rdfs:label xml:lang="en">columnHasIndex</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="subClassOfTable">
<rdfs:subPropertyOf rdf:resource="#has" />
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="#SubClass" />
<rdfs:label xml:lang="en">SubClass</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="superClassOfTable">
<rdfs:subPropertyOf rdf:resource="#has" />
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="#SuperClass"/>
<rdfs:label xml:lang="en">SuperClass</rdfs:label>
</rdf:Property>
116
<rdf:Property rdf:ID="equivalentClassOfTable">
<rdfs:subPropertyOf rdf:resource="#has"/>
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="#EquivalentClass"/>
<rdfs:label xml:lang="en">EquivalentClass</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="equivalentOfColumn">
<rdfs:subPropertyOf rdf:resource="#has"/>
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="#EquivalentColumn" />
<rdfs:label xml:lang="en">EquivalentColumn</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="tableOwner">
<rdf:type rdf:resource="rdf:Property"/>
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">tableOwner</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="tableTablespace">
<rdf:type rdf:resource="rdf:Property"/>
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">tableTablespace</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="tableNumrows">
<rdf:type rdf:resource="rdf:Property"/>
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="xsd:nonNegativeInteger"/>
<rdfs:label xml:lang="en">tableNumrows</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="tableDegree">
<rdf:type rdf:resource="rdf:Property"/>
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="xsd:nonNegativeInteger"/>
<rdfs:label xml:lang="en">tableDegree</rdfs:label>
</rdf:Property>
117
<rdf:Property rdf:ID="tableValidity">
<rdf:type rdf:resource="rdf:Property"/>
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">tableNumrows</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="tableIOT">
<rdf:type rdf:resource="rdf:Property"/>
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en"> tableIOT </rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="isIdentifiedBy">
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="#Constraint"/>
<rdfs:label xml:lang="en">isIdentifiedBy</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="foreignCons">
<rdfs:domain rdf:resource="#Table"/>
<rdfs:range rdf:resource="#Constraint"/>
<rdfs:label xml:lang="en"> foreignCons </rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ColumnDatatype">
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">Datatype</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ColumnDataLength">
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="xsd:nonNegativeInteger"/>
<rdfs:label xml:lang="en">DataLength</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ColumnDataPrecision">
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="xsd:nonNegativeInteger"/>
<rdfs:label xml:lang="en">LENGTH</rdfs:label>
</rdf:Property>
118
<rdf:Property rdf:ID="ColumnDataScale">
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="xsd:nonNegativeInteger"/>
<rdfs:label xml:lang="en">ColumnDataScale</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ColumnNullable">
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">ColumnNullable</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ColumnDefaultValue">
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">ColumnDefaultValue</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="columnCharset">
<rdfs:domain rdf:resource="#Column"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en"> columnCharset </rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="indextype">
<rdfs:domain rdf:resource="#Index"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">INDEXtype</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="indexUniqueness">
<rdfs:domain rdf:resource="#Index"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">indexUniqueness</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="indexExpression">
<rdfs:domain rdf:resource="#Index"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">indexExpression</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="indexDescend">
<rdfs:domain rdf:resource="#Index"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en"> indexDescend </rdfs:label>
</rdf:Property>
119
<rdf:Property rdf:ID="indexJoin">
<rdfs:domain rdf:resource="#Index"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en"> indexJoin </rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="indexGenerated">
<rdfs:domain rdf:resource="#Index"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en"> indexGenerated </rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="indexTablespace">
<rdfs:domain rdf:resource="#Index"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en"> indexTablespace </rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="constrainttype">
<rdfs:domain rdf:resource="#Constraint"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">constrainttype</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="constraintCondition">
<rdfs:domain rdf:resource="#Constraint"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en">constraintCondition</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="R_CONSTRAINT_NAME">
<rdfs:domain rdf:resource="#Constraint"/>
<rdfs:range rdf:resource="xsd:string"/>
<rdfs:label xml:lang="en"> R_CONSTRAINT_NAME </rdfs:label>
</rdf:Property>
</rdf:RDF>
120
EK F Sözlük
A
alt sınıf :subclass
anlamsal :semantic
anlamsal web :semantic web
ardalan :range
B
belge :document
bilgi gösterimi :knowledge representation
bilgi tabanı :knowledge base
birincil anahtar : primary key
boş düğüm: blank node
Ç
çıkarsama :inference
çıkarsama motoru :inference engine
çizge :graph
çözümleyici :parser
çıkarsama :reasoning
D
deyim hakkında deyim :reification
dizge :string
dizgi :system
dış anahtar: foreign key
düğüm :node
E
etiket :tag
etmen :agent
Eşsiz kısıtlama: unique constraint
G
güven :trust
isimuzayı :namespace
Görünüm:view
H
Hücre:cell
İ
İndeks:index
İlişki: Relation
İlişkisel şema: Relational Schema
121
işlevsel indeks:Functional index
K
kavram :concept
kavramsal model :conceptual model
Kural tabanı: Rulebase
Kural indeksi:Rule index
Kısıtlama: Constraint
Kontrol kısıtlaması: Check Constraint
N
nitelik :property
O
ontoloji :ontology
ontoloji biçimleme dili :ontology markup language
ontolojik yorum ekleme :ontological annotation
Ö
önalan :domain
öznitelik :attribute
R
RDF deyimi :RDF statement
RDF veri deposu: RDF data store
S
sınıflandırma :classification
sıradüzen :taxonomy, hierarchy
soysal :generic
sözdizim :syntax
T
tanımlayıcı :identifier
tablo alanı: tablespace
U
Uzamsal Kaynak Tanımlama Çatısı: Spatial Resource Description Framework
Ü
üçlü :triple
üçüncü parti program :third party application
üstveri :metadata
V
Veri sözlüğü:data dictionary
122
ÖZGEÇMİŞ
Kişisel Bilgiler
Uyruğu T.C.
Doğum Tarihi 19.04.1981
Doğum Yeri Denizli
Eğitim
Lisans: İzmir Yüksek Teknoloji Enstitüsü Bilgisayar Mühendisliği (2003)
Lise: Denizli Fen Lisesi(1999)
Yabancı Dil: İngilizce, Almanca
Teknik İlgi Alanları
Veri Ambarı
Anlamsal Web uygulamaları
Oracle veritabanı yönetim sistemleri
İş Tecrübesi
2004-2005 yılları arasında İzmir’de Oracle veritabanı yöneticiliği eğitimleri vermiştir. 2005 yılından
günümüze kadarki sürede İstanbul’da Pegasus, Sunexpress firmalarının veritabanı yöneticiliğini
yapmaktadır. Turkcell dataquality ve BIS departmanında danışman olarak görev almıştır. Şu anda
Turkcell Datawarehouse reengineering projesinde Oracle firması ile birlikte çalışmaktadır.
Download