什么是RDF三联?

问题描述 投票:59回答:14

用外行人的话说,什么是RDF三联?

data-structures rdf xml-namespaces n-triples
14个回答
60
投票

我认为这个问题需要分为两个部分 - 什么是三元组,什么使“RDF三元组”如此特别?

首先,正如这里的大多数其他评论者已经指出的那样,三元组是“主语/谓语/宾语”形式的语句 - 即将一个对象(主语)链接到另一个对象(对象)或文字的语句,通过谓词。我们都熟悉三元组:三元组是二元关系的最小不可约表示。用简单的英语:电子表格是三元组的集合,例如,如果电子表格中的列标题为“Paul”,而行的标题为“has Sister”,则单元格中的值为“Lisa”。在这里你有三个:保罗(主题)有姐妹(谓语)丽莎(文字/对象)。

使RDF三元组特殊的原因是三元组的每个部分都有一个与之关联的URI,因此日常声明“Mike Smith知道John Doe”可能在RDF中表示为:

uri://people#MikeSmith12 http://xmlns.com/foaf/0.1/knows uri://people#JohnDoe45

电子表格的类比是,通过给URI的每个部分一个唯一的地址,你给电子表格中的单元格提供了整个地址空间....所以你原则上可以坚持每个单元格(如果以RDF三元组表示)电子表格放在不同服务器上的不同文档中,并通过单个查询重新构建电子表格。

编辑:This section的官方文档解决了原始问题。


2
投票

人们可以将三元组视为一种说明资源的单一“事实”的句子。首先要了解RDF Triple你应该知道RDF中的每一件事都是用URI http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-referenceor空白节点http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node来定义的。

RDF Triple由三个部分组成: - 1)主题2)谓词3)对象例如: - Pranay hasCar Ferrari Here Subject是Pranay,hasCar是谓词,法拉利是对象。每个都使用RDF-URI定义。欲了解更多信息,您可以访问: - http://www.w3.org/TR/owl-ref/


1
投票

Triple以举例说明

有一个与用户和问题相关的表格。

TABLE dc:creator
-------------------------
| Question |   User     |
-------------------------
|    45    |   485527   |
|    44    |   485527   |
|    40    |   485528   |

从概念上讲,这可以用三个RDF triples来表达,比如...

<question:45> <dc:creator> <user:485527>
<question:44> <dc:creator> <user:485527>
<question:40> <dc:creator> <user:485528>

...以便每行转换为一个triple,将用户与问题联系起来。每个三元组的一般形式可以描述为:

<Subject> <Predicate> <Object>

关于RDF的一个特点是,你可以(或必须)使用URIs / IRIs来识别entities以及relations。查找更多here。这使得每个人都可以使用reuse already existing关系(谓词)并发布关于任意实体in the www的陈述。

将SO答案与其创建者相关的示例:

<https://stackoverflow.com/a/49066324/1485527>   
<http://purl.org/dc/terms/creator> 
<https://stackoverflow.com/users/1485527>

1
投票

作为一名开发人员,我已经挣扎了一段时间,直到我终于明白了RDF及其类似的内容,主要是因为我总是通过代码而不是通过数据来看世界。

鉴于这是在StackOverflow上发布的,这里是Java类比最终使它为我点击:RDF三元组用于数据类的方法/参数是什么代码。

所以:

  • 包名称的类是Subject
  • 这个类的方法是Predicate
  • 方法上的参数是Object,它们本身由类表示
  • 上下文是import语句,以避免编写类的完整规范名称

这个类比分解的唯一一点是Predicates也有名称空间,而方法则没有。但是,当使用谓词时,在类实例之间创建的主体和对象之间的整体关系反映了调用方法来执行某些操作的想法。

基本上,RDF用于数据OO的编码。


1
投票

一个简单的答案可能是RDF三元组是使用RDF数据模型的一些知识的表示。该模型基于以主题 - 谓词 - 对象表达式的形式对资源(特别是Web资源URI)进行声明的想法。 RDF也是Web上数据交换的标准模型。 RDF具有促进数据合并的功能,即使底层模式不同,它也特别支持模式随时间的演变,而不需要更改所有数据使用者。我推荐这篇文章知道如何:https://www.w3.org/DesignIssues/RDF-XML.html


0
投票

见:http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-triple

RDF三元组包含三个组件:

  • 主题,它是RDF URI引用或空白节点
  • 谓词,它是RDF URI引用
  • 对象,它是RDF URI引用,文字或空白节点

其中文字本质上是带有可选语言标签的字符串,空白节点也是字符串。 URI,文字和空白节点必须来自成对的不相交集。


35
投票

RDF Triple是将一个对象与另一个对象相关联的语句。例如:

"gcc" "Compiles" "c" .
"gcc" "compiles" "Java" . 
"gcc" "compiles" "fortran" .
"gcc" "has a website at" <http://gcc.gnu.org/> .
"gcc" "has a mailing list at" <mailto:[email protected]> .
"c" "is a" "programming language" .
"c" "is documented in" <http://www.amazon.com/Programming-Language-Prentice-Hall-Software/dp/0131103628/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1226085111&sr=8-1> .

13
投票

RDF文件应解析为三元组列表。

三元组由主语,谓词和对象组成。但这些实际意味着什么呢?

主题是主题。它标识了三元组描述的对象。

谓词定义了我们赋予值的对象中的数据。

对象是实际值。

来自:http://www.robertprice.co.uk/robblog/archive/2004/10/What_Is_An_RDF_Triple_.shtml


11
投票

关于亚当N的回答。我相信O.P. asked a previous question regarding data for a social network,所以尽管答案很好,但我将澄清与“原始原始”问题有关的问题。 (因为我觉得有责任)。

    John | Is a Friend of | James
    James | Is a friend of | Jill
    Jill | Likes | Snowboarding
    Snowboarding | Is a | Sport

使用这样的三元组,您可以拥有非常灵活的数据结构。

看看Friend of a friend (FOAF)可能是一个更好的例子。


6
投票

RDF是一种语言,即用于编码和解码信息(某些上下文中的数据)的符号,语法和语义系统。

在RDF中,观察单位(数据)由一个由三部分组成的句子表示:主语,谓语,宾语。基本上,这是自然语言演讲的基本结构。

用于表示参与由RDF表示的实体关系的实体(事物)的符号是IRI(其包括HTTP URI)。 RDF句子的每个主语和谓词(以及可选地,对象)组件由IRI表示。

语法(语法)是主题,谓词和对象排列顺序的抽象(意味着它可以使用各种符号表示)。

语义(最常被忽略的部分)是关于RDF语句中主语,谓词和对象角色的含义。

当您使用HTTP URI来表示RDF语句主题,谓词和(可选)对象时,您最终会得到构成Web的结构化数据(实体关系类型的集合) - 就像您今天在万维网上一样。

当RDF语句中的谓词(特别是)的语义是机器和人类可理解时,您有一个实体关系类型的Web,它提供强大的信息编码,这是知识的基础(推理和推理)。

以下是简单RDF语句的示例:

{
    <#this>             a  schema:WebPage                          .
    <#this>  schema:about  dbpedia:Resource_Description_Framework  .
    <#this>  skos:related  <https://stackoverflow.com/questions/30742747/convert-a-statement-with-adjective-in-rdf-triple/30836089#30836089>   . 
}

我已经使用大括号来包含示例,以便这篇文章变成基于RDF的实时链接数据演示,由相对HTTP URI和基于#的片段标识符(索引)提供。

本文中嵌入的RDF语句的结果,由纳米化提供(在文本被接受的任何地方嵌入RDF语句):

  1. Basic Entity Description Page - 每个语句都由一个解析为其描述的超链接标识(主题,谓词,对象部分)
  2. Deeper Faceted Browsing Page - 通过构成数据网或链接数据网络的超链接,通过跟随你的方式进行深入探索和发现的替代视图。
  3. Description of an embedded statement - 关于特定的RDF声明。

这是从这篇文章中嵌入的三元组生成的可视化(使用我们的Structured Data Sniffer Browser Extension,使用RDF-Turtle表示法:enter image description here


5
投票

请注意,它可能会变得更复杂。 RDF三元组也可以被认为是主题或对象,所以你可以有类似的东西:巴特 - >说 - >(三元组 - >可以是 - >对象)


4
投票

即使他被投票支持,我也不得不同意A Pa的一部分。

背景:我是一名语言学家,拥有该专业的博士学位,我从事计算语言学工作。

声明“......一个由三部分组成的句子:主语,谓词,宾语。基本上,这是自然语言语言的基本结构”(其中A Pa引用来自Kingsley Uyi Idehen的答案)是完全错误的。这不仅仅是金斯利这样说的,我从RDF三元组的许多倡导者那里听到过它。

出于多种原因这是错误的,例如:谓词(英语,可以说,以及许多其他自然语言)由动词(或类似动词的东西)+对象(以及可能的其他补语)组成。绝对不是英语的句法结构是Subj-Pred-Obj的情况。

此外,并非所有英语自然语言句子都有对象;不及物动词,特别是根据定义不带对象。天气动词(以及其他内容)甚至不会采用“真正的”主题(“它下雨”的“它”没有虔诚)。而另一方面,像“给”这样的双及物动词同时具有直接和间接的对象。然后有像“put”这样的动词除了直接对象之外还带有一个locative,或者“tell”带有一个对象和一个子句。更不用说辅助,如时间和方式状语。

是的,当然你可以将嵌入式条款表示为嵌入式三元组(在某种程度上你可以将任何语句表示为三元组,我希望你已经明确表示,你不能),但我认为你不能在RDF中做(至少我从来没有看到它完成,似乎需要四倍)是同时拥有一个对象和一个嵌入子句。同样是直接和间接对象,或辅助对象。

因此无论RDF三元组的动机如何,我都希望倡导者不要假装有语言动机,或者三元组以任何方式类似于自然语言语法。因为他们没有。


3
投票

自从我与RDF合作以来已经有一段时间了,但在这里:D

三元组是主语,谓语和宾语。

主题是唯一标识某事物的URI。例如,您的openid可以唯一标识您。

该对象定义主题和对象的关联方式。

谓词是主题的一些属性。例如一个名字。

鉴于此,三元组形成图S-> P.给定更多三元组,图表增长。例如,您可以将同一个人标识为一堆三元组的主题,然后您可以通过该唯一主题连接所有谓词。


2
投票

RDF Triple是一个实际表达式,它定义了一种表示对象之间关系的方式。三元组有三个部分:Subject,Predicate和Object(通常以相同的顺序编写)。谓词将客体与客体联系起来。

主题----谓词--->对象

更多有用的信息可在以下网址找到:

http://www.w3.org/TR/rdf-concepts/

© www.soinside.com 2019 - 2024. All rights reserved.