- From: Chris Bizer <chris@bizer.de>
- Date: Fri, 22 Apr 2005 11:54:49 +0200
- To: <semantic-web@w3.org>
Hi Max, this site might help you: http://www.wiwiss.fu-berlin.de/suhl/bizer/toolkits/index.htm Chris -- Chris Bizer Freie Universität Berlin Phone: +49 30 838 54057 Mail: chris@bizer.de Web: www.bizer.de -----Ursprüngliche Nachricht----- Von: semantic-web-request@w3.org [mailto:semantic-web-request@w3.org] Im Auftrag von Max Voelkel Gesendet: Freitag, 22. April 2005 11:34 An: semantic-web@w3.org Cc: max@xam.de Betreff: RDFSchema in end-user application: Which Java-API to use? Scenario: I have a given RDF Schema [2] and would like to programatically add some statements to a model. The statements should be instances of the classes and properties given in the schema. Imagine for example that I am writing a FOAF-editor. Later, I also want to query my model and prints all friendship-relations like this: (person name) +" knows "+ (other person name) Note that the end-user sees no URIs, just nice Strings. Example output given in [4]. I used Jena 2.1 and came up with the code [3]. Questions to the community: -------------------------- 1. Is there a nicer way (shorter, more readdable) to do this in Jena? 2. Are there other Java-APIs that make this nicer (shorter, more readable)? As I've never tried other APIs, I would be glad to see an example. If you can send me other code-examples for the same data and schema they will make a nice introduction to the other APIs: I will put them all togehter on some webpage... Thanks in advance, Max Völkel -- University of Karlsruhe, AIFB, Knowledge Management Group room #258, building 11.40 mvo@aifb.uni-karlsruhe.de +49 721 608-4754 www.xam.de - Code snippets --- [1] Desired RDF output (N-TRIPLES format) ------------------------------------------------- <data://p1> <schema://hasFriend> <data://p2> . <data://p1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> "schema://Person" . <data://p2> <schema://hasName> "York Sure" . <data://p1> <schema://hasName> "Rudi Studer" . <data://p2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> "schema://Person" . ------------------------------------------------- [2] Given RDF Schema (N3) ------------------------------------------------- @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix foaf: <http://rdfreactor.ontoware.org/2005/04/foaf#> . foaf:Person a rdfs:Class. foaf:hasName a rdf:Property ; rdfs:domain foaf:Person ; rdfs:range rdfs:Literal . foaf:knows a rdf:Property ; rdfs:domain foaf:Person ; rdfs:range foaf:Person . ------------------------------------------------- [2] Given RDF Schema (N-TRIPLES format) ------------------------------------------------- <http://rdfreactor.ontoware.org/2005/04/foaf#hasName> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . <http://rdfreactor.ontoware.org/2005/04/foaf#knows> <http://www.w3.org/2000/01/rdf-schema#range> <http://rdfreactor.ontoware.org/2005/04/foaf#Person> . <http://rdfreactor.ontoware.org/2005/04/foaf#knows> <http://www.w3.org/2000/01/rdf-schema#domain> <http://rdfreactor.ontoware.org/2005/04/foaf#Person> . <http://rdfreactor.ontoware.org/2005/04/foaf#knows> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . <http://rdfreactor.ontoware.org/2005/04/foaf#Person> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . <http://rdfreactor.ontoware.org/2005/04/foaf#hasName> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> . <http://rdfreactor.ontoware.org/2005/04/foaf#hasName> <http://www.w3.org/2000/01/rdf-schema#domain> <http://rdfreactor.ontoware.org/2005/04/foaf#Person> . ------------------------------------------------- [3] Source code in Jena ------------------------------------------------- jenaDataModel = ModelFactory.createDefaultModel(); // create RDF [1] according to Schema [2] Property name = jenaDataModel.createProperty("schema://hasName"); Property knows = jenaDataModel.createProperty("schema://hasFriend"); Resource p1 = jenaDataModel.createResource("data://p1"); Resource p2 = jenaDataModel.createResource("data://p2"); p1.addProperty( RDF.type, "schema://Person"); p2.addProperty( RDF.type, "schema://Person"); p1.addProperty(name, "Rudi Studer"); p2.addProperty(name, "York Sure"); p1.addProperty(knows, p2); // query model and render output StmtIterator it = p1.listProperties(knows); while (it.hasNext()) { Statement s = it.nextStatement(); System.out.println(s.getSubject().getProperty(name).getLiteral() .getLexicalForm() + " knows " + jenaDataModel.createResource( s.getObject().asNode().getURI()).getProperty(name) .getLiteral().getLexicalForm()); } ------------------------------------------------- [4] Example output ------------------- Rudi Studer knows York Sure ------------------
Received on Friday, 22 April 2005 09:56:21 UTC