<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VIAF |</title><link>https://clementgodbarge.com/vi/tag/viaf/</link><atom:link href="https://clementgodbarge.com/vi/tag/viaf/index.xml" rel="self" type="application/rss+xml"/><description>VIAF</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>vi-vn</language><lastBuildDate>Fri, 28 Mar 2025 00:00:00 +0000</lastBuildDate><image><url>https://clementgodbarge.com/media/icon_hu_64a6c3bec25b3d7b.png</url><title>VIAF</title><link>https://clementgodbarge.com/vi/tag/viaf/</link></image><item><title>persNamer</title><link>https://clementgodbarge.com/vi/code/persnamer/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://clementgodbarge.com/vi/code/persnamer/</guid><description>&lt;h2 id="persnamer-nối-tei-với-virtual-international-authority-file"&gt;persNamer: Nối TEI với Virtual International Authority File&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;persNamer là một công cụ Python chuyên dụng, giúp đưa dữ liệu nhân danh có thẩm quyền từ VIAF (Virtual International Authority File) vào tài liệu TEI XML một cách trơn tru. Bằng cách chuyển mã định danh VIAF thành thẻ đánh dấu TEI dùng được ngay, persNamer giảm hẳn phần việc thủ công khi tạo các mục nhân danh có cấu trúc cho ấn bản học thuật kỹ thuật số.&lt;/p&gt;
&lt;h2 id="bài-toán-kiểm-soát-thẩm-quyền-trong-tei"&gt;Bài toán kiểm soát thẩm quyền trong TEI&lt;/h2&gt;
&lt;p&gt;Ấn bản học thuật kỹ thuật số thường đòi hỏi định danh chính xác các nhân vật lịch sử, kể cả tên chuẩn hóa và năm sinh năm mất. Để kiểm soát thẩm quyền nhất quán trong suốt một dự án, người ta phải:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Nhận diện nhân vật trong văn bản lịch sử&lt;/li&gt;
&lt;li&gt;Tìm dữ liệu có thẩm quyền về họ&lt;/li&gt;
&lt;li&gt;Tạo các mục TEI đúng định dạng&lt;/li&gt;
&lt;li&gt;Bảo đảm tham chiếu nhất quán trong toàn dự án&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Các bước này thường làm bằng tay, tốn thời gian và dễ thiếu nhất quán.&lt;/p&gt;
&lt;h2 id="persnamer-vận-hành-ra-sao"&gt;persNamer vận hành ra sao&lt;/h2&gt;
&lt;p&gt;persNamer tự động hóa quy trình ấy bằng cách:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lấy dữ liệu VIAF&lt;/strong&gt;: Từ một mã định danh VIAF, công cụ truy xuất dữ liệu RDF qua cơ chế thương lượng nội dung HTTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trích xuất thông tin chính&lt;/strong&gt;: Phân tích RDF để lấy tên ưu tiên, ngày sinh và ngày mất&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sinh thẻ đánh dấu TEI&lt;/strong&gt;: Tạo ra hai đoạn XML thiết yếu:
&lt;ul&gt;
&lt;li&gt;Một &lt;strong&gt;mục trong tệp thẩm quyền&lt;/strong&gt; (phần tử &lt;code&gt;&amp;lt;person&amp;gt;&lt;/code&gt; với &lt;code&gt;xml:id&lt;/code&gt; được sinh tự động, &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; và &lt;code&gt;&amp;lt;idno type=&amp;quot;VIAF&amp;quot;&amp;gt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Một &lt;strong&gt;thẻ chú giải&lt;/strong&gt; riêng (&lt;code&gt;&amp;lt;persName&amp;gt;&lt;/code&gt; với thuộc tính &lt;code&gt;ref&lt;/code&gt; trỏ về mục thẩm quyền)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Đầu ra kép này cho phép người biên tập duy trì một tệp thẩm quyền tập trung, đồng thời dễ dàng chèn thẻ chú giải vào văn bản TEI của mình.&lt;/p&gt;
&lt;h2 id="tính-năng-chính"&gt;Tính năng chính&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sinh mã định danh chuẩn hóa&lt;/strong&gt;: Tạo XML ID nhất quán theo dạng &lt;code&gt;pers-[familyname]-[givenname initial]&lt;/code&gt; (ví dụ &lt;code&gt;pers-deteligny-c&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Phân tích RDF&lt;/strong&gt;: Dùng &lt;code&gt;rdflib&lt;/code&gt; để trích thông tin từ nhiều thuộc tính RDF khác nhau (ví dụ &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;Giao diện dòng lệnh&lt;/strong&gt;: Chạy đơn giản, chỉ cần một số VIAF làm đối số bắt buộc duy nhất&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Đầu ra chi tiết&lt;/strong&gt;: Cung cấp thông tin xử lý đầy đủ bên cạnh XML kết quả&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ví-dụ-sử-dụng"&gt;Ví dụ sử dụng&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;Lệnh này cho ra:&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="ứng-dụng-trong-nhân-văn-số"&gt;Ứng dụng trong nhân văn số&lt;/h2&gt;
&lt;p&gt;persNamer đặc biệt hữu ích cho:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ấn bản học thuật kỹ thuật số cần kiểm soát thẩm quyền&lt;/li&gt;
&lt;li&gt;Dự án mã hóa TEI làm việc với nhân vật lịch sử&lt;/li&gt;
&lt;li&gt;Sáng kiến dữ liệu liên kết nối tài liệu với hồ sơ thẩm quyền&lt;/li&gt;
&lt;li&gt;Bảo đảm tính nhất quán trên những kho ngữ liệu TEI lớn&lt;/li&gt;
&lt;li&gt;Giảng dạy khái niệm kiểm soát thẩm quyền trong các khóa nhân văn số&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="triển-khai"&gt;Triển khai&lt;/h2&gt;
&lt;p&gt;persNamer được viết bằng Python và phụ thuộc vào:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;requests&lt;/code&gt; cho các yêu cầu HTTP&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rdflib&lt;/code&gt; để phân tích RDF&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lxml&lt;/code&gt; để xử lý XML&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mã nguồn và tài liệu có tại
.&lt;/p&gt;</description></item></channel></rss>