public static Parser rulesParserFromReader( BufferedReader src ) {
       try {
           StringBuffer result = new StringBuffer();
           String line;
           Map prefixes = new Map();
//           List preloadedRules = new ArrayList();
           List preloadedRules = new List();
           while ((line = src.readLine()) != null) {
               if (line.startsWith("#")) continue;     // Skip comment lines
               line = line.trim();
               if (line.startsWith("//")) continue;    // Skip comment lines
               if (line.startsWith("@prefix")) {
                   line = line.substring("@prefix".length());
                   String prefix = nextArg(line);
                   String rest = nextAfterArg(line);
                   if (prefix.endsWith(":")) prefix = prefix.substring(0, prefix.length() - 1);
                   String url = extractURI(rest);
                   prefixes.put(prefix, url);

               } else if (line.startsWith("@include")) {
                   // Include referenced rule file, either URL or local special case
                   line = line.substring("@include".length());
                   String url = extractURI(line);
                   // Check for predefined cases
                   // J2ME Version: removed
//                   if (url.equalsIgnoreCase("rdfs")) {
//                       preloadedRules.addAll( RDFSFBRuleReasoner.loadRules() );
//                       
//                   } else if (url.equalsIgnoreCase("owl")) {
//                       preloadedRules.addAll( OWLFBRuleReasoner.loadRules() ) ;
//                       
//                   } else if (url.equalsIgnoreCase("owlmicro")) {
//                       preloadedRules.addAll( OWLMicroReasoner.loadRules() ) ;
//                       
//                   } else if (url.equalsIgnoreCase("owlmini")) {
//                       preloadedRules.addAll( OWLMiniReasoner.loadRules() ) ;
//                       
//                   } else {
//                       // Just try loading as a URL
//                       preloadedRules.addAll( rulesFromURL(url) );
//                   }

               } else {
                   result.append(line);
                   if(line.length() != 0)
                        result.append("\n");
               }
           }
           // result is the whole read rule set
           Parser parser = new Parser(result.toString());
           parser.registerPrefixMap(prefixes);
           parser.addRulesPreload(preloadedRules);
           return parser;
       }
       catch (IOException e) 
           { throw new WrappedIOException( e ); }
   }