In order to avoid problems with labelled BNodes perhaps a BNode should take no arguments, and labels should be modelled as a map from labels to bnodes, which could then be constructed by a serialiser, or a DSL when constructing grphs. One would then just have method to get the label, but not to construct a bnode with a label.