W3学校《RDF教程》的内容与2004版《RDF入门》相近——题外话是:2004版入门作者之一Eric Miller,是正在开发中的BIBFRAME的主要承担者。
不过《RDF 1.1入门》(2014版)变化很大,目录和2004版完全不同。如其“致谢”部分所说,除导言有一些句子来自2004版外,其他部分完全是新内容。以下为摘译(含少量本人理解),名词翻译大多根据2004版。
RDF 1.1 Primer (W3C Working Group Note 25 February 2014) / Guus Schreiber, Yves Raimond
1. 导论
资源描述框架(RDF)是表达关于资源信息的框架。资源可以是任何事物,包括文档、人物、物理对象(实体物件)和抽象概念。
RDF用于需要由应用程序处理Web上信息的场合,而非仅向人们显示。RDF提供一个表达此信息的通用框架,这样可以在应用程序间交换而不损失含意。由于它是一个通用框架,应用设计者可以利用通用RDF解析器和处理工具。能够在不同的应用程序间交换信息,意味着对于那些最初并非为此而创建的应用程序,也可利用这些信息。
2. 为什么用RDF?[用途举例]
– 例如在使用流行的schema.org词表的Web页上增加机读信息,使它们在搜索引擎上以增强格式显示,或者由第三方应用自动处理
– 链接到第三方数据集以强化数据集。例如,一个关于绘画的数据集,可以链接到Wikidata上相应的艺术家得到强化,因此访问到关于他们及相关资源的大量信息。
– 互连API源,确保客户端能方便发现如何访问更多信息
– 使用当前发布为关联数据的数据集,例如建立关于特定论题的数据的集合
– 建立分布的社会网络,互连跨多个Web网站的人物的RDF描述
– 提供一个兼容标准的方式,在数据库间交换数据
– 在一个组织中互连不同数据集,使得可以用SPARQL执行跨数据集查询
3. RDF数据模型
3.1 三元组(Triples)
三元组=关于资源的陈述(statement)=主体 subject + 谓词 predicate + 客体 object
主体/客体=资源,谓词=属性(关系)
相同资源可以在一个三元组中处于主体位置、在另一个中处于客体位置,这就有可能找到三元组间的连接=(可视化)RDF图=节点(主体/客体)+弧(谓词)。
一旦有像这样的图,可以使用SPARQL查询
3.2 IRIs [三元组中出现的RDF数据之一]
IRI=International Resource Identifier
一个IRI标识一个资源,可出现在三元组所有3个位置。
IRI由特定词表或惯例给出含意;IRI是全域标识符,可以重用此IRI标识相同的事物。
3.3 文字(Literals)[三元组中出现的RDF数据之二]
非IRI的基本值,只能出现在三元组的客体位置。
数据类型=字符串(语言标签)/日期/数值/…(XML Schema定义的数据类型)。
3.4 空节点(Blank nodes)[三元组中出现的RDF数据之三]
用于表示无需使用IRI明确标识的资源,可出现在三元组的主体和客体位置。
3.5 多图(Multiple graphs)
多图构成一个RDF数据集,有多个命名图和至多一个未命名(默认)图。关联该图的IRI称为“图名”(graph name)。
4. RDF词表(RDF Vocabularies)
RDF用RDFS语言定义词表:关系、类别(类/子类、属性/子属性)及限制(领域/范围)
RDF词表举例:从FOAF到DC/schema.org到SKOS/OWL
词表由重用获得其价值:被其他重用的词表IRI越多,使用该IRI就越有价值(所谓的网络效应)。这意味首应该首选重用其他人的IRI,而非发明新的。
5. 写RDF图 [具体句法/RDF语言/序列化格式]
5.1 RDF语言的龟标家族(Turtle)[推荐]
5.1.1 N-Triples
常用于交换大量RDF,以及用面向行的文本处理工具处理大的RDF图。
每行代表一个三元组,用尖括号封闭完整IRI,句点表示三元组结束。
如:<http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .
5.1.2 Turtle
支持命名空间前缀、列表和数据类型串的速写。如:
BASE <http://example.org/> 提供IRI缩写,基IRI
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 定义IRI前缀
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX schema: <http://schema.org/>
<bob#me> 相对IRI,根据基IRI解析;相同主体的三元组集
a foaf:Person ; 三元组的谓词、客体,分号分隔。谓词a是属性rdf:type的速写,表示实例关系,意在匹配人的直觉
foaf:knows <alice#me> ;
schema:birthDate “1990-07-04″^^xsd:date ;
foaf:topic_interest wd:Q12418 . 句点表示三元组集结束
5.1.3 TriG(Turtle的多图扩展:也可称为Turtle)
– 每个图中的三元组用花括号括起(内中句法与Turtle一致)。关键词GRAPH可选:可改善可读性,但主要为与SPARQL更新校正。如:
GRAPH <http://example.org/bob>
{
<bob#me>
…
}
5.1.4 N-Quads(N-Triples的多图扩展,四元组)
如N-Triples,典型地用于交换大量RDF数据集,以及用面向行的文本处理工具处理RDF。
在一行中加入第4个元素,捕捉该行描述三元组的图IRI。如:
<http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/bob> .
5.2 JSON-LD(基于JSON的RDF句法)
以最小变化转换JSON文档为RDF。
5.3 RDFa(用于在HTML和XML文档中嵌入RDF数据)
5.4 RDF/XML(用于RDF的XML句法)
(历史)1990年代后期RDF刚开发时,RDF/XML是其唯一句法,某些人仍然称本句法为RDF。2001年Turtle的先导N3被提出,渐渐前面列出的其他语言被采用、被标准化。
6. RDF图的语义
– 用于命名主体、谓词和客体的IRI,在范围上是“全域的”,使用时每次命名相同的事物
– 当谓词关系确实存在于主体和客体之间时,每个三元组完全为“真”
– 当其中所有三元组为“真”时,一个RDF图完全为“真”
具有以上声明语义的RDF的益处之一是,系统能做逻辑推论。即给出某个接受为真的导入三元组集,在某些情况下,系统能够推论出其他三元组在逻辑上必须也是真的,我们说第一个三元组集“传递”给了其他三元组。这些称为“推理器”的系统,有时也能推出,给定的导入三元组互相矛盾。
【以上为理想状况,事实上使用时如何验证关系是否存在?如果其中一个环节有问题,就会导致连接的事实出问题。能够发现互相矛盾是幸运的,没发现不等于数据就不存在问题。当三元组大量出现后,如何选择数据来源,会是今后需要认真对待的问题?】
当一种特定的推论似乎对许多不同应用有用时,可被记录为一个蕴涵体制[SPARQL用语义扩展]。RDF语义中指定了多个蕴涵体制。
RDF工具可能不认识所有数据类型。至少要求工具支持数据类型串文字和语言标签文字。
不同于其他数据建模语言,RDFS允许相当大的建模自由度。例如,相同实体既可用作一个类、也可用作一个属性。同样,“类”和“实例”的世界没有严格分离。
7. RDF数据
RDF允许从任何来源组合三元组为一个图,作为合法RDF处理。大量RDF数据作为关联数据存在。数据集在Web上使用RDF发布与连接,其中很多通过SPARQL提供查询便利。上述例子中所用数据集包括:Wikidata、DBPedia、WordNet、Europeana、VIAF。
以关联数据存在的数据集清单由datahub.io维护:Datasets(【2014-9-9有9853个】
许多记录RDF数据源间链接的词表术语已经很流行,一个例子是由OWL词表提供的sameAs属性,可用于表明两个IRI事实上指向相同资源。