Código Natural/Identificação taxonômica/Casos de uso

De Documentação

Estruturas taxonômicas consensuais, e que sejam estáveis dentro de certa escala de tempo, não são tão raras. Existe alias, com as técnicas modernas de estatística, IA e taxonomia numérica, aliadas a um maior potencial de se medir as características de um objeto (desde informações IoT até DNA anulando risco de ambiguidade na atribuição de uma classe), uma tendência ao crescimento das taxonomias estáveis.


Códigos hierárquicos famosos

A seguir a adaptação de códigos, em sua maior parte decimais, a uma representação correspondente em código natural, binária e baseH.

ISBN

ISBN Details PT.png

O código de barra dos livros, conhecido como International Standard Book Number (ISBN) tem uma estrutura de dígitos decimais que pode ser mapeada para para representação binária hierárquica. Vamos supor sua versão vigente, o ISBN13 de 13 dígitos. A separação correta de cada parte depende da anterior na hierarquia, ou seja, as partes não possuem um número fixo de dígito. A ilustração ao lado dá uma ideia.

CDD

A Classificação Decimal de Dewey (CDD) ou Dewey Decimal Classification (DDC) é o código colado nos livros das bibliotecas. Segue uma estrutura hierárquica de 3 dígitos seguida de ponto e mais dígitos opcionais. Exemplo:

500 Natural sciences and mathematics
    510 Mathematics
        516 Geometry
            516.3 Analytic geometries
                516.37 Metric differential geometries
                    516.375 Finsler geometry

Variações através da introdução de uma classificação facetada (com mais de uma "faceta" ou dimensão) são permitidas no CDD, mas não discutiremos aqui no exemplo de caso.

Adaptação para código natural, supondo dígitos base 16, independentes do ponto na representação humana:

5 Natural sciences and mathematics
    51  Mathematics
        516 Geometry
            516.3 Analytic geometries
                516.37 Metric differential geometries
                    516.375 Finsler geometry

A única mudança notada é a remoção dos zeros à direita, visto que o tamanho do código é proporcional à resolução.

Comparando com o decimal representado como float:

Query Decimal float Natural Code
[por intervalo] Todos os livros de Geometria id BETWEEN 510.0 AND ddc_max('510')
-- 519.999999
id BETWEEN natcod_ddc('510')
AND natcod_ddc_max('510')
[por máscara do prefixo] Todos os livros de Matemática id::text like '510%' id & natcod_ddc_masc('51')

Problemas com o decimal: ...

Jurisdições ISO

Europe ISO 3166-1.svg

.. O mosaico de países e suas subdivisões de primeiro nível foram padronizados através da ISO 3166-2. O mosaico de países da ISO 3166-2 é dado pela ISO 3166-1 alpha-2.

Cada país pode ser associado a um código de tamanho fixo, de 8 a 12 bits conforme o número de países que se considerar. Portanto podendo ser base16 de 2 a 3 dígitos, ou um mapeamento binário da própria sigla de 2 letras. Em seguida, nos dígitos seguintes, com tamanho variável conforme o número de subdivisões do país, o código de subdivisão.
PS: na AddressForAll foi convencionado um terceiro subnível para se chegar ao município (ou mosaico similar relativo à jurisdição que controla os nome de rua e numeração predial).

Jurisdições IBGE do Brasil

... Assim como EUA e outros países, além da representação por siglas, estilo ISO, existe a representação por código numérico hierárquico.

... Ver amostras e algoritmo de conversão do IBGE .. discutir limitações do IBGE e vantagens do código natural equivalente (e compatível através de função de conversão simples).


Jurisdições DANE da Colômbia

Primeiro nivel hierárquico, para sumarizações.

...

Geohash

Ver Geohash ... Resumo: é um esquema de classificação facetada (bidimensional) baseada nas taxonimas de Latitude e Longitude. Classificam-se zonas retangulares do globo, com a resolução desejada, desde a mais grosseira (pedaço da superfície terrestre de centenas de km2) até a mais refinada (ex. retângulo de 1 metro quadrado).

Se fosse apenas uma dimensão, por exemplo Latitude, teríamos o globo subdividido em 32 partes iguais no primeiro dígito, depois cada uma delas subdivididas em 32 novamente para o segundo dígito, e assim por diante. A estratégia de inclusão da longitude foi intercalando a mesma, mas pela representação normalizada binária de cada grandeza, intercalando bit a bit (depois representando em base32).

Biologia

Ramo do conhecimento que, historicamente, mais explorou e contribuiu para os fundamentos da Taxonomia. Não existe uma "taxonomia da vida" 100% consensual, mas, principalmente em função da aplicação, existem consensos e taxonomias estáveis.

Taxonavigation

Na comunidade gestora da Wikispecies houve consenso quanto à "navegação por taxon" (taxonavigation). São da ordem de 4 ramos na raiz da árvore, ou da ordem de 8 se incluirmos as subdivisões do reino Eukaryota:

  • Superregnum Archaea: códigos candidatos 0.
  • Superregnum Bacteria: códigos candidatos 1.
  • Superregnum Eukaryota: códigos candidatos 2 ou "".
    • Regnum Animalia: códigos candidatos 3 ou 20.
    • (Regnum Chromista: códigos candidatos 4 ou 21.)
    • Regnum Fungi: códigos candidatos 5 ou 22.
    • Regnum Plantae: códigos candidatos 6 ou 23.
    • Regnum Protista: códigos candidatos 7 ou 24.
  • (Virus: códigos candidatos 8 ou 3.)

Entre parêntesis os casos que foram colocados em dúvida, ou seja, que estão sujeitos a serem alterados, demandando reserva. A ordem dentro de cada ramos é arbitrária, quando possível seguindo a ordem alfabética dos nomes. A relevância, em termos de número de espécies e estabilidade, pode ser um critério para agregar "etc" como classe coringa, para casos exóticos e sem maior interesse (por exemplo para a Ecologia).

A escolha depende principalmente da necessidade ou não de se "economizar um dígito". Como a nomenclatura de reino é popular, por exemplo "Eukaryota Protista" (ou simplesmente "Protista") é razoável na raiz; sugere-se adotar a convenção de 1 dígito. A hierarquia de fato iniciaria depois deste primeiro dígito.

A escolha natural para esse primeiro dígito, com reserva, é de 4 bits (base16). A base do segundo dígito vai depender do primeiro, ou pode repetir a convenção dos 4 bits. Alguns exemplos:

Agroindústria

...

Química

...

Taxonomia atômica

A tabela periódica (ref. interativa português) possui linhas (períodos), colunas e uma classificação clássica por grupos.

Como o próprio nome diz, "periódica", essa seria a classificação mais importante, e de fato são apenas 7 períodos relevantes (numerados de 1 a 7) para a classificação atômica. Outra alternativa para a raiz da árvore seriam os conjuntos clássicos da IUPAC, na ordem de ocorrência na tabela:

  • Metais alcalinos (Alkali metals)
  • Metais alcalino-terrosos (Alkaline earth metals)
  • Não-metais
  • Gases nobres (Noble gases)
  • Semimetais
  • Halogênios (Halogens)
  • Metais de transição (transition elements)
  • Outros metais (Pnictogens?)
  • Lantanídeos (Rare-earth metals)
  • Actinídios (Actinoids)

Em seguida a coluna, agrupada por blocos.

Taxonomia molecular

... orgânicos e não-orgânicos... depois uma extensa classificação, sem maior consenso. A industria farmacêutica, de qualquer forma, estabelece algumas convenções estáveis para produtos...

Organizações do SchemaOrg

É muito comum em Big Data a adoção de uma visão unificada dos dados de uma grande empresa, que pode conter, por exemplo, mais de um sistema de CRM para a gestão dos seus clientes.

A classificação dos clientes B2B de uma empresa, conforme SchemaOrg.

O primeiro passo nesse caso é estabelecer em UML qual a estratégia semântica de unificação. Pode-se optar por exemplo por não misturar B2C com B2B, e optar por classificar os clientes B2B conforme o o primeiro e segundo níveis do padrão SchemaOrg, ou seja, conforme sch:Organization.

Por ser um classificação dinâmica, podem surgir problemas ao amarrar classificação ao ID. As organizações são dinâmicas, uma escola do governo pode ser privatizada, o CNPJ de um colégio técnico pode ser expandido para ensino universitário, etc. Podemos supor ambos os casos: um atributo numérico de classificação com poucos bits, ou um ID com prefixo dado pela classificação. Se a instabilidade (na escala de anos) é um problema, pode-se restringir ao mais simples e estável: {PF, PJ/GOV, PJ/COM, PJ/ONG} com ou sem PJ/undef. O prefixo de ID nesse caso seria um controle relevante das heranças, que facilita nos JOINs de banco de dados.

Quanto às classes sch:Organization pode-se expandir, reservando para o sistema interno, de RH por exemplo, a classe InternalOrganization, para mapear subsidiárias e departamentos.

Imaginando o caso de ID, onde optou-se também por adotar, como medida de apoio à transição do ID convencional (inteiro de 32 bits) para o hInt de 64 bits, a classe Other. Nela os clientes com cadastro indefinido ou onde caberiam outras classificações, ficam de "quarentena". Na representação base16h seria necessário mais de um dígito para o primeiro e segundo níveis, de modo que uma opção mais amigável (1 dígito por nível hierárquico) é a base32nvu:

  • 0 - InternalOrganization (classe para a gestão interna de departamentos e empresas controladas)
  • 1 - (supor classe reservada)
  • 2 - Airline
  • 3 - Consortium
  • 4 - Corporation
  • ... (até 10 outras classificações futuras do SchemaOrg, ou obtidas na Wikidata)
  • Z - Other (classe temporária para a gestão de cadastros incompletos)
    • Z1 - Generic partner (para distinguir de terceirizados ou franquiados ainda indefinidos - sem especialização)

Devido à ambiguidade nos domínios, a empresa precisa definir qual a subclasse canônica, quando o SchemaOrg oferecer mais de uma alternativa. Por exemplo "Dentist" pode ser subclasse de "LocalBusiness" ou de "MedicalOrganization", no exemplo foi adotada a classe "MedicalOrganization".

Foram consumidos até aqui 15 dos 25 bits reservados à classificação (cada dígito base32 consome 5 bits - caberiam mais 2 dígitos), totalizando 25+32=57 bits informativos no esquema hInt64 de identificação das instâncias. Contador "por classe" de máximo 32 bits, pois, para usar o esquema hCount16_48, com 48 bits no contador, a classificação não poderia passar de 11 bits — acima poderíamos eliminar o terceiro nível para ficar com 10 bits.

Para a expressão final do ID de cada instância pode ser utilizado o código híbrido base32-decimal (ex. B5-123 seria a Pharmacy 123), ou base32 com ponto para destacar dígitos do contador (B5.3R).

Ver também