RDF数据模型
RDF(Resource Description Framework)资源描述框架的基础架构是一个资源(subject)-属性(predicate)-属性值(objecct)这样的一个三元组(triple),这样一个三元组又叫做一个声明(statement),其中属性值也可以是一个资源,要么是资源,要么是文字(literal),且文字只能是原子值,如:数字,日期等;属性描述了资源和属性值之间的关系。
也可以用图来书写一个声明:一条有向边从声明的subject指向object,边上是predicate,一个声明的object可以是另一个声明的subject,如下图所示:
有时,我们需要指向一个特定的声明,RDF提供的两种方式。
一是具体化(reification),其关键思想是引入一个额外的对象,与原来的声明关联,如对上述Location声明进行具体化,现在描述上述Location声明是由一个叫Frank的人创建的:
因为RDF中只存在三元组,所以我们不能直接为一个声明添加一个标识符,这样会变成一个四元组。由于这种具体化的昂贵代价,所以提出了第二种方式:命名图,其关键思想是:一个显式的标识符被赋予一个声明或一个声明集合,然后这个标识符就可以在普通的三元组中引用。简而言之,就是一个命名图允许圈出一个声明或声明的集合,并为它们提供一个新的标识符。
RDF语法
1.Turtle
Turtle(Terse RDF Triple Language),文件名后缀为.ttl,用Turtle写一个上述的Location声明:
<http://www.semanticwebprimer.org/ontology/apartments.ttl#BaronWayBuilding>
<http://dbpedia.org/ontology/location>
<http://dbpedia.org/resource/Amsterdam>.
注意格式:URL由尖括号包含,一个声明的主语,谓语,宾语一次出现,注意最后由句号结尾(一个声明结束就有一个句号)
在RDF中引入文字(即原子值),只需简单的将值写在引号中,并在后面采用XMLSchema形式声明数据类型,中间采用^^连接,如果文字右面没有指定类型,默认为字符型,如:
"1"^^<http://www.w3.org/2001/XMLSchema#integer>
"1982-03-24"^^<http://www.w3.org/2001/XMLSchema#date>
"BaronWay Building"
实例:向第一副图中添加Baron Way Apartment有3个房间
<http://www.sema