Ir para o conteúdo

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

m
sem sumário de edição
mSem resumo de edição
Linha 1: Linha 1:
Identificadores únicos, tais como [https://www.postgresql.org/docs/current/functions-sequence.html 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'''.
Identificadores únicos, tais como [https://www.postgresql.org/docs/current/functions-sequence.html 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 ajuda a entender os agrupamentos ([https://schema.org/Taxon taxons]).
Neste artigo trazemos a aprimoração e a Gestão de Registros e de Indexação com Identificadores Únicos! Imagine um mundo onde o gerenciamento eficaz de registros e a indexação em bases de dados se tornam simples e eficientes. Isso é possível através da utilização estratégica de identificadores únicos. Mas a chave real 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


==Taxonomias bit a bit==
==Taxonomias bit a bit==
[[arquivo:KraEtAll2019-fig01-apples.png|thumb|280px|Códigos binários identificando frutas individuais e sua taxonomia: laranja, maçã vermelha e maçã verde.]]
[[arquivo:KraEtAll2019-fig01-apples.png|thumb|280px|Códigos binários identificando frutas individuais e sua taxonomia: laranja, maçã vermelha e maçã verde.]]
A ilustração do conjunto de frutas ajuda a entender os agrupamentos ([https://schema.org/Taxon taxons]).
A cada prefixo pode-se expressar uma regra. Por exemplo:
A cada prefixo pode-se expressar uma regra. Por exemplo:


*Primeiro bit do ID: define se é laranja (1) ou maçã (0). <br />Os conjuntos ''L'' dos identificadores de laranjas e ''M'' das maçãs da ilustração ao lado são definidos por: <math>L=\{1, 10\}</math> e <math>M=\{0, 00, 000, 01, 010, 011\}</math>.  
*Primeiro bit do ID: define se é laranja (1) ou maçã (0). <br />Os conjuntos ''L'' dos identificadores de laranjas e ''M'' das maçãs da ilustração ao lado são definidos por: <math>L=\{1, 10\}</math> e <math>M=\{0, 00, 000, 01, 010, 011\}</math>.


*Primeiro bit do ID de maçã:  especializa como vermelha (0) ou verde (1). Portanto IDs com prefixos "00" (maçã ''red''),  "01" (maçã ''green'') e "0" para maçã genérica.  Daí rotular uma maçã com  ID "0" é uma falha, é um código exclusivo de taxon. <br />Os conjuntos ''R'' dos identificadores de maçãs ''red'' e ''G'' das maçãs ''green'' da ilustração ao lado são definidos por: <math>R=\{0, 00, 000\} \subset M</math> e <math>G=\{01, 010, 011\} \subset M</math>. Ambos subconjuntos de ''M'', estabelecendo portanto uma hierarquia taxonômica entre as maçãs.
*Primeiro bit do ID de maçã:  especializa como vermelha (0) ou verde (1). Portanto IDs com prefixos "00" (maçã ''red''),  "01" (maçã ''green'') e "0" para maçã genérica.  Daí rotular uma maçã com  ID "0" é uma falha, é um código exclusivo de taxon. <br />Os conjuntos ''R'' dos identificadores de maçãs ''red'' e ''G'' das maçãs ''green'' da ilustração ao lado são definidos por: <math>R=\{0, 00, 000\} \subset M</math> e <math>G=\{01, 010, 011\} \subset M</math>. Ambos subconjuntos de ''M'', estabelecendo portanto uma hierarquia taxonômica entre as maçãs.
Linha 13: Linha 17:
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'''.
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: "<code>$prefixo$contador</code>". Com as variáveis ''prefixo'' e ''contador'', tendo apenas o ''prefixo'' um comprimento definido pelas regras taxonômicas.
A sintaxe geral da cadeia de bits é simples: "<code>$prefixo$contador</code>". Com as variáveis ''prefixo'' e ''contador'', tendo apenas o ''prefixo'' um comprimento definido pelas regras taxonômicas. Por exemplo no ID ilustrado da maçã verde <code>010</code>, o ''prefixo'' é&nbsp;<code>01</code> e o ''contador'' é&nbsp;<code>0</code>.


[[Arquivo:NatCod-Taxons-p1.png|centro|480px]]
[[Arquivo:NatCod-Taxons-p1.png|centro|480px]]
Linha 26: Linha 30:
Se a taxonomia é sujeita a modificações, podemos '''reservar mais bits para cada um dos grupos taxonômicos''' (''taxons'').
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 <code>1</code> mas reservando mais bits para futuras diferenciações: duas estratégias são possíveis:
No exemplo poderíamos no futuro '''distinguir laranjas''',  entre ''comuns'' e ''avermelhadas''. Todas elas com prefixo <code>1</code> mas reservando mais bits para futuras diferenciações: duas estratégias são possíveis:  


*Se as existentes são comuns, batizamos elas de <code>10</code> e reservamos <code>11</code> para as avermelhadas. Não fica nenhuma reserva de segurança.
*Se as existentes são comuns, batizamos elas de <code>10</code> e reservamos <code>11</code> para as avermelhadas. Não fica nenhuma reserva de segurança.
Linha 37: Linha 41:
Na sintaxe "<code>$prefixo$contador</code>", '''o prefixo é necessariamente um código''' e a contagem para identificação dos taxons é '''necessariamente lexicográfica'''. Ver função ''hsucc''  em [https://github.com/osm-codes/NaturalCodes/blob/main/src/step01def-lib_NatCod.sql step01def-lib_NatCod.sql]. Exemplos:
Na sintaxe "<code>$prefixo$contador</code>", '''o prefixo é necessariamente um código''' e a contagem para identificação dos taxons é '''necessariamente lexicográfica'''. Ver função ''hsucc''  em [https://github.com/osm-codes/NaturalCodes/blob/main/src/step01def-lib_NatCod.sql step01def-lib_NatCod.sql]. Exemplos:


*Dois taxons requerem no mínimo 1 bit. O primeiro é ''hsucc''("")="0", o segundo é seu sucessor, ''hsucc''("0")="1".
* Dois taxons requerem no mínimo 1 bit. O primeiro é ''hsucc''("")="0", o segundo é seu sucessor, ''hsucc''("0")="1".
*Dois taxons com reserva de 2 bits, requerindo portanto 3 bits. Com reserva balanceada: taxons "001" e "101".
*Dois taxons com reserva de 2 bits, requerindo portanto 3 bits. Com reserva balanceada: taxons "001" e "101".
*Três taxons e todos com até 5 subtaxons cada. Pode-se adotar um prefixo de 2 bits fixos para os pais, mais dois variáveis para os filhos, ou balancear valores de zero a 3*5=15 entre 4 ou mais bits.
*Três taxons e todos com até 5 subtaxons cada. Pode-se adotar um prefixo de 2 bits fixos para os pais, mais dois variáveis para os filhos, ou balancear valores de zero a 3*5=15 entre 4 ou mais bits.
Linha 46: Linha 50:
Sendo um número, podemos calcular o sucessor <code>succ($contador)</code> através da aritmética usual, <code>$contador+1</code>.
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>succ($contador)</code> através do "sucessor lexicográfico" (também denominado "hierarchical successor"). Ver função ''hsucc''  em [https://github.com/osm-codes/NaturalCodes/blob/main/src/step01def-lib_NatCod.sql step01def-lib_NatCod.sql].
Sendo um código, podemos calcular <code>succ($contador)</code> através do "sucessor lexicográfico" (também denominado "hierarchical successor"). Ver função ''hsucc''  em [https://github.com/osm-codes/NaturalCodes/blob/main/src/step01def-lib_NatCod.sql step01def-lib_NatCod.sql].


==Taxonomias Base N ==
==Taxonomias Base N==
[[Arquivo:KraEtAll2019-fig03-new-bitsBase4.png|thumb|220px|Reserving 2&nbsp;bits for all taxon-prefixes, and later representation in&nbsp;Base4h.]]
[[Arquivo:KraEtAll2019-fig03-new-bitsBase4.png|thumb|220px|Reserving 2&nbsp;bits for all taxon-prefixes, and later representation in&nbsp;Base4h.]]
<!--  
<!--  
Linha 63: Linha 67:
[[Arquivo:KraEtAll2019-fig15-GreenApples.png|thumb|220px|''Green apples'', IDs na Base4h.]]
[[Arquivo:KraEtAll2019-fig15-GreenApples.png|thumb|220px|''Green apples'', IDs na Base4h.]]


A conversão para Base4h resulta na segunda coluna da tabela abaixo, com prefixos em negrito, e conjunto "Green apples" ilustrado.  
A conversão para [[Base4h]] resulta na segunda coluna da tabela abaixo, com prefixos em negrito, e conjunto "Green apples" ilustrado.  


:{| class="wikitable"
:{| class="wikitable"
|'''Base2h'''
|'''Base2h'''
|'''Base4h'''  
|'''Base4h'''
|'''''Taxon'''''
|'''''Taxon'''''
|-
|-
|00||'''0'''||Red Apple (illustrated)
|00 || '''0''' ||Red Apple (illustrated)
|-
|-
|000||'''0'''G|| Red Apple (illustrated)
|000||'''0'''G||Red Apple (illustrated)
|-
|-
|0000||'''0'''0||Red Apple (illustrated)
|0000||'''0'''0|| Red Apple (illustrated)
|-
|-
|0001101||'''0'''12Q||Red Apple
|0001101||'''0'''12Q||Red Apple
|-
|-
|0010101||'''0'''22Q||Red Apple
|0010101 || '''0'''22Q||Red Apple
|-
|-
|01||'''1'''||Green apple (illustrated)
|01 ||'''1'''||Green apple (illustrated)
|-
|-
|0101||'''1'''1||Green apple
|0101||'''1'''1 ||Green apple  
|-
|-
|010||'''1'''G||Green apple (illustrated)
|010||'''1'''G|| Green apple (illustrated)
|-
|-
|011||'''1'''Q||Green apple (illustrated)
| 011 ||'''1'''Q ||Green apple (illustrated)
|-
|-
|10||'''2'''||Organge (illustrated)
|10||'''2'''|| Organge (illustrated)  
|-
|-
|10101||'''2'''2Q||Organge
|10101||'''2'''2Q||Organge
|-
|-
|1011||'''2'''3||Organge
| 1011||'''2'''3||Organge
|-
|-
|101||'''2'''Q||Organge (illustrated)
| 101||'''2'''Q||Organge (illustrated)
|}
|}


=== Atribuição dos IDs dentro de uma taxonomia ===
===Atribuição dos IDs dentro de uma taxonomia ===
:Supor que a partir de ''k'' bits, digamos ''k''=4, seja possível destacar prefixos válidos para conjuntos e subconjuntos alinhados.
 
[[Arquivo:NatCod-taxon-ilustraSetsB4h.png|centro|semmoldura|480x480px]]
Supor que a partir de ''k'' bits, digamos ''k''=4, seja possível destacar prefixos válidos para conjuntos e subconjuntos alinhados.
 
[[Arquivo:NatCod-taxon-ilustraSetsB4h.png|centro|semmoldura|480px]]
 
Imaginemos o caso de uma pequena ''loja de departamentos'', que começou por organizar os produtos mais vendidos: frutas e roupas. Entre as frutas, as mais vendidas são as maçãs, e entre as roupas, os jeans, as camisetas e alguns tipos de roupa feminina.
Imaginemos o caso de uma pequena ''loja de departamentos'', que começou por organizar os produtos mais vendidos: frutas e roupas. Entre as frutas, as mais vendidas são as maçãs, e entre as roupas, os jeans, as camisetas e alguns tipos de roupa feminina.


Linha 105: Linha 112:


Cada uma dessas ''classes de produtos'' foi destacado abaixo num diagrama de conjuntos, e os prefixos eleitos indicados no ponto interior mais à esquerda de cada conjunto. No ponto interior mais à direita, o limite superior que uma ''instância'' daquela classe de produto pode receber como identificador único.
Cada uma dessas ''classes de produtos'' foi destacado abaixo num diagrama de conjuntos, e os prefixos eleitos indicados no ponto interior mais à esquerda de cada conjunto. No ponto interior mais à direita, o limite superior que uma ''instância'' daquela classe de produto pode receber como identificador único.
[[Arquivo:NatCod-taxon-produtos1.png|centro|miniaturadaimagem|680x680px|Códigos Naturais de 11 bits na base 4h: de <code>0</code> até <code>33333Q</code>, identificando produtos.
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>. Demais frutas: prefixos <code>01</code>, <code>02</code> e  <code>03</code> disponíveis.


Maçãs vermelhas, 🍎, prefixo <code>000</code>; maçãs verdes, 🍏, prefixo <code>001</code>.Roupas de mulher, prefixo <code>30</code>: vestidos,👗,<code>300</code>; camisas femininas,👚, <code>302</code>. Demais roupas:
[[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>. Demais frutas: prefixos <code>01</code>, <code>02</code> e  <code>03</code> disponíveis.<br /> Maçãs vermelhas, prefixo <code>000</code>; maçãs verdes, prefixo <code>001</code>. 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 />Cada maçã vermelha recebe um ID no intervalo <code>000</code> até <code>00033Q</code>; cada maçã verde de <code>001</code> até <code>00133Q</code>; ...;  cada jeans de <code>32</code> até <code>32333Q</code>.]]


camisetas,👕, prefixo <code>31</code>, e jeans, 👖, prefixo <code>32</code>. Cada maçã vermelha recebe um ID no intervalo <code>000</code> até <code>00033Q</code>; cada maçã verde de <code>001</code> até <code>00133Q</code>; ...;  cada jeans de <code>32</code> até <code>32333Q</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>. 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
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>. 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.
[[Arquivo:NatCod-taxons-InstanceIntervals1.png|centro|semmoldura|580x580px]]
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.


==Identificadores sem contador==
==Identificadores sem contador==
Linha 140: Linha 146:
*modelagem em [[wikipedia:Class diagram|diagramas de classe UML]]: onde podem ser destacadas as semânticas de relacionamento geral-específico, parte-todo e  classe-instência; assim como o relacionamento entre diferentes tipos de identificador (ex. como o ID de cliente se relaciona com o ID de produto).
*modelagem em [[wikipedia:Class diagram|diagramas de classe UML]]: onde podem ser destacadas as semânticas de relacionamento geral-específico, parte-todo e  classe-instência; assim como o relacionamento entre diferentes tipos de identificador (ex. como o ID de cliente se relaciona com o ID de produto).


*modelos de [[wikipedia:Data lineage|linhagem dos dados]]: ''dataflows'' ou similares indicando os dados no sistema origem e no sistema onde os IDs estão sendo controlados, garantido por exemplo que [[wikipedia:Golden record (informatics)|''Golden records'']] estejam usando os IDs da forma planejada.
* modelos de [[wikipedia:Data lineage|linhagem dos dados]]: ''dataflows'' ou similares indicando os dados no sistema origem e no sistema onde os IDs estão sendo controlados, garantido por exemplo que [[wikipedia:Golden record (informatics)|''Golden records'']] estejam usando os IDs da forma planejada.


Tecnicamente os IDs são [[códigos naturais]] e as classes das instâncias que os IDs representam estão codificadas como prefixos binários, seguindo o modelo prefixo-contador descrito nas seções acima.  
Tecnicamente os IDs são [[códigos naturais]] e as classes das instâncias que os IDs representam estão codificadas como prefixos binários, seguindo o modelo prefixo-contador descrito nas seções acima.  
Linha 156: Linha 162:
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]. 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".
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]. 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".


* [https://schema.org/Airline Airline]
*[https://schema.org/Airline Airline]
* [https://schema.org/Consortium Consortium]
*[https://schema.org/Consortium Consortium]
* [https://schema.org/Corporation Corporation]
*[https://schema.org/Corporation Corporation]
* [https://schema.org/EducationalOrganization EducationalOrganization]
*[https://schema.org/EducationalOrganization EducationalOrganization]
* [https://schema.org/FundingScheme FundingScheme]
*[https://schema.org/FundingScheme FundingScheme]
* [https://schema.org/GovernmentOrganization GovernmentOrganization]
* [https://schema.org/GovernmentOrganization GovernmentOrganization]
* [https://schema.org/LibrarySystem LibrarySystem]
*[https://schema.org/LibrarySystem LibrarySystem]
* [https://schema.org/LocalBusiness LocalBusiness]
*[https://schema.org/LocalBusiness LocalBusiness]
** [https://schema.org/AnimalShelter AnimalShelter]
**[https://schema.org/AnimalShelter AnimalShelter]
** [https://schema.org/ArchiveOrganization ArchiveOrganization]
**[https://schema.org/ArchiveOrganization ArchiveOrganization]
** [https://schema.org/AutomotiveBusiness AutomotiveBusiness]
**[https://schema.org/AutomotiveBusiness AutomotiveBusiness]
** [https://schema.org/ChildCare ChildCare]
**[https://schema.org/ChildCare ChildCare]
** [https://schema.org/DryCleaningOrLaundry DryCleaningOrLaundry]
**[https://schema.org/DryCleaningOrLaundry DryCleaningOrLaundry]
** [https://schema.org/EmergencyService EmergencyService]
**[https://schema.org/EmergencyService EmergencyService]
** [https://schema.org/EmploymentAgency EmploymentAgency]
**[https://schema.org/EmploymentAgency EmploymentAgency]
** [https://schema.org/EntertainmentBusiness EntertainmentBusiness]
**[https://schema.org/EntertainmentBusiness EntertainmentBusiness]
** [https://schema.org/FinancialService FinancialService]
**[https://schema.org/FinancialService FinancialService]
** [https://schema.org/FoodEstablishment FoodEstablishment]
**[https://schema.org/FoodEstablishment FoodEstablishment]
** [https://schema.org/GovernmentOffice GovernmentOffice]
**[https://schema.org/GovernmentOffice GovernmentOffice]
** [https://schema.org/HealthAndBeautyBusiness HealthAndBeautyBusiness]
** [https://schema.org/HealthAndBeautyBusiness HealthAndBeautyBusiness]
** [https://schema.org/HomeAndConstructionBusiness HomeAndConstructionBusiness]
**[https://schema.org/HomeAndConstructionBusiness HomeAndConstructionBusiness]
** [https://schema.org/InternetCafe InternetCafe]
**[https://schema.org/InternetCafe InternetCafe]
** [https://schema.org/LegalService LegalService]
**[https://schema.org/LegalService LegalService]
** [https://schema.org/Library Library]
**[https://schema.org/Library Library]
** [https://schema.org/LodgingBusiness LodgingBusiness]
**[https://schema.org/LodgingBusiness LodgingBusiness]
** [https://schema.org/MedicalBusiness MedicalBusiness]
**[https://schema.org/MedicalBusiness MedicalBusiness]
** [https://schema.org/ProfessionalService ProfessionalService]
**[https://schema.org/ProfessionalService ProfessionalService]
** [https://schema.org/RadioStation RadioStation]
**[https://schema.org/RadioStation RadioStation]
** [https://schema.org/RealEstateAgent RealEstateAgent]
**[https://schema.org/RealEstateAgent RealEstateAgent]
** [https://schema.org/RecyclingCenter RecyclingCenter]
**[https://schema.org/RecyclingCenter RecyclingCenter]
** [https://schema.org/SelfStorage SelfStorage]
**[https://schema.org/SelfStorage SelfStorage]
** [https://schema.org/ShoppingCenter ShoppingCenter]
**[https://schema.org/ShoppingCenter ShoppingCenter]
** [https://schema.org/SportsActivityLocation SportsActivityLocation]
**[https://schema.org/SportsActivityLocation SportsActivityLocation]
** [https://schema.org/Store Store]
**[https://schema.org/Store Store]
** [https://schema.org/TelevisionStation TelevisionStation]
**[https://schema.org/TelevisionStation TelevisionStation]
** [https://schema.org/TouristInformationCenter TouristInformationCenter]
**[https://schema.org/TouristInformationCenter TouristInformationCenter]
** [https://schema.org/TravelAgency TravelAgency]
**[https://schema.org/TravelAgency TravelAgency]
* [https://schema.org/MedicalOrganization MedicalOrganization]
*[https://schema.org/MedicalOrganization MedicalOrganization]
** [https://schema.org/Dentist Dentist]
**[https://schema.org/Dentist Dentist]
** [https://schema.org/DiagnosticLab DiagnosticLab]
**[https://schema.org/DiagnosticLab DiagnosticLab]
** [https://schema.org/Hospital Hospital]
**[https://schema.org/Hospital Hospital]
** [https://schema.org/MedicalClinic MedicalClinic]
**[https://schema.org/MedicalClinic MedicalClinic]
** [https://schema.org/Pharmacy Pharmacy]
**[https://schema.org/Pharmacy Pharmacy]
** [https://schema.org/Physician Physician]
**[https://schema.org/Physician Physician]
** [https://schema.org/VeterinaryCare VeterinaryCare]
**[https://schema.org/VeterinaryCare VeterinaryCare]
* [https://schema.org/NGO NGO]
*[https://schema.org/NGO NGO]
* [https://schema.org/NewsMediaOrganization NewsMediaOrganization]
*[https://schema.org/NewsMediaOrganization NewsMediaOrganization]
* [https://schema.org/OnlineBusiness OnlineBusiness]
*[https://schema.org/OnlineBusiness OnlineBusiness]
** [https://schema.org/OnlineStore OnlineStore]
**[https://schema.org/OnlineStore OnlineStore]
* [https://schema.org/PerformingGroup PerformingGroup]
*[https://schema.org/PerformingGroup PerformingGroup]
** [https://schema.org/DanceGroup DanceGroup]
**[https://schema.org/DanceGroup DanceGroup]
** [https://schema.org/MusicGroup MusicGroup]
**[https://schema.org/MusicGroup MusicGroup]
** [https://schema.org/TheaterGroup TheaterGroup]
**[https://schema.org/TheaterGroup TheaterGroup]
* [https://schema.org/PoliticalParty PoliticalParty]
* [https://schema.org/PoliticalParty PoliticalParty]
* [https://schema.org/Project Project]
*[https://schema.org/Project Project]
** [https://schema.org/FundingAgency FundingAgency]
**[https://schema.org/FundingAgency FundingAgency]
** [https://schema.org/ResearchProject ResearchProject]
**[https://schema.org/ResearchProject ResearchProject]
* [https://schema.org/ResearchOrganization ResearchOrganization]
*[https://schema.org/ResearchOrganization ResearchOrganization]
* [https://schema.org/SearchRescueOrganization SearchRescueOrganization]
*[https://schema.org/SearchRescueOrganization SearchRescueOrganization]
* [https://schema.org/SportsOrganization SportsOrganization]
*[https://schema.org/SportsOrganization SportsOrganization]
** [https://schema.org/SportsTeam SportsTeam]
**[https://schema.org/SportsTeam SportsTeam]
* [https://schema.org/WorkersUnion WorkersUnion]
*[https://schema.org/WorkersUnion WorkersUnion]
* [https://schema.org/WorkersUnion WorkersUnion]
*[https://schema.org/WorkersUnion WorkersUnion]
* ... (outras classificações, ausentes no SchemaOrg, podem ser obtidas ou criadas na Wikidata)
*... (outras classificações, ausentes no SchemaOrg, podem ser obtidas ou criadas na Wikidata)
* Other (classe '''temporária''' para a gestão de cadastros incompletos)
*Other (classe '''temporária''' para a gestão de cadastros incompletos)


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".
2 528

edições