I added some tests for this and made some tweaks which make it work correctly. 

type defaults to the self.class.type (which can be configured via RdfConfigurable). When you set it on an instance with type=, a statement with predicate RDF::RDFS.type is added to the graph. This line ensures that this statement gets added when a resource object reloads.