2016-05-08 19 views
0

Wenn Sie eine N3 RDF-Datei mit dem folgenden Format in das Sesame Repository laden, ist es möglich, Sesam '|' als Trennzeichen?So lesen Sie das nicht standardmäßige RDF-Format in Sesame

Das untere Tripel ist durch | getrennt :

http://article.com/1-3|http://relationship.com/wasGeneratedBy|http://edit.com/comment1-2 
+4

Es sollte nicht möglich sein, das für N3 zu sagen, weil N3 verschiedene Separatoren nicht erlaubt. Was Sie haben, ist einfach keine N3-Datei. Sie sollten den Text wahrscheinlich nur als Text vorverarbeiten und dann als Format laden, in das Sie ihn konvertiert haben. Beachten Sie, dass in Ihrem Fall, auch wenn Sie | ersetzen mit Raum ist es immer noch nicht N3; Sie müssten diese IRIs in spitze Klammern einschließen und einen Punkt am Ende des Triple hinzufügen. –

Antwort

3

Wie auch in den Kommentaren angegeben: das Format, das Sie einfach haben, ist nicht N3 Syntax, so dass Sie diese N3-Parser mit nicht hochladen Sesam. Es ist auch nicht in einem anderen standardisierten Format, daher gibt es keinen Parser für die Handhabung.

Es wäre jedoch ziemlich einfach, eine Datei in diesem Format "manuell" zu verarbeiten und sie Sesame selbst hinzuzufügen. Dadurch wird den Trick wahrscheinlich tun:

try (RepositoryConnection conn = rep.getConnection()) { 
     ValueFactory vf = conn.getValueFactory(); 

     File file = new File("/path/to/weirdlyformattedrdffile.txt"); 

     // open the file for reading 
     try (BufferedReader br = new BufferedReader(new FileReader(file))) { 
     String line; 

     // start a transaction 
     conn.begin(); 

     // read the file line-by-line 
     while ((line = br.readLine()) != null) { 
      // each line is an RDF triple with a subject, predicate, and object 
      String[] triple = line.split("|"); 

      IRI subject = vf.createIRI(triple[0]); 
      IRI predicate = vf.createIRI(triple[1]); 
      IRI object = vf.createIRI(triple[2]); 

      // add the triple to the database 
      conn.add(subject, predicate, object); 
     }     
     // commit the txn when all lines are read 
     conn.commit(); 
     } 
    } 

Natürlich, wenn Sie Ihre Datei enthält auch andere Dinge als IRIs (zB Literale oder leeren Knoten), müssen Sie eine gewisse Logik umfassen diese zu unterscheiden, anstatt nur blind zu schaffen IRIs für alles. Aber das ist der Preis, den Sie bezahlen, wenn Sie kein standardisiertes Syntaxformat verwenden.