![JAR search and dependency download from the Maven repository](/logo.png)
com.clarkparsia.pellint.rdfxml.RDFModelWriter Maven / Gradle / Ivy
// Copyright (c) 2006 - 2008, Clark & Parsia, LLC.
// This source code is available under the terms of the Affero General Public License v3.
//
// Please see LICENSE.txt for full license terms, including the availability of proprietary exceptions.
// Questions, comments, or requests for clarification: [email protected]
package com.clarkparsia.pellint.rdfxml;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;
import org.coode.owlapi.rdf.rdfxml.*;
import org.coode.owlapi.rdfxml.parser.AnonymousNodeChecker;
import org.coode.owlapi.rdfxml.parser.OWLRDFConsumer;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.io.StreamDocumentTarget;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyLoaderConfiguration;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
import org.semanticweb.owlapi.model.UnknownOWLOntologyException;
import org.xml.sax.SAXException;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
/**
*
* Title:
*
*
* Description:
*
*
* Copyright: Copyright (c) 2008
*
*
* Company: Clark & Parsia, LLC.
*
*
* @author Harris Lin
*/
public class RDFModelWriter {
private static final String ANON_URI = "#anon";
private static final IRI TMP_URI = IRI.create( "tag:clarkparsia.com,2008:pellint:tmp" );
private static String toString(RDFNode v) {
if( v.isLiteral() )
return ((Literal) v).getLexicalForm();
else if( v.isAnon() )
return ANON_URI + v.asNode().getBlankNodeLabel();
else
return ((Resource) v).getURI();
}
private static OWLOntology convert(RDFModel model, OWLOntologyManager manager)
throws OWLOntologyCreationException, SAXException {
OWLOntology ontology = manager.createOntology( TMP_URI );
OWLRDFConsumer consumer = new OWLRDFConsumer( ontology,
new AnonymousNodeChecker() {
@Override
public boolean isAnonymousNode(IRI iri)
{
return isAnonymousNode( iri.toString() );
}
@Override
public boolean isAnonymousSharedNode(String iri)
{
return iri.startsWith( ANON_URI );
}
@Override
public boolean isAnonymousNode(String iri)
{
return iri.startsWith( ANON_URI );
}
}, new OWLOntologyLoaderConfiguration() );
consumer.startModel( "" );
for( Statement stmt : model.getStatements() ) {
String subj = toString( stmt.getSubject() );
String pred = toString( stmt.getPredicate() );
RDFNode vObj = stmt.getObject();
String obj = toString( vObj );
if( vObj instanceof Literal ) {
Literal literal = (Literal) vObj;
String datatypeURI = literal.getDatatypeURI();
String lang = literal.getLanguage();
if( lang != null && lang.length() == 0 )
lang = null;
consumer.statementWithLiteralValue( subj, pred, obj, lang, datatypeURI );
}
else {
consumer.statementWithResourceValue( subj, pred, obj );
}
}
consumer.endModel();
return ontology;
}
public void writePretty(OutputStream out, RDFModel model) throws IOException {
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLOntology ontology = null;
try {
ontology = convert( model, manager );
} catch( OWLOntologyCreationException e ) {
throw new RuntimeException( e );
} catch( SAXException e ) {
throw new RuntimeException( e );
}
try {
manager.saveOntology( ontology, new StreamDocumentTarget( out ) );
} catch( UnknownOWLOntologyException e ) {
throw new RuntimeException( e );
} catch( OWLOntologyStorageException e ) {
throw new IOException( e.getMessage() );
}
}
public void write(OutputStream out, RDFModel m) {
Model model = ModelFactory.createDefaultModel();
// for( Map.Entry entry : m.getNamespaces().entrySet() ) {
// writer.handleNamespace( entry.getKey(), entry.getValue() );
// }
//
// for( String comment : m.getComments() ) {
// writer.handleComment( comment );
// }
for( Statement stmt : m.getStatements() ) {
model.add( stmt );
}
model.write( out );
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy