The European Union s Making the Labour Market more Inclusive III programme For North Cyprus Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals Module 4: Semantic Web Modül 4: Anlamsal Ağ Laboratuar Notları #5 A project implemented by CyberSoft Bilişim Teknolojileri Ltd. This project is funded by European Union. The contents of this publication are the sole responsibility of Cybersoft Bilişim Teknolojileri Ltd. and can in no way be taken to reflect the views of the European Union.
1. Web Ontoloji Dili (OWL) ve Ontoloji Kavramı Web Ontology Language (OWL), ontolojileri tanımlamak ve çeşitlemek için kullanılan bir dildir. Bir ontoloji, ilgili özellikler ve örnekleri ile birlikte sınıfların açıklamalarını içerebilir. OWL, bilginin içeriğini sadece insanlara gösteren değil, bunun yanında işleyen uygulamalar tarafından kullanılmak üzere tasarlanmıştır. OWL, XML, RDF ve RDF Schema (RDF-S) tarafından desteklenen web içeriğinin makinalar tarafından daha iyi yorumlanabilmesini, biçimsel bir semantik ile birlikte ek sözcük kümeleri sunarak kolaylaştırır. OWL, OIL ve DAML+OIL gibi eski dilleri temel alır, ve şu anda W3C tavsiyesidir. OWL, anlamsal web bilgisinin işlenebilmesi için genel bir yol sağlamak üzere tasarlanmıştır. OWL, XML, RDF, ve RDF-S tarafından sağlanan anlamların açıklanmasını sağlayan imkânları kolaylaştırmak için geliştirilmiştir. Bu nedenle, makinalar tarafından çevrilip kullanılabilir web içeriğini gösterebilme yeteneği sayesinde, bu web dillerinin evrimsel devamı gibi düşünülebilir. OWL, XML tabanlı olduğu için, OWL bilgisi kolayca farklı işletim sistemlerine sahip bilgisayarlar ve farklı programlama dilleri arasında alınıp verilebilir. Dil, bilgisayarlar tarafından okunmak üzere tasarlandığından ve insanların okuyabilmesi çok fazla göz önünde bulundurulmadığından, araç meselesi olarak düşünülebilir. OWL, değer yönetimi çerçevesi, büyük ölçekli entegrasyon ve web üzerinde veri paylaşımı için standart yaratmada kullanılmaktadır. OWL anlamsal web in bir parçasıdır. Anlamsal web dağıtık bir yapıda olduğu için OWL belgelerinde sunulan bilgiler de dağıtık kaynaklardan okunabilecek veya işlenebilecek düzende olmalıdır. OWL ile tanımlanan bilgi tek bir dosyada ya da kapsamda düşünülemez. Bu bilgi başka ontolojiler tarafından da tanımlanabilir ya da genişletilebilir. OWL belgelerinin yanlış yorumlanmaması ve etmenler tarafından işlenebilmesi için düzgün bir sözdizimine ihtiyaç vardır. OWL belgelerinde kullanılacak terminoloji RDF dosyalarının genişletilmiş halidir. Ontolojilerin önemli oluşlarının sebepleri, günümüzde birçok alanda kullanılmalarındandır. Çok büyük bilgi taşıyan, hiyerarşik yapı içermeyen, varlıklar arası ilişkilerin önemli olduğu projeler ontolojiler için önemlidir. Bu gibi alanlara en güzel örnek ilaç endüstrisindeki araştırmalardır. Bunun yanı sıra gen ontolojisi, klinik terminoloji ontolojisi, gösterilebilecek güzel örneklerdir. Ontoloji mühendisliği bilginin yönetimi için önemli araçlardır. Günlük bilgilerin bile yangın hortumundan çıkan su misali nefesleri kestiği bir dönemde kısmen kritik bir durum olan veri yığını yönetimi ve ilişki tespiti ontolojilerin temel yeteneğidir. OWL vs. RDF: OWL ve RDF aslında cok benzerler ancak OWL belgelerinde kullanılacak terminoloji RDF dosyalarının genişletilmiş halidir. Diğer bbir deyişle, OWL dili RDF diline bir eklentidir.
2. Örnek Çalışma: Protege Kullanarak Pizza Ontolojisinin Yaratılması Step1: Yeni bir OWL projesi yaratma 1. Protégé açınız. 2. File New Project OWL/RDF files Ontology URI (http://www.pizza.com/ontologies/pizza.owl) 3. OWL DL Properties View 4. Yeni bir Protege-OWL projesi yaratılmıştır.yarattığınız projeyi kendi local makinenize kaydediniz. Step2: Sınıf İsimlendirme 1. OWL Classes tabına gidiniz. 2. The empty class ağacı owl:thing adında, herseyin supersınıfı olan bir sınıf içermektedir. 3. Pizza, PizzaTopping ve PizzaBase adında 3 tane subclass yaratınız. Bu yarattığınız class lar owl:thing in altsınıflarıdır. 4. Step3: Disjoint Sınıflar Pizza, PizzaBase ve PizzaTopping in disjoint sınıflar olduğunu belirtmek için 1. Pizza sınıfını seçiniz. 2. disjoint classes widget da bulunan add siblings butonuna basınız. 3. PizzaBase ve PizzaTopping i ekleyiniz. 4. PizzaTopping sınıfını seçiniz. 5. Pizza ve PizzaBase disjointleri PizzaTopping için disjoint sınıflar olarak ekleyiniz. 1
Step 4. Sınıfları gruplar şeklinde yaratmak için 1. ThinAndCrisyBase ve DeepPanBase sınıflarını PizzaBase in subclass I olarak yaratınız ve her birinin disjoint olduğunu belirtiniz. 2. PizzaBase seçiniz ve mouse un sağ tıkına basarak create subclasses seçiniz. 3. Daha sonra bu iki disjoint class I toplu halde yaratmak için wizard I izleyiniz. Bu size çok zaman kazandıracaktır Step 5. PizzaTopping in alt sınıflarını yaratmak için 1. PizzaTopping sınıfını seçiniz ve MeatTopping, VegetableTopping, CheeseTopping ve SeafoodTopping i subclassları olarak yaratınız. Hepsinin birbirlerinden disjoint olduğunu belirttiğinize emin olunuz. 2. MeatTopping sınıfını seçiniz. SpicyBeefTopping, PepperoniTopping, SalamiTopping ve HamTopping subclassları olarak yaratınız.. Hepsinin birbirlerinden disjoint olduğunu belirttiğinize emin olunuz. 3. VegetableTopping i seçiniz. TomatoTopping, OliveTopping, MushroomTopping, PepperTopping, OnionTopping, CaperTopping subclassları olarak yaratınız.. Hepsinin birbirlerinden disjoint olduğunu belirttiğinizden emin olunuz. Step 6. Disjoint subclass larını yaratmaya devam ediniz. 1. PepperTopping i seçiniz. disjoint subclass ları olarak : RedPepperTopping, GreenPepperTopping, JalapenoPepperTopping ekleyiniz. 2. CheeseTopping i seçiniz. disjoint subclass ları olarak: MozzarellaTopping, ParmezanTopping ekleyiniz. 3. SeafoodTopping i seçiniz. disjoint subclass ları olarak: TunaTopping, AnchovyTopping ve PrawnTopping ekleyiniz. Bilgi Notu 1: OWL Property (Özellik) Elementleri: OWL da özellikler iki obje arasındaki ilişkiyi belirmek için kullanılır.iki ana özellik vardır: Object özellikleri: objeleri diğer objelerle ilişkilendirir. Data type özellikleri: objeleri veri tip değerleriyle ilişkilendirmek için kullanılır. Objeleri, XML Schema datatype veya rdf:literal ile ilişkilendirir. Bunlara ek olarak bir de Annotation özellikler vardır. Bunlar Sınıflar, property ler hakkında bilgi vermek için kullanılırlar. 2
Step 7. Object Property yaratmak için 1. Properties tabına geçiniz. 2. Yeni bir object property yaratmak için Create Object Property butonunu kullanınız.. 3. hasingredient olarak ismini değiştiriniz. Step 8. Sub-property yaratmak için 1. hasingredient property i seçiniz. hastopping ve hasbase i subproperties olarak yaratınız. Bilgi Notu 2: Inverse Property Her object property nin bir inverse property si olabilir. Eğer bir property a yı b ye bağlıyorsa, bunun inverse property si b yi a ya bağlar. 3
Step 9. Inverse Property yaratmak için 1. isingredientof isimli yeni bir object property yaratınız. Set inverse property butonuna basınız, hasingredient seçiniz. Böylece inverse relation ilişkisi tanımlanmış olacaktır. 2. hasbase seçiniz. isbaseof u hasbase in inverse property olarak seçiniz. 3. hastopping seçiniz. istoppingof u inverse property olarak yaratınız. istoppingof is the subproperty Bilgi Notu 3: Functional Property ler Functional property ler tek değerli property olarak bilinirler. Eğer bir özellik functional olarak tanımlanmış ise, her varlık için, ona bu özellik ile sadece 1 tane varlık ilşkilendirilebilir. Verilen domain in, range i unique olmalıdır. Bilgi Notu 4: Inverse Functional Property ler Eğer bir property inverse functional ise bunun inverse property si de functional dır. 4
FunctionalProperty ile InverseFunctionalProperty arasındaki ilişkiyi daha iyi anlamak için aşağıdaki tabloyu inceleyiniz. domain range example Functional Property For a given domain Range is unique hasfather: A hasfather B, A hasfather C B=C InverseFunctionalProperty Domain is unique For a given range hasid: A hasid B, C hasid B A=C Bilgi Notu 5: Transitive Property ler Eğer bir property transitive ise ve A yı B ye ilişkilendiriyorsa, ve aynı zamanda B yi de C ye ilişkilendiriyorsa, A ile C property P aracılığıyla birbiriyle ilişkildir. Bilgi Notu 6: Symmetric Property ler Eğer property P symmetric is eve bu property A ile B yi ilişkileniriyorsa, B ile A da property P aracılığıyla birbiriyle ilişkilidir. Step10. hasingredient property transitive yapmak için 1. hasingredient property i seçiniz. 5
2. transitive tick box tikleyiniz. 3. isingredientof property seçiniz ve transitive tick boxun seçili olduğundan emin olunuz. Step 11. hasbase property Functional yapmak için 1. hasbase property i seçiniz. 2. functional tick box tikleyiniz. Bilgi Notu 7: Property domain ler ve range ler Properties link individuals from the domain to individuals from the range. OWL uses domain and range as axioms in reasoning. Step 12. hastopping in range ini seçmek için 1. hastopping i seçiniz. range butonuna basınız. PizzaTopping i seçiniz. OK butonuna basınız. PizzaTopping in range listesinde görünmelidir. Eğer birden fazla sınıf range e eklenmişse, range için bu sınıfların birleşimini alırız. Step 13. hastopping in domain ini Pizza olarak seçmek için 1. hastopping property i seçiniz. add domain butonuna basınız. Pizza yı seçiniz. OK basınız. Pizza domain listesinde görünmelidir.. 2. Eğer birden fazla sınıf domain olarak eklenmişse, domain bu sınfların birleşimidir. Step 14. istoppingof un range ve domain ini seçmek için 1. istoppingof property i seçiniz. 6
2. istoppingof property sinin domain ini PizzaTopping olarak seçiniz. 3. istoppingof property sinin range ini Pizza olarak seçiniz. Step 15. hasbase in range ve domain ini seçmek ve isbaseof Inverse i yapmak için 1. hasbase property i seçiniz. Domain i Pizza olarak belirleyiniz. Range I PizzaBase olsun. 2. isbaseof property I seçiniz. Domain i PizzaBase olarak seçiniz. Range I de Pizza olarak seçiniz. Bilgi Notu 8: Property Restrictions (Kısıtlamaları) OWL da, property ler kısıtlama yapmak için kullanılırlar. Kısıtlamalar bir sınıfa ait varlıkları kısıtlamak için kullanılırlar. Üç tane kısıtlama çeşidi vardır: Quantifier kısıtlamaları Existential quantifier ( ) Universal quantifier ( ) Cardinality kısıtlamaları hasvalue kısıtlamaları Step 16. Pizza ya PizzaBase olması kısıtlamasını eklemek için Pizza yı seçiniz. Necessary başlığını seçiniz. create a restriction wizard a tıklayınız hasbase i restricted property olarak seçiniz. somevaluefrom restriction olarak seçiniz. PizzaBase i fillere koyunuz. 7
Step 17. Değişik şekillerde Pizza lar yaratmak için NamedPizza isimli bir subclass yaratınız ve ona da MargheritaPizza isimli bir subclass yaratınız.. MargheritaPizza ya comment ekleyiniz: A pizza that only has Mozarella and Tomato toppings Step 18. Margherita Pizza ya kısıtlama getirmek için MargheritaPizza nın en azından bir tane MozzarellaTopping I olduğunu belirtmek için MargheritaPizza yı seçiniz. Asserted Conditions a gidiniz ve yeni bir restriction yaratınız. somevaluefrom seçiniz. hastopping kısıtlanacak property olarak seçiniz. MozzarellaTopping i filler e yazınız. OK butonuna basınız. MargheritaPizza nın en azından bir tane TomatoTopping i olduğunu belirtmek için MargheritaPizza yı seçiniz. Asserted Conditions a gidiniz ve yeni bir restriction yaratınız. somevaluefrom seçiniz. hastopping kısıtlanacak property olarak seçiniz. TomatoTopping i filler e yazınız. 8
OK butonuna basınız. Step 19. AmericanPizza yaratmak için pepperoni, mozzarella ve tomato toppingli AmericanPizza yaratınız veya MargheritaPizza klonlayıp, değiştiriniz. MargheritaPizza seçiniz. create clone seçiniz. AmericanaPizza PepperoniTopping ek kısıtlamasını getiriniz. OK butonuna basınız. Step 20. AmericanHotPizza ve SohoPizza yaratınız. AmericanHotPizza, AmericanaPizza ile hemen hemen aynıdır, ama AmericanaPizza ya ek olarak üzerinde JalapenoPepperTopping i vardır. SohoPizza, MargheritaPizza ile hemen hemen aynıdır, fakat üzerinde ek olarak OliveTopping ve ParmezanTopping vardır. Step 21. NamedPizza nın subclasslarını disjoint yapınız. MargheritaPizza yı seçiniz. Pizzaları birbiriyle disjoint yapmak için Disjoints widget üzerindeki add all siblings butonuna basınız. 9