private void tryRemove(Statement stmt) {
   boolean removeFromPellet = false;
   if (pipeOpen
       && reasonerConfiguration.getReasonOnAllDatatypePropertyStatements()
       && stmt.getObject().isLiteral()) {
     removeFromPellet = true;
   } else if (pipeOpen && hasCardinalityPredicate(stmt)) { // see comment on this method
     removeFromPellet = true;
   } else if (stmt.getObject().isResource()) {
     if (pipeOpen) {
       if (reasonerConfiguration.getQueryForAllObjectProperties()
           && stmt.getPredicate().equals(RDF.type)
           && stmt.getObject().equals(OWL.ObjectProperty)) {
         deletedObjectProperties.enterCriticalSection(Lock.WRITE);
         try {
           deletedObjectProperties.add(stmt);
         } finally {
           deletedObjectProperties.leaveCriticalSection();
         }
       }
       if (reasonerConfiguration.getQueryForAllDatatypeProperties()
           && stmt.getPredicate().equals(RDF.type)
           && stmt.getObject().equals(OWL.DatatypeProperty)) {
         deletedDataProperties.enterCriticalSection(Lock.WRITE);
         try {
           deletedDataProperties.add(stmt);
         } finally {
           deletedDataProperties.leaveCriticalSection();
         }
       }
       removeFromPellet = false;
       boolean denied = false;
       ObjectPropertyStatementPattern stPat =
           ObjectPropertyStatementPatternFactory.getPattern(
               stmt.getSubject(), stmt.getPredicate(), (Resource) stmt.getObject());
       if (inferenceDrivingPatternDenySet != null) {
         for (Iterator<ObjectPropertyStatementPattern> i =
                 inferenceDrivingPatternDenySet.iterator();
             i.hasNext(); ) {
           ObjectPropertyStatementPattern pat = i.next();
           if (pat.matches(stPat)) {
             denied = true;
             break;
           }
         }
       }
       if (!denied) {
         if (inferenceDrivingPatternAllowSet == null) {
           removeFromPellet = true;
         } else {
           // TODO: O(1) implementation of this
           List<ObjectPropertyStatementPattern> patList =
               this.inferenceDrivingPatternMap.get(stmt.getPredicate());
           if (patList != null) {
             for (Iterator<ObjectPropertyStatementPattern> i = patList.iterator(); i.hasNext(); ) {
               ObjectPropertyStatementPattern pat = i.next();
               if (pat.matches(stPat)) {
                 removeFromPellet = true;
                 break;
               }
             }
           }
         }
       }
     }
   }
   if (removeFromPellet) {
     String valueStr =
         (stmt.getObject().isResource())
             ? ((Resource) stmt.getObject()).getLocalName()
             : ((Literal) stmt.getObject()).getLexicalForm();
     log.info(
         "Removing from Pellet: "
             + stmt.getSubject().getLocalName()
             + " "
             + stmt.getPredicate().getLocalName()
             + " "
             + valueStr);
     removalModel.enterCriticalSection(Lock.WRITE);
     try {
       removalModel.add(stmt);
     } finally {
       removalModel.leaveCriticalSection();
     }
   }
 }
 private void tryAdd(Statement stmt) {
   boolean sendToPellet = false;
   if (pipeOpen
       && reasonerConfiguration.getReasonOnAllDatatypePropertyStatements()
       && stmt.getObject().isLiteral()) {
     sendToPellet = true;
   } else if (pipeOpen && hasCardinalityPredicate(stmt)) { // see comment on this method
     sendToPellet = true;
   } else if ((stmt.getObject().isResource())
       && !((stmt.getPredicate().getURI().indexOf(VitroVocabulary.vitroURI) == 0))) {
     if (pipeOpen) {
       sendToPellet = false;
       boolean denied = false;
       ObjectPropertyStatementPattern stPat =
           ObjectPropertyStatementPatternFactory.getPattern(
               stmt.getSubject(), stmt.getPredicate(), (Resource) stmt.getObject());
       if (inferenceDrivingPatternDenySet != null) {
         for (Iterator<ObjectPropertyStatementPattern> i =
                 inferenceDrivingPatternDenySet.iterator();
             i.hasNext(); ) {
           ObjectPropertyStatementPattern pat = i.next();
           if (pat.matches(stPat)) {
             denied = true;
             break;
           }
         }
       }
       if (!denied) {
         if (inferenceDrivingPatternAllowSet == null) {
           sendToPellet = true;
         } else {
           // TODO: O(1) implementation of this
           List<ObjectPropertyStatementPattern> patList =
               this.inferenceDrivingPatternMap.get(stmt.getPredicate());
           if (patList != null) {
             for (Iterator<ObjectPropertyStatementPattern> i = patList.iterator(); i.hasNext(); ) {
               ObjectPropertyStatementPattern pat = i.next();
               if (pat.matches(stPat)) {
                 sendToPellet = true;
                 break;
               }
             }
           }
         }
       }
     }
   }
   if (sendToPellet) {
     // long startTime = System.currentTimeMillis();
     String valueStr =
         (stmt.getObject().isResource())
             ? ((Resource) stmt.getObject()).getLocalName()
             : ((Literal) stmt.getObject()).getLexicalForm();
     if (log.isDebugEnabled()) {
       log.debug("Adding to Pellet: " + renderStatement(stmt));
     }
     additionModel.enterCriticalSection(Lock.WRITE);
     try {
       additionModel.add(stmt);
     } finally {
       additionModel.leaveCriticalSection();
     }
   } else {
     if (log.isDebugEnabled()) {
       log.debug("Not adding to Pellet: " + renderStatement(stmt));
     }
   }
 }