in jena-ontapi, there is a similar concept: https://github.com/apache/jena/blob/main/jena-ontapi/src/main/java/org/apache/jena/ontapi/model/OntID.java
imports closure should contain either version-iri or ontology-iri (if there is no version-iri). document-iri as identifier is not supported since we can't store this information inside graph, need to serialize the whole manager\repository. for document management there is `DocumentGraphRepository` in any case, the api can be refined according to user requirements On 2024/08/08 17:36:43 Phillip Ross wrote: > Oh yes, it's definitely possible, permitted, and conforms to > specification to reference an ontology document with a file-based IRI > as your example does. I was reading the thread in the wrong sequence > and thought the question was regarding the semantics of "Ontology ID" > versus the "Ontology IRI" mapping to actual ontology documents. > > In looking at the code (for example > https://github.com/owlcs/owlapi/blob/version5/api/src/main/java/org/semanticweb/owlapi/model/OWLOntologyID.java#L234) > of OWLAPI, I was thinking about how the "default document IRI" > conditionally maps to the either the Version IRI or the Ontology IRI > which is only relevant when resolving which document the Ontology Id > refers to. It just sticks in my mind due to the inordinate number of > bugs in code I've bumped into over the years (decades) with code using > OWLAPI to manager ontology documents but not relying on the OWLAPI > resolution of the default document IRI to the proper version or > ontology IRI nor bothering to read how the specification prescribes > resolving it 😁 > > I've yet to try jena-ontapi myself, but are you saying that it doesn't > support ontology or version IRIs that are file-based ? > > > On Thu, Aug 8, 2024 at 11:22 AM Sergei Zuev <ssz...@apache.org> wrote: > > > > in owlcs/owlapi, it is also possible to reference to the document IRI > > itself: > > `<a> owl:import <file://docuemnt.owl>`. > > it is allowed by specification. > > > > but in jena-ontapi the import closure can only contain the version IRI or > > the ontology IRI, not document IRI. > > > > On 2024/08/08 14:06:29 Phillip Ross wrote: > > > For reference, the owlcs owlapi models an ontology identifier as a > > > composite of ontology IRI and version IRI, the latter of which may be > > > null. And the document IRI is either the version IRI if it has been > > > specified, or the ontology IRI if there is no version IRI. > > > > > > On Thu, Aug 8, 2024 at 3:08 AM Sergei Zuev <ssz...@apache.org> wrote: > > > > > > > > In the new API, the ontology identifier is either the version IRI or > > > > the ontology IRI. The document IRI is not an identifier. > > > > Perhaps this is a flaw - document support was added at the last moment, > > > > and for managing imports closure no document-manager is needed. > > > > > > > > Typical work with documents can be like this: > > > > ``` > > > > DocumentGraphRepository repository = > > > > GraphRepository.createGraphDocumentRepositoryMem(); > > > > repository.addMapping( > > > > "http://www.co-ode.org/ontologies/pizza/pizza.owl", > > > > documentPath); > > > > OntModel m = OntModelFactory.getModelOrNull( > > > > "http://www.co-ode.org/ontologies/pizza/pizza.owl", > > > > OntSpecification.OWL2_DL_MEM_BUILTIN_RDFS_INF, > > > > repository); > > > > m.write(System.out, "ttl"); > > > > ``` > > > > > > > > Here, `http://www.co-ode.org/ontologies/pizza/pizza.owl` is an ontology > > > > IRI. `DocumentGraphRepository` manages mappings between documents and > > > > ontologies. > > > > > > > > If you think that some functionality is missing, please open a github > > > > issue. > > > > > > > > By the way, the external library owlcs/ontapi, which works on top of > > > > apache-ontapi, has its own full-fledged ontology manager, which works > > > > according to the specification, i.e. the ontology identifier can also > > > > be a document IRI. > > > > > > > > On 2024/08/07 11:15:58 Steve Vestal wrote: > > > > > I have some questions about doing an OWL import closure. My > > > > > understanding is that an Import for an owl:Ontology can use any of a > > > > > URL, an ontology IRI, or a version IRI to access an OWL document. > > > > > Different documents that have the same ontology IRI may be accessed > > > > > using different URLs, either identical copies or with different > > > > > version > > > > > IRIs. > > > > > > > > > > The link given on the page > > > > > https://jena.apache.org/documentation/ontology/#graphrepository > > > > > (https://jena.apache.org/documentation/javadoc/jena/org.apache.jena.ontapi/org/apache/jena/ontapi/GraphRepository.html) > > > > > gets a "URL was not found" error. A search didn't turn it up. What > > > > > package contains this class? > > > > > > > > > > That page says "By default, when an ontology model reads an ontology > > > > > document, it will/not/locate and load the document’s imports." A > > > > > search > > > > > of this page did not find OntDocumentManager, which I have been using. > > > > > FileManager seems to be deprecated in favor of RDFDataMgr. Will > > > > > OntDocumentManager be deprecated or modified? > > > > > > > > > > What is the recommended way to accumulate a set of URLs, ontology > > > > > IRIs, > > > > > and version IRIs, and use that set to do an import closure? > > > > > > > > >