跳转到导航跳转到搜索资源描述框架(RDF)是万维网联盟(W3C)规范[1]的家族,最初设计为元数据数据模型。它已经被用作使用各种语法符号和数据序列化格式对在web资源中实现的信息进行概念性描述或建模的一般方法。它还用于知识管理应用程序。
RDF在1999年被采纳为W3C推荐标准。RDF 1.0规范于2004年发布,RDF 1.1规范于2014年发布。
RDF数据模型[2]类似于经典的概念建模方法(如实体关系图或类图)。它基于以主语-谓语-宾语形式(称为三元组)的表达式对资源(特别是Web资源)进行陈述的思想。主语表示资源,谓语表示资源的特征或方面,并表示主语和宾语之间的关系。
例如,在RDF中表示天空为蓝色的概念的一种方式是三元组:表示天空的主语、表示天空的谓语和表示蓝色的宾语。因此,RDF使用主题而不是对象(或实体),这与面向对象设计中的实体-属性-值模型的典型方法形成对比:实体(天空)、属性(颜色)和值(蓝色)。
RDF是具有几种序列化格式(即文件格式)的抽象模型,因此资源或三元组的特定编码因格式而异。
这种描述资源的机制是W3C语义网活动的主要组成部分:万维网的一个发展阶段,在这个阶段,自动化软件可以存储、交换和使用分布在整个Web上的机器可读信息,进而使用户能够以更高的效率和确定性处理信息。RDF简单的数据模型和对完全不同的抽象概念建模的能力也导致了它在与语义网活动无关的知识管理应用程序中的使用越来越多。
RDF语句的集合本质上表示一个带标签的有向多图。从理论上讲,这使得RDF数据模型比其他关系或本体模型更适合于某些类型的知识表示。然而,在实践中,RDF数据通常存储在关系数据库或本机表示中(也称为三元存储或四元存储,如果还为每个RDF三元组存储了上下文,如命名图)。[3]。
最初的RDF设计意在建立一个厂商中立和操作系统独立的元数据系统,[4]源自W3C的互联网内容选择平台(PICS),这是一个早期的网络内容标签系统,[5]但该项目也受到都柏林核心的想法和Meta Content Framework(MCF)的影响,后者是由苹果的Ramanathan V.Guha和Netscape的Tim Bray在1995-1997年间开发的(Meta Content Framework,MCF),[4]是由Apple的Ramanathan V.Guha和Netscape的Tim Bray在1995-1997年间开发的。[6]
RDF的第一个公开草案出现在1997年10月,由一个W3C工作组发布[7][8],该工作组包括来自IBM、微软、网景、诺基亚、路透社、SoftQuad和密歇根大学的代表。[5]。
1999年,W3C发布了第一个推荐的RDF规范,即模型和语法规范(";RDF M&;S&34;)。[9]这描述了RDF的数据模型和XML序列化。[10]。
此时,对RDF产生了两个长期的误解:第一,由于MCF的影响和RDF&34;资源描述的初始化,认为RDF专门用于表示元数据的想法;第二,认为RDF是一种XML格式而不是数据模型,并且只有RDF/XML序列化是基于XML的。RDF在这一时期几乎没有被接受,但在布里斯托尔,在布里斯托尔大学和惠普实验室的ILRT附近,以及在波士顿的麻省理工学院,都做了大量的工作。RSS1.0和FOAF在这一时期成为RDF的范例应用程序。
1999年的建议在2004年被一套六个规范所取代:[11]";RDF Primer";,[12]";RDF概念和抽象";,[13]";RDF/XML语法规范(修订)";,[14]";RDF语义";,[15]";RDF词汇描述语言1.0";,[16]和";[17]。
本系列在2014年被以下六个文档取代:";RDF 1.1入门,";[18]";RDF 1.1概念和抽象语法,";[19]";RDF 1.1 XML语法,";[20]";RDF 1.1语义,";[21]";RDF架构1.1,";[22]和#34;RDF 1.1测试用例";。[23]。
Rdf:alt、rdf:Bag、rdf:seq-备选容器、无序容器和有序容器(rdfs:tainer是三者的超类)。
Rdfs:ContainerMembership Property-容器成员身份属性的类,rdf:_1、rdf:_2、...,所有这些属性都是rdfs:Member的子属性。
Rdf:type-rdf:property的实例,用于声明资源是类的实例
N3或Notation3,这是一种非常类似于Turtle的非标准序列化,但具有一些附加功能,例如定义推理规则的能力。
RDF/XML有时被简单地称为RDF,这具有误导性,因为它是在定义RDF的其他W3C规范中引入的,而且历史上它是第一个W3C标准RDF序列化格式。但是,将RDF/XML格式与抽象RDF模型本身区分开来很重要。虽然RDF/XML格式仍在使用,但现在许多RDF用户更喜欢其他RDF序列化,这既是因为它们更人性化[34],也是因为由于XML QNames的语法限制,一些RDF图不能用RDF/XML表示。
只需稍加努力,几乎任何XML都可以使用GRDDL(发音为GRDDL(发音为Griddle))解释为RDF,即从语言方言中收集资源描述。
RDF语句的主题是统一资源标识符(URI)或空白节点,两者都表示资源。由空白节点指示的资源称为匿名资源。它们不能从RDF语句中直接识别。谓词是一个URI,它还指示资源,表示一种关系。该对象是URI、空白节点或Unicode字符串文字。从RDF1.1开始,资源由IRI标识。IRI是URI的泛化。[35]。
在语义Web应用程序中,以及在RSS和FOAF(朋友的朋友)等相对流行的RDF应用程序中,资源往往由有意表示并可用于访问万维网上的实际数据的URI表示。但一般而言,RDF并不局限于对基于Internet的资源的描述。事实上,命名资源的URI根本不需要是可取消引用的。例如,以";http:";开头并用作RDF语句主题的URI不必表示可通过HTTP访问的资源,也不必表示有形的、网络可访问的资源-这样的URI完全可以表示任何东西。然而,人们普遍认为,在HTTP GET请求中使用时返回300级编码响应的裸URI(不带#符号)应视为表示其成功访问的Internet资源。
因此,RDF语句的生产者和消费者必须就资源标识符的语义达成一致。这种协议不是RDF本身固有的,尽管有一些常用的受控词汇表,例如都柏林核心元数据(Dublin Core Metadata),它被部分映射到URI空间以在RDF中使用。在Web上发布基于RDF的本体的目的通常是建立或限制用于在RDF中表示数据的资源标识符的预期含义。例如,URI:
的所有者打算引用Vintner生产的所有Merlot红酒的类别(即,上述URI的每个实例都表示由单个葡萄酒商生产的所有葡萄酒的类别),这是一个由OWL本体(本身是一个RDF文档)表示的定义,它在其中出现。如果不仔细分析定义,人们可能会错误地得出结论,认为上述URI的实例是某种物理的东西,而不是一种酒。
请注意,这不是一个空的资源标识符,而是一个URI引用,包含';##39;字符,并以片段标识符结尾。
由语句集合建模的知识主体可以被具体化,其中每个语句(也就是总共每个三重主语-谓语-宾语)被分配一个URI,并被视为可以作出附加声明的资源,如";Jane说John是文档X";的作者。物化有时很重要,以推导出每个语句的可信度或有用性程度。
在具体化的RDF数据库中,作为资源的每个原始语句本身很可能至少有三个附加语句:一个断言它的主体是某个资源,一个断言它的谓语是某个资源,还有一个断言它的宾语是某个资源或文字。根据应用程序的需要,可能还存在关于原始语句的更多语句。
借用逻辑中可用的概念(以及概念图和主题图等图形符号中的说明),一些RDF模型实现承认,有时根据不同的标准(称为情况、上下文或范围)对语句进行分组是有用的,RDF规范联合编辑Graham Klyne在文章中讨论了这一点。[36]例如,语句可以与由URI命名的上下文相关联,以便在关系中断言";为真。再举一个例子,根据源对语句进行分组有时很方便,这些源可以由URI标识,例如特定RDF/XML文档的URI。然后,在对源进行更新时,也可以在模型中更改相应的语句。
作用域的实现不一定需要完全具体化的语句。某些实现允许将单个范围标识符与本身未分配URI的语句相关联。[38]同样,其中一组三元组由URI命名的命名图可以表示上下文,而不需要具体化三元组。[40]。
RDF图的主要查询语言是SPARQL。SPARQL是一种类似SQL的语言,是W3C从2008年1月15日起推荐的语言。
以下是使用虚构本体显示非洲国家首都的SPARQL查询示例:
前缀ex:<;http://example.com/exampleOntology#>;选择?首都?国家/地区,其中{?x ex:城市名称?首都;例如:isCapitalOf?Y。?y ex:国家名称;ex:isInContinent ex:非洲。}。
RQL,用于统一查询RDF架构和资源描述的首批声明性语言之一,在RDFSuite中实现。[41][font=宋体]
XUL有一个模板元素,可以在其中声明RDF中匹配数据的规则。XUL广泛使用RDF进行数据绑定。
SPARQL推理符号(SPIN)[42]基于SPARQL查询。它实际上已被弃用,取而代之的是SHACL。[43][font=宋体]。
SHACL(Shape Constraint Language)[44]表示RDF图上的约束。SHACL分为SHACL Core和SHACL-SPARQL两部分。SHACL Core由一系列内置约束组成,例如基数、值范围和许多其他约束。SHACL-SPARQL由SHACL Core的所有功能、基于SPARQL的约束的高级功能以及用于声明新约束组件的扩展机制组成。
下面的例子取自W3C网站[46],用语句"描述资源;有一个由http://www.w3.org/People/EM/contact#me,标识的人,他的名字是埃里克·米勒,他的电子邮件地址是e.miler123(At)Example(出于安全目的而改变),他的头衔是Dr.";
此外,主题有一个类型(URI http://www.w3.org/1999/02/22-rdf-syntax-ns#type),为Person(URI http://www.w3.org/2000/10/swap/pim/contact#Person).。
@前缀Eric:<;http://www.w3.org/People/EM/contact#>;。@前缀联系方式:<;http://www.w3.org/2000/10/swap/pim/contact#>;。@前缀rdf:<;http://www.w3.org/1999/02/22-rdf-syntax-ns#>;。埃里克:我的联系方式:FullName";Eric Miller";Eric:我的联系方式:mailbox<;mailto:e.miler123(At)Example>;。埃里克:我的联系人:Personal Title";Dr.PersonalTitle";Eric:me rdf:键入Contact:Person。
<;?xml版本=";1.0";编码=";utf-8";?>;<;rdf:rdf xmlns:Contact=";http://www.w3.org/2000/10/swap/pim/contact#";xmlns:Eric=";http://www.w3.org/People/EM/contact#";xmlns:rdf=";Http://www.w3.org/1999/02/22-rdf-syntax-ns#";>;<;rdf:description rdf:About=";http://www.w3.org/People/EM/contact#me";&>;<;联系人:fullName>;Eric Miller<;/联系人:fullName>;<;/rdf:description rdf:about=";Http://www.w3.org/People/EM/contact#me";>;<;联系人:邮箱rdf:Resource=";mailto:e.miler123(At)示例&34;/>;<;/rdf:description>;<;rdf:description rdf:About=";http://www.w3.org/People/EM/contact#me";&><;联系人:PersonalTitle&>;Dr.<;/联系人:PersonalTitle>;<;/rdf:description>;<;rdf:description rdf:About=";http://www.w3.org/People/EM/contact#me";>;<;rdf:type rdf:Resource=";http://www.w3.org/2000/10/swap/pim/contact#Person";/>;<;/rdf:description>;<;/rdf:rdf>;
RDF中的某些概念取自逻辑和语言学,其中主语-谓语和主语-谓语-宾语结构的含义与RDF中这些术语的用法相似,但又不同。此示例演示:
在英语语句中,New York有邮政缩写NY#39;,New York&39;将是主语,邮政缩写有谓语,宾语是#39;NY&39;。
编码为RDF三元组的主语和谓语必须是由URI命名的资源。该对象可以是资源或文字元素。例如,在RDF的N-Triples形式中,语句可能如下所示:
在本例中,";urn:x-States:New%20York";是表示美国纽约州的资源的URI,";http://purl.org/dc/terms/alternative";是谓词的URI(其人类可读的定义可以在这里[47]找到),而";NY";是一个文字字符串。请注意,这里选择的URI不是标准的,也不必是标准的,只要阅读它们的人知道它们的含义即可。
以类似的方式,如果";http://en.wikipedia.org/wiki/Tony_Benn";标识了特定的资源(不管该URI是否可以作为超链接遍历,或者该资源实际上是否是关于Tony Benn的维基百科文章),那么说这个资源的标题是Tony Benn&34;它的发布者是Wikipedia&34;将是两个可以表示为有效的RDF语句的断言。在RDF的N-Triples形式中,这些语句可能如下所示:
但是,RDF将信息以机器可以理解的正式方式放在一起。RDF的目的是提供一种编码和解释机制,以便以特定软件可以理解的方式描述资源;换句话说,这样软件就可以访问和使用它本来无法使用的信息。
上面两个版本的语句都很冗长,因为对RDF资源(作为主语或谓语)的一个要求是它必须是唯一的。主题资源必须是唯一的,才能尝试精确定位所描述的资源。谓词需要是唯一的,以减少标题或出版商的概念对于处理描述的软件来说含糊不清的可能性。如果软件识别http://purl.org/dc/elements/1.1/title(由都柏林核心元数据计划建立的头衔概念的特定定义),它还将知道该头衔不同于土地头衔或荣誉头衔,或者仅仅是字母t-i-t-l-e组合在一起。
下面的示例是用Turtle编写的,它展示了如何通过组合多个RDF词汇表来详细说明这些简单的声明。在这里,我们注意到维基百科页面的主要主题是一个人,他的名字是Tony Benn&34;:
@前缀rdf:<;http://www.w3.org/1999/02/22-rdf-syntax-ns#>;。@前缀foaf:<;http://xmlns.com/foaf/0.1/>;。@前缀DC:<;http://purl.org/dc/elements/1.1/>;。<;http://en.wikipedia.org/wiki/Tony_Benn>;DC:Publisher";Wikipedia&34;;DC:Title";Tony Benn&34;;foaf:primary主题[a foaf:Person;foaf:Name";Tony Benn&34;]。
Yago-类似于DBpedia,从Wikipedia文章中提取事实并将其作为RDF数据发布。
Creative Commons-使用RDF在网页和mp3文件中嵌入许可证信息。
Ideas Group-使用RDF作为编码,为企业架构开发正式的4D本体。[49][49]。
NEPOMUK是一种用于社交语义桌面的开源软件规范,它使用RDF作为收集的元数据的存储格式。NEPOMUK之所以为人熟知,主要是因为它集成到了KDE SC 4桌面环境中。
Cochrane是循证保健临床研究荟萃分析的全球出版商。他们使用本体驱动的数据架构,用基于RDF的结构化数据对其发表的评论进行语义注释。[52][font=宋体]。
RDF站点摘要-用于发布有关对网页进行的更新的信息的几种语言之一;它通常用于传播新闻文章摘要和共享网络日志内容。
SIOC(语义互连的在线社区)-设计用于描述在线社区,并通过留言板、网络博客和邮件列表在基于Internet的讨论之间建立联系。[53][font=宋体]。
SMART-M3-提供使用RDF的基础设施,并特别使用RDF与本体无关的特性来实现信息的异构聚合[54]
LV2-使用Turtle描述API/ABI功能和属性的libre插件格式[55]。
RDF的一些用途包括研究社交网络。它还将帮助商业领域的人们更好地了解他们与可能对植入产品有用的行业成员的关系。[56]它还将帮助科学家了解人们是如何相互联系的。
RDF正被用来更好地理解道路交通模式。这是因为有关流量模式的信息位于不同的网站上,而RDF用于集成Web上不同来源的信息。以前,常用的方法是使用关键字搜索,但这种方法有问题,因为它没有考虑同义词。这就是为什么本体在这种情况下很有用。但是,在试图有效地研究交通时出现的一个问题是,要完全理解交通,必须很好地理解与人、街道和道路相关的概念。由于这些是人类的概念,它们需要添加模糊逻辑。这是因为在描述道路时有用的值(如滑度)不是精确的概念,无法测量。这意味着最好的解决方案将结合模糊逻辑和本体。[57][font=宋体]。
.