Skip to content

3.5 Structuur en naamgeving — NAA.K.T. materiaal naamgeving

Wat doet deze regel?

Deze regel controleert of materiaalnamen in het model voldoen aan de NAA.K.T.-naamgevingsstructuur.

De controle wordt uitgevoerd op materialen die daadwerkelijk in gebruik zijn in het model. Alleen materialen met een usedCount > 0 worden meegenomen in de controle.

De naam van een materiaal moet zijn opgebouwd volgens de NAA.K.T.-structuur, waarbij de onderdelen worden gescheiden door een underscore (_).

Deze structuur sluit aan bij de afspraken rondom materiaalnaamgeving en standaardisatie van BIM-data.


Wat de regel controleert

De regel controleert of de materiaalnaam bestaat uit drie onderdelen en of deze onderdelen overeenkomen met de toegestane waarden uit de NAA.K.T.-lookup tabel.

De volgende onderdelen worden gecontroleerd:

  • Deel 1 – NAAm

De generieke materiaalnaam.
Deze moet voorkomen in de lijst met toegestane materiaalnamen.

  • Deel 2 – Kenmerk

Het kenmerk of type van het materiaal.
De toegestane waarden zijn afhankelijk van de gekozen materiaalnaam (deel 1).

  • Deel 3 – Toepassing

De toepassing van het materiaal.
De toegestane waarden zijn afhankelijk van de gekozen materiaalnaam (deel 1).

De regel controleert dus een hiërarchische afhankelijkheid:


{
  "Id": "a44e1aa4-808f-4a24-8a11-d3ffb4f5d75b",
  "Filter": {
    "Type": "queryFilter",
    "Properties": [
      {
        "Name": "Query",
        "Value": "(\n    $[type = \"Material\" and values.usedCount > 0].{ \n            \"id\":id,\n            \"type\":type,\n            \"name\":name,\n            \"usedCount\":values.usedCount,\n            \"part0\":$split(name, \"_\")[0],\n            \"part1\":$exists($split(name, \"_\")[1]) ? $split(name, \"_\")[1]:\"\",\n            \"part2\":$exists($split(name, \"_\")[2]) ? $split(name, \"_\")[2]:\"\",\n        }\n)",
        "Type": null
      }
    ],
    "SubFilters": []
  },
  "Validation": {
    "Type": "validationCollection",
    "Name": "NAA.K.T.",
    "ErrorMessage": "Uitleg\nDeze regel controleert of de materiaalnamen in het project correct zijn en of de materialen daadwerkelijk in gebruik zijn. Alleen materialen die in gebruik zijn, worden gecontroleerd om te verifiëren of de naamgeving voldoet aan de NAA.K.T.-methodiek.\n\nAandachtspunten:\n\n1. Deel 1 (Naam): Eerst wordt gecontroleerd of het eerste deel van de naam (Naam) correct is. Als dit niet juist is, zullen de volgende controles ook fout gaan.\n2. Deel 2 (Kenmerk): Deel 2 wordt gecontroleerd op basis van wat in Deel 1 is vastgesteld. Dit betekent dat de mogelijkheden voor Deel 2 afhangen van de correcte invulling van Deel 1.\n3. Deel 3 (Toepassing): Deel 3 wordt gecontroleerd op basis van wat in Deel 2 is bepaald. Dit houdt in dat Deel 2 de opties voor Deel 3 bepaalt.",
    "Properties": [
      {
        "Name": "Operator",
        "Value": {
          "Type": "value",
          "Properties": [
            {
              "Name": "value",
              "Value": "and",
              "Type": ""
            }
          ]
        }
      }
    ],
    "SubValidations": [
      {
        "Type": "validation",
        "Name": "Naamdeel 1",
        "ErrorMessage": "#### Issue\nHet tweede naamdeel (kenmerk) is ongeldig voor de opgegeven materiaalnaam.\n\n* Materiaalnaam (deel 1): '{{part0}}'\n* Kenmerk (deel 2): '{{part1}}'\n\n#### Oplossing\nControleer welke kenmerken zijn toegestaan voor de materiaalnaam '{{part0}}'\nvolgens de NAA.K.T.-standaard en kies een geldig kenmerk.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "querySelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "part0",
                  "Type": "list"
                }
              ]
            }
          },
          {
            "Name": "Validator",
            "Value": {
              "Type": "value",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "list:IsIn",
                  "Type": "list"
                }
              ]
            }
          },
          {
            "Name": "expectedValue",
            "Value": {
              "Type": "lookupDataSelector",
              "Properties": [
                {
                  "Name": "distinct",
                  "Value": "",
                  "Type": "list"
                },
                {
                  "Name": "query",
                  "Value": "naam",
                  "Type": "list"
                },
                {
                  "Name": "lookupTable",
                  "Value": "NL:MateriaalNamenNaaKT24",
                  "Type": "list"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      },
      {
        "Type": "validation",
        "Name": "Naamdeel 2",
        "ErrorMessage": "#### Issue\nHet derde naamdeel (toepassing) is ongeldig voor de opgegeven materiaalnaam.\n\n* Materiaalnaam (deel 1): '{{part0}}'\n* Toepassing (deel 3): '{{part2}}'\n\n#### Oplossing\nControleer welke toepassingen zijn toegestaan voor de materiaalnaam '{{part0}}'\nvolgens de NAA.K.T.-standaard en pas de toepassing aan.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "querySelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "part1",
                  "Type": "list"
                }
              ]
            }
          },
          {
            "Name": "Validator",
            "Value": {
              "Type": "value",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "list:IsIn",
                  "Type": "list"
                }
              ]
            }
          },
          {
            "Name": "expectedValue",
            "Value": {
              "Type": "lookupDataSelector",
              "Properties": [
                {
                  "Name": "distinct",
                  "Value": "",
                  "Type": "list"
                },
                {
                  "Name": "query",
                  "Value": "$[naam = '{{part0}}'].kenmerk",
                  "Type": "list"
                },
                {
                  "Name": "lookupTable",
                  "Value": "NL:MateriaalNamenNaaKT24",
                  "Type": "list"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      },
      {
        "Type": "validation",
        "Name": "Naamdeel 3",
        "ErrorMessage": "####Issue\n\nDeel 3 (Toepassing): Deel 3 wordt gecontroleerd op basis van de vastgestelde materiaalnaam (Deel 1).\nNaam controle met _ als separator.\n\n* Naamdeel 1: '{{part0}}'\n* Naamdeel 2: '{{part1}}'\n* Naamdeel 3: '{{part2}}'\n\nDe waarde voor naamdeel 2:'{{part1}}' en daarom wordt er gecontroleerd wat de mogelijke waarde zijn voor naamdeel 3 '{{part2}}'.\nDe waarde voor naamdeel 3:'{{part2}}', komt niet voor in de lookup lijst NAA.K.T. materialen.",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "querySelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "part2",
                  "Type": "list"
                }
              ]
            }
          },
          {
            "Name": "Validator",
            "Value": {
              "Type": "value",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "list:IsIn",
                  "Type": "list"
                }
              ]
            }
          },
          {
            "Name": "expectedValue",
            "Value": {
              "Type": "lookupDataSelector",
              "Properties": [
                {
                  "Name": "distinct",
                  "Value": "",
                  "Type": "list"
                },
                {
                  "Name": "query",
                  "Value": "$[naam = '{{part0}}'].toepassing",
                  "Type": "list"
                },
                {
                  "Name": "lookupTable",
                  "Value": "NL:MateriaalNamenNaaKT24",
                  "Type": "list"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      }
    ]
  },
  "Details": {
    "Name": "NAA.K.T. materiaal naamgeving",
    "Impact": 4,
    "Priority": 2,
    "Tags": [
      "3.5 Structuur en naamgeving",
      "4.7 Materiaal"
    ],
    "Description": "## Wat doet deze regel?\n\nDeze regel controleert of **materiaalnamen in het model voldoen aan de NAA.K.T.-naamgevingsstructuur**.\n\nDe controle wordt uitgevoerd op **materialen die daadwerkelijk in gebruik zijn in het model**. Alleen materialen met een `usedCount > 0` worden meegenomen in de controle.\n\nDe naam van een materiaal moet zijn opgebouwd volgens de **NAA.K.T.-structuur**, waarbij de onderdelen worden gescheiden door een **underscore (_)**.\n\nDeze structuur sluit aan bij de afspraken rondom **materiaalnaamgeving en standaardisatie van BIM-data**.\n\n---\n\n## Wat de regel controleert\n\nDe regel controleert of de **materiaalnaam bestaat uit drie onderdelen** en of deze onderdelen overeenkomen met de toegestane waarden uit de NAA.K.T.-lookup tabel.\n\nDe volgende onderdelen worden gecontroleerd:\n\n- **Deel 1 – NAAm**  \n  De generieke materiaalnaam.  \n  Deze moet voorkomen in de lijst met toegestane materiaalnamen.\n\n- **Deel 2 – Kenmerk**  \n  Het kenmerk of type van het materiaal.  \n  De toegestane waarden zijn afhankelijk van de gekozen **materiaalnaam (deel 1)**.\n\n- **Deel 3 – Toepassing**  \n  De toepassing van het materiaal.  \n  De toegestane waarden zijn afhankelijk van de gekozen **materiaalnaam (deel 1)**.\n\nDe regel controleert dus een **hiërarchische afhankelijkheid**:\n",
    "HelpUrl": "https://help.daqs.io/NL/BIMBasisILS/Help/4.7.3_Materiaal/?nav=false",
    "TimeToSolve": 5,
    "AllDisciplines": true,
    "Disciplines": []
  },
  "Metadata": []
}