2013-11-12 1 views
1

Im пытается импортировать RDF-Triples в OrientDB с помощью tinkerpop/blueprints. Я нашел основное использование here.Импорт троек с Tinkerpop/bluebrints в OrientDB

Im теперь далеко:

import info.aduna.iteration.CloseableIteration; 

import org.openrdf.model.Statement; 
import org.openrdf.model.ValueFactory; 
import org.openrdf.sail.Sail; 
import org.openrdf.sail.SailConnection; 
import org.openrdf.sail.SailException; 

import com.hp.hpl.jena.graph.Node; 
import com.hp.hpl.jena.graph.Triple; 
import com.tinkerpop.blueprints.impls.orient.OrientGraph; 
import com.tinkerpop.blueprints.oupls.sail.GraphSail; 

import de.hof.iisys.relationExtraction.jena.parser.impl.ParserStreamIterator; 
import de.hof.iisys.relationExtraction.neo4j.importer.Importer; 


public class ImporterJenaTriples extends Importer { 
    private OrientGraph graph = null; 
    private Sail sail = null; 
    private SailConnection sailConnection = null; 
    private ValueFactory valueFactory = null; 
    private Thread parserThread = null; 

    public ImporterJenaTriples(ParserStreamIterator parser, String databasePath) throws SailException { 
     this.parser = parser; 
     this.databasePath = databasePath; 

     this.initialize(); 
    } 

    private void initialize() throws SailException { 
     this.graph = new OrientGraph(this.databasePath); 
     this.sail = new GraphSail<OrientGraph>(graph); 

     sail.initialize(); 

     this.sailConnection = sail.getConnection(); 
     this.valueFactory = sail.getValueFactory(); 
    } 

    public void startImport() { 
     this.parserThread = new Thread(this.parser); 
     this.parserThread.start(); 

     try { 
      Triple next = (Triple) this.parser.getIterator().next(); 

      Node subject = next.getSubject(); 
      Node predicate = next.getPredicate(); 
      Node object = next.getObject(); 


     } catch (SailException e) { 
      e.printStackTrace(); 
     } 

     try { 
      CloseableIteration<? extends Statement, SailException> results = this.sailConnection.getStatements(null, null, null, false); 

      while(results.hasNext()) { 
       System.out.println(results.next()); 
      } 
     } catch (SailException e) { 
      e.printStackTrace(); 
     } 
    } 

    public void stopImport() throws InterruptedException { 
     this.parser.terminate(); 
     this.parserThread.join(); 
    } 
} 

Что мне нужно сделать сейчас, чтобы отличаться типы субъекта, предиката и объекта , но проблема в том, что я не знаю, какие типы они и как я должен используйте valuefactory для создания типа и добавления Statement в мой SailConnection. К сожалению, я не могу найти пример, как его использовать.

Возможно, кто-то сделал это раньше и знает, как продолжить.

ответ

0

Я думаю, вам нужно преобразовать из типов объектов иенских Сезам из них и использовать

неподдерживаемых проект https://github.com/afs/JenaSesame может иметь некоторый код для этого.

Но смешивание Jena и Sesame, похоже, усложняет ситуацию - вы можете использовать парсер Sesame и получать объекты Sesame, которые могут войти в SailConnection?