Difference between revisions of "Java Examples"

From Info216
Jump to: navigation, search
(Lecture 1: Java, Jena, and Eclipse)
Line 30: Line 30:
 
     }   
 
     }   
 
}</nowiki>
 
}</nowiki>
 +
 +
==Lecture 2: RDF==
 +
===Resource objects===
 +
<nowiki>
 +
package no.uib.infomedia.info216;
 +
 +
...
 +
 +
public class HelloJena {
 +
    public static void main(String[] args) {
 +
        String iriBase = "http://no.uib.infomedia.info216/";
 +
        String iriDbpedia = "http://dbpedia.org/resource/";
 +
     
 +
        Model model = ModelFactory.createDefaultModel();
 +
     
 +
        Resource resCadeTracy = model.createResource(iriBase + "Cade_Tracy");
 +
        resCadeTracy.addLiteral(FOAF.name, "Cade Tracy");
 +
     
 +
        Resource resCanada = model.createResource(iriDbpedia + "Canada");
 +
        Resource resFrance = model.createResource(iriDbpedia + "France");
 +
        Property propVisited = model.createProperty(iriBase + "visited");
 +
        resCadeTracy.addProperty(propVisited, resCanada);
 +
        resCadeTracy.addProperty(propVisited, resFrance);
 +
 +
        model.write(System.out, "TURTLE");
 +
    }
 +
}</nowiki>
 +
 +
===Language-tagged literals===
 +
<nowiki>
 +
        resFrance.addProperty(RDFS.label, "Frankrike", "no");
 +
        resFrance.addProperty(RDFS.label, "France", "en");
 +
        resFrance.addProperty(RDFS.label, "Francia", "es");</nowiki>
 +
 +
===Typed literals===
 +
<nowiki>
 +
        Property propPopEst = model.createProperty(iriDbpedia + "ontology/populationEstimate");
 +
        resFrance.addProperty(propPopEst, "66644000", XSDDatatype.XSDinteger);</nowiki>
 +
 +
===Looping through statements===
 +
<nowiki>
 +
        for (Statement stmt : model.listStatements().toList()) {
 +
            System.out.println(stmt.toString());
 +
        }</nowiki>
 +
 +
===Selecting statements===
 +
<nowiki>
 +
        for (Statement stmt : model
 +
                .listStatements((Resource)null, RDFS.label, (RDFNode)null)
 +
                .toList()) {
 +
            System.out.println("Subject:  " + stmt.getSubject().toString());
 +
            System.out.println("Predicate: " + stmt.getPredicate().toString());
 +
            System.out.println("Object:    " + stmt.getObject().toString());
 +
        }</nowiki>
 +
 +
===Using a selector===
 +
<nowiki>
 +
        for (Statement stmt : model
 +
                .listStatements(new SimpleSelector() {
 +
                    public boolean test(Statement s) {
 +
                        return (s.getPredicate().equals(FOAF.name));
 +
                    }
 +
                })
 +
                .toList()) {
 +
            System.out.println(stmt.getObject().toString());
 +
        }</nowiki>
 +
 +
===Writing to file===
 +
<nowiki>
 +
        try {
 +
            model.write(new FileOutputStream("test.ttl"), "TURTLE");
 +
        } catch (Exception e) {
 +
            // TODO: handle exception
 +
        }</nowiki>
 +
 +
===Contents of '''test.ttl'''===
 +
<nowiki>
 +
<http://no.uib.infomedia.info216/Cade_Tracy>
 +
        <http://no.uib.infomedia.info216/visited>
 +
                <http://dbpedia.org/resource/France> , <http://dbpedia.org/resource/Canada> ;
 +
        <http://xmlns.com/foaf/0.1/name>
 +
                "Cade Tracy" .
 +
 +
<http://dbpedia.org/resource/France>
 +
        <http://www.w3.org/2000/01/rdf-schema#label>
 +
                "Francia"@es , "France"@en , "Frankrike"@no ;
 +
        <http://dbpedia.org/resource/ontology/populationEstimate>
 +
                66644000 .</nowiki>
 +
 +
===Reading from file===
 +
<nowiki>
 +
package no.uib.infomedia.sinoa.info216;
 +
 +
import java.io.FileInputStream;
 +
 +
import org.apache.jena.rdf.model.Model;
 +
import org.apache.jena.rdf.model.ModelFactory;
 +
 +
public class ReadJena {
 +
 +
    public static void main(String[] args) {
 +
        Model model = ModelFactory.createDefaultModel();
 +
     
 +
        try {
 +
            model.read(new FileInputStream("test.ttl"), "http://ex.org/", "TURTLE");
 +
        } catch (Exception e) {
 +
            // TODO: handle exception
 +
        }
 +
     
 +
        model.write(System.out);
 +
    }
 +
}</nowiki>
 +
 +
===Reading from web resource===
 +
<nowiki>
 +
package no.uib.infomedia.sinoa.info216;
 +
 +
import java.io.InputStream;
 +
import java.net.HttpURLConnection;
 +
import java.net.URL;
 +
 +
import org.apache.jena.rdf.model.Model;
 +
import org.apache.jena.rdf.model.ModelFactory;
 +
 +
public class HttpTest {
 +
 +
    public static void main(String[] args) {
 +
        Model model = ModelFactory.createDefaultModel();
 +
     
 +
        try {
 +
            URL url = new URL("http://people.uib.no/sinoa/test.ttl"); 
 +
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
 +
            InputStream is = urlConnection.getInputStream();
 +
            model.read(is, "http://ex.org/", "TURTLE");
 +
        } catch (Exception e) {
 +
            // TODO: handle exception
 +
        }
 +
     
 +
        model.write(System.out);
 +
    }
 +
}</nowiki>
 +
(There are many other ways to download web resources from Java, but HttpUrlConnection is a straightforward and built-in way to get started.)
  
 
&nbsp;
 
&nbsp;
  
 
<div class="credits" style="text-align: right; direction: ltr; margin-left: 1em;">''INFO216, UiB, Spring 2017-2018, Andreas L. Opdahl (c). All code examples are [https://creativecommons.org/choose/zero/ CC0].'' </div>
 
<div class="credits" style="text-align: right; direction: ltr; margin-left: 1em;">''INFO216, UiB, Spring 2017-2018, Andreas L. Opdahl (c). All code examples are [https://creativecommons.org/choose/zero/ CC0].'' </div>

Revision as of 18:25, 25 January 2018

Here are the code examples we have used in the live sessions during the lectures - along with a few additional ones.

(More will appear as the course progresses.)

Lecture 1: Java, Jena, and Eclipse

Hello Jena

package no.uib.sinoa.info216;

import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.vocabulary.FOAF;

public class HelloJena {

    public static void main(String[] args) {
       
        Model model = ModelFactory.createDefaultModel();
       
	Resource andreas = model.createResource(base + "Andreas");
	Resource info216 = model.createResource(base + "INFO216");
	Property teaches = model.createProperty(base + "teaches");
	andreas.addProperty(teaches, info216);

	andreas.addLiteral(FOAF.name, "Andreas L Opdahl");

        model.write(System.out, "TURTLE");
    }   
}

Lecture 2: RDF

Resource objects

package no.uib.infomedia.info216;

...

public class HelloJena {
    public static void main(String[] args) {
        String iriBase = "http://no.uib.infomedia.info216/";
        String iriDbpedia = "http://dbpedia.org/resource/";
       
        Model model = ModelFactory.createDefaultModel();
       
        Resource resCadeTracy = model.createResource(iriBase + "Cade_Tracy");
        resCadeTracy.addLiteral(FOAF.name, "Cade Tracy");
       
        Resource resCanada = model.createResource(iriDbpedia + "Canada");
        Resource resFrance = model.createResource(iriDbpedia + "France");
        Property propVisited = model.createProperty(iriBase + "visited");
        resCadeTracy.addProperty(propVisited, resCanada);
        resCadeTracy.addProperty(propVisited, resFrance);

        model.write(System.out, "TURTLE");
    }
}

Language-tagged literals

        resFrance.addProperty(RDFS.label, "Frankrike", "no");
        resFrance.addProperty(RDFS.label, "France", "en");
        resFrance.addProperty(RDFS.label, "Francia", "es");

Typed literals

        Property propPopEst = model.createProperty(iriDbpedia + "ontology/populationEstimate");
        resFrance.addProperty(propPopEst, "66644000", XSDDatatype.XSDinteger);

Looping through statements

        for (Statement stmt : model.listStatements().toList()) {
            System.out.println(stmt.toString());
        }

Selecting statements

        for (Statement stmt : model
                .listStatements((Resource)null, RDFS.label, (RDFNode)null)
                .toList()) {
            System.out.println("Subject:   " + stmt.getSubject().toString());
            System.out.println("Predicate: " + stmt.getPredicate().toString());
            System.out.println("Object:    " + stmt.getObject().toString());
        }

Using a selector

        for (Statement stmt : model
                .listStatements(new SimpleSelector() {
                    public boolean test(Statement s) {
                        return (s.getPredicate().equals(FOAF.name));
                    }
                })
                .toList()) {
            System.out.println(stmt.getObject().toString());
        }

Writing to file

        try {
            model.write(new FileOutputStream("test.ttl"), "TURTLE");
        } catch (Exception e) {
            // TODO: handle exception
        }

Contents of test.ttl

<http://no.uib.infomedia.info216/Cade_Tracy>
        <http://no.uib.infomedia.info216/visited>
                <http://dbpedia.org/resource/France> , <http://dbpedia.org/resource/Canada> ;
        <http://xmlns.com/foaf/0.1/name>
                "Cade Tracy" .

<http://dbpedia.org/resource/France>
        <http://www.w3.org/2000/01/rdf-schema#label>
                "Francia"@es , "France"@en , "Frankrike"@no ;
        <http://dbpedia.org/resource/ontology/populationEstimate>
                66644000 .

Reading from file

package no.uib.infomedia.sinoa.info216;

import java.io.FileInputStream;

import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;

public class ReadJena {

    public static void main(String[] args) {
        Model model = ModelFactory.createDefaultModel();
       
        try {
            model.read(new FileInputStream("test.ttl"), "http://ex.org/", "TURTLE");
        } catch (Exception e) {
            // TODO: handle exception
        }
       
        model.write(System.out);
    }
}

Reading from web resource

package no.uib.infomedia.sinoa.info216;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;

public class HttpTest {

    public static void main(String[] args) {
        Model model = ModelFactory.createDefaultModel();
       
        try {
            URL url = new URL("http://people.uib.no/sinoa/test.ttl");  
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
            InputStream is = urlConnection.getInputStream();
            model.read(is, "http://ex.org/", "TURTLE");
        } catch (Exception e) {
            // TODO: handle exception
        }
       
        model.write(System.out);
    }
}

(There are many other ways to download web resources from Java, but HttpUrlConnection is a straightforward and built-in way to get started.)

 

INFO216, UiB, Spring 2017-2018, Andreas L. Opdahl (c). All code examples are CC0.