2 532
edições
(→Atribuição dos IDs lexicográficos dentro de uma taxonomia: add tabela dos items) |
|||
(7 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 5: | Linha 5: | ||
* descrever as '''técnicas inovadoras de indexação''' de banco de dados, por hInt e hCount; | * descrever as '''técnicas inovadoras de indexação''' de banco de dados, por hInt e hCount; | ||
* demonstrar que é possível '''unificar identificadores de diversas tabelas''' (classes) num banco de dados SQL; | * demonstrar que é possível '''unificar identificadores de diversas tabelas''' (classes) num banco de dados SQL; | ||
* demonstrar que é possível resgatar '''ramos desejados de uma hierarquia com alta performance''' em Big Data. | * demonstrar que é possível resgatar '''ramos desejados de uma hierarquia com alta performance''' em Big Data.] | ||
* demonstrar que a taxonomia embutida no ID '''acrescenta integridade semântica''', similar a [[wikipedia:Check digit|dígitos verificadores]]. | |||
A chave para o sucesso está na integração inteligente de informações relacionadas à taxonomia da entidade identificada, dentro desses identificadores.<!-- Elucidamos a verdadeira vantagem dessa abordagem — especialmente quando aplicada aos identificadores ligados a grupos taxonômicos. Aqui, a singularidade e a padronização emergem como imperativos. Ao enriquecer esses identificadores com um contexto taxonômico rico, não apenas a precisão da indexação se eleva, mas também a coesão de toda a estrutura de dados. --> | A chave para o sucesso está na integração inteligente de informações relacionadas à taxonomia da entidade identificada, dentro desses identificadores.<!-- Elucidamos a verdadeira vantagem dessa abordagem — especialmente quando aplicada aos identificadores ligados a grupos taxonômicos. Aqui, a singularidade e a padronização emergem como imperativos. Ao enriquecer esses identificadores com um contexto taxonômico rico, não apenas a precisão da indexação se eleva, mas também a coesão de toda a estrutura de dados. --> | ||
Linha 131: | Linha 132: | ||
[[Arquivo:NatCod-taxon-produtos1.png|centro|miniaturadaimagem|680px|Códigos Naturais de 11 bits na base 4h: de <code>0</code> até <code>33333Q</code>, identificando produtos.<br /> | [[Arquivo:NatCod-taxon-produtos1.png|centro|miniaturadaimagem|680px|Códigos Naturais de 11 bits na base 4h: de <code>0</code> até <code>33333Q</code>, identificando produtos.<br /> | ||
Futas: prefixo <code>0</code>. Roupas: prefixo <code>3</code>. Demais produtos: prefixos <code>1</code> e <code>2</code> disponíveis. Maçãs: prefixo <code>00</code> | Futas: prefixo <code>0</code>. Roupas: prefixo <code>3</code>. Demais produtos: prefixos <code>1</code> e <code>2</code> disponíveis. <br/>Maçãs: prefixo <code>00</code>; maçãs vermelhas, prefixo <code>000</code>; maçãs verdes, prefixo <code>001</code>. Demais frutas: prefixos <code>01</code>, <code>02</code> e <code>03</code>, sem especialização.<br /> Roupas de mulher, prefixo <code>30</code>: vestidos <code>300</code>; camisas femininas <code>302</code>. Demais roupas: camisetas, prefixo <code>31</code>; e jeans prefixo <code>32</code>. <br />O ID de cada produto é expresso pelo prefixo seguido de um ou mais dígitos, respeitando limite dos 11 bits. Por exemplo o ID <code>001.123</code> é relativo a maçã verde, todas elas estarão no intervalo <code>001.0</code> até <code>001.33Q</code>.]] | ||
Neste cenário, no inventário inicial foram suficientes 11 bits para identificar todos os produtos com seus prefixos. Por exemplo os IDs das maçãs vermelhas ficaram no intervalo <code>000</code> até <code>00033Q</code>, e as maçãs verdes de <code>001</code> até <code>00133Q</code>. Para facilitar a visualização do prefixo no valor do ID podemos usar o ponto, por exemplo <code>001.33Q</code>. | Neste cenário, no inventário inicial foram suficientes 11 bits para identificar todos os produtos com seus prefixos. Por exemplo os IDs das maçãs vermelhas ficaram no intervalo <code>000</code> até <code>00033Q</code>, e as maçãs verdes de <code>001</code> até <code>00133Q</code>. Para facilitar a visualização do prefixo no valor do ID podemos usar o ponto, por exemplo <code>001.33Q</code>. | ||
Linha 164: | Linha 165: | ||
Abaixo ilustrando ao invés das classes algumas instâncias de produtos, cada qual com seu ID, e a posição do ID na "régua base 4h". Para destacar classe e contador foi adotada a notação com ponto separador. Por exemplo a maçã verde com ID=<code>00133</code> pode ser destacada como <code>001.33</code>. Ela vem depois da maçã <code>001.0</code> e bem antes por exemplo do jeans <code>32.101</code>. Todos ficam dentro do intervalo das respectivas classes. | Abaixo ilustrando ao invés das classes algumas instâncias de produtos, cada qual com seu ID, e a posição do ID na "régua base 4h". Para destacar classe e contador foi adotada a notação com ponto separador. Por exemplo a maçã verde com ID=<code>00133</code> pode ser destacada como <code>001.33</code>. Ela vem depois da maçã <code>001.0</code> e bem antes por exemplo do jeans <code>32.101</code>. Todos ficam dentro do intervalo das respectivas classes. | ||
Reparar que os códigos de instância não precisam ocupar todos os 4 dígitos, isso facilita a leitura humana dos códigos. Como eles vão sendo consumidos na ordem hierárquica, se um dia forem necessárias mais classes, podem ser alocados os ainda não utilizados. | |||
[[Arquivo:NatCod-taxons-InstanceIntervals1.png|centro|semmoldura|582px]] | [[Arquivo:NatCod-taxons-InstanceIntervals1.png|centro|semmoldura|582px]] | ||
A ampliação do banco de dados, adotando o dobro, 22 bits, acarretou a ampliação do intervalo da mesma classe, seus IDs passaram a ser de <code>000</code> até <code>00033333333</code>. '''O aumento de bits não afeta os identificadores''', apenas amplia a possibilidade de incluir mais produtos dentro da mesma classe. Ao contrário da estratégia similar adotada com números, os '''prefixos de código são [[wikipedia:Scalability|escaláveis]]'''. | A mesma flexibilidade vale no acréscimo de mais bits. A ampliação do banco de dados, adotando o dobro, 22 bits, acarretou a ampliação do intervalo da mesma classe, seus IDs passaram a ser de <code>000</code> até <code>00033333333</code>. '''O aumento de bits não afeta os identificadores''', apenas amplia a possibilidade de incluir mais produtos dentro da mesma classe. Ao contrário da [[Código Natural/Comparação com números|estratégia similar adotada com números]], os '''prefixos de código são [[wikipedia:Scalability|escaláveis]]'''. | ||
===Atribuição dos IDs hCount === | ===Atribuição dos IDs hCount === | ||
Linha 210: | Linha 213: | ||
===Questão do uso dos intermediários === | ===Questão do uso dos intermediários === | ||
Se eu posso classificar a maçã como planta da espécie ''M. domestica'', não faz sentido ter uma outra maçã classificada apenas como Malus, ou simplesmente Plantae. Isso causaria risco de duplicidade das entradas, com uma parte do sistema atribuindo IDs de alta especificidade de outra parte atribuindo IDs com classe mais genérica. A boa prática neste caso seria de nunca utilizar os níveis intermediários. < | Se eu posso classificar a maçã como planta da espécie ''M. domestica'', não faz sentido ter uma outra maçã classificada apenas como Malus, ou simplesmente Plantae. Isso causaria risco de duplicidade das entradas, com uma parte do sistema atribuindo IDs de alta especificidade de outra parte atribuindo IDs com classe mais genérica. A boa prática neste caso seria de nunca utilizar os níveis intermediários. | ||
:<small>PS: nesse caso há que se questionar se precisamos de um sistema tão sofisticado de ID, se na prática nunca vamos usar níveis intermediários. Sem esquecer, por outro lado, que os taxons intermediários podem ser (sem certas aplicações) importantes nas buscas e relatórios com agregação taxonômica.</small> | |||
Por outro lado se apenas a ''M. domestica'' é popular e com classificação confiável, e existem dezenas de outras maçãs com classificação indefinida, melhor que se adote a convenção de usar Malus para as indefinidas. | Por outro lado se apenas a ''M. domestica'' é popular e com classificação confiável, e existem dezenas de outras maçãs com classificação indefinida, melhor que se adote a convenção de usar Malus para as indefinidas. | ||
O uso das classes intermediárias deve ser reservado a esse segundo caso, onde não queremos onerar o sistema de classificação, e | O uso das classes intermediárias deve ser reservado a esse segundo caso, onde não queremos onerar o sistema de classificação, e onde a decisão estável. | ||
===Estabilidade estatística === | ===Estabilidade estatística === | ||
Métodos estatísticos ([[wikipedia:cluster analysis]]) permitem avaliar a través de atributos de cada candidato a classe a sua relação com os demais e sua posição dentro de uma "hierarquia de semelhança", conhecida como dendrograma. | |||
Árvores taxonômicas se alongam quando há demanda por especialização, mas o custo de ampliar a árvore requer relevância nessa especialização. No contexto da quitanda por exemplo, a relevância pode ser determinada pelo ponto de vista do volume de vendas ou volume de estoque. Do ponto de vista semântico, todavia, a preocupação é quanto à ambiguidade: é '''mais estável''' a taxonomia que garante menor grau de '''ambiguidade''' e menor '''risco de mudança'''. Essa análise precisa preceder a análise volumétrica. | |||
O julgamento de quem classifica um produto depende de atributos objetivos do produto. | |||
'''Métodos estatísticos''' ([[wikipedia:cluster analysis|''cluster analysis'']] e [[wikipedia:Numerical taxonomy|taxonomia numérica]]) permitem avaliar a través de atributos de cada candidato a classe a sua relação com os demais e sua posição dentro de uma "hierarquia de semelhança", conhecida como dendrograma. | |||
[[Arquivo:Dendrograma-cluster.png|centro|semmoldura|680px]] | [[Arquivo:Dendrograma-cluster.png|centro|semmoldura|680px]] | ||
Linha 228: | Linha 236: | ||
===Caso de uso ilustrativo=== | ===Caso de uso ilustrativo=== | ||
:: <small>Resumo e amostras de [[Código Natural/Identificação taxonômica/Casos de uso]].</small> | |||
É 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 [[wikipedia:Customer relationship management|sistema de CRM]] para a gestão dos seus clientes. | É 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 [[wikipedia:Customer relationship management|sistema de CRM]] para a gestão dos seus clientes. | ||
Linha 234: | Linha 243: | ||
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 [https://schema.org/Organization sch:Organization]. Pode-se também reservar para o sistema interno, de RH por exemplo, a classe ''InternalOrganization'', para mapear subsidiárias e departamentos. | 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 [https://schema.org/Organization sch:Organization]. Pode-se também reservar para o sistema interno, de RH por exemplo, a classe ''InternalOrganization'', para mapear subsidiárias e departamentos. | ||
Optou-se também por adotar, como medida de apoio à transição do ID convencional (inteiro de 32 bits) para o [[Código_natural/Representação_interna#Cache-length_strategy|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: | Optou-se também por adotar, como medida de apoio à transição do ID convencional (inteiro de 32 bits) para o [[Código_natural/Representação_interna#Cache-length_strategy|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]]: | ||
*<code>0</code> - InternalOrganization (classe para a gestão interna de departamentos e empresas controladas) | *<code>0</code> - InternalOrganization (classe para a gestão interna de departamentos e empresas controladas) | ||
Linha 261: | Linha 270: | ||
***<code>754</code> - [https://schema.org/MiddleSchool MiddleSchool] | ***<code>754</code> - [https://schema.org/MiddleSchool MiddleSchool] | ||
***<code>755</code> - [https://schema.org/Preschool Preschool] | ***<code>755</code> - [https://schema.org/Preschool Preschool] | ||
** ... | ** ... | ||
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". | 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". |
edições