Repository navigation
Spec 004: adaptador do Wikidata e ligações entre variantes - #34
Merged
Merged
Conversation
Registra os ADRs 0004 (acesso ao Wikidata por SPARQL no QLever, paginado no cache) e 0005 (tabela variant_links fora das observações). A regra de primary da spec 001 (R2) passa a valer só para births e population. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A exigência de exatamente uma primary por (country, count_type) passa a valer só para births e population. Resolve a issue #3. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…, R4) RawLink e a função opcional links(files) no contrato do adaptador; VariantLink, RELATIONS e validate_links em links.py; to_links e ingest_links no pipeline; write_links e read_links em io.py. SCHEMA_VERSION passa a 1.1.0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Consultas SPARQL paginadas no QLever, leitura página a página com falha alta, gênero pela classe do item e filtro de rótulos que não são nomes. Registra a fonte em sources.yaml, a amostra real em tests/fixtures/wikidata/ (gerada por tools/amostra_wikidata.py) e o User-Agent com o repositório transferido para BenchCommons. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Rótulos do mesmo item, P460, P1533, P1560, P5278, P1889 e P2440 viram RawLink entre rótulos aceitos; alvos sem rótulo e valores desconhecidos são pulados. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ingest --links e build --links levam a tabela de ligações até a release; run grava variant_links.parquet quando alguma fonte tem links. O passo da CI com as fontes de sources.yaml confere o arquivo. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Os números 0004 a 0006 foram ocupados pelas specs 003b e 003d. O User-Agent aponta para BenchCommons/dataset-names, como na master. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
O 0007 foi ocupado pela spec 003e (nomes corrompidos na fonte). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Oct 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que muda
Spec 004 (
docs/specs/004-wikidata/), com os ADRs 0008 acesso ao Wikidata e 0009 ligações entre variantes.wikidata(CC0, conferido em https://www.wikidata.org/wiki/Wikidata:Licensing),attested, sem país. O adaptadorsrc/namescommons/adapters/wikidata.pylê 15 páginas de consultas SPARQL ao QLever (prenomesQ202444, sobrenomesQ101352, P460, P1533, P1560, P5278, P1889, P2440), paginadas comLIMIT 200000e URLs fixas, entãofetche--offlinefuncionam como nas outras fontes.FeM, e uma linha sem gênero é omitida quando o mesmo nome tem gênero informado por outro item (para cumprir a R1.5 da spec 002). Rótulos que não são nomes (Q34147,Ritwik (given name),Felbert,von, valor desconhecido) são pulados.scriptcontinua sendo a escrita detectada no nome; a P282 não é usada (R3.7).variant_links: tabela nova e opcional no contrato (RawLink,links(files)). As relações sãosame_item,said_to_be_the_same,family_name_identical,other_gender,different_frometransliteration.ingest --linksebuild --linksa levam até a release, erungravavariant_links.parquet. Não há agrupamento: ogroup_idfica para a spec 005.SCHEMA_VERSIONpassa a1.1.0, porque a release ganha um arquivo.primary" passa a valer só parabirthsepopulation. A spec 001 (R2) recebeu uma nota.tests/fixtures/wikidata/tem 16 KB de respostas reais do QLever restritas a 25 itens, geradas portools/amostra_wikidata.py. A CI roda o Wikidata no passo das fontes desources.yamle conferevariant_links.parquet.Status da spec: Em implementação (passa a Implementada depois do merge).
Critérios de aceite e como foram verificados
sources.yamleload_sourcesa aceita:test_fonte_registrada,test_amostra_e_atribuicao[wikidata].parseproduz os registros escritos à mão (AndreaF/M de três itens,Lethasem a linha vazia,李sem gênero, rótulos inválidos pulados):test_parse_da_amostra_real,test_genero_vazio_cede_ao_informado.linksproduz as ligações escritas à mão (Ивановother_genderИванова,МарияtransliterationMariya, sem auto-ligação):test_links_da_amostra_real,test_transliteracoes_da_amostra_real.tests/test_wikidata.py.run --offlinegravavariant_links.parquete o manifesto traz1.1.0com as linhas do arquivo:tests/test_cli_links.py.attestedsemprimarysão aceitas, e duasbirthssemprimarycontinuam recusadas:test_attested_nao_exige_primary,test_contagem_continua_exigindo_uma_primary.uv sync,uv run pytest -q(592 passed localmente) e os dois passosrun --offline, exercitados portests/test_ci.py.fetch wikidatabaixou 15 arquivos, 216 MB, em 54 s.run --offlinesó com o Wikidata gerou 816.771 observações e 436.971 ligações em 60 s, com pico de 2,01 GB. Num únicorun --offlinecom as 3 milhões de observações sintéticas dotools/bench_pipeline.pymais o Wikidata: 3.816.771 observações em 99 s, com pico de 3,43 GB (dentro dos 4 GB, com margem pequena: Margem de memória do R8 com o Wikidata (3,43 GB de 4 GB) #31).Closes #3.Decisões que tomei sozinho (e o custo se estiverem erradas)
FeM; a linha sem gênero cede à com gênero. Custo:female_sharenão é afetado (não há contagem), mas quem filtra os nomes "femininos atestados" no Wikidata vê também os unissex.countrysempre vazio. A P495 aparece em 0,3% dos itens. Custo: nenhum país vem do Wikidata. O nome entra no índice mundial comcountry_count0.( ) / , _). Pula 90 prenomes, 84 sobrenomes e 2.130 transliterações (quase todas com tom numérico). Custo: um nome legítimo com esses caracteres seria perdido; não encontrei nenhum na amostra medida.name_key. Custo:AndreaM P1889AndreaF some, porque é o mesmo nome. A spec 005 trabalha comname_keye não perde nada com isso.SCHEMA_VERSION1.1.0 pelo arquivo novo na release.origin/master(spec 003e). Ela não conflita com a master atual (PR Endurece o leitor de XLSX contra DTD nos membros XML #33).Issues
Closes #3
🤖 Generated with Claude Code