JENA İLE SPARSQL
Önceki yazımda Protege üzerinde yapılan sorgulamalar aynı zamanda bir eklenti olan Jena sayesinde java ortamında da yapılabilmektedir. Bu sorgulamalar için Eclipse ya da Netbeans kullanılabilir. Bu çalışmada Eclipse kullanılmıştır. Sonuç olarak Protege üzerinde gerçekleştirilen sorgulardan biri JENA üzerinde denenmiş ve aşağıdaki kodlarla Şekil 1’deki çıktı alınmıştır. Bu uygulamada gerçekleştirilen adımlar şu şekildedir:
1. Bu işlem için öncelikle https://jena.apache.org/download/index.cgi adresinden indirilen Jena kütüphanesi kütüphane ekleme yöntemiyle projeye eklenmiştir.
2. Daha sonra indirilen bu kütüphaneler Java projemizdeki class sayfamızın üst kısmına eklenir. Aşağıdaki kod bloğunda görebilirsiniz.
3. Daha sonra bu kütüphane sayesinde OWL dosyamız java ortamında açılarak içerisinde sorgu yapılabilecek duruma getirilir.
4. Ardından Jena eklentileri ile bir model oluşturulur.
5. PREFIX, Graph ve SPARQL dilinde sorgu cümlesi oluşturularak bu sorgu cümlesi çalıştırılır.
6. Sonucu ekrana yazacak kodlar eklenir.
7. Üst kısımda bulunan menüden Run>Run As>Java Aplication yoluyla uygulama derlenerek sonuçlar konsol ekranında gözlemlenir (Şekil 1).
Jena kütüphanesi yardımıyla Eclipse IDE üzerinde yazılmış Java dilinde SPARQL sorgusu:
import java.io.*; import org.apache.jena.query.Query; import org.apache.jena.query.QueryExecution; import org.apache.jena.query.QueryExecutionFactory; import org.apache.jena.query.QueryFactory; import org.apache.jena.query.ResultSet; import org.apache.jena.query.ResultSetFormatter; import org.apache.jena.rdf.model.Model; import org.apache.jena.rdf.model.ModelFactory; import org.apache.jena.util.FileManager; public class arkadas_listesi extends Object { static final String inputFileName = "https://www.fikirjeneratoru.com/2016_Gezi_Plani.owl"; public static void main (String args[]) { // Bos bir model olusturduk Model model = ModelFactory.createDefaultModel(); // FileManager ile owl dosyamizi aciyoruz InputStream in = FileManager.get().open(inputFileName); //Dosya ve kaynagini dogruluyoruz if (in == null) { throw new IllegalArgumentException( "Dosya: " + inputFileName + " bulunamadi!"); } // OWL dosyamizi okuyoruz model.read( in, "" ); // Sorgu olusturuyoruz&lt;/pre&gt;</pre> String sorgu = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n" + "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n" + "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>\n" + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" + "PREFIX gez: <https://www.fikirjeneratoru.com/2016_Gezi_Plani.owl#>\n" + "PREFIX gez: <https://www.fikirjeneratoru.com/2016_Gezi_Plani.owl#>" +"select ?ad ?soyad ?sehir ?telefon" +" where {" +"?Arkadaslar rdf:type gez:Arkadaslar;" +"gez:ad ?ad;" +"gez:soyad ?soyad;" +"gez:sehir ?sehir;" +"gez:telefon ?telefon; } ORDER BY ?ad" ; Query query = QueryFactory.create(sorgu); // Sorgumuzu calistiriyoruz QueryExecution qe = QueryExecutionFactory.create(query, model); ResultSet results = qe.execSelect(); // Sonuclari ekrana yaziyoruz ResultSetFormatter.out(System.out, results, query); // Sorgu bittikten sonra kaynaklari serbest birakiyoruz qe.close(); } }
Sorgunun çıktısı:
Şekil 1. Gezi ontolojisi üzerinde tüm arkadaşların bilgilerini gösteren Jena ile java dilinde yapılmış SPARQL sorgusu