*
   * @throws IOException if a communications error occurs
   * @throws UnknownHostException if the Cyc server cannot be found
   * @throws CycApiException if the Cyc server returns an error
   */
  public CycList getApplicableBinaryPredicates(CycList kbSubsetCollections)
          throws UnknownHostException, IOException, CycApiException {
    CycList result = new CycList();

    for (int i = 0; i < kbSubsetCollections.size(); i++) {
      CycFort kbSubsetCollection = (CycFort) kbSubsetCollections.get(
              i);
      String query = "(#$and \n" + "  (#$isa ?binary-predicate " + kbSubsetCollection.stringApiValue()
              + ") \n" + "  (#$isa ?binary-predicate #$BinaryPredicate))";
      result.addAllNew(queryVariable(CycObjectFactory.makeCycVariable("?binary-predicate"),
              makeCycSentence(query), inferencePSC, new DefaultInferenceParameters(this)));
    }

    return result;
  }