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.
Sinais associados
- 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
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
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
dataType vazio no XML do IDS · ao inspecionar o XML, a tag dataType da faceta Property está ausente ou vazia.
- 5
Bounds que não funcionam · a restriction usa minInclusive/maxInclusive mas os valores aprovados ou reprovados não fazem sentido numérico.
Causas prováveis
- 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
Redator não sabe que a comparação muda · quem escreveu a regra assumiu que minInclusive compara números. Sem dataType, compara texto.
- 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
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
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.
Riscos
- 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
Reprovação falsa gera retrabalho · o projetista corrige o que já estava certo porque o IDS reprovou por comparação de strings.
- 3
Inconsistência entre verificadores · rule engines diferentes tratam a ausência de dataType de maneiras diferentes. O resultado muda conforme a ferramenta.
- 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
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.
Gravidade estimada
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.
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.
Ações corretivas
Curto prazo (30 dias):
-
Auditar o dataType de cada faceta Property com bounds. Abrir o XML e marcar as facetas que usam minInclusive/maxInclusive sem dataType.
-
Preencher o dataType. Para cada faceta identificada, declarar o tipo de dado correto: IfcLengthMeasure, IfcReal, IfcAreaMeasure etc., conforme a propriedade verificada.
-
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):
-
Padronizar o tipo no IFC de origem. Garantir que o mapeamento de exportação gera a propriedade com tipo numérico, não string.
-
Instituir validação de dataType no checklist do IDS. Antes de publicar, conferir que toda restriction numérica tem dataType.
-
Documentar o mapa dataType-IFC. Listar, por propriedade verificada, o dataType do IDS e o tipo IFC esperado.
Prevenção
- 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
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
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
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.
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.
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.
Serviço relacionado
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