/**
   * Provides the main method for an EELD DAML export.
   *
   * @parameter args the optional command line arguments
   */
  public static void main(String[] args) {
    try {
      cycAccess =
          new CycAccess(
              CycConnection.DEFAULT_HOSTNAME,
              CycConnection.DEFAULT_BASE_PORT,
              CycConnection.DEFAULT_COMMUNICATION_MODE,
              CycAccess.DEFAULT_CONNECTION);
      /*
          new CycAccess(CycConnection.DEFAULT_HOSTNAME,
                        3620,
                        CycConnection.DEFAULT_COMMUNICATION_MODE,
                        CycAccess.DEFAULT_CONNECTION);
      */
      ExportDaml exportDaml = new ExportDaml(cycAccess);
      exportDaml.verbosity = ExportDaml.DEFAULT_VERBOSITY;
      // exportDaml.verbosity = 9;

      String choice = "eeld-core";
      if (args.length > 0) choice = args[0];

      Log.current.println("Choosing KB selection: " + choice);
      // These require the Cycorp IKB or full KB to work as setup below.
      if (choice.equals("all")) {
        exportDaml.includeUpwardClosure = false;
        exportDaml.title = "Open Cyc Ontology";
        exportDaml.outputPath = "open-cyc.daml";
        exportDaml.export(ExportDaml.EXPORT_ENTIRE_KB);
      }
      if (choice.equals("eeld-core")) {
        exportDaml.cycKbSubsetCollectionGuid = eeldSharedOntologyCoreConstantGuid;
        exportDaml.cycKbSubsetFilterGuid = ikbConstantGuid;
        exportDaml.title = "EELD Shared Core Ontology";
        exportDaml.outputPath = "eeld-shared-core-ontology.daml";
        exportDaml.export(ExportDaml.EXPORT_KB_SUBSET);
      } else if (choice.equals("eeld")) {
        exportDaml.cycKbSubsetCollectionGuid = eeldSharedOntologyConstantGuid;
        exportDaml.cycKbSubsetFilterGuid = ikbConstantGuid;
        exportDaml.title = "EELD Shared Ontology";
        exportDaml.outputPath = "eeld-shared-ontology.daml";
        CycList kbSubsetCollections = new CycList();
        kbSubsetCollections.add(cycAccess.getKnownConstantByName("EELDSyntheticDataConstant"));
        kbSubsetCollections.add(cycAccess.getKnownConstantByName("EELDNaturalDataConstant"));
        CycList applicableBinaryPredicates =
            cycAccess.getApplicableBinaryPredicates(kbSubsetCollections);
        applicableBinaryPredicates.remove(cycAccess.isa);
        applicableBinaryPredicates = applicableBinaryPredicates.sort();
        Log.current.println(
            "applicableBinaryPredicates: \n" + applicableBinaryPredicates.cyclify());
        exportDaml.applicableBinaryPredicates = applicableBinaryPredicates;
        exportDaml.export(ExportDaml.EXPORT_KB_SUBSET);

      } else if (choice.equals("transportation-device")) {
        Guid transportationDeviceGuid =
            CycObjectFactory.makeGuid("bd58d540-9c29-11b1-9dad-c379636f7270");
        exportDaml.rootTermGuid = transportationDeviceGuid;
        exportDaml.cycKbSubsetFilterGuid = counterTerrorismConstantGuid;
        exportDaml.export(ExportDaml.EXPORT_KB_SUBSET_BELOW_TERM);
      } else {
        System.out.println("specified choice not found - " + choice);
        System.exit(1);
      }
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }