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ı #7 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.
Bilgi Notu 1: Protege de elde hazırlanan (sizin hazırladığınız) sınıf hiyeraşisine asserted hierarchy denir. Reasoner tarafından otomatik olarak hazırlanan sınıf hiyerarşisine ise inferred hierarchy denir. Step 1. Reasoner ı çalıştırmak için Reasonening Pellet 1.5.2 seçiniz. Daha sonra sırasıyla check consistency, classify taxonomy ve compute inferred types ı çalıştırınız. Şekil 1. Sınıflandırma yapmak için kullanılan Reasoning menüsü Inferred hierarchy tamamlandığı zaman, asserted hierarchy penceresinin yanında inferred hierarchy penceresi açılacaktır. Eğer herhangi bir değişiklik varsa, değişiklik oluşan sınıf adı mavi renk ile gösterilecektir. Eğer sınıf inconsistent olarak bulunmuşsa, o sınıfın ikonu kırmızı renk olacaktır.
Şekil 2. Sınıflandırma yapıldıktan sonra Asserted Hierarchy Panosunun yanında açılan Inferred Hierarchy Panosu görüntüsü Bilgi Notu 2. Primitive ve Defined Sınıflar: Sadece necessary koşulları olan bir sınıfa Primitive Sınıf denir. En az birer necesary ve sufficient koşulu sağlayan sınıfa ise Defined Class denir. Necessary koşulları Protege de Superclasses olarak adlandırılır. Necessary ve sufficient koşulları ise Equivalent classes olarak adlandırılır. Bilgi Notu 3. Necessary ve Sufficient Koşulları: Şimdiye kadar yarattığımız bütün sınıfları tanımlamak için sadece necessary koşulları kullanılmıştı. Necessary koşulları şu şekilde okunabilir, Eğer birsey bu sınıfın üyesiyse, şu koşulları sağlamalıdır. Ancak sadece necessary koşulları kullanarak, Eğer birşey bu koşulları sağlıyorsa, şu sınıfın üyesidir diyemeyiz. Mesela CheesyPizza tanımında Eğer birşey CheesyPizza sınıfının üyesiyse, Pizza sınıfının üyesi olmalı ve en azından bir tane CheeseTopping sınıfından olan bir topping i olmalıdır. Ancak, bu tanımlama birşeyin CheesyPizza sınıfının üyesi olduğunu söyleyemeyiz. Bunu yapabilmek için, CheesyPizza koşullarını necessary koşulundan necessary ve sufficient koşuluna çevirmeliyiz. Bu demektir ki Birşeyin CheesyPizza sınıfında olması için koşulların sadece gerekli değil aynı zamanda yeterli de olması gereklidir. Bunu daha iyi anlamak için bir örnekle devam edelim... Step 3. Pizza sınıfının altsınıfı olan CheesyPizza isimli bir sınıf yaratınız ve CheeseTopping cinsinde en az bir tane topping oldugunu belirtiniz. 1
Classes tabındaki Sınıf hiyerarşisinden Pizza yı seçiniz. Pizza nın alt sınıfı olan CheesyPizza yı yaratınız. CheesyPizza ya property kısıtlaması eklemek için Asserted Conditions panosundan R ye basınız ve hastopping seçiniz. existential restriction olarak somevaluesfrom seçiniz. Filler kısmına CheeseTopping yazınız. Step 4. CheesyPizza nın necessary koşullarını necessary & sufficient koşullarına çeviriniz. CheesyPizza yı seçiniz. Asserted Conditions panosundan hastopping some CheeseTopping kısıtlamasını drag-drop yöntemiyle necessary kısmından necessary & sufficient kısmına geçiriniz. Reasoning den Classify taxonomy seçiniz. Görüntü aşağıdaki şekildeki gibi olmalıdır. Reasoner MargheritaPizza, AmericanaPizza, American-HotPizza ve SohoPizza larınıncheesypizza nın alt sınıfı olduğunu belirledi. Çünkü bir önceki adımda CheesyPizza yı necessary and sufficient conditions olarak seçtik. Bu da demektir ki herhangi birsey Pizza ise ve en az bir tane CheeseTopping varsa, o şey CheesyPizza sınıfının üyesidir. MargheritaPizza, AmericanaPizza, AmericanHotPizza ve SohoPizza ları da Pizza olduğu ve en az bir tane CheeseTopping olduğu için Reasoner bunların CheesyPizza sınıfının altsınıfı olduğunu belirledi. 2
Şimdiye kadar yarattığımız bütün kısıtlamalarda existential kısıtlamaları (some) kullanmıştık. Şimdi ise Universal kısıtlamanın (only) ne olduğunu inceleyeceğiz. Bunun için VegetarianPizza isimli bir sınıf yaratıyoruz. Bu sınıfın uyelerinin sadece CheeseTopping veyavegetabletopping olabilir. Bunu yapmak için de universal kısıtlama kullanacağız. Step 5. VegetarianPizza tanımlayan bir sınıf yaratınız. Pizza nın altsınıfını yaratınız ve VegetarianPizza ismini veriniz. VegeterianPizza ya property kısıtlaması eklemek için Asserted Conditions panosundan R ye basınız ve hastopping seçiniz. universal restriction olduğunu belirten allvaluesfrom seçiniz. Filler kısmına CheeseTopping or (VegetableTopping) yazınız. Step 6. VegeterianPizza nın necessary koşullarını necessary & sufficient koşullarına çeviriniz. VegeterianPizza yı seçiniz. Asserted Conditions panosundan hastopping only (CheeseTopping or VegetableTopping) kısıtlamasını drag-drop yöntemiyle necessary kısmından necessary & sufficient kısmına geçiriniz. Reasoning den Classify taxonomy seçiniz. Görüntü aşağıdaki şekildeki gibi olmalıdır. Bilgi Notu 4. Value Partitions: Herhangi bir ontoloji dilinin veya OWL ın parçası değildirler. Design pattern olarak bilinirler.sınıflar hakkındaki tanımlanabilir özellikler için kullanılırlar. Mesela PizzaTopping in acı miktarını seçmek için SpicinessValuePartition tanımlanabilir. Value Partition ların alabileceği değerler liste ile sınırlıdır. Mesela SpicinessValuePartition değeri sadece Mild, Medium, ve Hot olabilir. Step 7. SpicinessValuePartition yaratmak için Spiceness ValuePartition için OWL:Thing in alt sınıfı olan ValuePartition isimli bir sınıf yaratınız. ValuePartition altsınıfı olan SpicinessValuePartition sınıfını yaratınız ValuePartition alabileceği değerleri göstermek için Mild, Medium ve Hot isimli SpicynessValuePartition ın 3 tane altsınıflarını yaratınız. Yarattığınız altsınıfları disjoint yapınız. ValuePartition için hasspiciness isimli bir object property yaratınız. Alabileceği değerleri belirtmek için Hot or (Medium or Mild) koşulunu yazınız ve necessary kısmından necessary & sufficient kısmına taşıyınız. Yaratığınız hasspiciness property sini functional yapınız. hasspiciness property sinin range ini SpicenessValuePartition sınıfı olarak belirleyiniz. Step 8. Önceki adımda yaratığımız SpicinessValuePartition kullanarak pizza topping lerimizin spiceness durumunu belirleyebiliriz. JalapenoPepperTopping seçiniz. 3
JalapenoPepperTopping e property kısıtlaması eklemek için Asserted Conditions panosundan R ye basınız ve hasspiceness seçiniz. universal restriction olduğunu belirten somevaluesfrom seçiniz. Filler kısmına Hot yazınız. Repeat this for each of the bottom level PizzaToppings (those that have no subclasses). Step 9: Pizza nın altsınıfı olan SpicyPizza isimli bir sınıf yaratınız. Pizza nın altsınıfı olan SpicyPizza isimli bir sınıf yaratınız. SpicyPizza seçiniz, ve necessary&sufficient başlığını seçerek bir kısıtlama yartınız. hastopping kısıtlamak istediğiniz property olarak seçiniz. kısıtlama tipi olarak somevaluesfrom seçiniz. filler kısmına (PizzaTopping and (hasspiciness some Hot)), parantezli olarak yazınız. Step 10. Reasoner kullanarak ontolojiyi tekrardan sınıflandırınız. Reasoning Classifiy taxonomy... seçiniz. Reasoner bittikten sonra Inferred Hierarchy panosu açılacaktır ve AmericanHotPizza SpicyPizza nın altsınıfı olarak belirlenecektir. Bilgi Notu 5. Cardinality kısıtlamaları: Step 11. En az 3 tane topping içeren InterestingPizza yaratınız. Pizza nın altsınıfı olan InterestingPizza isimli bir sınıf yaratınız. InterestingPizza seçiniz, ve necessary&sufficient başlığını seçerek bir kısıtlama yaratınız. 4
hastopping kısıtlamak istediğiniz property olarak seçiniz. kısıtlama tipi olarak mincardinality seçiniz. filler kısmına 2 yazınız. Step 12. Reasoner kullanarak ontolojiyi tekrardan sınıflandırınız. Reasoning Classifiy taxonomy... seçiniz. Bilgi Notu 6. Şimdiye kadar hep object property leri inceledik. Şimdi de sırada datatype property ler var. Datatype property bir nesneyi bir değere bağlayan özelliklerdir. Step 13. hascalorificcontentvalue isimli bir datatype property yaratınız. Datatype Properties tabına geçiniz. Add Datatype Property butonunu kullanarak hascalorificcontentvalue isimli bir datatype property yaratınız. Step 14. Datatype property kullanımını daha iyi anlamak için Örnek pizza individual yaratınız. Individuals Tab ını seçiniz Add individual butonuna basınız ve Example-Margherita isimli bir individual yaratınız. Individual Description view e Margherita tipini ekleyiniz. Individual editorden Data property assertion ekleyiniz ve hascalorificcontentvalue property seçiniz.tip olarak integer seçiniz ve 263 değerini yazınız. 5
Bilgi Notu 7. Protege bize aynı zamanda individual yaratma ve bunlara property atama olanağı da sağlar. Individual yaratmak için Individual tab ı kullanılır. Daha iyi anlamak için bir örnekle açıklamak gerekirse mesela pizza topping lerinin ait olduğu ülkeleri tanımlamak için Individual kullanabiliriz. Step 15. Country sınıfını yaratınız ve içerisine birkaç tane individual ekleyiniz. Thing altınıfı olan Country yaratınız. Individual tabına geçiniz. Add individual butonuna basınız ve Italy adını veriniz. Add ikonuna (+) basarak America, England, France, ve Germany individual yaratınız. Step 16. MozzarellaTopping in Italya ya ait olduğunu söyleyen bir havalue kısıtlaması yaratınız. Object Properties tabına geçiniz. Yeni bir object property yaratınız ve hascountryoforigin ismini veriniz. Classes tabına geçiniz ve MozzarellaTopping. Seçiniz Necessary kısmında Add Restriction butonuna basınız. hascountryoforigin kısıtlanmak istenen property olarak seçiniz. hasvalue tipini seçiniz. Italy filler kısmına individual olarak giriniz. 6