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).
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#<ht
tp://www.semanticweb.org/**darius/ontologies/2013/6/**mymodel#>
<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-****<http://www.w3.org
/1999/02/22-**>>>>>
rdf-syntax-ns#
<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#><
http://www.w3.org/**2000/01/rdf-schema#<http://www.w3.org/2000/01/rdf-s
chema#>>>>>
"
+ "PREFIX owl:
<http://www.w3.org/2002/07/****owl#<http://www.w3.or
g/2002/07/**owl#>>>>>
<http://www.w3.org/2002/**07/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<http://www.semanticweb.org/**darius/ontologies/2013/6/
**mymodel#Kristina>
<http://www.**semanticweb.org/darius/**ontologies/2013/6/mymodel#**
Kristina<http://www.semanticweb.org/darius/ontologies/2013/6/mymodel#K
ristina>
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#<http://www.w3.org/2002/07/**
owl#>>>>>
<http://www.w3.org/2002/**07/owl# <http://www.w3.org/2002/07/owl#>>"
<!ENTITY xsd
"http://www.w3.org/2001/****XMLSchema#<http://www.w3.org/2001/
**XMLSchema#>>>>>
<http://www.w3.org/**2001/XMLSchema#<http://www.w3.org/2001/XMLSchema#>
"
<!ENTITY rdfs
"http://www.w3.org/2000/01/****rdf-schema#<http://www.w3.org/2
000/01/**rdf-schema#>>>>>
<http://www.w3.org/**2000/01/rdf-schema#<http://www.w3.org/2000/01/rdf-> >>>>
schema#>>>>>
"
<!ENTITY rdf
"http://www.w3.org/1999/02/22-****rdf-syntax-ns#<http://www.w3
.org/1999/02/22-**rdf-syntax-ns#>>>>>
<http://www.**w3.org/1999/02/22-rdf-syntax-**ns#<http://www.w3.org/1999
/02/22-rdf-syntax-ns#>>>>>
"
]>
<rdf:RDF xmlns="http://www.semanticweb.****org/darius/ontologies/2013/*
*8/**
mymodel# <http://www.semanticweb.org/**darius/ontologies/2013/8/**
mymodel# <http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#>
"
xml:base="http://www.**semanti**cweb.org/darius/**<http://semant
icweb.org/darius/**>>>>>
ontologies/2013/8/mymodel<http**://www.semanticweb.org/darius/**
ontologies/2013/8/mymodel<http://www.semanticweb.org/darius/ontologies/
2013/8/mymodel>
"
xmlns:rdfs="http://www.w3.org/****2000/01/rdf-schema#<http://www
.w3.org/**2000/01/rdf-schema#>>>>>
<http://**www.w3.org/2000/01/rdf-schema#<http://www.w3.org/2000/01/rdf-> >>>>
schema#> **>
"
xmlns:owl="http://www.w3.org/****2002/07/owl#<http://www.w3.org/
**2002/07/owl#>>>>>
<http://www.w3.**org/2002/07/owl# <http://www.w3.org/2002/07/owl#>>
"
xmlns:xsd="http://www.w3.org/****2001/XMLSchema#<http://www.w3.o
rg/**2001/XMLSchema#>>>>>
<http://www.**w3.org/2001/XMLSchema#<http://www.w3.org/2001/XMLSchema#>
"
xmlns:rdf="http://www.w3.org/****1999/02/22-rdf-syntax-ns#<http:
//www.w3.org/**1999/02/22-rdf-syntax-ns#>>>>>
<htt**p://www.w3.org/1999/02/22-rdf-**syntax-ns#<http://www.w3.org/1999
/02/22-rdf-syntax-ns#>
">
<owl:Ontology rdf:about="
http://www.semanticweb.org/****darius/ontologies/2013/8/****mymodel<htt
p://www.semanticweb.org/**darius/ontologies/2013/8/**mymodel>
<http://www.**semanticweb.org/darius/**ontologies/2013/8/mymodel<http:
//www.semanticweb.org/darius/ontologies/2013/8/mymodel>
"/>
<!--
//////////////////////////////****////////////////////////////**//**
///////////////////////////
//
// Classes
//
//////////////////////////////****////////////////////////////**//**
///////////////////////////
-->
<!--
http://www.semanticweb.org/****darius/ontologies/2013/8/**<http://www.s
emanticweb.org/**darius/ontologies/2013/8/**>
mymodel#MusicStyle<http://www.**semanticweb.org/darius/**
ontologies/2013/8/mymodel#**MusicStyle<http://www.semanticweb.org/dariu
s/ontologies/2013/8/mymodel#MusicStyle>>>>>
-->
<owl:Class rdf:about="
http://www.semanticweb.org/****darius/ontologies/2013/8/**<http://www.s
emanticweb.org/**darius/ontologies/2013/8/**>
mymodel#MusicStyle<http://www.**semanticweb.org/darius/**
ontologies/2013/8/mymodel#**MusicStyle<http://www.semanticweb.org/dariu
s/ontologies/2013/8/mymodel#MusicStyle>
"/>
<!--
http://www.semanticweb.org/****darius/ontologies/2013/8/**<http:
//www.semanticweb.org/**darius/ontologies/2013/8/**>>>>>
mymodel#Person--<http://www.**semanticweb.org/darius/**
ontologies/2013/8/mymodel#**Person--<http://www.semanticweb.org/darius/
ontologies/2013/8/mymodel#Person-->>>>>
<owl:Class rdf:about="
http://www.semanticweb.org/****darius/ontologies/2013/8/****
mymodel#Person<http://www.semanticweb.org/**darius/ontologies/2013/8/**
mymodel#Person>
<http://www.**semanticweb.org/darius/**ontologies/2013/8/mymodel#**
Person<http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Per
son>
"/>
<!--
//////////////////////////////****////////////////////////////**//**
///////////////////////////
//
// Individuals
//
//////////////////////////////****////////////////////////////**//**
///////////////////////////
-->
<!--
http://www.semanticweb.org/****darius/ontologies/2013/8/**<http:
//www.semanticweb.org/**darius/ontologies/2013/8/**>>>>>
mymodel#Ana<http://www.**semanticweb.org/darius/**
ontologies/2013/8/mymodel#Ana<http://www.semanticweb.org/darius/ontolog
ies/2013/8/mymodel#Ana>>>>>
**-->
<owl:NamedIndividual rdf:about="
http://www.semanticweb.org/****darius/ontologies/2013/8/****mymodel#Ana
<http://www.semanticweb.org/**darius/ontologies/2013/8/**mymodel#Ana>
<http://www.**semanticweb.org/darius/**ontologies/2013/8/mymodel#Ana<h
ttp://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Ana>
">
<rdf:type rdf:resource="
http://www.semanticweb.org/****darius/ontologies/2013/8/****
mymodel#Person<http://www.semanticweb.org/**darius/ontologies/2013/8/**
mymodel#Person>
<http://www.**semanticweb.org/darius/**ontologies/2013/8/mymodel#**
Person<http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Per
son>
"/>
</owl:NamedIndividual>
<!--
http://www.semanticweb.org/****darius/ontologies/2013/8/**<http:
//www.semanticweb.org/**darius/ontologies/2013/8/**>>>>>
mymodel#Electro--<http://www.**semanticweb.org/darius/**
ontologies/2013/8/mymodel#**Electro--<http://www.semanticweb.org/darius
/ontologies/2013/8/mymodel#Electro-->>>>>
<owl:NamedIndividual rdf:about="
http://www.semanticweb.org/****darius/ontologies/2013/8/****
mymodel#Electro<http://www.semanticweb.org/**darius/ontologies/2013/8/*
*mymodel#Electro>
<http://www.**semanticweb.org/darius/**ontologies/2013/8/mymodel#**
Electro<http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#El
ectro>
">
<rdf:type rdf:resource="
http://www.semanticweb.org/****darius/ontologies/2013/8/**<http://www.s
emanticweb.org/**darius/ontologies/2013/8/**>
mymodel#MusicStyle<http://www.**semanticweb.org/darius/**
ontologies/2013/8/mymodel#**MusicStyle<http://www.semanticweb.org/dariu
s/ontologies/2013/8/mymodel#MusicStyle>
"/>
</owl:NamedIndividual>
<!--
http://www.semanticweb.org/****darius/ontologies/2013/8/**<http:
//www.semanticweb.org/**darius/ontologies/2013/8/**>>>>>
mymodel#House--<http://www.**semanticweb.org/darius/**
ontologies/2013/8/mymodel#**House--<http://www.semanticweb.org/darius/o
ntologies/2013/8/mymodel#House-->>>>>
<owl:NamedIndividual rdf:about="
http://www.semanticweb.org/****darius/ontologies/2013/8/****
mymodel#House<http://www.semanticweb.org/**darius/ontologies/2013/8/**m
ymodel#House>
<http://www.**semanticweb.org/darius/**ontologies/2013/8/mymodel#**
House<http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Hous
e>
">
<rdf:type rdf:resource="
http://www.semanticweb.org/****darius/ontologies/2013/8/**<http://www.s
emanticweb.org/**darius/ontologies/2013/8/**>
mymodel#MusicStyle<http://www.**semanticweb.org/darius/**
ontologies/2013/8/mymodel#**MusicStyle<http://www.semanticweb.org/dariu
s/ontologies/2013/8/mymodel#MusicStyle>
"/>
</owl:NamedIndividual>
<!--
http://www.semanticweb.org/****darius/ontologies/2013/8/****
mymodel#Veronika<http://www.semanticweb.org/**darius/ontologies/2013/8/
**mymodel#Veronika>
<http://www.**semanticweb.org/darius/**ontologies/2013/8/mymodel#**
Veronika<http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#V
eronika>>>>>
-->
<owl:NamedIndividual rdf:about="
http://www.semanticweb.org/****darius/ontologies/2013/8/****
mymodel#Veronika<http://www.semanticweb.org/**darius/ontologies/2013/8/
**mymodel#Veronika>
<http://www.**semanticweb.org/darius/**ontologies/2013/8/mymodel#**
Veronika<http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#V
eronika>
">
<rdf:type rdf:resource="
http://www.semanticweb.org/****darius/ontologies/2013/8/****
mymodel#Person<http://www.semanticweb.org/**darius/ontologies/2013/8/**
mymodel#Person>
<http://www.**semanticweb.org/darius/**ontologies/2013/8/mymodel#**
Person<http://www.semanticweb.org/darius/ontologies/2013/8/mymodel#Per
son>
"/>
</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#<http://semanticw
eb.org/darius/**ontologies/2013/6/mymodel#>
<htt**p://www.semanticweb.org/**darius/ontologies/2013/6/**mymodel#<h
ttp://www.semanticweb.org/darius/ontologies/2013/6/mymodel#>>>>>>
"
+ "PREFIX rdf:
<http://www.w3.org/1999/02/22-****<http://www.w3.org/19
99/02/22-**>>>>>>
**rdf-syntax-ns#
<http://www.w3.org/1999/02/22-****rdf-syntax-ns#<http://www.w3.org/19
99/02/22-**rdf-syntax-ns#>>>>>>
<
http://www.**w3.org/1999/02/**22-rdf-syntax-**ns#<http://w3.org/1999/0
2/22-rdf-syntax-**ns#>
<http://**www.w3.org/1999/02/22-rdf-**syntax-ns#<http://www.w3.org/19
99/02/22-rdf-syntax-ns#>>>>>>
"
+ "PREFIX rdfs: <http://www.w3.org/2000/01/*****
*rdf-schema# <http://www.w3.org/2000/01/****rdf-schema#><
http://www.w3.**org/2000/01/**rdf-schema#<http://www.w3.org/2000/01/**
rdf-schema#>
<http://www.w3.org/**2000/01/**rdf-schema#<http://www.w3.org/**2000/01
/rdf-schema#>
<http://www.w3.org/**2000/01/rdf-schema#<http://www.w3.org/2000/01/rd
f-schema#>>>>>>
"
+ "PREFIX owl:
<http://www.w3.org/2002/07/******owl#<http://www.w3.o
rg/2002/07/****owl#>>>>>>
<http://www.w3.org/2002/**07/**owl# <http://www.w3.org/2002/07/**owl#>
<http://www.w3.org/2002/**07/**owl#
<http://www.w3.org/2002/**07/owl#><
http://www.w3.org/2002/07/**owl# <http://www.w3.org/2002/07/owl#>>>
"
+ "INSERT DATA
{<http://www.semanticweb.org/******<http://www.semant
icweb.org/****>>>>>>
<http://www.semanticweb.**org/** <http://www.semanticweb.org/**>>
darius/ontologies/2013/6/******mymodel#Kristina<http://www.**
semanticweb.org/darius/****ontologies/2013/6/mymodel#****Kristina<http
://semanticweb.org/darius/**ontologies/2013/6/mymodel#**Kristina>
<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/mymo
del#****Kristina>
<http://www.**semanticweb.org/darius/****ontologies/2013/6/mymodel#**
*
*Kristina<http://www.semanticweb.org/darius/**ontologies/2013/6/mymod
el#**Kristina>
<http://www.**semanticweb.org/**darius/**ontologies/2013/6/**
mymodel#**<http://semanticweb.org/darius/**ontologies/2013/6/mymodel#*
*>
Kristina<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.
}
}