Clínica do IDS

Por que a verificação numérica do IDS não funciona?

Sem dataType declarado na faceta Property, o IDS compara valores como texto — "9" é maior que "15" em ordem lexicográfica. Toda verificação de faixa, limite ou grandeza física sem dataType é comparação textual disfarçada de numérica.

01

Problema observado

Sem dataType, vinte é uma palavra.

O IDS exige que a espessura mínima da parede seja 15 centímetros. A verificação aprova uma parede com espessura 9 — porque "9" é maior que "15" como texto. Numericamente, 9 é menor que 15. Sem dataType declarado na faceta Property, o IDS compara strings, não valores numéricos. E comparação de strings não respeita magnitude.

No schema do IDS (buildingSMART IDS 1.0), a faceta Property em requirements pode declarar um dataType — o tipo de dado esperado do valor verificado. Sem dataType, o rule engine trata o valor como texto (IfcLabel ou string genérica). A restriction com xs:minInclusive ou xs:maxInclusive compara caractere a caractere, não número a número. "9" é maior que "15" em ordem lexicográfica. "20.0" é maior que "100.0" porque "2" vem depois de "1". Toda verificação de faixa, limite ou grandeza física sem dataType declarado é comparação textual disfarçada de numérica.

O problema não é raro. Editores de IDS permitem salvar a faceta Property sem dataType. O redator escreve o nome do Pset e da propriedade, define o valor mínimo, e não percebe que o tipo ficou vazio. O IDS parece correto no editor. O defeito só aparece no relatório — ou nem aparece, porque a comparação textual às vezes coincide com a numérica para valores curtos.

Quantitativo que vem do modelo depende de verificação numérica correta. A §5.2.1 c) da ABNT NBR ISO 19650-2 exige critério de aceitação por requisito. Critério numérico que compara como texto não é critério — é casualidade.

02

Sinais associados

  1. 1

    Reprovação de valor correto · a parede tem espessura 100 e o IDS exige mínimo 90, mas reprova. Como texto, "100" é menor que "90" — "1" vem antes de "9".

  2. 2

    Aprovação de valor errado · a propriedade tem valor fora da faixa, mas o IDS aprova. Como strings, a ordem não é a que parece.

  3. 3

    Resultado inconsistente entre modelos · o mesmo IDS dá resultados diferentes em modelos com valores semelhantes, porque a comparação textual depende do formato do número.

  4. 4

    dataType vazio no XML do IDS · ao inspecionar o XML, a tag dataType da faceta Property está ausente ou vazia.

  5. 5

    Bounds que não funcionam · a restriction usa minInclusive/maxInclusive mas os valores aprovados ou reprovados não fazem sentido numérico.

03

Causas prováveis

  1. 1

    Editor de IDS não preenche dataType por padrão · o editor gera a faceta Property sem dataType. O redator não percebe a lacuna porque o IDS parece completo na interface.

  2. 2

    Redator não sabe que a comparação muda · quem escreveu a regra assumiu que minInclusive compara números. Sem dataType, compara texto.

  3. 3

    Cópia de specification sem conferir tipo · a faceta foi copiada de outro IDS onde a propriedade era textual. No contexto novo é numérica, mas o dataType não foi ajustado.

  4. 4

    Modelo exporta valor como string · o IFC armazena o valor como IfcLabel ou IfcText em vez de IfcReal ou IfcLengthMeasure. Mesmo com dataType, a comparação pode falhar se o dado no IFC é string.

  5. 5

    Sem teste numérico antes de publicar · ninguém testou se a comparação numérica funciona com valores limítrofes (9 vs 10, 20.0 vs 100.0, 100 vs 99) antes de colocar o IDS em produção.

04

Riscos

  1. 1

    Quantitativo aceito com valor errado · espessura, área, comprimento ou volume fora da faixa passa pela verificação porque a comparação é textual. O quantitativo extraído depois está errado.

  2. 2

    Reprovação falsa gera retrabalho · o projetista corrige o que já estava certo porque o IDS reprovou por comparação de strings.

  3. 3

    Inconsistência entre verificadores · rule engines diferentes tratam a ausência de dataType de maneiras diferentes. O resultado muda conforme a ferramenta.

  4. 4

    Orçamento e 5D com dado furado · se a verificação numérica não funciona, o gate de qualidade não pega propriedade fora da faixa. O dado chega ao orçamento com defeito.

  5. 5

    Defeito silencioso em valores curtos · para valores de 1 a 9, a comparação textual coincide com a numérica. O defeito só aparece com valores maiores — tarde e no caminho crítico.

05

Gravidade estimada

4
Gravidade estimada
Nível 3–4
Vai do Nível 3 (Não conformidade grave) ao Nível 4 (Crítico), dependendo da extensão do problema.
06

Testes recomendados

Teste 1 — O dataType está declarado?

Abra o XML do IDS e, para cada faceta Property com restriction numérica (minInclusive, maxInclusive, bounds), verifique se o dataType está preenchido.

Sinal de problema: tag dataType ausente ou vazia em faceta que usa comparação numérica.

Teste 2 — A comparação dá o resultado esperado com valores limítrofes?

Rode o IDS contra modelo de teste com valores propositalmente limítrofes: 9, 10, 0.9, 1.0, 100, 99.

Sinal de problema: 9 aprovado quando deveria reprovar por ser menor que 10, ou 100 reprovado quando deveria aprovar.

Teste 3 — O valor no IFC é numérico?

Verifique no IFC se a propriedade verificada tem valor como IfcReal, IfcLengthMeasure, IfcAreaMeasure (numérico) ou como IfcLabel, IfcText (string).

Sinal de problema: valor armazenado como string no IFC. Mesmo com dataType no IDS, o rule engine pode não converter.

Teste 4 — O dataType do IDS bate com o tipo do IFC?

Confirme que o dataType declarado no IDS corresponde ao tipo real do valor no IFC (ex: IfcLengthMeasure, IfcReal, IfcInteger).

Sinal de problema: IDS declara IfcReal mas o IFC armazena como IfcLengthMeasure, ou vice-versa. A correspondência depende do rule engine.

Teste 5 — O editor de IDS preencheu o dataType automaticamente?

Confira se o editor usado preenche o dataType ao criar a faceta Property com restriction numérica.

Sinal de problema: editor gera faceta sem dataType por padrão. O redator precisa preencher manualmente.

07

Critérios de conformidade

Toda faceta Property com restriction numérica (minInclusive, maxInclusive, bounds) tem dataType declarado e compatível com o tipo real do valor no IFC.

O dataType declarado corresponde ao tipo IFC da propriedade: IfcReal, IfcLengthMeasure, IfcAreaMeasure, IfcInteger — não IfcLabel ou IfcText.

O IDS foi testado com valores limítrofes (9 vs 10, 0.9 vs 1.0, 100 vs 99) e a comparação numérica funciona conforme esperado.

Facetas com restriction por enumeration ou pattern e valores textuais podem ficar sem dataType numérico — a ausência só é defeito quando a comparação é de grandeza.

O valor no IFC é armazenado como tipo numérico, não como string disfarçada de número.

O relatório de verificação mostra o tipo de comparação usado (numérica ou textual) por specification.

Cada propriedade numérica verificada por IDS está documentada com o dataType esperado e o tipo IFC correspondente.

08

Ações corretivas

Curto prazo (30 dias):

  1. Auditar o dataType de cada faceta Property com bounds. Abrir o XML e marcar as facetas que usam minInclusive/maxInclusive sem dataType.

  2. Preencher o dataType. Para cada faceta identificada, declarar o tipo de dado correto: IfcLengthMeasure, IfcReal, IfcAreaMeasure etc., conforme a propriedade verificada.

  3. Testar com valores limítrofes. Rodar o IDS corrigido contra modelo de teste com valores críticos e confirmar que a comparação numérica funciona.

Médio prazo (60-90 dias):

  1. Padronizar o tipo no IFC de origem. Garantir que o mapeamento de exportação gera a propriedade com tipo numérico, não string.

  2. Instituir validação de dataType no checklist do IDS. Antes de publicar, conferir que toda restriction numérica tem dataType.

  3. Documentar o mapa dataType-IFC. Listar, por propriedade verificada, o dataType do IDS e o tipo IFC esperado.

09

Prevenção

  1. 1

    dataType é obrigatório em restriction numérica · toda faceta Property com minInclusive, maxInclusive ou bounds tem dataType declarado. Sem tipo, a comparação é textual.

  2. 2

    Tipo do IDS bate com o tipo do IFC · o dataType declarado no IDS corresponde ao tipo real do valor no IFC. Divergência gera comparação imprevisível.

  3. 3

    Teste com valores limítrofes · antes de publicar, o IDS é testado com 9 vs 10, 0.9 vs 1.0, 100 vs 99. Se o resultado não é o esperado, o dataType está errado ou ausente.

  4. 4

    Exportação gera tipo numérico · o mapeamento de exportação gera IfcReal ou medida, não IfcLabel. Propriedade numérica armazenada como texto é defeito de exportação.

10

Referências normativas

  • buildingSMART IDS 1.0Information Delivery Specification. A faceta Property aceita dataType para declarar o tipo de dado esperado. Sem dataType, a restriction com minInclusive/maxInclusive compara strings, não números. A faceta Entity é a única sem cardinalidade; dataType é exclusivo da faceta Property.
  • ISO 16739-1:2024Industry Foundation Classes (IFC4x3). Os tipos de dado definidos no schema (IfcReal, IfcLengthMeasure, IfcAreaMeasure, IfcInteger, IfcLabel, IfcText) determinam como o valor é armazenado. Propriedade numérica exportada como IfcLabel vira string.
  • ABNT NBR ISO 19650-2:2022Fase de entrega. §5.2.1 c) exige critério de aceitação por requisito. Critério numérico que compara como texto não é critério — o resultado depende do formato, não da magnitude.
  • ABNT NBR ISO 7817-1:2024Level of information need (LOIN). O LOIN declara qual informação é necessária e para qual propósito. Se o propósito exige grandeza numérica (espessura, área, volume), o IDS precisa de dataType para garantir comparação correta.
  • ABNT NBR ISO 19650-1:2022Conceitos e princípios. §11.2 define o nível de informação necessária. Informação numérica com verificação textual é informação não verificada de fato.
11

Quando contratar ajuda especializada

dataType ausente é defeito silencioso — a comparação parece funcionar até que os valores cruzam o limiar onde texto e número divergem. Vale contratar quando:

  • O IDS verifica propriedades numéricas (espessura, área, volume, resistência) e ninguém conferiu se o dataType está declarado.
  • O projeto alimenta orçamento ou 5D a partir de dados verificados por IDS — e a verificação numérica precisa ser confiável.
  • Existe reprovação falsa ou aprovação suspeita em valores numéricos e a equipe não consegue explicar o resultado.
12

Serviço relacionado

Serviço da Coordenar

Elaboração de IDS (Information Delivery Specification)

A Coordenar audita cada faceta Property do IDS e declara o dataType correto para cada propriedade com restriction numérica, alinhado ao tipo real do valor no IFC. O IDS sai com comparação numérica garantida — espessura compara como metro, área como metro quadrado, e nenhum valor passa por sorte textual.

Solicitar elaboração de IDS

Salve este diagnóstico

Crie uma conta gratuita para guardar este diagnóstico e acessar seu histórico de qualquer lugar.

Baixe o checklist

PDF com critérios de conformidade e referências normativas. Cadastro gratuito.

Problemas relacionados