code: def filtered_search(
              self,
              id_list: List,
              negated_classes: List,
              limit: Optional[int] = 100,
              taxon_filter: Optional[int] = None,
              category_filter: Optional[str] = None,
              method: Optional[SimAlgorithm] = SimAlgorithm.PHENODIGM) -> SimResult:
          
          if len(negated_classes) > 0:
              logging.warning("Owlsim2 does not support negation, ignoring neg classes")
  
          namespace_filter = self._get_namespace_filter(taxon_filter, category_filter)
          owlsim_results = search_by_attribute_set(self.url, tuple(id_list), limit, namespace_filter)
          return self._simsearch_to_simresult(owlsim_results, method)
docs: Owlsim2 filtered search, resolves taxon and category to a namespace,
          calls search_by_attribute_set, and converts to SimResult object