Split out BOM into a separate relationship type to make it simpler to filter, and easier to exclude traditional managed deps from traversal when all we're after is BOM declarations (a very common requirement). Don't keep membership for views with no root, since all nodes could be used as a root. Don't allow cycle detection on views without a root, as this is prohibitively expensive. Make all filters declare the relationship types they want to examine, to help narrow the set of paths necessary to examine in the graph.
provide a way to check if the db as a whole contains a GAV, and adjust the registerView method to return false if the view is null...which would signal the use of the global view, or the global db.