ontologyserializer.java

来自「Semantic Web Ontology Editor」· Java 代码 · 共 157 行

JAVA
157
字号
/* * Created on Apr 11, 2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */package org.mindswap.swoop.utils.rdfapi;import java.io.IOException;import java.io.OutputStreamWriter;import java.net.URI;import java.net.URISyntaxException;import java.util.Iterator;import java.util.Set;import java.util.TreeSet;import org.mindswap.swoop.utils.owlapi.QNameShortFormProvider;import org.semanticweb.owl.io.vocabulary.OWLVocabularyAdapter;import org.semanticweb.owl.model.OWLException;import org.xml.sax.InputSource;import edu.unika.aifb.rdf.api.model.Model;import edu.unika.aifb.rdf.api.model.ModelException;import edu.unika.aifb.rdf.api.model.NodeFactory;import edu.unika.aifb.rdf.api.model.Resource;import edu.unika.aifb.rdf.api.model.Statement;import edu.unika.aifb.rdf.api.syntax.RDFParser;import edu.unika.aifb.rdf.api.util.ModelConsumer;import edu.unika.aifb.rdf.api.util.RDFManager;/** * @author ronwalf * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */public class OntologySerializer implements RDFSerializer {			protected Model model;	protected NodeFactory nodeFactory;	protected OWLVocabularyAdapter owl = OWLVocabularyAdapter.INSTANCE;	protected QNameShortFormProvider qnames;	protected RDFWriter rdfWriter;		protected URI base;	protected Resource baseOntology;	protected NodeComparator nodeComparator;		public OntologySerializer(Resource baseOntology) {		qnames = new QNameShortFormProvider();		this.baseOntology = baseOntology;		try {			setBase(new URI(baseOntology.getURI()));		} catch (URISyntaxException e) {			// Don't care		} catch (ModelException e) {			// Don't care		}	}		public OntologySerializer(QNameShortFormProvider qnames) {		this.qnames = qnames;	}		protected void gatherEntities(XMLWriter xml) throws URISyntaxException, ModelException {				Model ontModel = model.find(null, 				nodeFactory.createResource(owl.getInstanceOf()), 				nodeFactory.createResource(owl.getOntology()));		for (Iterator ontIter = ontModel.iterator(); ontIter.hasNext();) {			Statement statement = (Statement) ontIter.next();			Resource ontologyResource = statement.subject();			if (!SwoopResourceImpl.isAnonymous(ontologyResource)) {				String prefix = qnames.getPrefix(ontologyResource.getURI());				if (prefix == null) {					URI ontURI = new URI(ontologyResource.getURI());					URI testName = ontURI.resolve("#none");										qnames.shortForm(testName);					String prefixURI = qnames.findPrefixURI(testName);					prefix = qnames.getPrefix(prefixURI);				}				if (prefix != null) {					xml.addEntity(prefix, ontologyResource.getURI());				}			}		}	}		/**	 * @param xml	 * @param model	 */	public void serialize(XMLWriter xml, Model model) throws IOException, OWLException {		this.model = model;		try {			this.nodeFactory = model.getNodeFactory();			gatherEntities(xml);		} catch (ModelException e) {			throw new OWLException(e);		} catch (URISyntaxException e) {		}				rdfWriter = new RDFWriter(xml, model, qnames);		if (base != null) {			rdfWriter.setBase(base);		}				rdfWriter.startDocument();		rdfWriter.setMaxLevel(10);		serializeType("Ontology Information", owl.getOntology());		rdfWriter.setMaxLevel(1);		serializeType("Classes", owl.getClass_());		serializeType("Datatypes", owl.getDatatype());		serializeType("Annotation Properties", owl.getAnnotationProperty());		serializeType("Datatype Properties", owl.getDatatypeProperty());		serializeType("Object Properties", owl.getObjectProperty());		rdfWriter.serializeAll("Instances");				rdfWriter.endDocument();	}	/**	 * @param class_	 */	protected void serializeType(String description, String class_) throws IOException, OWLException {		//System.out.println("Serializing type "+class_);		Set subjects = new TreeSet(nodeComparator);		boolean started = false;		try {			Model typeModel = model.find(null, 					nodeFactory.createResource(owl.getInstanceOf()), 					nodeFactory.createResource(class_));						for (Iterator statementIter = typeModel.iterator(); statementIter.hasNext();) {				Statement statement = (Statement) statementIter.next();				subjects.add(statement.subject());			}			//System.out.println("Serializing "+subjects);			rdfWriter.serializeSubjects(subjects, description);					} catch (ModelException e) {			throw new OWLException(e);		}	}		/**	 * @param logicalURI	 */	public void setBase(URI logicalURI) {		base = logicalURI;		nodeComparator = new NodeComparator(base.toString());	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?