{
  "$schema": "../../../../node_modules/@bentley/presentation-common/Ruleset.schema.json",
  "id": "ui-framework/SpatialBreakdown.GroupedByClass",
  "rules": [
    {
      "ruleType": "RootNodes",
      "specifications": [
        {
          "specType": "InstanceNodesOfSpecificClasses",
          "classes": [
            {
              "schemaName": "SpatialComposition",
              "classNames": [
                "CompositeElement"
              ]
            }
          ],
          "arePolymorphic": true,
          "relatedInstances": [
            {
              "relationship": {
                "schemaName": "BisCore",
                "className": "ModelContainsElements"
              },
              "requiredDirection": "Backward",
              "class": {
                "schemaName": "BisCore",
                "className": "Model"
              },
              "isRequired": true,
              "alias": "model"
            }
          ],
          "instanceFilter": "NOT model.IsPrivate AND this.ComposingElement = NULL",
          "groupByClass": true,
          "groupByLabel": false
        }
      ]
    },
    {
      "ruleType": "ChildNodes",
      "condition": "ParentNode.IsOfClass(\"CompositeElement\", \"SpatialComposition\")",
      "specifications": [
        {
          "specType": "RelatedInstanceNodes",
          "relationships": {
            "schemaName": "SpatialComposition",
            "classNames": [
              "CompositeComposesSubComposites"
            ]
          },
          "relatedClasses": {
            "schemaName": "SpatialComposition",
            "classNames": [
              "CompositeElement"
            ]
          },
          "requiredDirection": "Forward",
          "groupByClass": true,
          "groupByLabel": false
        }
      ]
    },
    {
      "ruleType": "ChildNodes",
      "condition": "ParentNode.IsOfClass(\"CompositeElement\", \"SpatialComposition\")",
      "specifications": [
        {
          "specType": "RelatedInstanceNodes",
          "relationships": {
            "schemaName": "SpatialComposition",
            "classNames": [
              "CompositeOverlapsSpatialElements"
            ]
          },
          "relatedClasses": {
            "schemaName": "BisCore",
            "classNames": [
              "SpatialElement"
            ]
          },
          "requiredDirection": "Forward",
          "groupByClass": true,
          "groupByLabel": false
        }
      ]
    }
  ]
}
