Wikidata SPARQL bằng Python: truy vấn và xuất CSV
Wikidata SPARQL bằng Python giúp lấy dữ liệu có cấu trúc theo quan hệ giữa các thực thể. Bài này truy vấn một nhóm tổ chức, giữ QID, nhãn và tọa độ rồi xuất CSV có nguồn. Cần phân biệt thuộc tính đang chọn, kết quả thiếu và nhiều giá trị trước khi đưa bảng vào báo cáo. ProxyVN hướng dẫn cách kiểm trên dữ liệu mẫu.
Wikidata SPARQL bằng Python với phạm vi thực thể rõ ràng
SPARQL mô tả mẫu quan hệ cần tìm trong đồ thị. Khi đã có danh sách QID, anh em có thể giới hạn đầu vào bằng VALUES để kiểm một nhóm nhỏ trước. Cách bắt đầu này giúp nhìn được mỗi cột xuất phát từ thuộc tính nào và phát hiện quan hệ tạo nhiều dòng.
Trong bài, mục tiêu là lấy tổ chức, nhãn và tọa độ của thực thể trụ sở được liên kết. Đây là bảng kiểm dữ liệu công khai có phạm vi nhỏ, không phải danh bạ đầy đủ mọi doanh nghiệp hoặc tập tọa độ văn phòng đã xác minh thực địa.
Wikidata Query Service cung cấp điểm truy vấn để làm việc với dữ liệu. Cần đọc hướng dẫn của dịch vụ trước khi chọn cách chạy định kỳ. Một truy vấn thành công không tự chứng minh dữ liệu nguồn đầy đủ, cập nhật đúng thời điểm hay phù hợp mọi quyết định kinh doanh.
Định danh và nhãn phục vụ hai nhu cầu
QID dùng để giữ liên kết với thực thể, còn nhãn giúp người đọc nhận biết nội dung. Nhãn có thể thay đổi theo ngôn ngữ hoặc bị trùng giữa các thực thể khác nhau. Vì vậy CSV nên giữ cả hai thay vì chỉ để tên công ty rồi dùng tên làm khóa nối.
Khi nhận một danh sách tổ chức từ hệ thống khác, bước đối chiếu sang QID cần được kiểm riêng. Bài này dùng QID đã chọn để trình diễn truy vấn. Nó không đánh giá mô hình ghép tên tự động và không coi mọi kết quả tìm kiếm theo tên là cùng một tổ chức.
Một hàng có cùng QID với hàng khác chưa chắc là bản ghi thừa. Nếu thực thể có nhiều quan hệ trụ sở hoặc nhiều tọa độ theo mẫu truy vấn, các nghiệm có thể tạo nhiều dòng. Phải xác định độ hạt mong muốn trước khi gộp để tránh làm mất thông tin có ý nghĩa.
Wikidata SPARQL bằng Python với đường thuộc tính có kiểm
Truy vấn dùng P159 để đi từ tổ chức đến thực thể trụ sở và P625 để đi tiếp đến tọa độ. Kết quả là tọa độ trên thực thể được nối qua đường đó. Không nên đổi tên cột thành địa chỉ văn phòng hiện tại nếu chưa kiểm ý nghĩa, thời điểm và ngữ cảnh của các statement liên quan.

Đường thuộc tính từ tổ chức đến tọa độ
Đọc đường đi trước khi đọc bảng
Đường thuộc tính nối hai bước khác với việc lấy P625 trực tiếp trên tổ chức. Một thực thể có thể có tọa độ trực tiếp nhưng thiếu quan hệ trụ sở, hoặc ngược lại. Hai truy vấn khi ấy trả kết quả khác nhau mà không nhất thiết do lỗi Python hay lỗi kết nối.
Ví dụ giữ phần tọa độ trong OPTIONAL để tổ chức vẫn xuất hiện khi không có nghiệm cho đường đi đó. Ô trống cần được giữ là thiếu dữ liệu theo truy vấn. Không thay bằng tọa độ không độ vì điểm đó là một vị trí có nghĩa trên bản đồ, không phải ký hiệu chưa biết.
SELECT ?org ?orgLabel ?coord WHERE {
VALUES ?org { wd:Q95 wd:Q312 wd:Q2283 }
OPTIONAL { ?org wdt:P159/wdt:P625 ?coord }
SERVICE wikibase:label {
bd:serviceParam wikibase:language "vi,en".
}
} LIMIT 10
Nhãn phụ thuộc lựa chọn ngôn ngữ
Dịch vụ nhãn giúp bảng dễ đọc nhưng không thay thế định danh. Thứ tự ngôn ngữ trong truy vấn thể hiện ưu tiên tiếng Việt rồi tiếng Anh. Nếu không có nhãn mong muốn, cần kiểm kết quả thực tế thay vì tự tạo tên dịch hoặc giả định mọi thực thể đều có đủ hai ngôn ngữ.
Các tiền tố quen thuộc được WDQS hỗ trợ theo môi trường của dịch vụ. Khi chuyển truy vấn sang một hệ SPARQL khác, nên khai báo PREFIX cần thiết theo tài liệu nơi chạy. Việc một câu truy vấn hoạt động ở WDQS không bảo đảm bản sao nguyên văn hoạt động ở mọi endpoint khác.
Hướng dẫn WDQS giải thích cú pháp và tính năng của dịch vụ. Với bài toán cần qualifier, reference hoặc rank cụ thể, mẫu đường wdt đơn giản này có thể chưa đủ. Khi đó phải thiết kế truy vấn statement phù hợp thay vì suy diễn rằng bảng hiện tại chứa toàn bộ lịch sử phát biểu.
Wikidata SPARQL bằng Python để nhận JSON và giữ bản gốc
Một pipeline dễ kiểm nên tách câu truy vấn, response gốc và CSV đã chuyển đổi. Response gốc lưu cấu trúc biến cùng giá trị mà dịch vụ trả trong lần chạy. CSV chỉ là sản phẩm tiện dùng cho một nhóm cột, có thể mất thông tin kiểu nếu không lưu thêm.
Gửi yêu cầu nhỏ có timeout
Ví dụ dùng requests, gửi một GET với query và yêu cầu JSON. User agent mô tả công cụ mẫu, không mạo danh trình duyệt để vượt kiểm soát. Với công cụ chạy thật, anh em nên dùng thông tin nhận diện phù hợp hướng dẫn dịch vụ và một kênh liên hệ mà mình được quyền công bố.
from pathlib import Path
import json
import requests
endpoint = 'https://query.wikidata.org/sparql'
query = Path('query.rq').read_text(encoding='utf-8')
r = requests.get(endpoint, params={'query': query, 'format': 'json'},
headers={'User-Agent': 'MetadataLab/1.0',
'Accept': 'application/sparql-results+json'},
timeout=(10, 45))
r.raise_for_status()
payload = r.json()
Path('response.json').write_text(
json.dumps(payload, ensure_ascii=False, indent=2), encoding='utf-8')
Timeout phía client chỉ giới hạn cách ứng dụng chờ, không phải cam kết truy vấn luôn được máy chủ xử lý trong khoảng đó. Nếu server báo quá tải hoặc giới hạn, cần giảm tần suất, kiểm lại độ tốn của query và chờ theo hướng dẫn. Gửi lại ngay cùng một truy vấn nặng thường không giải quyết nguyên nhân.
Trong lần kiểm phục vụ bài, endpoint trả HTTP 200 cho truy vấn ba QID trên. Kết quả có bốn binding do một QID xuất hiện với hai giá trị tọa độ. Đây là quan sát của một lần lấy nhỏ; không phải số lượng cố định mà người đọc sẽ luôn nhận được về sau.
JSON kết quả có thông tin kiểu
Theo định dạng kết quả SPARQL JSON, binding mô tả loại giá trị cùng nội dung. URI của tổ chức và literal tọa độ không có cùng vai trò. Nếu chỉ lấy value rồi bỏ mọi metadata kiểu, cần ghi rõ đó là phép chiếu có chủ đích cho CSV này.
Biến trong OPTIONAL không có giá trị có thể không xuất hiện trong binding. Vì vậy truy cập bằng khóa bắt buộc cho coord dễ gây lỗi với một truy vấn hợp lệ. Nhận diện thiếu ở cấp binding giúp phân biệt với lỗi response không có cấu trúc results như pipeline mong đợi.
Wikidata SPARQL bằng Python để xuất CSV đúng độ hạt
CSV mẫu giữ một dòng cho mỗi binding của truy vấn, gồm qid, label và coord_wkt. Chưa tách tọa độ thành số thực và chưa chọn một trụ sở đại diện. Quyết định giữ nguyên như vậy làm cho bước đối chiếu dễ hơn, đồng thời tránh đưa một quy tắc chọn vị trí chưa được giải thích vào mã xuất.

Từ binding JSON sang một dòng CSV
Bộ chuyển đổi nhỏ và dễ kiểm
Đoạn sau đọc response đã lưu, nên có thể chạy lại phép chuyển đổi mà không gọi dịch vụ thêm. Nó kiểm tiền tố URI trước khi rút QID và giữ chuỗi rỗng cho biến không được bind. Nếu cấu trúc cấp cao sai, chương trình dừng để người vận hành xử lý thay vì lặng lẽ xuất bảng rỗng như một lần lấy thành công.
import csv
import json
from pathlib import Path
data = json.loads(Path('response.json').read_text(encoding='utf-8'))
bindings = data['results']['bindings']
prefix = 'http://www.wikidata.org/entity/'
rows = []
for item in bindings:
uri = item['org']['value']
if not uri.startswith(prefix):
raise ValueError('Unexpected entity URI')
rows.append({'qid': uri[len(prefix):],
'label': item.get('orgLabel', {}).get('value', ''),
'coord_wkt': item.get('coord', {}).get('value', '')})
with open('organizations.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['qid', 'label', 'coord_wkt'])
writer.writeheader()
writer.writerows(rows)
CSV có dấu phẩy trong giá trị vẫn cần được ghi bằng thư viện csv, không ghép chuỗi thủ công. Dùng newline đúng cách giúp tránh dòng trắng thừa trong một số môi trường. Khi mở trong bảng tính, nên kiểm encoding và kiểu cột để QID không bị biến thành một suy đoán kiểu dữ liệu ngoài ý muốn.
Tọa độ WKT dạng Point đặt kinh độ trước vĩ độ trong giá trị mẫu. Nếu một bước sau cần tách số để đưa lên bản đồ, phải kiểm kiểu literal, hệ tọa độ theo nguồn và định dạng được hỗ trợ. Bài này giữ nguyên chuỗi WKT; chưa chạy một hệ thống định vị hoặc xác minh địa chỉ ngoài đời.
Không khử trùng chỉ bằng QID
Trong CSV kiểm thực tế có ba QID khác nhau nhưng bốn dòng. Nếu bỏ trùng theo qid và giữ dòng đầu, một tọa độ sẽ biến mất mà không có dấu vết. Cách đó chỉ phù hợp khi đã có quy tắc nghiệp vụ chọn một giá trị và có báo cáo những giá trị bị loại.
Nếu người nhận muốn một dòng cho mỗi tổ chức, có thể tạo bảng tổ chức riêng và bảng tọa độ nhiều dòng có khóa ngoại QID. Một cách khác là gộp danh sách vị trí có cấu trúc. Dù chọn cách nào, hãy ghi rõ độ hạt thay vì để công cụ bảng tính quyết định bằng thao tác xóa trùng ngẫu nhiên.
Wikidata SPARQL bằng Python với cache theo truy vấn
Cache giúp chạy lại phép biến đổi mà không gửi cùng một yêu cầu chỉ để sửa tên cột CSV. Khóa cache nên gắn với endpoint và nguyên văn truy vấn. Chỉ dùng tên file như organizations có thể khiến hai truy vấn khác nhau ghi đè nhau dù chọn thuộc tính hoặc nhóm thực thể khác nhau.
Lưu câu truy vấn cùng response
Ví dụ tạo khóa SHA256 từ endpoint, dấu xuống dòng và query. Đây là định danh nội bộ của yêu cầu, không phải checksum chứng minh mọi dữ liệu Wikidata trong lần chạy đã được lưu đầy đủ. Nếu có headers hoặc tham số khác làm thay đổi biểu diễn, hợp đồng cache cần xét thêm những thành phần đó.
import hashlib
from pathlib import Path
key = hashlib.sha256((endpoint + '\n' + query).encode('utf-8')).hexdigest()
folder = Path('cache') / key
folder.mkdir(parents=True, exist_ok=True)
(folder / 'query.rq').write_text(query, encoding='utf-8')
(folder / 'response.json').write_text(
json.dumps(payload, ensure_ascii=False, indent=2), encoding='utf-8')
Cache cần metadata thời điểm lấy và trạng thái hoàn tất nếu dùng trong tác vụ định kỳ. Một file tồn tại nhưng đang ghi dở không nên được xem là cache thành công. Trong vận hành thật, có thể ghi file tạm rồi thay thế sau khi parse và kiểm cấu trúc, đồng thời giữ bản đã hoàn tất gần nhất.
Thời hạn dùng lại cache phụ thuộc nhu cầu cập nhật của bảng. Dữ liệu tổ chức có thể đổi theo thời gian, nên một response cũ vẫn có giá trị tái lập nhưng không mặc nhiên đại diện trạng thái hiện tại. Tách lựa chọn dùng bản cũ để tái lập với lựa chọn lấy mới để cập nhật báo cáo.

Cache theo endpoint và truy vấn
Đừng dùng proxy để né giới hạn truy vấn
Tăng số IP không làm một mẫu quan hệ kém chọn lọc trở nên rẻ hơn. Khi truy vấn chậm, hãy thu hẹp đầu vào, xem lại đường đi, giảm phép kết hợp hoặc chia theo tập QID có kiểm soát. Tuân thủ hướng dẫn dịch vụ về tải và thử lại trước khi nghĩ đến hạ tầng mạng.
Nếu ứng dụng cần tuyến kết nối trong môi trường được quản lý, cấu hình mạng phải được kiểm riêng với timeout và lỗi proxy. Nhu cầu mua proxy cần tách khỏi khả năng truy vấn của WDQS; bài không thử benchmark qua proxy và không khẳng định một gói mạng sẽ làm tăng quota hay quyền truy cập dịch vụ.
Wikidata SPARQL bằng Python với endpoint phù hợp dữ liệu
Không nên coi mọi đồ thị của WDQS là một khối có phạm vi bất biến. Việc lựa chọn endpoint ảnh hưởng loại thực thể có thể truy vấn và cách liên kết dữ liệu. Với bài toán tổ chức nhỏ này, lần kiểm dùng endpoint chính đã nêu và lưu rõ endpoint trong metadata cache.
Phân biệt đồ thị chính và dữ liệu học thuật
Tài liệu tách đồ thị WDQS mô tả thay đổi triển khai liên quan dữ liệu học thuật từ năm 2025. Khi chuyển bài toán sang tác phẩm học thuật, cần kiểm endpoint và phạm vi theo hướng dẫn hiện hành. Không diễn giải kết quả rỗng ở một endpoint thành việc thực thể không tồn tại ở toàn bộ Wikidata.
Một truy vấn có LIMIT vẫn có thể phải xử lý nhiều phép nối trước khi trả những dòng đầu. Vì vậy LIMIT không phải công cụ bảo đảm mọi câu query đều nhẹ. Bắt đầu bằng VALUES nhỏ giúp kiểm logic, nhưng khi mở rộng cần xem xét cấu trúc dữ liệu và độ chọn lọc của điều kiện thực tế.
Trong một báo cáo định kỳ, ghi endpoint, query hash, thời gian lấy, số binding và số QID khác nhau. Các chỉ số này giúp nhận ra thay đổi như tăng nhiều dòng do quan hệ mới hoặc giảm thực thể do phạm vi query bị sửa. Chúng không tự giải thích nguyên nhân, nhưng cung cấp điểm bắt đầu để đối chiếu.
Phân loại trạng thái trước khi gửi lại
HTTP thành công nhưng thiếu cấu trúc dự kiến là lỗi hợp đồng dữ liệu cần kiểm, không nên xuất CSV rỗng rồi báo hoàn thành. HTTP lỗi do truy vấn sai cần sửa query. Lỗi tạm thời có thể thử lại có giới hạn, nhưng phải lưu số lần và tránh vòng lặp vô hạn khi cùng nguyên nhân không đổi.
Một lần timeout chưa đủ xác định dịch vụ hỏng hay mạng hỏng. Có thể kiểm truy vấn nhỏ hơn theo cùng tuyến, xem response lỗi và so với trạng thái vận hành có liên quan. Giữ log không chứa bí mật và chỉ lưu lượng thông tin cần thiết để chẩn đoán đường xử lý cụ thể.
Wikidata SPARQL bằng Python với hồ sơ kiểm nghiệm nhỏ
Ca kiểm của bài gồm một GET công khai, lưu JSON, xuất CSV và tạo cache theo endpoint cùng query. Response trả bốn binding cho ba QID, có hai tọa độ ở một QID. Kết quả này dùng để kiểm việc giữ nhiều dòng, không dùng để xếp hạng độ chính xác tọa độ của các tổ chức.

Đối chiếu nhiều tọa độ trên cùng QID
Thành phần |
Điều đã kiểm |
Giới hạn còn lại |
|---|---|---|
Yêu cầu |
HTTP 200, JSON có bindings |
Chưa kiểm tải lớn |
Chuyển đổi |
Giữ QID, nhãn, WKT |
Chưa xác minh địa chỉ |
Độ hạt |
Bốn dòng, ba QID |
Chưa chọn trụ sở đại diện |
Cache |
Lưu query và response |
Chưa kiểm ghi file bị ngắt |
Kiểm một dòng từ nguồn tới CSV
Chọn một binding trong JSON và đối chiếu URI tổ chức với qid sau khi cắt đúng tiền tố. Tiếp theo so nhãn với label và chuỗi tọa độ với coord_wkt. Đối chiếu từng trường như vậy giúp phát hiện lỗi đổi cột hoặc mất giá trị tốt hơn việc chỉ nhìn CSV có đủ số dòng.
Sau đó chọn QID xuất hiện hai lần để kiểm cả hai binding đều còn. Nếu bảng chỉ còn một dòng, cần xem bước gộp nào đã chạy. Đừng vội sửa query để xóa nhiều giá trị trước khi hiểu người nhận cần danh sách vị trí hay chỉ cần một giá trị đã được chọn theo quy tắc.
Để kiểm nhánh thiếu, tạo một fixture JSON riêng bỏ binding coord ở một item. Bộ chuyển đổi phải xuất ô rỗng và giữ QID. Đây là phép thử trên dữ liệu giả lập nhằm kiểm mã xử lý OPTIONAL; không phải tuyên bố rằng một tổ chức cụ thể ngoài đời không có thông tin tọa độ.
Kiểm thay đổi mà vẫn tái lập được
Khi sửa ngôn ngữ nhãn từ vi,en sang en, khóa cache cần đổi vì query đã đổi. Khi chỉ đổi tên file CSV, response cache có thể dùng lại theo hợp đồng. Tách hai thao tác này giúp anh em giảm các lần gọi không cần thiết mà vẫn biết bản xuất nào bắt nguồn từ câu truy vấn nào.
Nếu muốn so hai lần lấy cách nhau một thời gian, so tập nghiệm theo bộ trường thích hợp thay vì so số hàng đơn thuần. Số hàng bằng nhau vẫn có thể có tọa độ thay đổi, và số hàng tăng có thể do thêm quan hệ. Lưu bản gốc cho phép kiểm những khác biệt đó mà không phụ thuộc ảnh chụp màn hình.
Việc chuyển sang một nhóm QID lớn hơn nên đi theo lô nhỏ có thống kê riêng. Giữ danh sách đầu vào cho từng lô để biết tổ chức nào chưa có kết quả. Nếu query dùng điều kiện khiến một thực thể bị loại khỏi kết quả, báo cáo cần phân biệt nó với trường hợp thực thể còn dòng nhưng thiếu tọa độ do OPTIONAL.
Bàn giao đúng ý nghĩa của bảng
Người nhận CSV cần biết bảng có thể chứa nhiều dòng cho một tổ chức và tọa độ đến từ đường thuộc tính nào. Kèm câu query giúp họ tự kiểm cách chọn quan hệ. Kèm response gốc giúp xem kiểu literal, URI và giá trị mà định dạng CSV đã giản lược để dễ sử dụng.
Trước khi dùng cho bản đồ hoặc phân tích địa lý, cần thêm một bước xác minh phù hợp mục đích. Tọa độ công khai có thể cần cập nhật hoặc có độ chi tiết khác nhau. Bài chỉ chứng minh pipeline lấy và bảo toàn một nhóm kết quả nhỏ, chưa chứng minh độ chính xác địa lý cho mọi tình huống sử dụng.
Nếu nguồn cập nhật làm nhãn thay đổi nhưng QID giữ nguyên, bảng đối chiếu nên thể hiện thay đổi metadata thay vì tạo tổ chức mới. Nếu QID bị chuyển hướng hoặc mô hình dữ liệu thay đổi, cần kiểm lại định danh theo quy trình quản lý dữ liệu. Không nên sửa thủ công một ô rồi để mất mối liên hệ với response đã dùng.
Đọc kết quả nhiều giá trị trước khi mở rộng
Với truy vấn mẫu, hai tọa độ của cùng một QID là tình huống quan trọng để kiểm hợp đồng đầu ra. Nếu hệ thống đích chỉ nhận một điểm, nhóm phụ trách cần định nghĩa tiêu chí chọn theo statement, nguồn tham chiếu hoặc thời điểm có liên quan. Lấy phần tử đầu chỉ vì tiện lập trình sẽ che một quyết định dữ liệu thành hành vi ngẫu nhiên.
Một bảng trung gian có thể giữ số thứ tự binding để đối chiếu trong cùng response. Tuy nhiên thứ tự đó không nên được dùng như định danh bền vững giữa các lần gọi khi query không quy định thứ tự. QID cùng tập thuộc tính có nghĩa mới là cơ sở thiết kế phép so, còn số dòng trong file chỉ phục vụ kiểm tra bản xuất hiện tại.
Khi xuất cho người dùng bảng tính, thêm tài liệu cột sẽ tránh nhầm coord_wkt với địa chỉ văn bản. Tài liệu cần nói rõ kinh độ đứng trước vĩ độ trong mẫu Point và ô trống biểu thị biến chưa được bind. Đó là các điều kiện để người nhận diễn giải bảng đúng; chỉ cung cấp file CSV có thể chưa đủ cho bước sử dụng tiếp theo.
Nếu một nhãn chứa ký tự ngoài ASCII hoặc dấu tiếng Việt, phép ghi và đọc UTF-8 cần giữ nguyên. Có thể đọc lại file CSV vừa xuất bằng cùng thư viện để so danh sách dict với dữ liệu trước khi ghi. Phép đối chiếu này kiểm đường chuyển đổi file, không thay thế việc kiểm nội dung từ Wikidata.
Lưu bằng chứng đủ cho lần kiểm sau
Hồ sơ tối thiểu của một lần chạy gồm input QID, query, endpoint, thời gian yêu cầu, response hoàn tất và kết quả chuyển đổi. Nếu chỉ giữ CSV, người khác khó biết ô trống do OPTIONAL hay do công cụ xuất làm mất trường. Nếu chỉ giữ query, dữ liệu nguồn về sau có thể đổi khiến họ không tái tạo được đúng bản đã bàn giao.
Khi bổ sung kiểm chất lượng, nên viết tiêu chí theo hợp đồng thay vì theo tên tổ chức cụ thể. Ví dụ QID không rỗng, URI đúng tiền tố được chấp nhận và mỗi row xuất tương ứng một binding. Các kiểm tra này sẽ phát hiện lỗi pipeline mà không biến những giá trị nhãn hoặc tọa độ có thể cập nhật thành hằng số cứng.
Với truy vấn mới, hãy chạy một lô nhỏ rồi kiểm tay vài quan hệ trên dữ liệu gốc trước khi tăng phạm vi. Mục tiêu là xác nhận đường đi mô tả đúng câu hỏi của mình. Một câu SPARQL hợp lệ có thể trả kết quả đúng về mặt cú pháp nhưng trả lời một câu hỏi khác với nhu cầu báo cáo ban đầu.
Một trường hợp cần lưu ý là người nhận muốn đếm tổ chức theo quốc gia nhưng CSV hiện tại chỉ mô tả tọa độ trụ sở qua đường quan hệ đã chọn. Không thể tự suy ra quốc gia đăng ký, thị trường hoạt động hay quốc tịch pháp nhân chỉ từ một điểm. Muốn trả lời các câu hỏi đó phải chọn thêm thuộc tính thích hợp và kiểm cách mô hình hóa của nguồn.
Nếu thêm thuộc tính mới có nhiều giá trị, số dòng có thể tăng do phép kết hợp các nghiệm. Khi ấy cần kiểm độ hạt lại trước khi so với lần chạy cũ. Việc tăng số dòng không tự biểu thị tăng số tổ chức, cũng không đủ kết luận endpoint gửi trùng. Một bản giải thích rõ các quan hệ được nối sẽ giúp người nhận đánh giá bảng đúng hơn.
Sau mỗi thay đổi query, hãy tạo bản xuất có phiên bản và ghi lý do thay đổi. Điều đó cho phép phân biệt chênh lệch do nguồn cập nhật với chênh lệch do chính nhóm sửa câu hỏi truy vấn.
Ghi nhớ: giữ QID, câu truy vấn và response gốc để giải thích được từng dòng CSV.
Anh em hãy lưu dữ liệu mẫu cùng cấu hình và kết quả đối chiếu để lần cập nhật sau có cơ sở kiểm lại. Tham khảo thêm tại Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam. Bắt đầu từ phạm vi nhỏ và tiêu chí rõ ràng khi triển khai Wikidata SPARQL bằng Python.