Apache Jena
Tutorial examples
see https://jena.apache.org/tutorials/rdf_api.html
Script to compile and run tutorial examples
#!/bin/bash
# WF 2020-06-14
num=$1
pwd=$(pwd)
base=$pwd/apache-jena-3.15.0
cd $base/src-examples
echo compiling Tutorial $num
javac -cp "$base/lib/*" jena/examples/rdf/Tutorial$num.java
echo running Tutorial $num
java -cp ".:$base/lib/*" jena/examples/rdf/Tutorial$num
Tutorial03.java
Java Code
/** Tutorial 3 Statement attribute accessor methods
*/
public class Tutorial03 extends Object {
public static void main (String args[]) {
// some definitions
String personURI = "http://somewhere/JohnSmith";
String givenName = "John";
String familyName = "Smith";
String fullName = givenName + " " + familyName;
// create an empty model
Model model = ModelFactory.createDefaultModel();
// create the resource
// and add the properties cascading style
Resource johnSmith
= model.createResource(personURI)
.addProperty(VCARD.FN, fullName)
.addProperty(VCARD.N,
model.createResource()
.addProperty(VCARD.Given, givenName)
.addProperty(VCARD.Family, familyName));
// list the statements in the graph
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(" .");
}
}
}
Trying it
./ct 03
compiling Tutorial 03
running Tutorial 03
http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#N 7555a24e-8f13-4508-91f0-9dfb26cd2239 .
http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#FN "John Smith" .
7555a24e-8f13-4508-91f0-9dfb26cd2239 http://www.w3.org/2001/vcard-rdf/3.0#Family "Smith" .
7555a24e-8f13-4508-91f0-9dfb26cd2239 http://www.w3.org/2001/vcard-rdf/3.0#Given "John" .
Tutorial04.java
Java Code
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jena.examples.rdf ;
import org.apache.jena.rdf.model.*;
import org.apache.jena.vocabulary.*;
/** Tutorial 4 - create a model and write it in XML form to standard out
*/
public class Tutorial04 extends Object {
// some definitions
static String tutorialURI = "http://hostname/rdf/tutorial/";
static String briansName = "Brian McBride";
static String briansEmail1 = "brian_mcbride@hp.com";
static String briansEmail2 = "brian_mcbride@hpl.hp.com";
static String title = "An Introduction to RDF and the Jena API";
static String date = "23/01/2001";
public static void main (String args[]) {
// some definitions
String personURI = "http://somewhere/JohnSmith";
String givenName = "John";
String familyName = "Smith";
String fullName = givenName + " " + familyName;
// create an empty model
Model model = ModelFactory.createDefaultModel();
// create the resource
// and add the properties cascading style
Resource johnSmith
= model.createResource(personURI)
.addProperty(VCARD.FN, fullName)
.addProperty(VCARD.N,
model.createResource()
.addProperty(VCARD.Given, givenName)
.addProperty(VCARD.Family, familyName));
// now write the model in XML form to a file
model.write(System.out);
}
}
Trying it
./ct 04
compiling Tutorial 04
running Tutorial 04
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:vcard="http://www.w3.org/2001/vcard-rdf/3.0#">
<rdf:Description rdf:about="http://somewhere/JohnSmith">
<vcard:N rdf:parseType="Resource">
<vcard:Family>Smith</vcard:Family>
<vcard:Given>John</vcard:Given>
</vcard:N>
<vcard:FN>John Smith</vcard:FN>
</rdf:Description>
</rdf:RDF>
Tutorial05.java
Java Code
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jena.examples.rdf ;
import org.apache.jena.rdf.model.*;
import org.apache.jena.util.FileManager;
import java.io.*;
/** Tutorial 5 - read RDF XML from a file and write it to standard out
*/
public class Tutorial05 extends Object {
/**
NOTE that the file is loaded from the class-path and so requires that
the data-directory, as well as the directory containing the compiled
class, must be added to the class-path when running this and
subsequent examples.
*/
static final String inputFileName = "vc-db-1.rdf";
public static void main (String args[]) {
// create an empty model
Model model = ModelFactory.createDefaultModel();
InputStream in = FileManager.get().open( inputFileName );
if (in == null) {
throw new IllegalArgumentException( "File: " + inputFileName + " not found");
}
// read the RDF/XML file
model.read(in, "");
// write it to standard out
model.write(System.out);
}
}
Try it!
wget https://jena.apache.org/tutorials/sparql_data/vc-db-1.rdf
mv vc-db-1.rdf apache-jena-3.15.0/src-examples/
./ct 05
compiling Tutorial 05
running Tutorial 05
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
<rdf:Description rdf:about="http://somewhere/SarahJones">
<vCard:N rdf:parseType="Resource">
<vCard:Given>Sarah</vCard:Given>
<vCard:Family>Jones</vCard:Family>
</vCard:N>
<vCard:FN>Sarah Jones</vCard:FN>
</rdf:Description>
<rdf:Description rdf:about="http://somewhere/JohnSmith">
<vCard:N rdf:parseType="Resource">
<vCard:Given>John</vCard:Given>
<vCard:Family>Smith</vCard:Family>
</vCard:N>
<vCard:FN>John Smith</vCard:FN>
</rdf:Description>
<rdf:Description rdf:about="http://somewhere/MattJones">
<vCard:N rdf:parseType="Resource">
<vCard:Given>Matthew</vCard:Given>
<vCard:Family>Jones</vCard:Family>
</vCard:N>
<vCard:FN>Matt Jones</vCard:FN>
</rdf:Description>
<rdf:Description rdf:about="http://somewhere/RebeccaSmith">
<vCard:N rdf:parseType="Resource">
<vCard:Given>Rebecca</vCard:Given>
<vCard:Family>Smith</vCard:Family>
</vCard:N>
<vCard:FN>Becky Smith</vCard:FN>
</rdf:Description>
</rdf:RDF>