@@ -711,9 +711,11 @@ def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: [], c
711711
712712 skos = self . skos?
713713 classes = [ ]
714+ class_ids = [ ]
715+ root_count = 0
714716
715717 if skos
716- classes = skos_roots ( concept_schemes , page , paged , pagesize )
718+ class_ids , root_count = skos_root_ids ( concept_schemes , page , paged , pagesize )
717719 extra_include += LinkedData ::Models ::Class . concept_is_in_attributes
718720 else
719721 self . ontology . bring ( :flat )
@@ -744,7 +746,12 @@ def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: [], c
744746 end
745747 end
746748
747- where = LinkedData ::Models ::Class . in ( self ) . models ( classes ) . include ( :prefLabel , :definition , :synonym , :obsolete )
749+ where = if skos
750+ LinkedData ::Models ::Class . in ( self ) . ids ( class_ids ) unless class_ids . empty?
751+ else
752+ LinkedData ::Models ::Class . in ( self ) . models ( classes )
753+ end
754+ where . include ( :prefLabel , :definition , :synonym , :obsolete ) if where
748755
749756 if extra_include
750757 %i[ prefLabel definition synonym obsolete childrenCount ] . each do |x |
@@ -767,9 +774,13 @@ def roots(extra_include = [], page = nil, pagesize = nil, concept_schemes: [], c
767774 load_children = [ :children ]
768775 end
769776
770- where . include ( extra_include ) if extra_include . length > 0
777+ where . include ( extra_include ) if where && extra_include . length > 0
771778 end
772- where . all
779+ if where
780+ loaded_classes = where . all
781+ classes = loaded_classes if skos
782+ end
783+ classes = Goo ::Base ::Page . new ( page , pagesize , root_count , classes ) if skos && paged
773784
774785 LinkedData ::Models ::Class . partially_load_children ( classes , 99 , self ) if load_children . length > 0
775786
0 commit comments