On 03/08/2020 13:55, Ashwani Rathi wrote:
Hi Andy,
I tried removing 'file:', but that didn't work.
I also tried adding a http:// but that didn't work either.
Have you checked what the java resource name is for
"businessArchitectureOntology.owl"?
I can't use an absolute path as the imported owl file is contained in other jar
file.
I found something like org.apache.jena.util.FileManager.addLocatorZip(String
zfn) .. But didn't get any examples on how can we use a Zip locator to load an
owl file from another jar.
Can you please help on how can we add a Zip Locator to load owl from a jar
file? Or some other pointer that might help to address this issue?
The suggestion is have a URI for the "<owl:imports rdf:resource=" and a
rename in a location mapper - see below.
Factors like whether there is a non-default OntDocumentManager will matter.
I'd suggest writing a small tests case to get things working. There are
quite a few details here.
(Not sure why you want businessArchitectureOntology.owl in a jar - seems
to make things complicated.)
This works:
---- owl.rdf
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
>
<owl:Ontology>
<owl:imports rdf:resource="http://ex/ont.owl"/>
</owl:Ontology>
</rdf:RDF>
---- src/main/resources/data-ont.ttl
---- (so it is on the classpath as "data-ont.ttl")
PREFIX : <http://example/>
:DATA :PREDICATE 123456789 .
---- Code
public static void main(String...a) {
OntModel example =
ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
// Add a rename.
example.getDocumentManager()
.getFileManager()
.getLocationMapper()
.addAltEntry("http://ex/ont.owl", "data-ont.ttl");
// Load
example.read("owl.rdf");
// Print
example.writeAll(System.out, "TTL");
System.out.println("DONE");
System.exit(0);
Regards,
Ashwani
There is also use renaming - put a proper http:// above (or if you want
a file: with absolute path. The relative file path is making things
complicated.
https://urldefense.com/v3/__https://jena.apache.org/documentation/notes/stream-manager.html__;!!GqivPVa7Brio!P8xYoCIVAFctOvPeR-sdSBylcunyriAW29Zwuwh2l6H72p-2yTkkxADbPTP2XZsDQw$
RDFParser gives detail control if you don't want a global setup for
StreamManager.
Regards,
Ashwani
On 31/07/20, 8:04 PM, "Andy Seaborne" <[email protected]> wrote:
On 31/07/2020 14:22, Ashwani Rathi wrote:
> 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?
Probably - don't put "file:" on the front but relative URI resolution is
going to make thinds difficult.
There is also use renaming - put a proper http:// above (or if you want
a file: with absolute path. The relative file path is making things
complicated.
https://urldefense.com/v3/__https://jena.apache.org/documentation/notes/stream-manager.html__;!!GqivPVa7Brio!P8xYoCIVAFctOvPeR-sdSBylcunyriAW29Zwuwh2l6H72p-2yTkkxADbPTP2XZsDQw$
RDFParser gives detail control if you don't want a global setup for
StreamManager.
Andy
>
> 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
>
>
>