<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>XML |</title><link>https://clementgodbarge.com/pt/tag/xml/</link><atom:link href="https://clementgodbarge.com/pt/tag/xml/index.xml" rel="self" type="application/rss+xml"/><description>XML</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>pt-pt</language><lastBuildDate>Sun, 15 Mar 2026 00:00:00 +0000</lastBuildDate><image><url>https://clementgodbarge.com/media/icon_hu_64a6c3bec25b3d7b.png</url><title>XML</title><link>https://clementgodbarge.com/pt/tag/xml/</link></image><item><title>tei-mcp</title><link>https://clementgodbarge.com/pt/code/tei-mcp/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/pt/code/tei-mcp/</guid><description>&lt;h2 id="tei-mcp-a-tei-p5-ao-alcance-dos-agentes-de-ia"&gt;tei-mcp: a TEI P5 ao alcance dos agentes de IA&lt;/h2&gt;
&lt;p&gt;O tei-mcp é um servidor
de código aberto que dá aos assistentes de programação por IA acesso direto à especificação
. Em vez de se fiar em dados de treino memorizados – o que produz muitas vezes marcação plausível, mas incorreta –, a IA pode consultar a especificação em tempo real.&lt;/p&gt;
&lt;h2 id="funcionalidades"&gt;Funcionalidades&lt;/h2&gt;
&lt;p&gt;O servidor analisa a ODD da TEI P5 e expõe 16 ferramentas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consultar&lt;/strong&gt; qualquer elemento, classe, macro ou módulo pelo nome, sem distinção de maiúsculas e com sugestões em caso de gralha&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resolver atributos&lt;/strong&gt; ao longo de toda a hierarquia de classes da TEI (locais + herdados)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Expandir modelos de conteúdo&lt;/strong&gt; em árvores estruturadas, com resolução de classes e macros&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validar o aninhamento&lt;/strong&gt; – relação direta pai-filho ou acessibilidade recursiva, com registo do caminho&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validar documentos&lt;/strong&gt; contra a TEI P5: modelos de conteúdo, atributos, listas fechadas de valores, integridade das referências e avisos de depreciação&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validar elementos isolados&lt;/strong&gt; para fluxos de edição incremental&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Carregar personalizações ODD&lt;/strong&gt; para restringir o esquema a um subconjunto específico do projeto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pesquisar&lt;/strong&gt; em todos os tipos de entidade com expressões regulares&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="instalação"&gt;Instalação&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install tei-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ou executar diretamente com:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uvx tei-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="utilização"&gt;Utilização&lt;/h2&gt;
&lt;p&gt;Acrescente-o a qualquer cliente compatível com MCP (Claude, Cursor, Windsurf, etc.):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tei&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;uvx&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;tei-mcp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;O código-fonte e a documentação estão no
.&lt;/p&gt;</description></item><item><title>Multi-Saxon</title><link>https://clementgodbarge.com/pt/code/multi-saxon/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/pt/code/multi-saxon/</guid><description>&lt;h2 id="multi-saxon-processamento-xslt-em-paralelo-para-grandes-corpora-tei"&gt;Multi-Saxon: processamento XSLT em paralelo para grandes corpora TEI&lt;/h2&gt;
&lt;p&gt;O Multi-Saxon colmata uma lacuna crítica das ferramentas de processamento de XML: permite executar em paralelo transformações XSLT 2.0 e 3.0 que o LXML (uma biblioteca Python de XML muito usada) não consegue processar. Concebido especificamente para grandes coleções de documentos XML TEI, o Multi-Saxon acelera consideravelmente o processamento graças a uma execução paralela eficiente.&lt;/p&gt;
&lt;h2 id="características-principais"&gt;Características principais&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;XSLT avançado&lt;/strong&gt;: processa transformações XSLT 2.0 e 3.0, para lá das capacidades do LXML&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Processamento paralelo&lt;/strong&gt;: reduz drasticamente o tempo de transformação de grandes coleções de documentos graças à paralelização&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Otimizado para TEI&lt;/strong&gt;: concebido especificamente para documentos XML da Text Encoding Initiative (TEI)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Desempenho escalável&lt;/strong&gt;: lida eficientemente com corpora de centenas a milhares de documentos&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiplataforma&lt;/strong&gt;: funciona em diferentes sistemas operativos e ambientes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="o-problema-que-o-multi-saxon-resolve"&gt;O problema que o Multi-Saxon resolve&lt;/h2&gt;
&lt;p&gt;Os investigadores em humanidades digitais que trabalham com TEI deparam-se muitas vezes com dois obstáculos importantes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;O LXML (biblioteca Python corrente para o processamento de XML) só aceita XSLT 1.0, o que impede o uso das funcionalidades mais avançadas do XSLT 2.0/3.0&lt;/li&gt;
&lt;li&gt;Processar sequencialmente grandes corpora de documentos TEI pode levar um tempo proibitivo&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;O Multi-Saxon responde a ambos os problemas tirando partido das capacidades XSLT avançadas do Saxon e distribuindo o processamento por vários núcleos, com ganhos de desempenho significativos.&lt;/p&gt;
&lt;h2 id="implementação"&gt;Implementação&lt;/h2&gt;
&lt;p&gt;O Multi-Saxon combina Python com o processador Saxon, em Java, para criar um pipeline de transformação de alto desempenho:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usa a biblioteca Java Saxon para um processamento robusto de XSLT 2.0/3.0&lt;/li&gt;
&lt;li&gt;Implementa multiprocessamento para distribuir as transformações pelos núcleos de CPU disponíveis&lt;/li&gt;
&lt;li&gt;Gere eficientemente os pools de processadores para maximizar o débito&lt;/li&gt;
&lt;li&gt;Oferece uma interface simples para o processamento em lote de documentos TEI&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exemplo-de-utilização"&gt;Exemplo de utilização&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;multi_saxon&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MultiSaxon&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Initialize with your XSLT stylesheet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MultiSaxon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;transform.xsl&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Transform a single document&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;input.xml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;output.xml&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Transform an entire directory in parallel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;transformer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;transform_directory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;input_dir&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;output_dir&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="impacto-para-as-humanidades-digitais"&gt;Impacto para as humanidades digitais&lt;/h2&gt;
&lt;p&gt;Para os projetos de humanidades digitais que lidam com grandes coleções de documentos TEI, o Multi-Saxon permite:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transformações complexas à escala do corpus, impossíveis com o LXML&lt;/li&gt;
&lt;li&gt;Tempos de processamento drasticamente reduzidos (muitas vezes por fatores de 5 a 10 em sistemas multinúcleo)&lt;/li&gt;
&lt;li&gt;Análises mais sofisticadas graças às funcionalidades avançadas do XSLT 2.0/3.0&lt;/li&gt;
&lt;li&gt;Um fluxo de trabalho simplificado para processar coleções inteiras de documentos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;O código-fonte e a documentação estão no
.&lt;/p&gt;</description></item><item><title>persNamer</title><link>https://clementgodbarge.com/pt/code/persnamer/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/pt/code/persnamer/</guid><description>&lt;h2 id="persnamer-ligar-a-tei-ao-virtual-international-authority-file"&gt;persNamer: ligar a TEI ao Virtual International Authority File&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;O persNamer é uma ferramenta especializada em Python que simplifica a integração de dados de autoridade sobre pessoas, provenientes do VIAF (Virtual International Authority File), em documentos XML TEI. Ao converter identificadores VIAF em marcação TEI pronta a usar, o persNamer reduz consideravelmente o trabalho manual de criação de entradas estruturadas de pessoas para as edições académicas digitais.&lt;/p&gt;
&lt;h2 id="o-desafio-do-controlo-de-autoridade-em-tei"&gt;O desafio do controlo de autoridade em TEI&lt;/h2&gt;
&lt;p&gt;As edições académicas digitais exigem muitas vezes a identificação precisa de personagens históricas, com os seus nomes normalizados e datas de vida. Manter um controlo de autoridade coerente ao longo de um projeto obriga a:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Identificar as pessoas nos textos históricos&lt;/li&gt;
&lt;li&gt;Encontrar dados de autoridade a seu respeito&lt;/li&gt;
&lt;li&gt;Criar entradas TEI corretamente formatadas&lt;/li&gt;
&lt;li&gt;Garantir referências coerentes em todo o projeto&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Estes passos são, por norma, manuais, demorados e propensos a incoerências.&lt;/p&gt;
&lt;h2 id="como-funciona-o-persnamer"&gt;Como funciona o persNamer&lt;/h2&gt;
&lt;p&gt;O persNamer automatiza este fluxo de trabalho:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Obtenção dos dados VIAF&lt;/strong&gt;: a partir de um identificador VIAF, a ferramenta recupera os dados RDF por negociação de conteúdo HTTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extração da informação essencial&lt;/strong&gt;: analisa o RDF para extrair o nome preferido, a data de nascimento e a data de morte&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geração da marcação TEI&lt;/strong&gt;: cria dois fragmentos XML essenciais:
&lt;ul&gt;
&lt;li&gt;Uma &lt;strong&gt;entrada de ficheiro de autoridade&lt;/strong&gt; (elemento &lt;code&gt;&amp;lt;person&amp;gt;&lt;/code&gt; com um &lt;code&gt;xml:id&lt;/code&gt; gerado, &lt;code&gt;&amp;lt;persName&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;birth&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;death&amp;gt;&lt;/code&gt; e &lt;code&gt;&amp;lt;idno type=&amp;quot;VIAF&amp;quot;&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Uma &lt;strong&gt;etiqueta de anotação&lt;/strong&gt; separada (&lt;code&gt;&amp;lt;persName&amp;gt;&lt;/code&gt; com um atributo &lt;code&gt;ref&lt;/code&gt; que remete para a entrada de autoridade)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Esta dupla saída permite aos editores manter um ficheiro de autoridade centralizado e, ao mesmo tempo, inserir facilmente etiquetas de anotação nos seus textos TEI.&lt;/p&gt;
&lt;h2 id="características-principais"&gt;Características principais&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Geração normalizada de identificadores&lt;/strong&gt;: cria IDs XML coerentes no formato &lt;code&gt;pers-[familyname]-[givenname initial]&lt;/code&gt; (p. ex., &lt;code&gt;pers-deteligny-c&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Análise de RDF&lt;/strong&gt;: usa o &lt;code&gt;rdflib&lt;/code&gt; para extrair informação de várias propriedades RDF (p. ex., &lt;code&gt;rdfs:label&lt;/code&gt;, &lt;code&gt;schema:name&lt;/code&gt;, &lt;code&gt;viaf:mainHead&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interface de linha de comandos&lt;/strong&gt;: execução simples, com o número VIAF como único argumento obrigatório&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Saída detalhada&lt;/strong&gt;: fornece informação pormenorizada sobre o processamento, a par do XML final&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exemplo-de-utilização"&gt;Exemplo de utilização&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python persNamer.py &lt;span class="m"&gt;314802260&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Este comando produz:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;person&lt;/span&gt; &lt;span class="na"&gt;xml:id=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;pers-deteligny-c&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;persName&amp;gt;&lt;/span&gt;Charles deTéligny&lt;span class="nt"&gt;&amp;lt;/persName&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;birth&amp;gt;&lt;/span&gt;1535&lt;span class="nt"&gt;&amp;lt;/birth&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;death&amp;gt;&lt;/span&gt;1572-08-24&lt;span class="nt"&gt;&amp;lt;/death&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;idno&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;VIAF&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;314802260&lt;span class="nt"&gt;&amp;lt;/idno&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/person&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;persName&lt;/span&gt; &lt;span class="na"&gt;ref=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;#pers-deteligny-c&amp;#34;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Charles deTéligny&lt;span class="nt"&gt;&amp;lt;/persName&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="aplicações-nas-humanidades-digitais"&gt;Aplicações nas humanidades digitais&lt;/h2&gt;
&lt;p&gt;O persNamer é particularmente útil para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edições académicas digitais que exijam controlo de autoridade&lt;/li&gt;
&lt;li&gt;Projetos de codificação TEI que trabalhem com figuras históricas&lt;/li&gt;
&lt;li&gt;Iniciativas de dados ligados que liguem documentos a registos de autoridade&lt;/li&gt;
&lt;li&gt;Garantir a coerência em grandes corpora TEI&lt;/li&gt;
&lt;li&gt;Ensinar os conceitos do controlo de autoridade em cursos de humanidades digitais&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="implementação"&gt;Implementação&lt;/h2&gt;
&lt;p&gt;O persNamer está escrito em Python e depende de:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;requests&lt;/code&gt; para os pedidos HTTP&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rdflib&lt;/code&gt; para a análise de RDF&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lxml&lt;/code&gt; para o tratamento de XML&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;O código-fonte e a documentação estão no
.&lt;/p&gt;</description></item></channel></rss>