Owl belgesinde hazırladığımız sistemde, java ile bazı işlemler gerçekleştirelim. Bunun için öncelikle ide'mize bazı kütüphaneler eklemeliyiz. Owl için mevcut kütüphaneler jena,owlapi vb.. İşlemlerim için gerekli olacak owlapiyi Eclipse'e import ediyorum. Projem basit bir e-magaza sistemi. Bu sistemi protege ile açıyorum. Şekilden de görüldüğü üzere musteri isminde bir sınfım var. Musteri1 ve musteri2 isminde individuallerim var.
Şimdi Id ile typeName isimli sınıfın bir individual'ini yaratıp, bu individual'ın porpName isimli objectProperty'sinin değerini parametre olarak aldığı indv ile dolduralım. Elde ettiğimiz yeni ontoloji yapısını sabit diske kaydedip, geri dönüş değeri olarak geri döndürelim.
Fonksiyonumuzu; public OWLOntology addIndividual(String ID, String typeName, String propName, OWLIndividual indv) olarak yazalım. Yani bu ontolojimizde musteri sınıfına ait individual yaratıyoruz(ya da var olan indivual'i kullanıyoruz), bu individual'i yarattığımız ürün individual'i ile birleştiriyoruz.
Bu işlemden sonra ontolojimiz şekildeki gibi olacaktır.
Şekilden de görüldüğü üzere musteri2 individual'ine masaustu ürünü verildi. Musteri2 artık masaustu2 ye sahiptir.
Diğer bir fonksiyon olarak; tipi parametre olarak elde edilen typeName isminde OwlClass olan tüm individual'lerin silinmesi işleminde sorumlu olsun. Elde ettiği yeni ontoloji yapısını yine sabit diske kaydetsin ve dönüş değeri olarak döndürsün.Bu işlemde fonksiyonumuz; public OWLOntology removeIndividuals(String TypeName) .
Bu işlemden sonra ise ontolojimiz şekildeki gibi olacaktır.
Görüldüğü üzere Musteri sınıfındaki tüm individualler silindi.
Bu işlemlerin yapıldığı Java kodu aşağıdadır.
import java.io.File; import java.util.Collections; import java.util.Set; import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.io.SystemOutDocumentTarget; import org.semanticweb.owlapi.model.AddAxiom; import org.semanticweb.owlapi.model.IRI; import org.semanticweb.owlapi.model.OWLClass; import org.semanticweb.owlapi.model.OWLClassAssertionAxiom; import org.semanticweb.owlapi.model.OWLDataFactory; import org.semanticweb.owlapi.model.OWLIndividual; import org.semanticweb.owlapi.model.OWLObjectProperty; import org.semanticweb.owlapi.model.OWLObjectPropertyAssertionAxiom; import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.model.OWLOntologyManager; import org.semanticweb.owlapi.model.OWLOntologyStorageException; import org.semanticweb.owlapi.model.PrefixManager; import org.semanticweb.owlapi.model.UnloadableImportException; import org.semanticweb.owlapi.util.DefaultPrefixManager; import org.semanticweb.owlapi.util.OWLEntityRemover; public class OwlTest{ public static void main(String[] args) { try { OWLOntology ontology = null; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLDataFactory dataFactory = manager.getOWLDataFactory(); String base = "http://www.semanticweb.org/ontologies/2011/0/Ontology1294596587406.owl#"; PrefixManager pm = new DefaultPrefixManager(base); OWLClass sinifim=dataFactory.getOWLClass(":Masaustu",pm); ontology = manager.loadOntologyFromOntologyDocument(new File("E:\\projesonhali.owl")); OWLIndividual urunIndv = dataFactory.getOWLNamedIndividual(IRI.create(base+"masaustu2")); OWLClassAssertionAxiom sinifIndBirlestirim=dataFactory.getOWLClassAssertionAxiom(sinifim,urunIndv ); manager.addAxiom(ontology, sinifIndBirlestirim); manager.saveOntology(ontology); //addIndividual("musteri2", "Musteri", "sahiptir", urunIndv); removeIndividuals("Musteri"); } catch (OWLOntologyCreationException e) { } catch (OWLOntologyStorageException e) { } } public static OWLOntology addIndividual(String ID,String typeName,String propName,OWLIndividual indv) throws OWLOntologyStorageException{ OWLOntology magazaontology = null; try { OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); File file = new File("E:\\projesonhali.owl"); magazaontology = manager.loadOntologyFromOntologyDocument(file); System.out.println("Loaded ontology: " + magazaontology); IRI documentIRI = manager.getOntologyDocumentIRI(magazaontology); System.out.println(" from: " + documentIRI); OWLDataFactory dataFactory = manager.getOWLDataFactory(); String base = "http://www.semanticweb.org/ontologies/2011/0/Ontology1294596587406.owl#"; PrefixManager pm = new DefaultPrefixManager(base); OWLIndividual newIndividual = dataFactory.getOWLNamedIndividual(IRI.create(base + ID)); OWLClass sinifAdi = dataFactory.getOWLClass(":"+typeName, pm); OWLClassAssertionAxiom SinifIndBirlesimi = dataFactory.getOWLClassAssertionAxiom(sinifAdi, newIndividual); manager.addAxiom(magazaontology,SinifIndBirlesimi); manager.saveOntology(magazaontology, new SystemOutDocumentTarget()); OWLObjectProperty owlProperty = dataFactory.getOWLObjectProperty(propName, pm); OWLObjectPropertyAssertionAxiom propertyekleme = dataFactory.getOWLObjectPropertyAssertionAxiom(owlProperty, newIndividual, indv); AddAxiom aksiomekle = new AddAxiom(magazaontology, propertyekleme); manager.applyChange(aksiomekle); manager.saveOntology(magazaontology, IRI.create(file.toURI())); System.out.println(); System.out.println(); manager.saveOntology(magazaontology, new SystemOutDocumentTarget()); } catch (UnloadableImportException e) { System.out.println("Could not load import: " + e.getImportsDeclaration()); OWLOntologyCreationException cause = e.getOntologyCreationException(); System.out.println("Reason: " + cause.getMessage()); } catch (OWLOntologyCreationException e) { System.out.println("Could not load ontology: " + e.getMessage()); } return magazaontology; } public static OWLOntology removeIndividuals(String typeName) { OWLOntology magazaOntology = null; try { File newFile = new File("E:\\projesonhali.owl"); OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLDataFactory dataFactory = manager.getOWLDataFactory(); magazaOntology = manager.loadOntologyFromOntologyDocument(newFile); String base = "http://www.semanticweb.org/ontologies/2011/0/Ontology1294596587406.owl#"; PrefixManager pm = new DefaultPrefixManager(base); OWLEntityRemover remover = new OWLEntityRemover(manager,Collections.singleton(magazaOntology)); OWLClass Sinif = dataFactory.getOWLClass(":"+typeName, pm); Set < owlindividual > SilinecekIndv = Sinif.getIndividuals(magazaOntology); for (OWLIndividual ind : SilinecekIndv) { ind.asOWLNamedIndividual().accept(remover); } manager.applyChanges(remover.getChanges()); remover.reset(); manager.saveOntology(magazaOntology); System.out.println(SilinecekIndv); } catch (OWLOntologyCreationException e) { System.out.println("Could not load ontology: " + e.getMessage()); } catch(Exception e) { System.out.println(e.getMessage()); } return magazaOntology; } }
Kolay gelsin.
0 yorum:
Yorum Gönder