# Upgrading from version 6 to 7

## Python version

RDFLib 7 requires Python 3.8.1 or later.

## New behaviour for `publicID` in `parse` methods.

Before version 7, the `publicID` argument to the `rdflib.graph.ConjunctiveGraph.parse()` and `rdflib.graph.Dataset.parse()` methods was used as the name for the default graph, and triples from the default graph in a source were loaded into the graph named `publicID`.

In version 7, the `publicID` argument is only used as the base URI for relative URI resolution as defined in IETF RFC 3986.

To accommodate this change, ensure that use of the `publicID` argument is consistent with the new behaviour.

If you want to load triples from a format that does not support named graphs into a named graph, use the following code:

    from rdflib import ConjunctiveGraph

    cg = ConjunctiveGraph()
    cg.get_context("example:graph_name").parse("http://example.com/source.ttl", format="turtle")

If you want to move triples from the default graph into a named graph, use the following code:

    from rdflib import ConjunctiveGraph

    cg = ConjunctiveGraph()
    cg.parse("http://example.com/source.trig", format="trig")
    destination_graph = cg.get_context("example:graph_name")
    for triple in cg.default_context.triples((None, None, None)):
        destination_graph.add(triple)
        cg.default_context.remove(triple)