Jena API für Java (RDF)

Meiki Jay

Mitglied
Hallo,
ich arbeite derzeit an einem Projekt bei dem ich eine Social Media Application (sowas wie Facebook nur viel einfacher) erstellen muss. Dabei muss ich die Daten mittels RDF-Triple-Store speichern. RDF und XML habe ich verstanden, Java Programmieren kann ich auch. Ich habe jedoch noch nie RDF mit Java verwendet.

Als Vorlage für das RDF Modell habe ich eine XML Datei in denen die Klassen, Properties und Ressourcen vordefiniert sind.

Womit ich jetzt Probleme hab ist, wenn ich mittels SPARQL eine Query zum speichern von Daten anwende, weiss ich nicht wie ich das in das Modell speichere mit Java als XML. Weiß irgendjemand wie ich das am besten machen kann?

Ich habe es bereits mit dem XMLEncoder versucht bekomme aber folgenden Fehler:

java.lang.InstantiationException: com.hp.hpl.jena.rdf.model.impl.ModelCom
Continuing ...
java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(ModelCom);
Continuing ...

Oder soll ich das irgendwie serialisieren?

Hier ist mal ein Test Code mit dem ich versuche das zu verstehen und zum laufen zu bringen:

Code:
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.query.*;

import org.apache.xml.serialize.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.beans.XMLEncoder;
import java.io.*;


public class bla {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Query query = QueryFactory.create("PREFIX foaf: <http://xmlns.com/foaf/0.1/> " +
				"PREFIX org: <http://example.com/ns#> " +
				"CONSTRUCT { ?x foaf:name ?name } " + 
				"WHERE  { ?x org:employeeName ?name }");
		QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
		Model results = qexec.execConstruct();

		
		try {
			FileOutputStream fstream = new FileOutputStream("test.xml");
			  XMLEncoder xenc = new XMLEncoder(fstream);
			  xenc.writeObject(results);
			  // results.write(fstream, "TURTLE");
		} catch (Exception e){//Catch exception if any
			System.err.println("Error: " + e.getMessage());
	    }	
	}
}

Danke schon mal im voraus!

lg Meiki
 
Zurück