Well, I donβt want to delete the question, because it has two upvotes. Perhaps this will be useful for someone.
So the logic was right.
Whenever we want to add something to the database, we write:
assert(predicat(var1, var2, ... , varn))
Whenever we want to remove something from the database, we write:
retract(predicat(var1, var2, ... , varn)) retractall(predicat(var1, var2, ... , varn))
If all members are equal, then it is removed from db (also it must be dynamic)
If we want to delete all the data, we need to specify its variable. So that...
retract(predicat(_,_,...,_)) retractall(predicat(_,_,...,_))
will delete all data matching the query. And to save the data, we simply write the following:
tell('database_file.txt'), %opening file for writing listing(ig_node), %writing told. %closing/saving file