Dear Andy,

thanks for your piece of code and explanations, I can compile the code if I
use "model.write(out, "RDF/XML");" not "RDFDataMgr.write(System.out, model,
Lang.TTL);" but nothing is added in the file (no changes in the file which
stores the ontology).

Regarding "RDFDataMgr.write(System.out, model, Lang.TTL);", I got the error
that TTL can not be find.

My code is the following:

package org.apache.mahout.inserttordfexample;

import java.io.File;

/**
 * this app just try/test the functionality of INSERT using SPARQL
 *
 * @param args data stream
 * @author DARIUS MILIAUSKAS
 */
public class App {

    public static void main(String[] args) {
        // INFO: File containing information about rooms, cities, prices,
persons
        java.io.File file = new
java.io.File(java.net.URLDecoder.decode(InsertRoom.class.getClassLoader().getResource("MyModel.owl").getFile()));
        InsertRoom ir = new InsertRoom();
        ir.insertRoom(file);
    }
}

package org.apache.mahout.inserttordfexample;

import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.update.Update;
import com.hp.hpl.jena.update.UpdateAction;
import com.hp.hpl.jena.update.UpdateExecutionFactory;
import com.hp.hpl.jena.update.UpdateFactory;
import com.hp.hpl.jena.update.UpdateProcessor;
import com.hp.hpl.jena.update.UpdateRequest;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.jena.riot.RDFDataMgr;
import org.openjena.riot.Lang;

/**
 *
 * @author DARIUS MILIAUSKAS
 */
public class InsertRoom {

    public void insertRoom(File owlFile) {

        // INFO: Read ontology
        OntModel model =
ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF, null);
        try {
            FileInputStream filein = new FileInputStream(owlFile);
            model.read(filein, "RDF/XML");
        } catch (IOException e) {
            System.out.print("IOException: " + e.getMessage());
        } catch (Exception e) {
            System.out.print("Problems reading ontology '" +
owlFile.getAbsolutePath() + "'. Exception message: " + e.getMessage());
        }

        /*
         * SPARQL query is used to insert a new entry in the ontology
         */
        String queryString = "PREFIX base: <
http://www.semanticweb.org/darius/ontologies/2013/6/mymodel#>"
                + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#
>"
                + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>"
                + "PREFIX owl: <http://www.w3.org/2002/07/owl#>"
                + "PREFIX foaf: <http://xmlns.com/foaf/0.1/>"
                + "INSERT DATA {<
http://www.semanticweb.org/darius/ontologies/2013/6/mymodel#Kristina> a
base:Person.} ";

        UpdateRequest query = UpdateFactory.create(queryString);
        UpdateAction.execute(query, model);
        //UpdateAction.parseExecute(queryString, model);

        // UpdateProcessor qe = UpdateExecutionFactory.create(query, model);
        //com.hp.hpl.jena.query.ResultSet results = qe.execSelect();

        try {
            FileOutputStream out = new FileOutputStream(owlFile);
            model.write(out, "RDF/XML");
            //RDFDataMgr.write(System.out, model, Lang.TTL);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(InsertRoom.class.getName()).log(Level.SEVERE,
null, ex);
        }
        //query.close(); // INFO: This needs to be closed after retrieving
the results, because it won't work!
        model.close(); //OntModel is closed as well.

        //return owlFile;
    }
}


My sample of ontology:

<?xml version="1.0"?>


<!DOCTYPE rdf:RDF [
    <!ENTITY owl "http://www.w3.org/2002/07/owl#"; >
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#"; >
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#"; >
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; >
]>


<rdf:RDF xmlns="http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#
"
     xml:base="http://www.semanticweb.org/darius/ontologies/2013/8/mymodel";
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#";
     xmlns:owl="http://www.w3.org/2002/07/owl#";
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#";
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";>
    <owl:Ontology rdf:about="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel"/>



    <!--

///////////////////////////////////////////////////////////////////////////////////////
    //
    // Classes
    //

///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!--
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#MusicStyle -->

    <owl:Class rdf:about="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#MusicStyle"/>



    <!-- http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Person-->

    <owl:Class rdf:about="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Person"/>



    <!--

///////////////////////////////////////////////////////////////////////////////////////
    //
    // Individuals
    //

///////////////////////////////////////////////////////////////////////////////////////
     -->




    <!-- http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Ana -->

    <owl:NamedIndividual rdf:about="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Ana";>
        <rdf:type rdf:resource="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Person"/>
     </owl:NamedIndividual>



    <!-- http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Electro-->

    <owl:NamedIndividual rdf:about="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Electro";>
        <rdf:type rdf:resource="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#MusicStyle"/>
    </owl:NamedIndividual>



    <!-- http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#House-->

    <owl:NamedIndividual rdf:about="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#House";>
        <rdf:type rdf:resource="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#MusicStyle"/>
    </owl:NamedIndividual>



    <!--
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Veronika -->

    <owl:NamedIndividual rdf:about="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Veronika";>
        <rdf:type rdf:resource="
http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Person"/>
    </owl:NamedIndividual>
</rdf:RDF>


Thanks,

Darius Miliauskas


2013/9/1 Andy Seaborne <[email protected]>

> On 31/08/13 17:45, Darius Miliauskas wrote:
>
>> Dear All,
>>
>> thanks, Andy, for a piece of advice! So, I followed your advices, and
>> rewrite the code in that way. However, at the end met some problems. In
>> the
>> case I use "UpdateExecutionFactory", I need GraphStore as a variable which
>> I do not have because I have only ontology, not a graph.
>>
>
> Ontologies are graphs.
>
>
>        Anyway, it compiles after some changes, but I can not see any
>> changes
>> in the file. My code looks the following way:
>>
>
> This works for me: I don't have your data.  The output shows that it
> contains the triple added.
>
> If this does not work for you as you expect, please provide a complete,
> minimal example, a description of what does happen for you and the reason
> why it is not as you expect.
>
>         Andy
>
>
> public class R2 {
>     public static void main(String...args) {
>         Model model =
>             //ModelFactory.**createDefaultModel() ;
>
> ModelFactory.**createOntologyModel(**OntModelSpec.OWL_MEM_MICRO_**RULE_INF,
> null);
>         //RDFDataMgr.read(model, "D.ttl") ;
>         String updateString = "PREFIX base: <http://www.semanticweb.org/**
> darius/ontologies/2013/6/**mymodel#<http://www.semanticweb.org/darius/ontologies/2013/6/mymodel#>
> >"
>
>             + "PREFIX rdf: 
> <http://www.w3.org/1999/02/22-**rdf-syntax-ns#<http://www.w3.org/1999/02/22-rdf-syntax-ns#>>
> "
>             + "PREFIX rdfs: 
> <http://www.w3.org/2000/01/**rdf-schema#<http://www.w3.org/2000/01/rdf-schema#>
> >"
>             + "PREFIX owl: 
> <http://www.w3.org/2002/07/**owl#<http://www.w3.org/2002/07/owl#>
> >"
>             + "INSERT DATA {<http://www.semanticweb.org/**
> darius/ontologies/2013/6/**mymodel#Kristina<http://www.semanticweb.org/darius/ontologies/2013/6/mymodel#Kristina>>
> a base:Person.} ";
>
>         UpdateRequest query = UpdateFactory.create(**updateString);
>         UpdateAction.execute(query, model);
>
> //        Resource r = model.createResource("http://**
> www.semanticweb.org/darius/**ontologies/2013/6/mymodel#**Kristina<http://www.semanticweb.org/darius/ontologies/2013/6/mymodel#Kristina>")
> ;
> //        StmtIterator siter = r.listProperties() ;
> //        for ( ; siter.hasNext() ; )
> //            System.out.println(siter.next(**)) ;
>
>         RDFDataMgr.write(System.out, model, Lang.TTL) ;
>
>         model.close(); //OntModel is closed as well.
>     }
> }
>
>

Reply via email to