You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by "Iturraspe Barturen, Urtza" <ur...@tecnalia.com> on 2014/08/22 11:20:34 UTC
upload and ontology and its imports
Good morning,
I am developing an application that upload an ontology and its information in a jena model. After of this I use this information to edit manually all information like classes, properties (data, object).
If a specific ontology has another ontologies imported I need to take information from them and include it in a unique Jena Model.
I have problems with prefixes, because when I import main ontology to a jena model it works well but when I add the imported ontologies (In importOntologies methos) to the model the prefixes are not maintained.
Someone can help me with this?
Thanks in advance.
The code is here:
public Model uploadModelFromFile(HttpServletRequest request,String user,String databaseName,String file,String path) {
Model model = null;
DAOOntologia daoOntologia=new DAOOntologia();
try {
if (jenaSDBConection == null) jenaSDBConection = this.abrirConexionJenaSDB(databaseName);
StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash, DatabaseType.MySQL);
Store store = StoreFactory.create(storeDesc, jenaSDBConection);
logger.trace("StoreUtils.isFormatted(store=" + store.hashCode() + ") == " + StoreUtils.isFormatted(store));
try {
logger.trace("store.getSize() == " + store.getSize());
} catch (com.hp.hpl.jena.sdb.sql.SDBExceptionSQL e) {
formatStore(store, true);
}
model = SDBFactory.connectDefaultModel(store);
path=path+file;
InputStream in = FileManager.get().open(path);
if (in == null) throw new IllegalArgumentException("Archivo no encontrado");
model.read(in, "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
in.close();
model=importOntologies(model, request,databaseName, user,path);
logger.trace("JENA (" + model.hashCode() + ") [#" + numeroConexiones + " SDBConnections]");
} catch (Exception e) {
System.out.println(e.toString());
return null;
}
return model;
}
public Model importOntologies(Model model, HttpServletRequest request,String databaseName, String user,String path){
DAOOntologia daoOntologia=new DAOOntologia();
DAOMySQL daoMysql=new DAOMySQL();
try{
HttpSession session = request.getSession();
user=(String)session.getAttribute("uname");
ServletContext context = session.getServletContext();
path = context.getRealPath("").replace("\\", "/");
path = path.substring(0, path.lastIndexOf("/"));
path += "/" + GetProperties.getString("files.raiz.upload");
logger.debug("path para guardar la ontologia ->" + path);
OntModel om = ModelFactory.createOntologyModel();
om.add(model);
om.setDynamicImports(true);
System.out.println("Importing ontologies: "+om.listImportedOntologyURIs().size());
for(Iterator it = om.listImportedOntologyURIs().iterator(); it.hasNext();)
{
String uri=it.next().toString();
System.out.println("URI:"+uri);
//to know if uri it's a file web location
String fileName="";
int slashIndex =uri.lastIndexOf('/');
int periodIndex =uri.lastIndexOf('.');
if ((slashIndex!=-1)&&(periodIndex!=-1)){
fileName=uri.substring(slashIndex + 1);
System.out.println("File name:"+fileName);
}
if (fileName.contains(".owl")||(fileName.contains(".rdf")))
{
InputStream fIn=null;
fIn=daoOntologia.saveFileFromUrlWithJavaIO(request,uri,fileName);
if (fIn!=null){
model.read(fIn,"http://www.w3.org/1999/02/22-rdf-syntax-ns#");
}
else{
model=null;
String sentenciaSql="drop database "+databaseName;
int iRes=daoMysql.executeQuery(sentenciaSql);
break;
}
}
else{
System.out.println("\t Ontology "+uri);
try{
URL myURL = new URL(uri);
URLConnection myURLConnection = myURL.openConnection();
myURLConnection.connect();
model.read(uri,"http://www.w3.org/1999/02/22-rdf-syntax-ns#");
}
catch(Exception e){
daoOntologia.deleteSpecificOntology(databaseName, user,path);
model=null;
}
}
}
}
catch (Exception e){
System.out.println(e.getMessage());
model=null;
}
return model;
}
OPTIMA - Optimization Modelling & Analytics Area
ICT - European Software Institute Division
TECNALIA
Parque Tecnológico de Bizkaia, Edificio 202
E-48170 Zamudio (Spain)
mov.: 664 00 21 51
tel.: 902 760 002 / 946 430 850 (International calls) urtza.iturraspe@tecnalia.com<ma...@tecnalia.com>
www.tecnalia.com<http://www.tecnalia.com/>
Re: upload and ontology and its imports
Posted by Dave Reynolds <da...@gmail.com>.
On 22/08/14 10:20, Iturraspe Barturen, Urtza wrote:
> Good morning,
> I am developing an application that upload an ontology and its information in a jena model. After of this I use this information to edit manually all information like classes, properties (data, object).
> If a specific ontology has another ontologies imported I need to take information from them and include it in a unique Jena Model.
> I have problems with prefixes, because when I import main ontology to a jena model it works well but when I add the imported ontologies (In importOntologies methos) to the model the prefixes are not maintained.
> Someone can help me with this?
What's the actual problem?
Prefixes are specific to a model. Prefixes defined in an imported
ontology are recorded in the model for, they don't appear in the model
for the importing ontology.
If you need to copy prefixes from one Model to another then use
setNsPrefixes.
If by "prefixes" you actually mean relative URIs then you do have a
problem with your code here:
model.read(fIn,"http://www.w3.org/1999/02/22-rdf-syntax-ns#");
should be:
model.read(fIn, uri);
The base URI for a model you download from somewhere is the place you
downloaded it from.
Dave
>
> Thanks in advance.
>
> The code is here:
>
> public Model uploadModelFromFile(HttpServletRequest request,String user,String databaseName,String file,String path) {
> Model model = null;
> DAOOntologia daoOntologia=new DAOOntologia();
> try {
> if (jenaSDBConection == null) jenaSDBConection = this.abrirConexionJenaSDB(databaseName);
> StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash, DatabaseType.MySQL);
> Store store = StoreFactory.create(storeDesc, jenaSDBConection);
> logger.trace("StoreUtils.isFormatted(store=" + store.hashCode() + ") == " + StoreUtils.isFormatted(store));
> try {
> logger.trace("store.getSize() == " + store.getSize());
> } catch (com.hp.hpl.jena.sdb.sql.SDBExceptionSQL e) {
> formatStore(store, true);
> }
> model = SDBFactory.connectDefaultModel(store);
>
> path=path+file;
> InputStream in = FileManager.get().open(path);
> if (in == null) throw new IllegalArgumentException("Archivo no encontrado");
> model.read(in, "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
> in.close();
>
> model=importOntologies(model, request,databaseName, user,path);
>
>
> logger.trace("JENA (" + model.hashCode() + ") [#" + numeroConexiones + " SDBConnections]");
> } catch (Exception e) {
> System.out.println(e.toString());
> return null;
> }
> return model;
> }
>
>
>
> public Model importOntologies(Model model, HttpServletRequest request,String databaseName, String user,String path){
> DAOOntologia daoOntologia=new DAOOntologia();
> DAOMySQL daoMysql=new DAOMySQL();
>
> try{
> HttpSession session = request.getSession();
> user=(String)session.getAttribute("uname");
> ServletContext context = session.getServletContext();
> path = context.getRealPath("").replace("\\", "/");
> path = path.substring(0, path.lastIndexOf("/"));
> path += "/" + GetProperties.getString("files.raiz.upload");
> logger.debug("path para guardar la ontologia ->" + path);
>
>
> OntModel om = ModelFactory.createOntologyModel();
> om.add(model);
> om.setDynamicImports(true);
> System.out.println("Importing ontologies: "+om.listImportedOntologyURIs().size());
> for(Iterator it = om.listImportedOntologyURIs().iterator(); it.hasNext();)
>
> {
> String uri=it.next().toString();
> System.out.println("URI:"+uri);
>
> //to know if uri it's a file web location
> String fileName="";
> int slashIndex =uri.lastIndexOf('/');
> int periodIndex =uri.lastIndexOf('.');
> if ((slashIndex!=-1)&&(periodIndex!=-1)){
> fileName=uri.substring(slashIndex + 1);
> System.out.println("File name:"+fileName);
> }
> if (fileName.contains(".owl")||(fileName.contains(".rdf")))
> {
>
> InputStream fIn=null;
> fIn=daoOntologia.saveFileFromUrlWithJavaIO(request,uri,fileName);
> if (fIn!=null){
> model.read(fIn,"http://www.w3.org/1999/02/22-rdf-syntax-ns#");
> }
> else{
> model=null;
> String sentenciaSql="drop database "+databaseName;
> int iRes=daoMysql.executeQuery(sentenciaSql);
>
> break;
> }
>
> }
> else{
> System.out.println("\t Ontology "+uri);
>
>
> try{
>
> URL myURL = new URL(uri);
> URLConnection myURLConnection = myURL.openConnection();
> myURLConnection.connect();
> model.read(uri,"http://www.w3.org/1999/02/22-rdf-syntax-ns#");
> }
> catch(Exception e){
> daoOntologia.deleteSpecificOntology(databaseName, user,path);
> model=null;
> }
>
> }
>
> }
> }
> catch (Exception e){
> System.out.println(e.getMessage());
> model=null;
> }
>
> return model;
> }
>
>
> OPTIMA - Optimization Modelling & Analytics Area
>
> ICT - European Software Institute Division
>
> TECNALIA
> Parque Tecnológico de Bizkaia, Edificio 202
> E-48170 Zamudio (Spain)
> mov.: 664 00 21 51
> tel.: 902 760 002 / 946 430 850 (International calls) urtza.iturraspe@tecnalia.com<ma...@tecnalia.com>
> www.tecnalia.com<http://www.tecnalia.com/>
>
>