Bilgisayar biliminde ontoloji, belirli bir tanım kümesi içindeki kavramların ve bu kavramlar arasındaki ilişkilerin kurallı bir şekilde temsili olarak tanımlanabilir. Ontolojiler yapay zeka, anlamsal web, ve yazılım mühendisliğinde dünyanın tamamının veya bir kısmının temsil edilmesinde kullanılır ve tanımladığı kavramların en önemlileri şunlardır:
- Bireyler: temel nesneler
- Sınıflar: kümeler, nesne tipleri
- Özellikler: nesnenin sahip olduğu nitelikler, karakteristikler ve parametreler
- İlişkiler: nesnelerin birbirleri arasındaki etkileşim yollarının tanımları
- Kurallar
Felsefe, Bilgisayar Bilimi ve Ontoloji
Ontoloji kelimesi Latince'de ontos ve logos kelimelerinin birleşiminden oluşmuştur. Ontos varoluş anlamına gelirken, logos da bilim manasına gelmektedir. Bu terimin ilk kullanımı felsede alanının alt dalı olan metafizik dalında olmuştur. Felsefede ontoloji, varoluş çeşitlerini analiz eder ve aralarında ilişkileri tanımlar.
Ontoloji ve Unsurları
Günümüzde ontolojiler ifade edildiği tanımlama diline bağlı olmaksızın birçok benzer özelliğe sahiptir. Yukarıda da belirtildiği gibi, birçok ontoloji birey, sınıf, özellik, ilişki, kural ve kısıtlamalardan oluşur. Bu bölümde bu bileşenlerin hepsini daha ayrıntılı bir biçimde tanıyacağız.
Bireyler (Instances)
Bireyler ontolojinin temel seviyedeki bileşenleridir. Ontolojideki bireyler; insan, hayvan, araba, molekül, gezegen gibi somut nesneler olabileceği gibi sayılar ve kelimeler gibi soyut nesneler de olabilirler. Ancak ontolojilerin örneklendirilmesi zorunlu değildir, herhangi bir üyesi bulunmayan ontolojiler de olabilir.
Sınıflar
Ontolojide sınıflar, soyut gruplar ve kümelerdir, başka sınıfları içerebilirler ve birkaç sınıfın birleşiminden oluşabilirler.Örneğin;
- İnsan: tüm insanların sınıfı
- Araba: tüm arabaların sınıfı
- Birey: tüm bireylerin sınıfı (Individual Class)
- Sınıf: tüm sınıfların sınıfı (Class class)
- Şey: tüm şeylerin sınıfı (Thing class)
Özellikler
Bir ontolojideki nesnelere özellik atayabiliriz. Her özelliğin bir adı ve en az bir değeri olmak zorundadır. Örneğin, Şahin nesnesi şu özelliklere sahip olabilir:
- İsim: Şahin
- KapıSayisi : 4
- Sınıfı: Aile Arabası
- Motor : {1400 cc, 1600 cc}
- Aktarım: 5-vites
Bir özelliğin değeri basit (primitive) bir değer olabileceği gibi karmaşık bir veri tipi de olabilir. Örnekte de görüldüğü gibi, Motor özelliğinin değeri tek bir değer değildir, bir listedir.
Eğer kullandığınız kavramlar için özellikler tanımlamadyısanız, elinizideki bir ontoloji değildir. Bir taksonomi veya kontrollü sözlüktür (controlled vocabulary).
İlişkiler
Yukarıda bahsettiğimiz özelliklerin verimli kullanımı nesneler arasında ilişki tanımlayarak kurulur. Burda ilişki adı altında bahsettiğimiz şey aslında, değeri başka bir nesne olan bir özellikten ibarettir. Örneğin, Şahin ve Murat 131 nesnelerini içeren bir ontolojide, Murat 131 nesnesinin Takipçi adında bir özelliği olduğunu düşünelim.
- Takipçi: Şahin
Bu bize Şahin nesnesinin Murat 131 nesnesinin yerine geçtiğini söyleyen özelliktir. Ontolojilerin asıl gücü de bu şekilde nesneler arasında ilişki tanımlayabilmekten gelir.
Ontolojilerde en önemli ilişki kapsama ilişkisidir (is_a, has_a). Bu ilişki, bize hangi nesnelerin hangi sınıflara ait olduğunu gösterir. Yukarıdaki örnekte gördüğümüz Şahin nesnesi, Araba sınıfın bir alt kümesidir.
Is_a ilişkisi bize ontolojide nesnelerin birbiriyle ilişkilerini tasvir eden ağaç şeklinde bir taksonomi yaratmamızı sağlar. Böyle bir ontolojide her nesne bir sınıfın çocuk veya aile sınıfıdır.
Diğer önemli bir özellik ise parçası olma ilişkisidir (is_part_of). Örneğin, yukarıda kullandığımız ontolojide Tekerlek isimli nesnelerimiz olursa, Tekerlek nesnesinin Şahin nesnesinin bir parçası olduğunu söyleyebiliriz.
Is_part_of ilişkisinin bir ontolojiye eklenmesi, ontolojinin karmaşıklığını arttırır, çünkü bir nesnenin birden fazla nesnenin parçası olması durumu söz konusu olabilir. Bu da elimizdeki ağaç yapısının bir yönlü döngüsüz çizge(directed acyclic graph)'ye dönüşmesine neden olur.
Bu standard ilişkiler dışında üzerinde çalıştığımız tanım kümesine özgü ilişkiler de oluşturabiliriz.Mesela, ontolojimize yapılışYeri özelliği ekleyebiliriz. Bu ontolojiyi kullanan yazılımlar artık “Bu araba nerede yapıldı?” sorusunu cevaplayabilirler.
Kurallar
Ontoloji kuralları if-then yapılarından oluşur. Bu yapıların ontoloji ile birleşimi sağlandığında, ontoloji üzerinde sorgu yoluyla çıkarım yapabiliriz.
By ayki yazımızın da sonuna geldik. Umarım faydalı olmuştur. Görüşmek üzere, esen kalın:)