2013-05-30 3 views
0

Я установил веб-искатель, который собирает данные и сохраняет их в файле rdf/xml, теперь я хочу сопоставить эти данные с моими java-объектами ... как я могу это сделать?Сопоставление данных RDF/XML с объектами Java

Я нашел этот кусок кода, который может быть полезен для меня, но я не могу его правильно использовать ... он собирает предметы, предикаты и объекты из моего файла rdf/xml, но я могу представлять эти данные с помощью моего ява указанных объекты, я не знаем, как ... я гугл много, но есть много Арента Полезных вещей об этом, чтобы помочь парням: D

StmtIterator iter = rdfGraph.listStatements(); 
    while (iter.hasNext()) { 

      Statement stmt  = iter.nextStatement(); // get next statement 
      Resource subject = stmt.getSubject(); 
      //System.out.print(subject.getNameSpace() + subject.getLocalName());// get the subject 
      Property predicate = stmt.getPredicate(); 
      //System.out.print(" " + predicate.getNameSpace() + predicate.getLocalName());// get the predicate 
      RDFNode object = stmt.getObject();  // get the object 
      //System.out.println(" " + object.toString() + "\n"); 
      System.out.println(subject + " | "+predicate + " | " + object); 

     } 

это часть моего файла РДФА ...

<rdf:Description rdf:nodeID="A12"> 
<schema:reviewRating rdf:nodeID="A13"/> 
<schema:description>descriptiooooon</schema:description> 
<schema:datePublished>2012-02-22</schema:datePublished> 
<schema:author>Nick M.</schema:author> 
<rdf:type rdf:resource="http://schema.org/Review"/> 
</rdf:Description> 

, и я хочу представить его с помощью этого объекта java..здесь мой класс ...

@Namespace(Constants.SCHEMA) 
@RdfType("Review") 
public class Review extends Thing{ 

@RdfProperty(Constants.SCHEMA + "author") 
private String author; 

@RdfProperty(Constants.SCHEMA + "reviewRating") 
private Rating reviewRating; 

@RdfProperty(Constants.SCHEMA + "datePublished") 
private Date datePublished; 

@RdfProperty(Constants.SCHEMA + "description") 
private String description; 

    } 

ответ

0

Может быть, это апи может быть полезно для вас: XMappr API

0

Ну, вы не сказали нам, что

я могу представить эти данные с моими ява указанные объекты,

на самом деле означает, поскольку вы не описали свои объекты Java.

Принимая во внимание, проблема в том, что вы обращаетесь к содержимому модели RDF с одной тройкой (Statement) за раз. Это скорее низкоуровневый шаблон доступа. Первое, что вам нужно признать, это то, что группы троек с одним и тем же URI обозначают информацию об одном и том же ресурсе RDF. Так, одна вещь, которую вы могли бы сделать, это перебрать субъектов модели, а затем перечислить их свойства:

ResourceIterator i = rdfGraph.listSubjects(); 
while (i.hasNext()) { 
    Resource s = i.next(); 
    System.out.println("Graph contains subject " + s); 
    for (StmtIterator j = s.listProperties(); j.hasNext();) { 
    Statement t = j.next(); 
    System.out.println(" with property " + t.getPredicate() + 
         " ---> " + t.getObject()); 
    } 
} 

Это даст вам чувство базового уровня группировки операторов в вашем графике. Вероятно, вы, по сути, только хотите начать с ресурсов определенного rdf:type, что достаточно легко сделать.

Это будет более распространенный базовый шаблон для работы с данными RDF. Если вам действительно действительно нужно сопоставить ресурсы в графике с объектами Java, посмотрите на такие проекты, как JenaBean. Имейте в виду, однако, что этот код довольно старый и, возможно, потребуется адаптировать для работы с текущими версиями Jena.

+0

ian Вы можете помочь мне больше с этим? Я добавил часть своего rdf/xml и java-класса ... – Andrej

+0

любая помощь? Я действительно застрял в этом ... – Andrej

+0

Привет, Андрей, извините, что раньше не отвечал, Я был занят. Похоже, что код, которым вы поделились, - это код JenaBean - я поместил ссылку в свой первоначальный ответ. Как я уже сказал, JenaBean не является активно поддерживаемым проектом, поэтому он может не работать с текущими версиями Jena. Моим советом было бы забыть о том, чтобы сделать ваши ресурсы в Java-компонентах, и просто работать с API-интерфейсом RDF, используя пример кода, который я предложил. Если вы не знаете, как это сделать, я бы посоветовал отправить более полный образец кода в список пользователей Jena. См. Http://jena.apache.org/help_and_support/index.html, как это сделать. –

Смежные вопросы