请查阅 勘误表,了解自发布以来报告的错误或问题。
本规范的英文版是唯一具规范效力的版本。也可能有非规范性的 翻译可供参考。
Copyright © 2017 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and document use rules apply.
本文档提供了与 Web 数据发布和使用相关的最佳实践,旨在支持一个可自我维持的数据生态系统。数据应当能够被人类和机器发现和理解。无论数据由数据的原创者还是外部方使用,相关的使用方式也应当可以被发现,数据发布者的努力应得到认可。简而言之,遵循这些最佳实践将促进发布者和使用者之间的互动。
本节描述了本文档在发布时的状态。其他文档可能会取代本文件。当前 W3C 的技术文档列表以及本技术报告的最新修订版可在 W3C 技术报告索引 https://www.w3.org/TR/ 查阅。
Web 数据最佳实践工作组 已获得授权以推动开放数据生态系统,促进开发者与发布者之间的更好沟通;为发布者提供指导,以提升数据管理的一致性,从而推动数据的重用;增强开发者对数据的信任,无论其选择何种技术,从而提高创新的可能性。本最佳实践文档与 数据质量 和 数据集使用 词汇表相辅相成。
本文档由Web 数据最佳实践工作组以建议形式发布。如果您希望就本文档提供意见,请发送邮件至 public-dwbp-comments@w3.org(订阅, 存档)。欢迎所有反馈。
请参阅工作组的实施报告。
本文档已由 W3C 成员、软件开发者及其他 W3C 小组和相关方审查,并经由理事支持为 W3C 推荐规范。这是一个稳定的文档,可作为参考资料或被其他文档引用。W3C 推动该推荐规范的作用在于提高其关注度并促进广泛部署,从而提升 Web 的功能性与互操作性。
本文档由依据 2004年2月5日 W3C 专利政策 运作的小组编制。 W3C 保持着一份与小组交付物相关的专利披露公开列表;该页面还包括披露专利的说明。任何个人如果确知某专利包含 必要声明,都必须依照 W3C 专利政策第6节 披露相关信息。
本文档由 2015年9月1日 W3C 流程文档 管辖。
本节为非规范性内容。
下述最佳实践旨在促进和支持 Web 作为数据交流媒介的不断发展。全球各国政府在线共享开放数据的增长 [ OKFN-INDEX] [ODB],以及诸如 Research Data Alliance 等机构推动的科研数据在线发布的增长 [RDA],社交媒体数据的收集、分析和在线发布,信息众包,以及像法国国家图书馆 [BNF] 这样重要文化遗产收藏在 Web 上的持续增长,还有 Linked Open Data Cloud 的持续扩展 [LODC],都为数据在 Web 上发布的增长提供了一些例证。
然而,这种增长风格并不一致,很多情况下也没有充分利用开放 Web 平台将事实互相关联、发现相关资源和创建交互式可视化的全部潜力。
广义上说,数据发布者致力于开放或受控地分享数据。数据使用者(他们自己也可以是生产者)希望能够发现、使用并链接这些数据,特别是当数据准确、持续更新并且保证随时可用时。这就要求数据发布者和数据使用者之间有共同理解。若无此共识,发布者的努力就可能与使用者的需求不符。
Web 的开放性和灵活性为数据发布者和使用者带来了新挑战,如如何用易于发现与理解的方式表示、描述和发布数据。与传统数据库(使用单一的数据模型和数据库管理系统(DBMS)控制数据访问)不同,Web 数据允许有多种数据表示和访问方式。关于挑战的更多详情,参见Web 数据面临的挑战。
因此,为发布者提供改进数据管理一致性的指导就尤为关键。这些指导将促进数据复用,增强开发者对数据的信任,无论其使用何种技术,从而释放真实创新的潜力。
但并非所有数据信息和元数据都应该公开共享。安全、商业敏感性,最重要的是个人隐私,都需被考虑。数据发布者应自行制定哪些数据应被共享、在何种情况下共享的政策。数据共享政策通常需要评估暴露风险,并决定应采取哪些安全措施来保护敏感数据,比如安全认证和授权。
根据情况,涉及个人的敏感信息可能包括全名、家庭住址、电子邮件地址、身份证号码、IP 地址、车辆号牌、驾照号、面部、指纹或手写笔迹、信用卡号、数字身份、出生日期、出生地、基因信息、电话号码、登录名、屏幕名、昵称、健康记录等。虽然公开分享部分信息(即便在受控环境下分享更多)往往是安全的,发布者仍需注意,来自多来源的数据合并可能在无意间实现对个人的识别。
发布 Web 数据的一般最佳实践是采用标准。不同类型组织会指定特定领域和应用的数据集发布标准,涉及关注该数据的用户社区。这些标准定义了社区用户之间信息交流的通用方式。例如,发布交通时刻表可以用两个标准:General Transit Feed Specification [GTFS] 和 Service Interface for Real Time Information [SIRI]。它们混合指定了标准化术语、数据格式和访问方式。另一个通用最佳实践是使用 Unicode 处理字符和字符串数据。Unicode 能改善多语言文本处理,令软件本地化更加简便。
最佳实践涵盖与数据发布和使用相关的不同方面,例如数据格式、数据访问、数据标识符和元数据。为限定范围并抽取 Web 数据最佳实践所需特性,DWBP 工作组整理了一组用例 [DWBP-UCR],展示数据在 Web 上如何通常发布与使用。据此推导出的需求集用于指导最佳实践的制定,这些实践与领域和应用无关。不过,它们可被其他更专业环境的最佳实践文档或标准扩展或补充。例如在词汇方面,W3C 的关联数据发布最佳实践 [LD-BP] 可作参考。ODRL [ODRL-model] 推荐用于表达许可及其它权利义务声明,还有一系列与来源有关的标准 [PROV-Overview],本文件在可发现性、可访问性和空间与时序数据互操作性等方面的指导,也被“Web 空间数据最佳实践” [SDW-BP] 拓展。
虽然 DWBP 推荐用关联数据(Linked Data),但也推广 CSV 等其它开放格式的 Web 数据实践。关于如何用最大程度发挥 Web 数据互联潜力的方式分享表格数据(如 CSV 文件),可参考 Tabular Data Primer [Tabular-Data-Primer]。
为了鼓励数据发布方采用 DWBP,识别出多个显著益处:可理解性;可处理性;可发现性;可复用性;可信度;可关联性;可访问性;互操作性。它们会在最佳实践的益处中描述并与各最佳实践对应说明。
本节为非规范性内容。
本文件主要面向 Web 数据发布者制定最佳实践。同时也充分考虑信息管理人员、开发者,以及希望在 Web 上共享和复用科研数据的科学家等更广泛群体的需求。虽然主要目标人群是数据发布者,我们鼓励相关活动的所有参与者都能了解本文档。在保证规范准确与清晰的前提下,已最大程度提升可读性与实用性。
读者应熟悉一些基本的 Web 架构概念 [WEBARCH],如资源和 URI,以及若干数据格式。每条最佳实践的规范部分为预期成果。文中建议了可行的实现方法,并在适当情况下推荐使用某些技术。若具备关于词汇和数据模型的基础知识,将有助于更好理解部分内容。
本节为非规范性内容。
本文件仅关注如下最佳实践:
如前所述,判定是否遵循最佳实践,应基于预期成果,而非作为参考的可能实现方式。最佳实践也会随着人类共同推进 Web 的发展而不断完善。
本节为非规范性内容。
下图展示了本文档考虑的背景。通常,Web 数据发布和使用相关的最佳实践针对数据集和 数据分发。数据以不同的分发形式发布,每种分发是数据集的一种特定物理表现。所谓数据,指“可以被记录且具备隐含意义的已知事实” [Navathe]。这些分发便于大规模共享数据,使各类 数据使用者不论目的、对象、兴趣或许可都能利用数据集。鉴于这种异质性,以及数据发布者和使用者彼此可能并不知晓,需公开一些关于数据集及分发的信息,提升可信度和可复用性,如:结构元数据、描述性元数据、访问信息、数据质量信息、来源信息、许可信息和使用信息。
Web 数据发布和共享的一个重要方面,是 Web 架构本身 [WEBARCH]。相关原则之一是以 URI 标识资源。在本环境下,资源可指一个完整数据集,也可以是数据集中的具体项。所有资源都应以稳定 URI 发布,便于引用,并通过 URI 使多个资源相互关联。最后,为促进数据集间互操作,采用数据词汇和标准也很重要。
本节为非规范性内容。
本文档各处会使用下列命名空间前缀。
| 前缀 | 命名空间 IRI | 描述 |
|---|---|---|
| dcat | http://www.w3.org/ns/dcat# | 数据目录词汇 (DCAT) |
| dct | http://purl.org/dc/terms/ | Dublin Core 元数据标准 (DCMI) 元数据术语 |
| dqv | http://www.w3.org/ns/dqv# | DWBP 数据质量词汇 (DQV) |
| duv | http://www.w3.org/ns/duv# | DWBP 数据集使用词汇 (DUV) |
| foaf | http://xmlns.com/foaf/0.1/ | 朋友的朋友 (FOAF) 词汇 |
| oa | http://www.w3.org/ns/oa# | Web 注释本体 |
| owl | http://www.w3.org/2002/07/owl# | Web 本体语言 (OWL) |
| pav | http://pav-ontology.github.io/pav/ | 出处、作者和版本 (PAV) |
| prov | http://www.w3.org/ns/prov# | 出处本体 (PROV) |
| rdf | http://www.w3.org/1999/02/22-rdf-syntax-ns# | 资源描述框架 (RDF) |
| rdfs | http://www.w3.org/2000/01/rdf-schema# | RDF 架构词汇 (RDFS) |
| skos | http://www.w3.org/2004/02/skos/core# | 简单知识组织系统 (SKOS) |
本节介绍用于描述 Web 数据最佳实践的模板。
最佳实践模板
最佳实践简要说明
本节回答两个关键问题:
也可补充完整文本说明最佳实践试图解决的问题。内容不限长短,但通常不会超过几句话。
数据发布者遵循最佳实践后应能做到什么。
此处提供可实现该最佳实践的策略。本建议为编写时的最佳意见,实际情况可能需要采用更适合具体环境和未来发展的其他实现方法。
介绍如何判定已达到本最佳实践。可能可由机器,也可能不可由机器测试。
说明最佳实践的相关性。引用在《Web 数据最佳实践用例与需求》文档 [DWBP-UCR] 中描述的一项或多项相关需求。
本节包含数据发布者所需遵循的最佳实践,帮助他们和数据使用者共同克服在 Web 上发布和使用数据时面临的各种挑战。每一个挑战(详见 Web 数据面临的挑战)都提出了一条或多条最佳实践。
每条最佳实践都对应《Web 数据最佳实践用例与需求》文档 [DWBP-UCR] 中的一个或多个需求,这些需求指导了最佳实践的制定。每条最佳实践至少会有一个这样的需求作为其相关性的证据。
部分最佳实践的 RDF 示例展示了如何使用 Turtle [Turtle] 或 JSON-LD [JSON-LD] 进行应用。
Web 是一个开放的信息空间,在缺乏公司内部信息系统等特定上下文的情况下,元数据的提供是一项基本要求。如果没有足够的元数据,除了发布者之外,其他任何人都无法发现或复用这些数据。元数据提供了更多信息,帮助数据使用者更好地理解数据的含义、结构,并澄清如数据权利与许可条款、发布机构、数据质量、数据访问方式和数据集更新周期等其他问题。鼓励发布者为人类可读的信息提供多种语言的版本,并尽可能使用目标用户能够理解的语言。
元数据可用于辅助数据集的发现和复用等任务,可以针对不同的粒度范围分配,从资源的单个属性到整个数据集,或某一机构下的所有数据集。元数据类型也有不同。可以按照不同的分类法进行归类,分组标准也各不相同。例如,某些分类法可将元数据类型分为描述性、结构性和管理型三类。也有按元数据任务(如发现和复用)的一套分类方法。
最佳实践 1:提供元数据
为人类用户和计算机应用都提供元数据。
在 Web 上发布数据时,元数据的提供是基本要求,因为数据发布者和数据使用者可能彼此未知。因此,必须提供有助于人类用户和计算机应用理解数据及其描述数据集或分发的其他重要方面的信息。
人类能够理解元数据,计算机应用,尤其是用户代理,将能够处理这些元数据。
提供人类可读元数据的可行方式:
提供机器可读元数据的可行方式:
检查是否提供人类可读格式的元数据。
检查元数据是否以有效的机器可读格式提供且无语法错误。
相关需求:R-MetadataAvailable, R-MetadataDocum, R-MetadataMachineRead
最佳实践 2:提供描述性元数据
提供描述数据集与分发整体特征的元数据。
明确提供数据集描述信息,使用户代理能够自动发现 Web 上可用的数据集,也让人类能够理解数据集及分发的属性。
人类用户能够理解数据集及其分发的属性,软件代理可自动发现数据集及分发。
描述性元数据可包括以下数据集整体特征:
描述性元数据可包括分发的整体特征:
描述性元数据的机器可读版本可采用 W3C 推荐的数据集描述词汇,即数据目录词汇 [VOCAB-DCAT]。该词汇表为数据集的抽象实体描述提供了框架。
检查数据集(本体)的元数据是否以人类可读格式包含数据集整体特征。
检查描述性元数据是否以有效机器可读格式提供。
相关需求:R-MetadataAvailable, R-MetadataMachineRead, R-MetadataStandardized
最佳实践 3:提供结构性元数据
提供描述分发表及其内部结构的元数据。
公开分发的内部结构信息,对欲探索或查询数据集的他人来说至关重要,同时有助于理解数据的含义。
人类用户能够理解数据集的 schema,软件代理能自动处理分发。
人类可读的结构元数据通常列出数据集 schema 的属性或列名。
机器可读结构元数据则依特定分发格式,以独立文档或内嵌文档形式提供。详见下述链接:
检查是否提供结构元数据(人类可读格式)。
检查分发的元数据是否以机器可读格式包含数据集结构信息,且无语法错误。
相关需求:R-MetadataAvailable
许可是附加到 Web 数据上的一项非常有用的信息。根据发布者采用的许可类型,数据共享和复用可能会有更多或更少的限制。在 Web 数据的语境下,数据集的许可信息可以在元数据中指定,也可以在外部的单独文档中指定,并通过链接关联。
最佳实践 4:提供数据许可信息
提供控制数据使用的许可协议的链接或副本。
许可信息的存在对于数据使用者评估数据可用性至关重要。用户代理可以根据许可信息的有无,决定是否将数据提供给潜在用户。
人类能够理解描述对特定分发所施加的可能使用限制的数据许可信息,软件代理能够自动检测分发的数据许可。
数据许可信息可以通过指向人类可读许可协议的链接或嵌入副本来提供,也可以通过指向机器可读许可协议的链接或嵌入副本供处理使用。
可以使用以下包含用于链接许可属性的词汇之一:
dct:license)cc:license)schema:license)xhtml:license)还有许多机器可读的权益声明语言,包括:
检查数据集本身的元数据中是否包含以人类可读格式呈现的数据许可信息。
检查用户代理是否能够自动检测或发现数据集的数据许可。
相关用例:R-LicenseAvailable,R-MetadataMachineRead,R-LicenseLiability
Web 汇聚了商业、工程、科学等社群,创造了以往难以想象的协作机会。Web 数据发布的挑战在于为数据来源提供适当的细节。 数据生产者未必是数据发布者,因此收集并传递对应元数据尤为重要。缺少数据溯源信息,数据使用者就无法本质上信任所共享数据的完整性和可信度。数据发布者也需了解潜在用户群体的需求,以确定应披露多少溯源细节。
最佳实践 5:提供数据溯源信息
完整提供数据的来源及您做过的任何更改的信息。
溯源信息是数据使用者评判数据集质量的手段之一。了解其来源和历史,有助于判断数据是否值得信任,并提供重要的解释上下文。
人类将知晓数据集的来源和历史,软件代理能够自动处理溯源信息。
数据溯源的机器可读版本可以采用 W3C 推荐的溯源本体进行提供,例如 W3C 的 Provenance Ontology(PROV-O)[PROV-O]。
检查数据集本身的元数据中是否包含人类可读格式的溯源信息。
检查计算机应用能否自动处理数据集的溯源信息。
数据集的质量会显著影响相关应用的质量。因此,在数据发布与消费流程中加入数据质量信息至关重要。通常,质量评估涉及多种质量维度,每个维度代表对发布者和使用者来说重要的特征组。数据质量词汇(DQV)定义了测量和指标等概念,用于评估各质量维度的水平[VOCAB-DQV]。针对特定场景,还有用质量指标(如数据内容片段、数据元信息片段和人工评分)来评判数据预期用途适用性的启发式方法。
最佳实践 6:提供数据质量信息
提供有关数据质量及其是否适合特定用途的信息。
数据质量可能严重影响数据对特定应用的适用性,包括与其原始生成目的截然不同的应用。记录数据质量显著简化数据集筛选过程,提高复用概率。无论领域特性如何,数据质量应被记录,已知质量问题应在元数据中明确声明。
人类和软件代理都能评估数据集的质量进而判断其是否适合自身应用。
数据集质量元数据的机器可读版本可以采用 DWBP 工作组制定的数据质量词汇 [VOCAB-DQV]。
检查数据集本身的元数据中是否包含数据质量信息。
检查计算机应用能否自动处理数据集的数据质量信息。
相关需求: R-QualityMetrics, R-DataMissingIncomplete, R-QualityOpinions
发布在 Web 上的数据集可能会随着时间发生变化。有些数据集按计划定期更新,有些数据集则会因为数据采集方式改善而进行更新。为应对这些变化,可能需要创建数据集的新版本。不幸的是,关于什么时候数据集的更改应被视为全新的数据集、什么时候只是新版本,业界并无统一共识。下面我们介绍几种场景,多数发布者会认为应将其视为现有数据集的新版本。
一般来说,代表时间序列或空间序列的多个数据集,例如不同地区或不同年份的同类数据,不被视为同一数据集的多个版本。这种情况下,每个数据集对应不同的世界观察对象,应被视为新的数据集。对某城市每周气象预测数据集来说,每周都会创建新数据集存储该周的数据,也属于这种情况。
场景 1 和 2 通常涉及主版本变更,而场景 3 通常只是次版本更新。但将版本区分为主次并不如始终确保变更时递增版本指示器那么重要。即使是小的更改,也需要记录不同版本,以提升数据集的可信度。发布者需记住,某个数据集可能被多个数据使用者使用,发布新版本时应采取合理措施及时通知他们。对于实时数据,自动时间戳即可作为版本标识。每个数据集,发布者都应采取一致且具备参考性的版本管理策略,使数据使用者能够理解和适应数据的变化。
最佳实践 7:提供版本指示
为每个数据集分配并标注唯一的版本号或日期。
版本信息让数据集的某一次修订具有唯一标识。唯一性可使数据使用者判定数据如何随时间发生变化,以及他们正在使用的数据集具体是哪个版本。良好的版本管理可以让使用方判断是否存在更高版本。显式的版本管理有助于研究复现、结果对比,并防止混淆。使用标准格式的唯一版本号也会让用户对版本变更有明确预期。
人类和软件代理可以轻松确定正在使用的数据集属于哪个版本。
具体如何提供版本信息需视情况而定,但可参考如下基本指南:
Web 本体语言 [OWL2-QUICK-REFERENCE] 及 Provenance, Authoring and versioning 本体 [PAV] 都提供了多个用于版本信息的注解属性。
检查数据集/分发的元数据中是否以人类可读格式提供唯一版本号或日期。
检查计算机应用能否自动检测/识别并处理数据集或分发的唯一版本号或日期。
相关需求:R-DataVersion
最佳实践 8:提供版本历史
提供完整的版本历史,以及每次更新的变更说明。
在开发基于数据的应用时,了解数据随时间的变化性非常重要。理解数据的动态性也有利于正确解读数据。若没有变更摘要,则判断不同版本间的区别通常非常繁琐。
人类和软件代理能够理解数据集的版本变化规律,以及任意两版本的具体区别。
公布所有已发布版本的清单,并为每个版本提供变更说明,阐述该版本相较上一个版本的变化。可通过 API 用专用 URL 获取最新的完整历史信息。
检查是否提供了所有已发布版本及详细变更记录。
相关需求:R-DataVersion
标识符有多种形式,在各种信息系统中被广泛使用。Web 上的数据发现、使用和引用,根本上依赖于 HTTP(或 HTTPS)URI:全球唯一标识且可通过互联网解析的标识符 [RFC3986]。在当前背景下,值得强调以下关于 URI 的要点:
最佳实践 9:用持久性 URI 作为数据集标识符
为每个数据集分配精心设计、持久存在的 URI。
采用统一的标识体系,让任何角色都可可靠地进行数据标识与比对。这是数据管理和再利用的前提条件。
开发者可能将 URI 固化在代码中,因此 URI 的持久性和解析结果长期不变非常重要,避免需人工干预。
数据集及其信息在时间维度上可被发现和引用,无论其状态、可用性或格式如何变动。
要实现持久性,URI 设计时就要着眼于持久稳定。相关话题可参考欧盟关于持久性 URI 的研究报告 [PURI] 及其引用的其他资源。
如果发布方无法或不愿直接维护 URI 空间,可使用重定向服务如 Permanent Identifiers for the Web 或 purl.org,实现持久 URI,目标位置可灵活变化。相关软件可本地安装和管理。
数字对象识别码(DOI)也是类似方案。其独立于 Web 技术定义,可附加到“URI 雏形”末端,是科研与图书馆数字基础设施的重要组成部分。
检查每个数据集是否使用了专为持久性设计的 URI。理想情况下,相关网站需说明其设计方案及若发布者无法继续维护时,保证 URI 继续有效的承诺。
相关需求:R-UniqueIdentifier, R-Citable
最佳实践 10:在数据集中使用持久性 URI 作为标识符
在数据集中尽可能重用他人的 URI 作为标识符。
Web 的力量源于网络效应。第一部电话只有第二部诞生后,才具实际用途;第三部问世又让前两部更有价值。数据在关联他人数据后价值倍增,这包括相同对象、地点、概念、事件和个人等。实现这一点,需要跨数据集采用相同标识符,并让你的标识符可被他人引用。当这些标识符是 HTTP URI 时,可被解析且发现更多关联数据。
这些理念正是5 星关联数据的核心——一个数据点链接另一个数据点,也是超媒体中,链接可以指向更多数据或相关服务的实现基础。
这就是数据的 Web。
数据项将在 Web 全网互有关联,构建全球信息空间,人机均可访问。
此为独立专题,本文件仅能简要涉及。
开发者常知自己要解决的问题别人也许已解决。为国家、货币、学科、物种、蛋白、城市、地区、诺奖得主、产品等寻找标识符时,几乎总有现成 URI 可用,可参考 如何发现现有词汇表 [LD-BP]。
若找不到现成标识符集,你就需自行创建,并遵循 URI 持久性模式,让他人愿意通过链接为你的数据增值。
检查数据集中对诸如国家、地区、组织、个人等不变或缓慢变化对象的引用,是否使用了 URI 或可拼接到 URI 模板的短标识符。理想方案下,这些 URI 可解析,若不可解析,也因其全局唯一性仍具价值。
相关需求:R-UniqueIdentifier
最佳实践 11:为数据集版本和系列分配 URI
为每个数据集版本和整体系列分配 URI。
和文档类似,许多数据集自然形成系列。例如:
有时需要引用当前状态(如当前公交站、现任官员名单等),有时则需引用特定时间下的状态。
人类和软件代理可以明确引用数据集的具体版本、数据集系列、“最新版本”等概念。
W3C 提供很好的示范。本文件的(持久)URI 为
https://www.w3.org/TR/2016/PR-dwbp-20161215/,该 URI 表示本文件发布时间同日的固定快照,而“最新版本”URI 为
https://www.w3.org/TR/dwbp/
,用于指代一系列随时间变化的相关文档。在文件发布之时,这两个地址均指向本文件;等新版本发布后,“最新版本”URI 则指向新文件,而带日期的 URI 保持不变。
检查每个数据集版本是否拥有专属 URI,同时是否有“最新版本”URI。
相关需求:R-UniqueIdentifier, R-Citable
为数据消费者提供的数据格式是数据可用性的关键方面。即使有再灵活的访问机制,如果数据格式不便于使用和复用,也是徒劳无益。下文详细介绍了数据格式选择的最佳实践,涵盖文件层面和字段层面。W3C 鼓励选用最广泛受众可用、最容易被计算系统处理的格式。用于生成最终发布格式的源数据(如数据库导出、电子表格)不在讨论范围。本文仅关注实际发布的数据,而非生成这些数据的内部系统。
最佳实践 12:采用机器可读的标准化数据格式
以机器可读、标准化的数据格式发布数据,并确保该格式适合其预期或潜在用途。
随着数据无处不在、数据集日益庞大和复杂,依靠计算机处理变得愈发重要。如果公布的数据格式不是机器可读,便会极大限制数据的后续价值。数据只有经过处理和转化为信息后才真正有用。需要注意的是,可由人类用计算机读取和编辑的格式与机器可读格式是有区别的。后者强调数据可被计算机方便地抽取、转化和处理。
使用非标准数据格式,既昂贵低效,也容易在转换过程中丢失语义。相比之下,标准化数据格式不仅能实现互操作,还支持未来用途(如混合、可视化等),这些用途往往在最初发布数据时无法预见。值得注意的是,大多数机器可读的标准化格式也是与地区无关的。
机器能够轻松读取和处理在 Web 上发布的数据,用户也能用各自领域常用的计算工具处理数据。
以机器可读的标准化数据格式提供数据,便于解析,包括但不限于 CSV、XML、HDF5、JSON 以及 RDF 序列化(如 RDF/XML、JSON-LD 或 Turtle)。
检查数据格式是否符合已知的机器可读数据格式规范。
最佳实践 13:使用与地区无关的数据表示
优先采用与地区无关的数据结构和取值。如不可行,则应为数据值提供地区元数据。
机器可读且不依赖特定语言或文化的数据值,比采用各种文化约定的写法更具持久性,也更不易被误解。日期、货币、数字等外观相似,含义却因文化而异。例如“4/7”可能表示 4 月 7 日或 7 月 4 日;“€2,000”既可能指两千欧元,也可能是两欧元的高精度写法。采用与地区无关格式,避免了根据用户地区/语言设定多样的对接规则。当数据已是地区相关格式时,通过地区参数明确数据地区和语言,有助于用户判断可用性,并可支持自动翻译服务。
用户和软件代理能够准确解析日期、时间、货币、数字等字符串的含义。
绝大多数常用数据序列化格式本身是与地区无关的。例如 XML Schema 的 xsd:integer 和 xsd:date
类型,均为地区无关数据交换而设。采用此类表示,有利于数据值准确处理,无需复杂解析,也方便后续按用户所在地区格式展示。例如,不应将"€2000,00"按字符串存储,而应交换如下结构体:
…
"price" {
"value": 2000.00,
"currency": "EUR"
}
…
有些数据集包含无法转换为地区无关格式的值,尤其是自然语言文本。此时,相关数据字段应配语言标签,明确语言和地区。此信息既能用于解析,也能保证消费者正确展现和处理这些取值。BCP47 [BCP47] 规定了语言和地区标识方法。CLDR [CLDR] 既是本地化格式的规范数据源,又可作为具体地区数据取值的参考。
检查地区相关的数据值是否用地区无关格式表达,若不行,是否提供了相应的地区元数据。
相关需求:R-FormatLocalize, R-MetadataAvailable, R-GeographicalContext, R-FormatMachineRead
最佳实践 14:以多种格式提供数据
如多种格式均适合数据的预期或潜在用途,则应以多种格式发布数据。
多格式发布数据可减少数据转换成本,同时最小化转化过程可能引入的错误。如果有众多用户都需要特定格式,直接发布该格式数据可以为所有人节省大量时间与开销,并可避免重复出错。此外,也能大幅提升数据可被处理的工具和应用数量。
尽可能多的用户都能直接利用数据,无需首先将其转换成自己偏好的格式。
评估使用者最可能需要的数据格式,同时考虑未来可能有用的备选格式。发布者需在所需工作量与多格式收益间权衡,但至少提供一种备选格式,会极大提升数据可用性。为支持多格式服务,可采用内容协商(详见相关最佳实践)。
注意事项:数据集内的本地标识符(如可作为 URI 的片段 ID)须在各格式中保持一致。
检查整个数据集是否以多种数据格式发布。
相关需求:R-FormatMultiple
词汇表用于定义某一领域中用于描述和表达信息的概念及其关系(亦称“术语”或“属性”)。它们用于分类可在特定应用中使用的术语、刻画可能的关系,并定义这些术语使用时的约束。词汇表的近义词还有本体、受控词表、主题表、分类体系、代码表、语义网络等。
这些名词所指的形式没有严格区分。但“本体”通常指的是用于构建(关联)数据集资源描述的类和属性的词汇体系。关系型数据库中,这对应表名和列名;XML 则对应 XML Schema 定义的元素。本体是语义网推理的核心构件。W3C 最初提供的本体构建方式是 RDF Schema [RDF-SCHEMA] 语言。可用诸如 Web 本体语言 [ OWL2-OVERVIEW] 这类更强表达力的语言加扩展公理。
与之不同,“受控词表”“概念系统”和“知识组织系统”主要用于枚举和定义可被上述词汇表用来描述对象的资源。例如,主题表中的“建筑学”可以作为图书描述中的主题字段值(而“主题”是在图书本体中定义的)。对于这些词表,通常无需复杂的形式化表达,因此诸如 ISO 25964 数据模型 [ISO-25964] 或 W3C 简单知识组织系统 [SKOS-PRIMER] 这样更简单的模型被提出以便描述与交换。
最佳实践 15:复用词汇表(优先用标准化词汇表)
采用共享词汇表(优先用标准化词汇表)中的术语来编码数据和元数据。
使用他人已在用的词汇表能反映社区共识,促进互操作,降低冗余,也鼓励本身数据的再利用。尤其是在元数据(结构、溯源、质量、版本等)编码时共享词汇表更有利于数据与元数据的自动处理和比对。此外,引用标准的代码和术语能避免不同元素或取值间的歧义和冲突。
增强数据发布者和使用者之间的互操作性和共识。
W3C 关联数据发布最佳实践的词汇表章节,介绍了发现、评估和选择现有词汇表的建议。
如开放地理空间联盟(OGC)、ISO、W3C、WMO、图书馆与科研数据服务等机构,都为大家提供了可复用的代码表、术语表和关联数据词汇表。关键在于确保数据集或其文档为使用者提供足够人和机器可读的上下文信息,便于获得和利用标准取值的含义。在 Web 语境下,给标准词汇项指定无歧义的 Web URI 是实现该目标的高效方法,并允许附多语言标签提升跨境互操作性。如欧盟多语种主题表 Eurovoc 就是典范。
通过 Linked Open Vocabularies repository(LOV)等词汇库,或技术最佳实践中提及的服务,检查用于数据集表达的类/属性/术语/元素/属性等,是否已被其它词汇表定义,避免重复造轮子。
检查所用词汇/代码是否由 IETF、OGC、W3C 等标准机构定义,或由政府机构等权威发布。
相关需求: R-MetadataStandardized, R-MetadataDocum, R-QualityComparable, R-VocabOpen, R-VocabReference
最佳实践 16:选择合适的形式化程度
选择符合数据和应用场景的形式化语义层级。
爱因斯坦说过或没说过:要尽量简单,但不能过度简化。
形式化语义有助于严密规定数据语义,为推理等任务打下基础,但复杂的本体需更多精力构建与理解,可能妨碍其再用、比对和数据集间链接。
如果数据具备支持复杂研究的问题(如 A、B、C 成立但 D 不成立能推出 E),那应采用 OWL Profile 等 [OWL2-PROFILES]。
但公交车站点清单就没啥复杂性。
极简词汇表很吸引人,但若因简化而丢掉如地理位置等关键信息,也将导致使用场景受限。要做到既便于再用,也不失信息量。
为目标应用场景以最简单的方式提供所需支持,不增加不必要的复杂性。
多参考同行的做法,你会发现一些常用词汇表已能很好满足(或几乎满足)你的需求,那就优先选用它们。
如果你想复用某词汇表,但发现如领域或范围限制使它无法直接用,建议与词汇表发布者沟通。他们或许能移除部分限制,并告知更广泛的使用经验。
W3C 有邮件列表 public-vocabs@w3.org [存档],可专门讨论词汇表使用与开发话题。
如需自建词汇表,语义约束只保留最必要部分,方便他人再用。以广泛采用的 SKOS 本体为例,作者会质疑所有建议的形式公理,许多都被拒绝采纳,以避免导致应用间用法不一致,从而破坏了 SKOS
的普适性。例如,skos:broader 属性没有被定义为可传递,是为兼容诸多本体需求 [SKOS-DESIGN]。挑选词汇表时,可关注有无类似"面向广泛重用"的设计思路。
另一个“面向广泛重用”的典范是 schema.org。该站自2011年6月上线后快速被业界采纳,一大原因就是其类型定义偏向说明性而非强制规定。例如 author 的值"期望"为 Organization 或
Person 类型,但并不强制。其属性"可用于" CreativeWork 类型对象,但也非强约束。这让 schema.org
成为良好的数据分享词汇选择。
这类判断大多主观,没有客观标准。一般可参考:
为 Web 上的数据提供便捷访问,可以让人类和机器都能充分利用基于 Web 基础设施共享数据的好处。默认情况下,Web 通过超文本传输协议(HTTP)方法访问数据。这种方式提供了原子级事务的数据访问。可能是简单的批量下载文件,或者当数据分布于多个文件或需要更复杂检索方法时,通过 API 实现。这两种基本方式,批量下载和 API,并不是互斥的。
批量下载方法下,数据一般在服务器端预处理,将多个文件或文件树合并成一个可下载的文件。当需要从非文件系统方案批量获取数据时,根据数据用户群体,数据发布者可以提供 API 以支持单次事务需要的检索操作序列。
对于实时或准实时生成的数据,数据发布者应使用自动化系统以实现对时效性强数据的即时访问,比如应急信息、气象预测数据、系统监控指标等。一般情况下,API 应作为自动检索和搜索这些数据的手段向第三方提供。
API 除了支持自动化实时数据流程,也适合所有类型的 Web 数据。虽然实现 API 要比简单发布下载文件更复杂,但发布者越来越认可投入到文档齐全、标准、稳定 API 的价值。
对于一些数据发布者,能够知道谁下载了数据、如何使用数据也很重要。有两种获取这种信息的方法。一是邀请用户提供(用户的动力是可以促进数据持续发布,并提升自己的影响),另一种是要求注册后才能访问数据,两种方式都可以用数据集使用词汇 [VOCAB-DUV] 结构化表示用户信息。收集用户数据时,发布方应说明收集目的和用途。没有明确政策,用户可能不愿提供,从而降低数据集价值。
最佳实践 17:提供批量下载
允许使用者用单个请求获取完整数据集。
当 Web 数据分布于多个 URI,但从逻辑上属于同一容器时,批量访问非常有用。批量获取可让数据以整个数据集的方式统一处理。若每次请求单个资源再自行拼装,难度较大且方式不统一,易导致处理不一致。
大文件传输如比常规用户可接受时间更长,可通过专用文件传输协议实现。
可以根据数据类型和使用需求采取如下方式:
批量下载包应包含描述数据集的元数据,发现元数据 [VOCAB-DCAT] 也应在单独位置可获取。
检查能否用单次请求获取全部数据集。
相关需求:R-AccessBulk
最佳实践 18:为大型数据集提供子集
如果你的数据集很大,应让用户和应用容易获取有用的子集。
大型数据集转移困难,用户存储或解析大数据也很麻烦。如果只需部分子集,则没必要下载完整数据集。Web 应用如能“懒加载”,只处理必要数据,性能会更好,子集能力也能让离线处理更高效。实时应用则能更快响应。
应用和人能访问部分子集而无需下载整个数据集,并能让用户获取到最大比例的有用数据。静态大数据将可拆包下载。API 将能按领域或 Web 性能要求,提供适当粒度的切片或过滤子集。
根据预期用例,分析哪些子集最有价值。API 最具灵活性,可自定义子集数据内容,颗粒度应适合 Web 访问速度。(API 调用能1秒内返回互动体验较好,10秒以上常让用户误以为出错。)
也可以把数据集直接切割为多个小单元,逐个开放下载/查看。
对有需要的领域,可以给数据集加标记,使任意“切片”能单独处理。比如用 RDF Data Cube Vocabulary 定义切片。
检查是否可通过多次请求分别获取数据子单元,最终拼装还原全部数据集。
相关需求:R-Citable, R-GranularityLevels, R-UniqueIdentifier, R-AccessRealTime
最佳实践 19:对多格式数据支持内容协商
对于多种数据格式,同时支持内容协商与文件扩展名。
可用 RDFa 等方式在同一个 HTML 页面同时混合展示人类/机读数据。但如 Web 架构 [WEBARCH] 和 DCAT [VOCAB-DCAT] 所述,资源(如数据集)可有多种表现形式。相同数据可有 JSON、XML、RDF、CSV、HTML 等不同版本。API 可以提供多格式,但更推荐用同一个URL 通过内容协商返回合适版本(DCAT 称为 distribution)。当然,也可用特殊 URI 直接访问具体格式,绕过内容协商。
内容协商可根据客户端请求返回不同资源或一资源的不同表现形式。
可以将服务器配置为支持目标资源的内容协商。
资源具体格式既可通过 URI,也可靠 HTTP 请求的 Content-type 头部获取。
检查资源可用表现类型,尝试用 HTTP 请求头指定类型获取不同内容。
最佳实践 20:提供实时访问
当数据为实时生产时,应尽量实时或准实时在 Web 上提供。
Web 上提供实时数据可访问关键时效性数据,也能推动实时 Web 应用发展。实时访问依赖实时数据生产方及时向发布方供数。具体是否需要实时访问,需根据刷新频率、后处理延迟、基础设施和用户需求等因素判定。发布者还应补充说明数据缺口、错误、异常和延迟等信息。
应用将能实时或准实时访问关键数据,其中实时指数据生成后几毫秒到数秒之间。
一种做法是发布方配置 Web 服务,当收到实时数据时即时推送给用户,可通过轮询或流式方式分发。
如果使用者访问不频繁,可以通过 API 按需轮询最新数据,发布方应为这类只读请求提供 API。
如果用户频繁获取数据,则建议用流式实现(如推送 API),虽然流式技术超出本最佳实践讨论范畴,但现有大量标准协议和技术,如 Server-sent Events、WebSocket、EventSourceAPI,可用于服务器自动向客户端推送新数据。
相关需求:R-AccessRealTime
最佳实践 21:保证数据及时更新
以最新方式发布数据,并明确说明更新频率。
Web 数据的可用性应尽量与数据产生或采集时间同步,哪怕可能有一定处理延迟。将数据发布同步于更新频率有助于增强用户信心和数据复用。
Web 上的数据将及时更新,确保线上能拿到的数据和其它渠道最新数据没有时间差。新数据一出来,能尽快发布到 Web。
可按既定周期更新数据集,更新流程中将 Web 发布作为新数据版本的环节。将 Web 发布设为一项明确责任事项,可防止数据过时。为设定用户对更新节奏的预期,可用人类可读文本说明预期发布频率,并提供机器可读元数据描述频率。
检查有无更新频率说明,且最新发布版本不早于说明的更新日期。
相关需求:R-AccessUptodate
对于不可用数据,应说明如何获取数据及谁有权访问。
在线发布无法提供的数据说明,使发布者能明确指出知识空缺。这为用户社区提供了背景解释,也能鼓励他们利用那些可以访问的数据。
用户将知道当前数据集引用但实际不可用或仅特定条件下可用的数据。
根据机器/人类上下文,可采用多种办法指示数据不可用。发布者可发布 HTML 说明页面解释不可用原因。机器接口可用合适 HTTP 状态码并附定制消息,如 303(另见)、410(永久移除)、503(数据服务暂不可用)等。
若数据集内含已失效或非全部用户可用的数据引用,应有缺失说明和可行获取方法。请求不可用数据时应返回 400 或 500 段的合规 HTTP 响应码。
最佳实践 23:通过 API 提供数据
如果条件允许,应通过 API 提供数据服务。
API 为数据使用者提供了最大灵活性和可处理性。它可以实现实时数据使用、按请求过滤,并支持原子级别的数据操作。如果数据集规模大、实时更新频繁或结构复杂,采用 API 通常是数据发布的最佳选择。
开发者可以通过编程方式直接访问数据,用于自己的应用,同时数据能自动获得更新而不需要使用者手动操作。Web 应用也能通过查询接口获取所需的具体数据。
开发 API 比起直接提供文件下载更为复杂,需要一定 Web 应用开发经验。但通常不必从零开发,常见如 CKAN 等数据管理平台都可直接启用 API,许多 Web 开发框架本身也支持 API,此外还有专门为构建自定义 API 设计的框架。
Rails(Ruby)、Django(Python)、Express(NodeJS)等 Web 框架都可以用来搭建 API,常见的 API 框架还有 Swagger、Apigility、Restify、Restlet 等。
检查是否可用测试客户端模拟调用并验证 API 返回的响应是否符合预期。
最佳实践 24:以 Web 标准为 API 基础
在设计 API 时,应采用基于 Web 技术本身的架构风格。
基于 Web 标准的 API 能充分发挥 Web 优势。例如,采用 HTTP 动词作为方法、使用 URI 直观映射资源,能防止请求与响应强耦合,使 API 易于维护、开发者易学易用。Web 的无状态特性便于快速扩展,使用超媒体还能实现丰富的 API 交互。
对已有 REST 等 Web 标准 API 经验的开发者,可以直接理解并快速上手。API 也易于后续维护。
REST(表述性状态转移)[Fielding][Richardson] 是一种基于 Web 架构的 API 风格。RESTful API 的详细实现超出本文范围,建议查阅相关资源和社区。很多 REST 框架可选,如已有支持 REST 的 Web 框架,应优先采用;否则可考虑专门用于 REST 的 API 框架。
还可实现超媒体 API——即除了数据还在响应中加链接。链接让 Web 真正成为“网”,API 返回的链接可指向其他资源、文档和导航信息,即使 API 不完全满足 REST 约束,只要响应中返回链接,也能提升自说明性和可用性。
确保服务未将 http 作为自定义方法的通道,且 URI 中不含方法名。
最佳实践 25:为 API 提供完整文档
在 Web 上发布完整的 API 信息,并在增加新特性或变更时及时更新文档。
开发者是 API 的主要使用者,文档直接影响其对 API 质量和实用性的判断。文档完备且易懂,会极大促进开发者继续尝试和使用。完整且集中的文档让开发者高效编程,突出变更还能帮助使用者充分利用新特性,并及时调整代码。
开发者能查到每个 API 调用的详细信息,包括参数和期望的返回内容,即与 API 相关的所有信息。使用方法、近期变动、联系方式等也应易于浏览。同时也便于机器自动访问 API 文档,帮助开发 API 客户端软件。
典型的 API 参考文档会给出所有 API 调用清单,说明用途、参数、返回内容,并给出示例。现代 API 文档常内嵌测试表单,开发者可自定义请求验证响应效果。主流文档自动化工具有 Swagger、io-docs、OpenApis 等。此外 API 还应具备自说明性,即调用响应应包含出错和用法提示。API 使用者应能便捷联系维护者反馈问题。
文档质量还取决于开发者的使用和反馈,建议持续收集文档建议。
检查文档是否描述了所有 API 支持的调用,明确每个调用的参数和返回结果。
测试达到首次调用成功(TTFSC,首次成功调用时间)的耗时,能在几分钟内完成则有助于开发者长期留存。
相关需求:R-APIDocumented
最佳实践 26:避免对 API 的破坏性变更
避免对 API 做出破坏现有客户端代码的更改,并在 API 发生演进时及时通知开发者。
开发者实现 API 客户端时,会依赖你定义的内容(如 schema、响应格式等)。避免 API 破坏性变更可最大限度减少客户代码失效。及时沟通 API 变更,使开发者能充分利用新特性,并在罕见破坏性变更时有机会做适配。
开发者代码可持续工作。开发者能及时获知 API 的改进和演变。API 很少出现破坏性变更,若出现,开发者有足够的信息和时间适配,避免服务中断,提升信任度。所有 API 变更都会在 API 文档页面公布。
改进 API 时,优先采用新增调用或新增可选参数,而非修改已有调用行为。这样原有客户端可无须关注也能继续正常运行。
完全 RESTful 风格时,资源 URI 应保持不变,只在开发者未直接依赖的部分做调整。若架构本身无法拓展需做不兼容更改,可单独开发新版 REST API,换新 URI 提供服务。
如果无法避免的不兼容变更,应采用版本管理。将版本号反映在响应头,或在 URI 或 Accept header中指示版本(如通过内容协商),并保持旧版对还未适配新版本的开发者可用。
为直接通知用户变更,建议建立邮件列表,鼓励开发者订阅,实现变更通知和交流互助。
在正式环境应用前,先将变更发布于测试环境,邀请开发者体验和反馈。
工作组认识到,假定 Web 上的所有数据在未来任何时间都能按需访问并不现实。数据发布者出于多种原因,很可能会希望或需要将数据从在线 Web 移除,这种情况下数据保存问题超出了当前工作的范畴,进入了数据归档领域。但本规范范畴内的,是发布者应当如何指明数据被移除或归档。直接删除资源是一种不良实践。这种情况下,解析该 URI 只会得到 404 响应码,除了告诉用户“资源不存在”外没有任何信息。以下最佳实践提供了更有益的做法。
最佳实践 27:保留标识符
当数据从 Web 移除时,保留标识符,并提供关于已归档资源的信息。
URI 解析是 Web 数据的主要接口。如果解析 URI 得到臭名昭著的 404(未找到),用户根本不知道资源不可用是永久还是临时,是计划之中还是意外。如果发布者或第三方已归档了数据,若原 URI 彻底失效,这些归档副本被找到的概率会大大降低。
资源的 URI 总能解析到资源本身,或跳转到关于它的信息。
有两种情况需要考虑:
第一种情况,服务器应设置为返回 410(已删除)。来自规范:
410 响应主要是为了方便 Web 维护,通知请求方此资源已被有意移除,服务器希望删除所有远程链接。
第二种,数据已归档时,更合适做法是跳转到说明该数据保存在何处以及如何访问的页面。
无论哪种情况,原始 URI 都继续作为资源标识符,并能引导用户获得有用信息,即使数据本身不再直接可用。
检查对于不可用数据集的 URI,解析时能返回当前状态和可获取性说明,并根据情形返回 410 或 303 响应码。
最佳实践 28:评估数据集覆盖范围
在保存数据集前,对其覆盖范围进行评估。
Web 数据片段本质上依赖于完整的全球图。这个全局上下文会影响数据集内资源的描述语义。理想情况下,保存特定数据集也应保存其全部上下文,也就是整个 Web 数据网。
归档时需评估数据集快照与已保存资源的链接,以及所用词汇表。若大多数词汇或资源尚未归档,则该数据集应被标记为高风险。
用户将能够在将来继续利用归档数据。
检查所用所有资源,确保已被别处保存,或一同随数据集归档保存。
未来 50 年哪些内容还可用无法判断。但可检查归档数据集只依赖通用外部资源和词汇。要确认所有独有或冷僻依赖都随数据归档保存。
相关需求:R-VocabReference
在 Web 上发布数据能够实现大规模数据共享,覆盖不同专业水平的广泛受众。数据发布者希望确保其发布的数据能够满足数据使用者的需求,因此用户反馈非常重要。反馈对于发布者和使用者都有好处:它能帮助发布者提升数据完整性,也促进新数据的持续发布。反馈让数据使用者可以表达他们的使用体验(例如数据驱动的应用)、偏好和需求。如果条件允许,反馈还应对其他数据使用者公开。反馈公开可以让用户了解到其它数据使用者的存在,支持协作环境,并帮助社区了解哪些经验、问题或疑问正在被关注。
从用户界面角度看,收集数据使用者反馈有多种方式,包括网站注册、联系表单、质量评级、调查问卷和评论框等。从机器视角,数据发布者还可以记录数据使用指标或有关具体应用的信息。这样的反馈建立了数据发布者与使用者的沟通渠道。公开的反馈应以人类可读的形式展示。
本节为数据发布者提出一些最佳实践,以便让数据使用者能够提供反馈。反馈可针对人类用户,也可针对机器。
最佳实践 29:收集数据使用者反馈
为数据使用者提供可方便发现的反馈渠道。
获取反馈有助于发布者理解数据使用者的需求,也能促进发布数据质量的提升。同时,反馈机制让用户感受到发布方关心他们的需求,有助于增强信任。明确指出反馈渠道,也能降低用户找寻反馈入口的障碍。
数据使用者能够对数据集及其分发表进行反馈与评分。
为数据使用者提供一种或多种反馈渠道,包括但不限于联系表单、点击式质量评分按钮、评论框等。若想最大化反馈价值,建议配合工单系统将每条反馈存入数据库,便于量化与分析。也建议记录每条反馈的类别(如编辑、分类[评分]、评论或提问),这样每项反馈可用数据集使用词汇 [VOCAB-DUV] 结构化表达。
检查是否至少提供一种反馈渠道且可被使用者便捷发现。
最佳实践 30:公开用户反馈
将数据集及其分发表的用户反馈向公众公开。
公开反馈能向用户展示他们的关注被重视,也可避免重复上报同一问题。展示反馈还能帮助用户理解会影响数据可用性的相关问题,并营造社区氛围。
使用者能评估影响数据集的各类问题,了解其他用户的使用体验,并确认发布方正积极应对反馈。同时也可判断自己的意见是否已被反馈,减少多余的 bug 报告,也为维护者减轻重复工单压力。
反馈既可作为 HTML 网页内容公开,也可用数据集使用词汇 [VOCAB-DUV] 以机器可读格式提供。
检查任一数据集/分发表的用户反馈都能被公开获取。
数据丰富是指用于提升、精炼或改进原始或已处理数据的一类操作。这个概念及相关技术让数据成为现代企业的重要资产,本身话题广泛,细节不在本文件范围。但值得注意的是,部分增强技术需谨慎使用,因为存在伦理风险。在科研中应避免因增强而扭曲统计结果,涉及个人数据时合并不同数据集可能引发隐私风险。例如,两个单独数据集都无法识别个人,但合并后可能泄露隐私。加之这些技术可大规模实施,因此更需警惕和规范。
本节为数据发布者就数据丰富和增强提供建议。
最佳实践 31:通过生成新数据丰富数据
如有助于提升数据价值,可通过生成新数据丰富你的数据。
增强可以极大提升对非结构化数据的处理性。某些情况下可补足缺失数据,或据原始数据生成新属性和指标。还可采集补充数据或融合其它数据集。及时出版更完整的数据集,有助于建立信任(如方法符合学术伦理)。推导出具普遍价值的新数据也能节省用户时间、促进再用。智能化方法可让数据更具资产价值。
缺失值的数据集被完整补足。如能补充关键属性,结构就会更清晰、用途提升,同时不损害统计分析结果和显著性。
丰富数据的技术手段众多,超出本文范围,这里仅列部分方向。
可用机器学习等技术丰富数据,例如分类、消歧、实体识别、情感分析、主题提取等。也可通过对现有列做数学运算生成新字段,或人工检查提取空间数据特征、跨库查找人口统计信息。另有需求驱动的新数据生成,如缺失值自动计算或补全。
用推理类技术生成的新取值应加以标识;若覆盖了原数据,需能查回被替换的原值。
如许可证允许,建议公开丰富数据的相关代码,尤其对科研类数据尤其重要。
应优先考虑消费者价值和实施难度。如能量化需求(调查或记录请求量),优先满足高需求项,同时说明需求评估方式可凸显数据增值。
如你增强了他人的数据,也建议回馈给原发布者。
检查数据集中是否已补全所有缺失值,以及是否已补充其他用户可能需要的字段。基于推理技术丰富的数据,要标明来源且原始数据能回溯。
相关需求: R-DataEnrichment, R-FormatMachineRead, R-ProvAvailable
最佳实践 32:提供补充性数据展示
通过可视化、表格、Web 应用或摘要等补充方式丰富数据展示,让数据更直观易用。
在线发布数据旨在让他人充分了解数据内容。但若只提供下载或 API,用户需自己消化和分析。Web 为数据直观展现提供了绝佳机会,用户无需自建工具即可探索数据。
补充性数据展示可让人类用户无需下载或分析即可直观理解数据内容。
最直接的方法是在 HTML 页面发布分 析摘要。用图表或表格展示摘要数据能帮助用户快速浏览并理解数据含义。
有条件时可以开发交互式可视化或 Web 应用,让用户能自主探索和发现数据模式。这类方案还能证明数据具备良好的可处理性,进一步促进数据再用。
检查数据集是否有无需下载或调用 API 即可获得的补充解读内容。
相关需求:R-DataEnrichment
复用数据本质上也是一种发布数据的方式,它就是再次发布数据。再发布可以表现为将已有数据与其他数据集组合,创建 Web 应用或可视化,或者以新形式重新包装数据,例如翻译。数据再发布者在 Web 发布时有一些独特责任。本节为再发布数据者提供相应建议。
最佳实践 33:向原发布者反馈
当你复用别人的数据时,通知原发布者。如果发现错误、有建议或好评,也要让他们知道。
发布者通常希望了解自己发布的数据是否有用。此外,某些情况下他们需要汇报数据使用情况好为数据发布活动争取资源。汇报你的使用情况有助于他们证明数据发布工作的价值。反馈还能直接帮助发布者提升数据集质量,服务后续用户。
更好的交流能让原发布者更容易了解数据被如何使用,从而为持续发布数据提供依据。发布者还能获知如何改进自己的数据。这将带来更多更好的数据。
开始在新产品中使用数据集时,记下发布者联系方式、你用到的数据集的 URI 及联系时间,可以在代码注释中说明。按发布者指定方式反馈。如果没指定,查找数据网站的联系方式。
检查你是否有至少一条告知发布方复用情况的沟通记录。
最佳实践 34:遵守许可条款
查找并遵守数据集原发布者的许可要求。
许可为使用他人作品提供法律框架。遵守原发布者要求,有助于维护良好合作关系,依法使用也无需担心法律风险。明确原始许可,也有助于你为再利用选择合适的许可。
数据发布者可以相信自己的成果被依法合规再利用,会更有意愿持续发布数据。数据再使用者能为自己的衍生作品选择合适的授权。
认真阅读原始许可并严格遵守。如果许可要求衍生作品也应有特定授权,请选用兼容的许可证。如果没有明确许可,联系原发布者询问。
逐条阅读原始许可证,确保你的使用未违反任何条款。
最佳实践 35:引用原始出版物
在元数据中注明数据来源。如果有用户界面,也应在界面上显著注明引用信息。
只有值得信赖的数据才有用,说明来源能从两个层面提升可信度:用户可据来源判断数据本身的可靠性,引用来源也能证明你本身是可信的数据再发布方。除了告知终端用户,引用还可帮助发布者获得应有的认可,使其更愿意继续开放数据。引用还能维护数据的溯源,有助于他人后续处理。
终端用户能够判断数据的可信性,原始发布者得到认可。Web 数据的溯源链条可以追溯到最初的发布者。
你可在界面上以书目信息和有效链接形式注明数据原始来源。
检查所有被复用数据的元数据都注明原始来源。检查所有用户界面上都能显著看到人类可读的引用。
相关需求: R-Citable,R-ProvAvailable,R-MetadataAvailable,R-TrackDataUsage
本节为非规范性内容。
引用可以是直接且明确的(如期刊文章参考文献列表)、间接的(如引用同一课题组关于同一主题的更新论文),或是隐含的(如艺术引用或恶搞,或剽窃时的隐性引用)。
数据归档指的是对数字材料多年存储与状态监控相关的实践集合。
这些任务由可信数字库(TDR)负责,有时也称为长期归档服务(LTA)。这类服务常遵循开放归档信息系统 [OAIS],该规范将归档过程定义为数据的导入、监控与再利用。
在本工作组语境下,数据使用者是指访问、使用并可能对数据执行后处理的个人或群体。
来源:Strong, Diane M., Yang W. Lee, 和 Richard Y. Wang. "Data quality in context." Communications of the ACM 40.5 (1997): 103-110.
数据格式被定义为用于数据表达的特定约定,即信息在计算机系统中编码与存储的方式,可能受到数据类型或相关标准的约束。
来源:数字人文信息保存指南
数据保存由永久访问联盟定义为“确保对象在技术与知识层面能长期保存的过程和操作”。这是数据管理计划的一部分,重点关注保存规划和元数据。是否值得投入数据保存取决于数据的(未来)价值、可获取的资源和相关利益群体的意见。
数据生产者指负责生成和维护数据的个人或团队。
来源:Strong, Diane M., Yang W. Lee, 和 Richard Y. Wang. "Data quality in context." Communications of the ACM 40.5 (1997): 103-110.
溯源一词源自法语“provenir”(意为“来自”),用于描述艺术品在多位拥有者间传递的收藏过程。数据溯源同理,是使数据提供方能将数据历史细节传递给用户的元数据。
数据质量通常被定义为对特定应用或场景“可用性”的适宜程度。
数据集被定义为由单一主体发布或管理、可通过一种或多种格式访问或下载的数据集合。数据集不一定必须以下载文件形式提供。
来源:数据目录词汇(DCAT) [VOCAB-DCAT]
分发表表示数据集的某一种可获取形式。每个数据集可能有若干不同形式,这些形式可能是不同的格式,也可能是不同的服务端点。分发表示例包括可下载的 CSV 文件、API或 RSS 源等。
来源:数据目录词汇(DCAT) [VOCAB-DCAT]
反馈论坛用于收集用户对特定主题发表的信息。消息可以包含对其他用户的回复。每条消息带有时间戳,也可以关联用户身份或匿名提交。
来源:语义互联在线社区(SIOC),以及注释模型 [Annotation-Model]
为更好理解注释创建原因,可用 SKOS 概念体系 [SKOS-PRIMER] 展示社区间更具区分性的相关注释,而不仅仅是简单的类/子类树。
文件格式是信息在文件中编码存储的标准方式。它规定数字存储介质上比特的编码方式。文件格式可为专有、免费、封闭或开放。
常见文件格式如:纯文本(建议 UTF-8 编码)、逗号分隔值(CSV)[RFC4180]、便携文档格式 PDF [PDF]、XML、JSON [RFC4627]、Turtle [Turtle]、HDF5 等。
许可是一种法律文件,授予用户对数据进行特定使用的正式授权。
地区是指一组国际化偏好,通常与用户的语言和地理区域相关。这通常用缩写标识或标记表示,会在环境中传递给不同进程,用以获得文化相关行为。
来源 Web 的语言标签与地区标识 [LTLI]。
机器可读数据是采用标准格式、可被计算系统自动读取和处理的数据。常规的文档和 PDF 文件人类易于阅读,但对机器解析和处理通常困难。像 XML、JSON、HDF5、RDF 和 CSV 都是机器可读数据格式。
改编自 维基百科。
“准实时”或“接近实时”(NRT)一词在通信和计算领域,指由于自动数据处理或网络传输产生的从事件发生到数据被处理(如用于显示或反馈和控制)的延迟。例如,准实时显示即反映当前时间减去处理时间的现场状态。
来源:维基百科
敏感数据指任何被指定为有限用途和/或仅限特定受众使用的数据或元数据。敏感数据可能包含个人信息、企业或政府数据,发布敏感数据可能对个人或机构造成损害。
技术标准是关于技术系统的既定规范或要求,通常是一份规定了统一工程或技术准则、方法、流程和实践的正式文件。与此相对,成为市场事实标准的惯例、公司产品、企业标准等通常称为事实标准(de facto standard)。
来源:维基百科
结构化数据指符合固定模式的数据。关系型数据库和电子表格即为结构化数据的典型代表。
词汇表是一组为特定目的定义的“术语”集合。词汇表可以很简单,如常用的 RDF Schema [RDF-SCHEMA]、FOAF [FOAF]、Dublin Core [DCTERMS],也有如医疗领域用于疾病和治疗描述的复杂词汇表。词汇表对关联数据尤为重要,便于数据集成。该词汇概念与本体(Ontology)有重叠。
来源:关联数据术语表
本节为非规范性内容。
下图总结了Web上发布或使用数据时面临的一些主要挑战。这些挑战来源于 DWBP 用例与需求集 [DWBP-UCR],如图所示,每项挑战都可由一条或多条最佳实践予以应对。
本节为非规范性内容。
下面的清单描述了应用 DWBP 的主要益处。每一项益处都代表了数据集在 Web 上可用性方面的改进。
下面的表格将最佳实践与其带来的益处对应起来。
| 最佳实践 | 益处 |
|---|---|
| 提供元数据 |
|
| 提供描述性元数据 |
|
| 提供结构性元数据 |
|
| 提供数据许可信息 |
|
| 提供数据溯源信息 |
|
| 提供数据质量信息 |
|
| 提供版本指示 |
|
| 提供版本历史 |
|
| 为数据集使用持久性 URI 作为标识符 |
|
| 在数据集中使用持久性 URI 作为标识符 |
|
| 为数据集版本和系列分配 URI |
|
| 使用机器可读的标准化数据格式 |
|
| 使用与地区无关的数据表示 |
|
| 以多种格式提供数据 |
|
| 复用词汇表(优先使用标准化词汇表) |
|
| 选择合适的形式化程度 |
|
| 提供批量下载 |
|
| 为大型数据集提供子集 |
|
| 对多格式数据支持内容协商 |
|
| 提供实时访问 |
|
| 保证数据及时更新 |
|
| 为不可用数据提供说明 |
|
| 通过 API 提供数据 |
|
| 以 Web 标准为 API 基础 |
|
| 为你的 API 提供完整文档 |
|
| 避免对你的 API 做出破坏性更改 |
|
| 保留标识符 |
|
| 评估数据集覆盖范围 |
|
| 收集数据使用者反馈 |
|
| 公开用户反馈 |
|
| 通过生成新数据丰富数据 |
|
| 提供补充性数据展示 |
|
| 向原发布者提供反馈 |
|
| 遵守许可条款 |
|
| 引用原始出版物 |
|
下图显示数据发布者通过采用这些最佳实践将获得的益处。
可复用性
所有最佳实践
可发现性
可处理性
可信度
互操作性
本节为非规范性内容。
编辑们衷心感谢工作组所有成员对本文档的贡献。特别感谢 Annette Greiner 的巨大努力以及 Antoine Isaac、Eric Stephan 和 Phil Archer 的贡献。
本文件受益于空间数据 Web 工作组众多成员的意见与输入。特别感谢 Andrea Perego、Dan Brickley、Linda van den Brink 和 Jeremy Tandy。
编辑们还感谢以下人员提供的评论:Addison Phillips、Adriano Machado、Adriano Veloso、Andreas Kuckartz、Augusto Herrmann、Bart van Leeuwen、Christophe Gueret、Erik Wilde、Giancarlo Guizzardi、Gisele Pappa、Gregg Kellogg、Herbert Van de Sompel、Ivan Herman、Leigh Dodds、Lewis John McGibbney、Makx Dekkers、Manuel Tomas Carrasco-Benitez、Maurino Andrea、Michel Dumontier、Nandana Mihindukulasooriya、Nathalia Sautchuk Patrício、Peter Winstanley、Renato Iannella、Steven Adler、Vagner Diniz 和 Wagner Meira。
编辑们也感谢本工作组的主席:Deirdre Lee、Hadley Beeman、Yaso Córdova 以及工作人员联系人 Phil Archer。
自 上一个版本 以来的更改: