2015-03-20 5 views
2

У меня проблема с чтением RDF-файла, который использует теги foaf. Я хотел бы прочитать его с Apache Jena. Ниже приведен фрагмент файла RDF.Чтение RDF: foaf файл с Apache Jena

<rdf:RDF xmlns="http://test.example.com/"  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"  xmlns:foaf="http://xmlns.com/foaf/0.1/"> 
<foaf:Person rdf:about="http://test.example.com/MainPerson.rdf"> 
<foaf:firstName>John</foaf:firstName> 
<foaf:lastName>Doe</foaf:lastName> 
<foaf:nick>Doe</foaf:nick> 
<foaf:gender>Male</foaf:gender> 
<foaf:based_near>Honolulu</foaf:based_near> 
<foaf:birthday>08-14-1990</foaf:birthday> 
<foaf:mbox>[email protected]</foaf:mbox> 
<foaf:homepage rdf:resource="http://www.example.com"/> 
<foaf:img rdf:resource="http://weknowmemes.com/wp-content/uploads/2013/09/wat-meme.jpg"/> 
<foaf:made> 
Article: Developing applications in Java 
</foaf:made> 
<foaf:age>24</foaf:age> 
<foaf:interest> 
Java, Java EE (web tier), PrimeFaces, MySQL, PHP, OpenCart, Joomla, Prestashop, CSS3, HTML5 
</foaf:interest> 
<foaf:pastProject rdf:resource="http://www.supercombe.si"/> 
<foaf:status>Student</foaf:status> 
<foaf:geekcode>M+, L++</foaf:geekcode> 
<foaf:knows> 
<foaf:Person> 
<rdfs:seeAlso rdf:resource="http://test.example.com/Person.rdf"/> 
</foaf:Person> 
</foaf:knows> 
<foaf:knows> 
<foaf:Person> 
<rdfs:seeAlso rdf:resource="http://test.example.com/Person2.rdf"/> 
</foaf:Person> 
</foaf:knows> 
<foaf:knows> 
<foaf:Person> 
<rdfs:seeAlso rdf:resource="http://test.example.com/Person3.rdf"/> 
</foaf:Person> 
</foaf:knows> 
</foaf:Person> 
</rdf:RDF> 

Я просто не понимаю, как читать эти данные с помощью Apache Jena в обычном POJO-объекте. Любая помощь будет оценена (не удалось найти учебник в Интернете для такого рода разбора).

+0

«прочитайте эти данные с помощью Apache Jena в обычном объекте POJO» Непонятно, что вы хотите сделать. Документ RDF представляет собой набор троек. С Йеной вы читаете документ RDF как объект модели. Что вы пытаетесь получить? –

+0

Я хотел бы прочитать содержимое RDF-файла выше и сохранить содержимое троек в обычном классе pojo (Object Person, с сеттерами и геттерами) для последующего использования (показывая данные по интерфейсу). Самая большая проблема, которую я испытываю, - это разбор этого файла RDF (чтение из файла RDF и запись в файл RDF). – Salko

ответ

1

Я не знаю, понял ли я вашу проблему. Но если вам нужно прочитать RDF-файл для объекта POJO, у вас будет много выбора. Например, вы можете прочитать свой файл rdf, используя Jena для модели, а затем создать объекты POJO, используя методы, предложенные каркасом, чтобы получить значения ваших свойств. Это пример кода, который извлекает foaf:firstName из файла

import com.hp.hpl.jena.rdf.model.Model; 
import com.hp.hpl.jena.rdf.model.ModelFactory; 
import com.hp.hpl.jena.rdf.model.Property; 
import com.hp.hpl.jena.rdf.model.Resource; 
import com.hp.hpl.jena.util.FileManager; 

public class Test { 
    //First, create a Jena model and use FileManager to read the file 
    public static Model model = ModelFactory.createDefaultModel(); 
    public static void main(String[] args) { 
     //Use FileManager to read the file and add it to the Jena model 
     FileManager.get().readModel(model, "test.rdf"); 
     //Apply methods like getResource, getProperty, listStatements,listLiteralStatements ... 
     //to your model to extract the information you want 
     Resource person = model.getResource("http://test.example.com/MainPerson.rdf"); 
     Property firstName = model.createProperty("http://xmlns.com/foaf/0.1/firstName"); 
     String firstNameValue = person.getProperty(firstName).getString(); 
     System.out.println(firstNameValue); 

    } 
} 

Вы можете использовать эти методы в сеттеры классе POJO. Вы можете найти очень хорошее введение here

+0

Большое спасибо Хатим. Это решение было очень полезно. С наилучшими пожеланиями – Salko

+0

Добро пожаловать @Salko :) Если это решение вам помогло, вы можете пометить его как ответ, Bests – Hatim