Classification is not a value, it's rather assigning nodes to certain class of findings. IOW, it's a relation, and as such, it should be modelled an edge from the classified item into a node representing the particular class.
Current solution, when we are storing classification "discriminator" as a string to the "ClassificationModel:classification" property, leads to very bad performance:
Even if we add index to that property, IMO using edges will still provide better performance. I could try that.
The same applies to certain other properties:
"packageName" could rather be a vertex with a package name.
RuleProviders should be a vertexes, and Hint's "originatingProvider" should change to an edge to that.
Also, I think there's something structurally wrong in the XML classification - it queries the same data again and again, rather than iterating over the previous results. Subject to investigation.