/** * Serializes a batch of triples corresponding to a predicate into one file. Upper bound: * TRIPLE_LIMIT_PER_FILE. */ private static int serializeTripleBatch( OWLOntology ontology, QuestOWLIndividualAxiomIterator iterator, String filePrefix, String predicateName, int fileCount, String format) throws Exception { String fileName = filePrefix + fileCount + ".owl"; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); // Main buffer OWLOntology aBox = manager.createOntology(IRI.create(predicateName)); // Add the signatures for (OWLDeclarationAxiom axiom : ontology.getAxioms(AxiomType.DECLARATION)) { manager.addAxiom(aBox, axiom); } int tripleCount = 0; while (iterator.hasNext() && (tripleCount < TRIPLE_LIMIT_PER_FILE)) { manager.addAxiom(aBox, iterator.next()); tripleCount++; } // BufferedOutputStream output = new BufferedOutputStream(new // FileOutputStream(outputPath.toFile())); // BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, "UTF-8")); BufferedWriter writer = new BufferedWriter(new FileWriter(fileName)); manager.saveOntology(aBox, getOntologyFormat(format), new WriterDocumentTarget(writer)); return tripleCount; }
private void runWithSeparateFiles() { if (owlFile == null) { throw new NullPointerException("You have to specify an ontology file!"); } OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLOntology ontology = null; OBDADataFactory obdaDataFactory = OBDADataFactoryImpl.getInstance(); try { ontology = manager.loadOntologyFromOntologyDocument((new File(owlFile))); if (disableReasoning) { /* * when reasoning is disabled, we extract only the declaration assertions for the vocabulary */ ontology = extractDeclarations(manager, ontology); } Collection<Predicate> predicates = new ArrayList<>(); for (OWLClass owlClass : ontology.getClassesInSignature()) { Predicate predicate = obdaDataFactory.getClassPredicate(owlClass.getIRI().toString()); predicates.add(predicate); } for (OWLDataProperty owlDataProperty : ontology.getDataPropertiesInSignature()) { Predicate predicate = obdaDataFactory.getDataPropertyPredicate(owlDataProperty.getIRI().toString()); predicates.add(predicate); } for (OWLObjectProperty owlObjectProperty : ontology.getObjectPropertiesInSignature()) { Predicate predicate = obdaDataFactory.getObjectPropertyPredicate(owlObjectProperty.getIRI().toString()); predicates.add(predicate); } OBDAModel obdaModel = loadMappingFile(mappingFile); Ontology inputOntology = OWLAPI3TranslatorUtility.translate(ontology); obdaModel.declareAll(inputOntology.getVocabulary()); int numPredicates = predicates.size(); int i = 1; for (Predicate predicate : predicates) { System.err.println(String.format("Materializing %s (%d/%d)", predicate, i, numPredicates)); serializePredicate(ontology, inputOntology, obdaModel, predicate, outputFile, format); i++; } } catch (OWLOntologyCreationException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }
private void importFile( InputStream in, IRI documentIRI, File inDir, Authorizations authorizations) throws Exception { byte[] inFileData = IOUtils.toByteArray(in); Reader inFileReader = new InputStreamReader(new ByteArrayInputStream(inFileData)); OWLOntologyLoaderConfiguration config = new OWLOntologyLoaderConfiguration(); OWLOntologyManager m = createOwlOntologyManager(config, documentIRI); OWLOntologyDocumentSource documentSource = new ReaderDocumentSource(inFileReader, documentIRI); OWLOntology o = m.loadOntologyFromOntologyDocument(documentSource, config); storeOntologyFile(new ByteArrayInputStream(inFileData), documentIRI); for (OWLClass ontologyClass : o.getClassesInSignature()) { if (!o.isDeclared(ontologyClass, false)) { continue; } importOntologyClass(o, ontologyClass, inDir, authorizations); } for (OWLDataProperty dataTypeProperty : o.getDataPropertiesInSignature()) { if (!o.isDeclared(dataTypeProperty, false)) { continue; } importDataProperty(o, dataTypeProperty); } for (OWLObjectProperty objectProperty : o.getObjectPropertiesInSignature()) { if (!o.isDeclared(objectProperty, false)) { continue; } importObjectProperty(o, objectProperty); } for (OWLObjectProperty objectProperty : o.getObjectPropertiesInSignature()) { if (!o.isDeclared(objectProperty, false)) { continue; } importInverseOf(o, objectProperty); } }
public void runWithSingleFile() { BufferedOutputStream output = null; BufferedWriter writer = null; try { final long startTime = System.currentTimeMillis(); if (outputFile != null) { output = new BufferedOutputStream(new FileOutputStream(outputFile)); } else { output = new BufferedOutputStream(System.out); } writer = new BufferedWriter(new OutputStreamWriter(output, "UTF-8")); OBDAModel obdaModel = loadMappingFile(mappingFile); OWLOntology ontology = null; OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); OWLAPI3Materializer materializer = null; if (owlFile != null) { // Loading the OWL ontology from the file as with normal OWLReasoners ontology = manager.loadOntologyFromOntologyDocument((new File(owlFile))); if (disableReasoning) { /* * when reasoning is disabled, we extract only the declaration assertions for the vocabulary */ ontology = extractDeclarations(manager, ontology); } Ontology onto = OWLAPI3TranslatorUtility.translate(ontology); obdaModel.declareAll(onto.getVocabulary()); materializer = new OWLAPI3Materializer(obdaModel, onto, DO_STREAM_RESULTS); } else { ontology = manager.createOntology(); materializer = new OWLAPI3Materializer(obdaModel, DO_STREAM_RESULTS); } // OBDAModelSynchronizer.declarePredicates(ontology, obdaModel); QuestOWLIndividualAxiomIterator iterator = materializer.getIterator(); while (iterator.hasNext()) manager.addAxiom(ontology, iterator.next()); OWLOntologyFormat ontologyFormat = getOntologyFormat(format); manager.saveOntology(ontology, ontologyFormat, new WriterDocumentTarget(writer)); System.err.println("NR of TRIPLES: " + materializer.getTriplesCount()); System.err.println("VOCABULARY SIZE (NR of QUERIES): " + materializer.getVocabularySize()); materializer.disconnect(); if (outputFile != null) output.close(); final long endTime = System.currentTimeMillis(); final long time = endTime - startTime; System.out.println("Elapsed time to materialize: " + time + " {ms}"); } catch (Exception e) { System.out.println("Error materializing ontology:"); e.printStackTrace(); } }