def remove(self, (subject, predicate, obj), context):
        """ Remove a triple from the store """
        if context is not None:
            if subject is None and predicate is None and object is None:
                self._remove_context(context)
                return
        c = self._db.cursor()
        if self.autocommit_default:
            c.execute("""SET AUTOCOMMIT=0""")
        quoted_table = "%s_quoted_statements" % self._internedId
        asserted_table = "%s_asserted_statements" % self._internedId
        asserted_type_table = "%s_type_statements" % self._internedId
        literal_table = "%s_literal_statements" % self._internedId
        if not predicate or predicate != RDF.type:
            #Need to remove predicates other than rdf:type


            if not self.STRONGLY_TYPED_TERMS or isinstance(obj, Literal):
                #remove literal triple
                clauseString,params = self.buildClause(
                    literal_table, subject, predicate, obj, context)
                if clauseString:
                    cmd ="DELETE FROM " + " ".join([literal_table, clauseString])
                else:
                    cmd ="DELETE FROM " + literal_table
                self.executeSQL(c, self._normalizeSQLCmd(cmd), params)

            for table in [quoted_table, asserted_table]:
                # If asserted non rdf:type table and obj is Literal, don't do
                # anything (already taken care of)
                if table == asserted_table and isinstance(obj, Literal):
                    continue
                else:
                    clauseString, params = self.buildClause(
                        table, subject, predicate, obj, context)
                    if clauseString:
                        cmd="DELETE FROM " + " ".join([table, clauseString])
                    else:
                        cmd = "DELETE FROM " + table


                    self.executeSQL(c,self._normalizeSQLCmd(cmd), params)


        if predicate == RDF.type or not predicate:
            # Need to check rdf:type and quoted partitions (in addition perhaps)
            clauseString,params = self.buildClause(
                asserted_type_table, subject, RDF.type, obj, context, True)
            if clauseString:
                cmd="DELETE FROM " + " ".join([asserted_type_table, clauseString])
            else:
                cmd='DELETE FROM '+asserted_type_table


            self.executeSQL(c, self._normalizeSQLCmd(cmd), params)

            clauseString, params = self.buildClause(
                quoted_table, subject, predicate, obj, context)
            if clauseString:
                cmd=clauseString and "DELETE FROM " + " ".join([quoted_table, clauseString])
            else:
                cmd = "DELETE FROM " + quoted_table


            self.executeSQL(c, self._normalizeSQLCmd(cmd), params)
        c.close()
dataset/ETHPy150Open RDFLib/rdfextras/rdfextras/store/AbstractSQLStore.py/AbstractSQLStore.remove/original