This is an automated email from the ASF dual-hosted git repository.

sszuev pushed a commit to branch i3322
in repository https://gitbox.apache.org/repos/asf/jena.git

commit 45ee699ae99e217f31d97f5955c89aff5f7b5c78
Author: sszuev <[email protected]>
AuthorDate: Sat Jul 19 17:24:24 2025 +0300

    jena-ontapi: extend OntUnionGraphRepository to allow access to an ontology 
by its id, when it is different from mapping key
---
 .../java/org/apache/jena/ontapi/OntModelFactory.java     |  2 +-
 .../impl/repositories/DocumentGraphRepository.java       |  3 +--
 .../impl/repositories/OntUnionGraphRepository.java       | 16 ++++++++++++++--
 .../apache/jena/ontapi/DocumentGraphRepositoryTest.java  |  4 ++--
 .../apache/jena/ontapi/OntUnionGraphRepositoryTest.java  | 14 ++++++++++++++
 5 files changed, 32 insertions(+), 7 deletions(-)

diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/OntModelFactory.java 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/OntModelFactory.java
index 73001f7c00..b15c8b25cb 100644
--- a/jena-ontapi/src/main/java/org/apache/jena/ontapi/OntModelFactory.java
+++ b/jena-ontapi/src/main/java/org/apache/jena/ontapi/OntModelFactory.java
@@ -342,7 +342,7 @@ public class OntModelFactory {
                 OntModelFactory::createUnionGraph,
                 n -> createOntGraph(n, repository),
                 /*ignoreUnresolvedImports*/ true);
-        if (!ontUnionGraphRepository.contains(name)) {
+        if (!ontUnionGraphRepository.hasGraph(name)) {
             return null;
         }
         UnionGraph union = ontUnionGraphRepository.get(name);
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/repositories/DocumentGraphRepository.java
 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/repositories/DocumentGraphRepository.java
index 0c307e4efc..bb87992760 100644
--- 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/repositories/DocumentGraphRepository.java
+++ 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/repositories/DocumentGraphRepository.java
@@ -210,8 +210,7 @@ public class DocumentGraphRepository implements 
GraphRepository {
      *
      * @return distinct {@code Stream} of {@link Graph}s
      */
-    @Override
-    public Stream<Graph> graphs() {
+    public Stream<Graph> loadedGraphs() {
         return sourceToGraph.values().stream();
     }
 
diff --git 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/repositories/OntUnionGraphRepository.java
 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/repositories/OntUnionGraphRepository.java
index ecdf126c60..b5e82171c4 100644
--- 
a/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/repositories/OntUnionGraphRepository.java
+++ 
b/jena-ontapi/src/main/java/org/apache/jena/ontapi/impl/repositories/OntUnionGraphRepository.java
@@ -135,8 +135,20 @@ public class OntUnionGraphRepository {
      * @param node {@link Node} graph's ontology name ({@code owl:Ontology} or 
{@code owl:versionIRI}).
      * @return boolean
      */
-    public boolean contains(Node node) {
-        return repository.contains(node.toString());
+    public boolean hasGraph(Node node) {
+        Objects.requireNonNull(node);
+        if (repository.contains(node.toString())) {
+            return true;
+        }
+        return repository.ids().toList().stream().anyMatch(id -> {
+            var g = repository.get(id);
+            var header = Graphs.findOntologyNameNode(g).orElse(null);
+            if (Objects.equals(header, node)) {
+                repository.put(header.toString(), g);
+                return true;
+            }
+            return false;
+        });
     }
 
     /**
diff --git 
a/jena-ontapi/src/test/java/org/apache/jena/ontapi/DocumentGraphRepositoryTest.java
 
b/jena-ontapi/src/test/java/org/apache/jena/ontapi/DocumentGraphRepositoryTest.java
index 5f8f1ceada..c1b039fac3 100644
--- 
a/jena-ontapi/src/test/java/org/apache/jena/ontapi/DocumentGraphRepositoryTest.java
+++ 
b/jena-ontapi/src/test/java/org/apache/jena/ontapi/DocumentGraphRepositoryTest.java
@@ -52,7 +52,7 @@ public class DocumentGraphRepositoryTest {
         Assertions.assertFalse(((UnionGraph) g1).hasSubGraph());
         Graph g2 = repository.get("builtins-owl.rdf");
         Assertions.assertSame(g1, g2);
-        Assertions.assertEquals(List.of(g1), repository.graphs().toList());
+        Assertions.assertEquals(List.of(g1), 
repository.loadedGraphs().toList());
 
         Graph g3 = repository.get("X");
         Assertions.assertEquals(163, g3.size());
@@ -60,7 +60,7 @@ public class DocumentGraphRepositoryTest {
         Assertions.assertFalse(((UnionGraph) g3).hasSubGraph());
         Graph g4 = repository.get("builtins-rdfs.rdf");
         Assertions.assertSame(g3, g4);
-        Assertions.assertEquals(Set.of(g1, g3), 
repository.graphs().collect(Collectors.toSet()));
+        Assertions.assertEquals(Set.of(g1, g3), 
repository.loadedGraphs().collect(Collectors.toSet()));
 
         Assertions.assertEquals(
                 List.of("X", "Y", "builtins-owl.rdf", "builtins-rdfs.rdf", 
"http://www.w3.org/2002/07/owl#";),
diff --git 
a/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntUnionGraphRepositoryTest.java
 
b/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntUnionGraphRepositoryTest.java
index 8df9aa5bdd..a3871f1715 100644
--- 
a/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntUnionGraphRepositoryTest.java
+++ 
b/jena-ontapi/src/test/java/org/apache/jena/ontapi/OntUnionGraphRepositoryTest.java
@@ -674,4 +674,18 @@ public class OntUnionGraphRepositoryTest {
                 repo2.graphs().collect(Collectors.toSet()));
     }
 
+    @Test
+    public void testLoadRealModelWithMappingDifferentFromIri() {
+        var documentPath = "pizza.ttl";
+        var repository = GraphRepository.createGraphDocumentRepositoryMem();
+        repository.addMapping(
+                "XXXX",
+                documentPath);
+        var m = OntModelFactory.getModelOrNull(
+                "http://www.co-ode.org/ontologies/pizza/pizza.owl";,
+                OntSpecification.OWL2_DL_MEM_BUILTIN_RDFS_INF,
+                repository);
+        
Assertions.assertNotNull(m.getOntClass("http://www.co-ode.org/ontologies/pizza/pizza.owl#VegetarianTopping";));
+    }
+
 }

Reply via email to