All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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