I want to play with freebase data. on the dump webpage, it says it's
n-triples format.
but in this so question:
http://stackoverflow.com/questions/21274368/jena-parsing-issue-for-freebase-rdf-dump-jan-2014
it seems turtle format.
I want to parse a few lines of this file using jena but it throws exception

Exception in thread "main" com.hp.hpl.jena.shared.JenaException:
java.net.MalformedURLException: no protocol:
<http://rdf.freebase.com/ns/american_football.football_player.footballdb_id>
<http://rdf.freebase.com/ns/type.object.type>
<http://rdf.freebase.com/ns/type.property> .

<http://rdf.freebase.com/ns/american_football.football_player.footballdb_id>
<http://rdf.freebase.com/ns/type.object.name> "footballdb ID"@en .


my codes

FileInputStream is = new FileInputStream("freebase-rdf-2014-08-03-00-00.gz");

GZIPInputStream gzis=new GZIPInputStream(is);

BufferedReader br=new BufferedReader(new InputStreamReader(gzis,"UTF8"));

int lineNum=0;

String line;

StringBuilder sb=new StringBuilder();

while((line=br.readLine())!=null){

sb.append(line).append("\n");

lineNum++;

if(lineNum%100==0){

break;

}

}

Model model = ModelFactory.createDefaultModel();

String s=sb.toString();

model.read(s, "TURTLE");

// list the statements in the Model

StmtIterator iter = model.listStatements();


// print out the predicate, subject and object of each statement

while (iter.hasNext()) {

    Statement stmt      = iter.nextStatement();  // get next statement

    Resource  subject   = stmt.getSubject();     // get the subject

    Property  predicate = stmt.getPredicate();   // get the predicate

    RDFNode   object    = stmt.getObject();      // get the object


    System.out.print(subject.toString());

    System.out.print(" " + predicate.toString() + " ");

    if (object instanceof Resource) {

      System.out.print(object.toString());

    } else {

        // object is a literal

        System.out.print(" \"" + object.toString() + "\"");

    }


    System.out.println(" .");

}

br.close();

Reply via email to