Skip to content

Commit c67f90d

Browse files
committed
Exclude terms which are not OntClass in the target model
1 parent 5b16e21 commit c67f90d

1 file changed

Lines changed: 15 additions & 10 deletions

File tree

src/ubic/basecode/ontology/jena/JenaUtils.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,25 @@
1212
import javax.annotation.Nullable;
1313
import java.util.*;
1414
import java.util.function.Predicate;
15+
import java.util.stream.Collectors;
1516

1617
import static com.hp.hpl.jena.reasoner.ReasonerRegistry.makeDirect;
1718

1819
public class JenaUtils {
1920

2021
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() );
2127
if ( ontClasses.isEmpty() ) {
2228
return Collections.emptySet();
2329
}
2430
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 );
2932
while ( it.hasNext() ) {
30-
iterator = iterator.andThen( it.next().inModel( model ).as( OntClass.class ).listSuperClasses( direct ) );
33+
iterator = iterator.andThen( it.next().listSuperClasses( direct ) );
3134
}
3235

3336
Collection<OntClass> result = new HashSet<>();
@@ -62,17 +65,19 @@ public static Collection<OntClass> getParents( OntModel model, Collection<OntCla
6265
}
6366

6467
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() );
6573
if ( terms.isEmpty() ) {
6674
return Collections.emptySet();
6775
}
6876
StopWatch timer = StopWatch.createStarted();
6977
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 );
7479
while ( it.hasNext() ) {
75-
iterator = iterator.andThen( it.next().inModel( model ).as( OntClass.class ).listSubClasses( direct ) );
80+
iterator = iterator.andThen( it.next().listSubClasses( direct ) );
7681
}
7782
Set<OntClass> result = iterator
7883
.filterDrop( new BnodeFilter<>() )

0 commit comments

Comments
 (0)