XML RDF
-
定义和使用
RDF 代表资源描述框架RDF 是用于描述Web资源的框架RDF 旨在供计算机阅读和理解RDF 并非旨在向人们展示RDF 用 XML 编写RDF 是2004年2月10日以来的W3C建议。RDF 文档以 XML 编写; RDF 使用的 XML 语言称为 RDF/XML。通过使用XML,可以使用不同类型的操作系统和应用程序语言在不同类型的计算机之间轻松交换RDF信息。RDF 使用 Web 标识符(URI)标识事物,并使用属性和属性值描述资源。资源,属性和属性值的解释:- 资源是可以具有URI的任何内容,例如 "http://www.w3schools.com/rdf"
- 属性是具有名称的资源,例如 "author" 或 "homepage"
- 属性值是属性的值,例如 "Jan Egil Refsnes" 或 "http://www.w3schools.com”(请注意,属性值可以是其他资源)
以下RDF文档可以描述资源 "http://www.w3schools.com/rdf":<?xml version="1.0"?> <RDF> <Description about="http://www.w3schools.com/rdf"> <author>Jan Egil Refsnes</author> <homepage>http://www.w3schools.com</homepage> </Description> </RDF>
上面的示例已简化。 命名空间被省略。
-
RDF 声明
资源,属性和属性值的组合形成一个语句(称为语句的主题,谓词和宾语)。让我们看一些示例语句以获得更好的理解:声明:"http://www.w3schools.com/rdf 的作者是 Jan Egil Refsnes"。以上声明的主题是:http://www.w3schools.com/rdf谓词为:作者对象是:Jan Egil Refsnes声明:"http://www.w3schools.com/rdf的主页是http://www.w3schools.com"。以上声明的主题是:http://www.w3schools.com/rdf谓词是:首页该对象是:http://www.w3schools.com这是CD列表中的两条记录:标题 作家 国家 公司 价格 年份 Empire Burlesque Bob Dylan USA Columbia 10.90 1985 Hide your heart Bonnie Tyler UK CBS Records 9.90 1988 <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque"> <cd:artist>Bob Dylan</cd:artist> <cd:country>USA</cd:country> <cd:company>Columbia</cd:company> <cd:price>10.90</cd:price> <cd:year>1985</cd:year> </rdf:Description> <rdf:Description rdf:about="http://www.recshop.fake/cd/Hide your heart"> <cd:artist>Bonnie Tyler</cd:artist> <cd:country>UK</cd:country> <cd:company>CBS Records</cd:company> <cd:price>9.90</cd:price> <cd:year>1988</cd:year> </rdf:Description> . . . </rdf:RDF>
RDF 文档的第一行是 XML 声明。 XML 声明后跟 RDF 文档的根元素:<rdf:RDF>。xmlns:rdf 命名空间指定具有rdf前缀的元素来自命名空间 "http://www.w3.org/1999/02/22-rdf-syntax-ns#"。xmlns:cd 命名空间指定具有cd前缀的元素来自命名空间 "http://www.recshop.fake/cd#"。<rdf:Description> 元素包含对由 rdf:about 属性标识的资源的描述。<cd:artist>,<cd:country>,<cd:company>等元素是资源的属性。 -
RDF 元素
RDF 的主要元素是根元素 <RDF> 和 <Description>元素,它们标识资源。<rdf:RDF> 是RDF文档的根元素。 它将XML文档定义为RDF文档。 它还包含对RDF名称空间的引用:<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> ...说明在这里... </rdf:RDF>
<rdf:Description> 元素使用about属性标识资源。<rdf:Description> 元素包含描述资源的元素:<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque"> <cd:artist>Bob Dylan</cd:artist> <cd:country>USA</cd:country> <cd:company>Columbia</cd:company> <cd:price>10.90</cd:price> <cd:year>1985</cd:year> </rdf:Description> </rdf:RDF>
元素,艺术家,国家,公司,价格和年份在 http://www.recshop.fake/cd# 名称空间中定义。 该名称空间在RDF之外(而不是RDF的一部分)。 RDF仅定义框架。 元素,艺术家,国家,公司,价格和年份必须由其他人(公司,组织,个人等)定义。属性元素也可以定义为属性(而不是元素):<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque" cd:artist="Bob Dylan" cd:country="USA" cd:company="Columbia" cd:price="10.90" cd:year="1985" /> </rdf:RDF>
属性元素也可以定义为资源:<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Empire Burlesque"> <cd:artist rdf:resource="http://www.recshop.fake/cd/dylan" /> ... ... </rdf:Description> </rdf:RDF>
在上面的示例中,属性艺术家没有值,但是对包含有关艺术家的信息的资源的引用。
RDF 容器用于描述事物组。以下RDF元素用于描述组:<Bag>,<Seq>和<Alt>。<rdf:Bag> 元素用于描述不必按特定顺序排列的值列表。<rdf:Bag> 元素可能包含重复值。<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Beatles"> <cd:artist> <rdf:Bag> <rdf:li>John</rdf:li> <rdf:li>Paul</rdf:li> <rdf:li>George</rdf:li> <rdf:li>Ringo</rdf:li> </rdf:Bag> </cd:artist> </rdf:Description> </rdf:RDF>
<rdf:Seq> 元素用于描述值的有序列表(例如,按字母顺序)。<rdf:Seq> 元素可能包含重复值。<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Beatles"> <cd:artist> <rdf:Seq> <rdf:li>George</rdf:li> <rdf:li>John</rdf:li> <rdf:li>Paul</rdf:li> <rdf:li>Ringo</rdf:li> </rdf:Seq> </cd:artist> </rdf:Description> </rdf:RDF>
<rdf:Alt> 元素用于描述替代值的列表(用户只能选择一个值)。<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.recshop.fake/cd#"> <rdf:Description rdf:about="http://www.recshop.fake/cd/Beatles"> <cd:format> <rdf:Alt> <rdf:li>CD</rdf:li> <rdf:li>Record</rdf:li> <rdf:li>Tape</rdf:li> </rdf:Alt> </cd:format> </rdf:Description> </rdf:RDF>
在上面的示例中,我们在描述容器元素时讨论了 "值列表"。 在RDF中,这些 "值列表" 称为成员。因此,我们有以下内容:- 容器是包含事物的资源
- 包含的东西称为成员(不是值列表)
RDF集合描述只能包含指定成员的组。集合由属性 rdf:parseType="Collection" 描述。<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://recshop.fake/cd#"> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles"> <cd:artist rdf:parseType="Collection"> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/George"/> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/John"/> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Paul"/> <rdf:Description rdf:about="http://recshop.fake/cd/Beatles/Ringo"/> </cd:artist> </rdf:Description> </rdf:RDF>
-
RDF架构(RDFS)
RDF 架构(RDFS)是 RDF 的扩展。RDF 用类,属性和值描述资源。另外,RDF 还需要一种方法来定义特定于应用程序的类和属性。 必须使用 RDF 的扩展定义特定于应用程序的类和属性。一种此类扩展是 RDF Schema。RDF Schema 不提供实际的特定于应用程序的类和属性。相反,RDF Schema 提供了描述特定于应用程序的类和属性的框架。RDF Schema 中的类非常类似于面向对象的编程语言中的类。 这允许将资源定义为类的实例以及类的子类。下面的示例演示了一些RDFS功能:<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://www.animals.fake/animals#"> <rdf:Description rdf:ID="animal"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> </rdf:Description> <rdf:Description rdf:ID="horse"> <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/> <rdfs:subClassOf rdf:resource="#animal"/> </rdf:Description> </rdf:RDF>
在上面的示例中,资源 "horse(马)" 是类 "animal(动物)" 的子类。由于 RDFS 类是 RDF 资源,因此我们可以使用 rdfs:Class 而不是 rdf:Description 来简化上述示例,并删除 rdf:type 信息:<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://www.animals.fake/animals#"> <rdfs:Class rdf:ID="animal" /> <rdfs:Class rdf:ID="horse"> <rdfs:subClassOf rdf:resource="#animal"/> </rdfs:Class> </rdf:RDF>
下面的示例演示了RDF文档中某些Dublin Core属性的用法:<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc= "http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="http://www.w3schools.com"> <dc:description>W3Schools - Free tutorials</dc:description> <dc:publisher>Refsnes Data as</dc:publisher> <dc:date>2008-09-01</dc:date> <dc:type>Web Development</dc:type> <dc:format>text/html</dc:format> <dc:language>en</dc:language> </rdf:Description> </rdf:RDF>
-
RDFS/RDF 类
元素 类 子类 rdfs:Class All classes rdfs:Datatype Data types Class rdfs:Resource All resources Class rdfs:Container Containers Resource rdfs:Literal Literal values (text and numbers) Resource rdf:List Lists Resource rdf:Property Properties Resource rdf:Statement Statements Resource rdf:Alt Containers of alternatives Container rdf:Bag Unordered containers Container rdf:Seq Ordered containers Container rdfs:ContainerMembershipProperty Container membership properties Property rdf:XMLLiteral XML literal values Literal -
RDFS/RDF 属性
元素 域名 范围 描述 Element Domain Range Description rdfs:domain Property Class 资源的领域 rdfs:range Property Class 资源范围 rdfs:subPropertyOf Property Property 该属性是属性的子属性 rdfs:subClassOf Class Class 资源是类的子类 rdfs:comment Resource Literal 人类可读的资源描述 rdfs:label Resource Literal 资源的人类可读标签(名称) rdfs:isDefinedBy Resource Resource 资源的定义 rdfs:seeAlso Resource Resource 有关资源的其他信息 rdfs:member Resource Resource 资源成员 rdf:first List Resource rdf:rest List List rdf:subject Statement Resource RDF声明中资源的主题 rdf:predicate Statement Resource RDF语句中资源的谓词 rdf:object Statement Resource RDF语句中资源的对象 rdf:value Resource Resource 用于值的属性 rdf:type Resource Class 资源是类的实例