Hi Andy, I am able to find out the issue: In my OWL file, I am importing another owl like: <owl:imports rdf:resource="file:metamodel/businessArchitectureOntology.owl"/>
metamodel/businessArchitectureOntology.owl file is present in a jar file. This import used to work with Jena 2, but with Jena 3, businessArchitectureOntology.owl is not getting loaded from the jar. I copied this owl at a local location and updated the path and then it started working in Jena 3 as well. So can you please let me know, how can I specify owl:imports in Jena 3 to load a owl file from a jar that is present in classpath? Regards, Ashwani On 31/07/20, 1:13 PM, "Andy Seaborne" <[email protected]> wrote: On 30/07/2020 15:42, Ashwani Rathi wrote: > Hi, > We are upgrading Jena from version 2.8.8 I think you mean ARQ-2.8.8 (2011-04-21), which is a pre-Apache release. It uses jena 2.6.4 (2010-12-10) - sourceforge releases. License differences obviously. I don't believe there was a Jena 2.8.8, at least not an official one. At Apache, Jena releases start 2.7, or 2.9 for ARQ, then jump to 2.10 (and that was 2013) to sync numbering. In summary - long time ago, big jump. Including RDF 1.0 to RDF 1.1 (which affects string literals). > to the latest one available 3.16.0 > Now we have the following code to initialize OntModel from a .owl input file > > public static OntModel getOntModel() > throws BusinessArchitectureException How can this throw BusinessArchitectureException? Is this the real code or an extract? > { > OntModel ontModel = null; > OntModelSpec s = new OntModelSpec(OntModelSpec.OWL_MEM_MICRO_RULE_INF); > > //FileManager fileMgr = FileManager.get(); // Used for Jena 2 > FileManager fileMgr = FileManagerImpl.get(); // Used for Jena 3 > try { > Model model = fileMgr.loadModel(REPORTS_EXTENSION_OWL_FILE_PATH); No need to use "impl" classes: Model model = RDFDataMgr.loadModel(REPORTS_EXTENSION_OWL_FILE_PATH); > ontModel = ModelFactory.createOntologyModel(s, model); > } > catch (Exception e) { > e.printStackTrace(); > } > return ontModel; > } > > This code when used in Jena 2 generated 235 OntClasses (ontModel.listClasses()), but with Jena 3 it created only 23 OntClasses. Difference is the classes like the following which are only generated while using Jena 2: > > OntClass ----------- 74a1eaff:173a0249c84:-7f26 > OntClass ----------- 74a1eaff:173a0249c84:-7ffb which are blank nodes. So, Jena3 only shows named classes? Does the file have the same number of triples when parsed with Jena2 as with Jena3? Have you tried bisecting on jena versions to see where the change happened? jena 2.7 and 2.10 onwards are in maven central so it is a matter of changing versions in a pom.xml/build.gradle file > Because of these missing classes, we are running in to issues. Which are? I ask because if it is because of a bug fix, then the application code might be doing something strange. > So just wanted to check why are these extra ont classes not getting generated with Jena 3 when we are using the same input file. > Has something changed in the api implementation? That seems to be a question that is probably about the data. Maybe something changed but in almost 10 years and no data to see it is hard to know. > Do we need to use some other createOntologyModel api in Jena 3 or need to do it some other way? > Kindly respond > > Regards, > Ashwani Andy
