|
12 | 12 | import javax.annotation.Nullable; |
13 | 13 | import java.util.*; |
14 | 14 | import java.util.function.Predicate; |
| 15 | +import java.util.stream.Collectors; |
15 | 16 |
|
16 | 17 | import static com.hp.hpl.jena.reasoner.ReasonerRegistry.makeDirect; |
17 | 18 |
|
18 | 19 | public class JenaUtils { |
19 | 20 |
|
20 | 21 | public static Collection<OntClass> getParents( OntModel model, Collection<OntClass> ontClasses, boolean direct, @Nullable Set<Restriction> additionalRestrictions ) { |
| 22 | + ontClasses = ontClasses.stream() |
| 23 | + .map( t -> t.inModel( model ) ) |
| 24 | + .filter( t -> t.canAs( OntClass.class ) ) |
| 25 | + .map( t -> t.as( OntClass.class ) ) |
| 26 | + .collect( Collectors.toList() ); |
21 | 27 | if ( ontClasses.isEmpty() ) { |
22 | 28 | return Collections.emptySet(); |
23 | 29 | } |
24 | 30 | Iterator<OntClass> it = ontClasses.iterator(); |
25 | | - ExtendedIterator<OntClass> iterator = it.next() |
26 | | - .inModel( model ) |
27 | | - .as( OntClass.class ) |
28 | | - .listSuperClasses( direct ); |
| 31 | + ExtendedIterator<OntClass> iterator = it.next().listSuperClasses( direct ); |
29 | 32 | while ( it.hasNext() ) { |
30 | | - iterator = iterator.andThen( it.next().inModel( model ).as( OntClass.class ).listSuperClasses( direct ) ); |
| 33 | + iterator = iterator.andThen( it.next().listSuperClasses( direct ) ); |
31 | 34 | } |
32 | 35 |
|
33 | 36 | Collection<OntClass> result = new HashSet<>(); |
@@ -62,17 +65,19 @@ public static Collection<OntClass> getParents( OntModel model, Collection<OntCla |
62 | 65 | } |
63 | 66 |
|
64 | 67 | public static Collection<OntClass> getChildren( OntModel model, Collection<OntClass> terms, boolean direct, @Nullable Set<Restriction> additionalRestrictions ) { |
| 68 | + terms = terms.stream() |
| 69 | + .map( t -> t.inModel( model ) ) |
| 70 | + .filter( t -> t.canAs( OntClass.class ) ) |
| 71 | + .map( t -> t.as( OntClass.class ) ) |
| 72 | + .collect( Collectors.toList() ); |
65 | 73 | if ( terms.isEmpty() ) { |
66 | 74 | return Collections.emptySet(); |
67 | 75 | } |
68 | 76 | StopWatch timer = StopWatch.createStarted(); |
69 | 77 | Iterator<OntClass> it = terms.iterator(); |
70 | | - ExtendedIterator<OntClass> iterator = it.next() |
71 | | - .inModel( model ) |
72 | | - .as( OntClass.class ) |
73 | | - .listSubClasses( direct ); |
| 78 | + ExtendedIterator<OntClass> iterator = it.next().listSubClasses( direct ); |
74 | 79 | while ( it.hasNext() ) { |
75 | | - iterator = iterator.andThen( it.next().inModel( model ).as( OntClass.class ).listSubClasses( direct ) ); |
| 80 | + iterator = iterator.andThen( it.next().listSubClasses( direct ) ); |
76 | 81 | } |
77 | 82 | Set<OntClass> result = iterator |
78 | 83 | .filterDrop( new BnodeFilter<>() ) |
|
0 commit comments