Código Natural/Identificação taxonômica: mudanças entre as edições

De Documentação
Sem resumo de edição
Linha 31: Linha 31:
Na sintaxe "<code>$prefixo$contador</code>", o contador pode ser representado como número. Computacionalmente o ID é um código, seu prefixo um código (fixo ou condicional), e por fim o contador, depois de isolado (ainda como código) pode sofrer ''cast'' para um número inteiro positivo.
Na sintaxe "<code>$prefixo$contador</code>", o contador pode ser representado como número. Computacionalmente o ID é um código, seu prefixo um código (fixo ou condicional), e por fim o contador, depois de isolado (ainda como código) pode sofrer ''cast'' para um número inteiro positivo.


Sendo um número, podemos calcular <code>$contador+1</code> através da aritmética usual.
Sendo um número, podemos calcular o sucessor <code>succ($contador)</code> através da aritmética usual, <code>$contador+1</code>.


===Contadores lexicográficos===
===Contadores lexicográficos===
Na sintaxe "<code>$prefixo$contador</code>", o contador pode ser mantido como código.
Na sintaxe "<code>$prefixo$contador</code>", o contador pode ser mantido como código.


Sendo um código, podemos calcular <code>$contador+1</code> através da "aritmética lexicográfica"...
Sendo um código, podemos calcular <code>succ($contador)</code> através da "aritmética lexicográfica"...


==Taxonomias Base N==
==Taxonomias Base N==
Ver fig em https://github.com/osm-codes/NaturalCodes/wiki/Illustrating-the-order-as-taxonomy-blocks
Ver fig em https://github.com/osm-codes/NaturalCodes/wiki/Illustrating-the-order-as-taxonomy-blocks
Necessário reservar 2 bits para a taxonomia. Aqui adotamos a estratégia de reserva de apenas um bit para a diferenciação das laranjas, e mais um bit para a diferenciação das maçãs.
A conversão para base4 resulta...
[[Arquivo:KraEtAll2019-fig03-new-bitsBase4.png|centro|semmoldura|369x369px]]


[[Arquivo:KraEtAll2019-fig15-GreenApples.png]]
[[Arquivo:KraEtAll2019-fig15-GreenApples.png]]


[[Arquivo:KraEtAll2019-fig03-awns.png]]
[[Arquivo:KraEtAll2019-fig03-awns.png]]
==Identificadores sem contador==
A sintaxe "<code>$prefixo$contador</code>" não deve ser confundida com a sintaxe interna do prefixo. Havendo necessidade de se identificar apenas os grupos taxonômicos, com sua hierarquia, podemos fazer uso do prefixo como identificador,

Edição das 13h16min de 16 de julho de 2023

Identificadores únicos, tais como contadores sequenciais em bases de dados, são fundamentais para a indexação e controle de registros. O ideal, todavia, é que esse identificador traga embutida alguma informação relativa à taxonomia da entidade identificada. Isso porque os identificadores de grupos taxonômicos também precisam ser únicos e padronizados.

A ilustração do conjunto de frutas nos ajuda

Taxonomias bit a bit

Códigos binários identificando frutas individuais e sua taxonomia: laranja, maçã vermelha e maçã verde.

A cada prefixo pode-se expressar uma regra. Por exemplo:

  • Primeiro bit do ID: define se é laranja (1) ou maçã (0).
    Os conjuntos L dos identificadores de laranjas e M das maçãs da ilustração ao lado são definidos por: e .
  • Primeiro bit do ID de maçã: define se é vermelha (0) ou verde (1). Portanto IDs com prefixos 00 e 01.
    Os conjuntos R dos identificadores de maçãs "red" e G das maçãs "green" da ilustração ao lado são definidos por: e . Ambos subconjuntos de M, estabelecendo portanto uma hierarquia taxonômica entre as maçãs.

Os identificadores de frutas são livres, podem ter qualquer quantidade de bits, podem ter tamanho fixo ou variável, e não precisam percorrer uma sequência especial. A taxonomia só impõe a existência de prefixos e regras de interpretação para esses prefixos.

A sintaxe geral da cadeia de bits é simples: "$prefixo$contador". Com as variáveis prefixo e contador, tendo apenas o prefixo um tamanho definido pelas regras taxonômicas.

Reserva de bits para o prefixo do contador

No exemplo acima as laranjas fizeram uso de um prefixo de apenas 1 bit e as maçãs uso de um prefixo de 2 bits.

Se a taxonomia é sujeita a modificações, podemos reservar mais bits para cada um dos grupos taxonômicos (taxons).

No exemplo poderíamos no futuro distinguir laranjas, entre comuns e avermelhadas. Todas elas com prefixo 1 mas reservando mais bits para futuras diferenciações: duas estratégias são possíveis:

  • Se as existentes são comuns, batizamos elas de 10 e reservamos 11 para as avermelhadas. Não fica nenhuma reserva de segurança.
  • Se as existentes são misturadas, batizamos a mistura de 100 e reservamos 101 para as identificadas como comuns e 110 para as avermelhadas; ficando ainda a reserva 111 para outra eventual variedade de laranja.

Quanto maior o risco de uma futura diferenciação, maior a demanda por reserva.

Contadores numéricos

Na sintaxe "$prefixo$contador", o contador pode ser representado como número. Computacionalmente o ID é um código, seu prefixo um código (fixo ou condicional), e por fim o contador, depois de isolado (ainda como código) pode sofrer cast para um número inteiro positivo.

Sendo um número, podemos calcular o sucessor succ($contador) através da aritmética usual, $contador+1.

Contadores lexicográficos

Na sintaxe "$prefixo$contador", o contador pode ser mantido como código.

Sendo um código, podemos calcular succ($contador) através da "aritmética lexicográfica"...

Taxonomias Base N

Ver fig em https://github.com/osm-codes/NaturalCodes/wiki/Illustrating-the-order-as-taxonomy-blocks

Necessário reservar 2 bits para a taxonomia. Aqui adotamos a estratégia de reserva de apenas um bit para a diferenciação das laranjas, e mais um bit para a diferenciação das maçãs.

A conversão para base4 resulta...

KraEtAll2019-fig03-new-bitsBase4.png


KraEtAll2019-fig15-GreenApples.png

KraEtAll2019-fig03-awns.png

Identificadores sem contador

A sintaxe "$prefixo$contador" não deve ser confundida com a sintaxe interna do prefixo. Havendo necessidade de se identificar apenas os grupos taxonômicos, com sua hierarquia, podemos fazer uso do prefixo como identificador,