资源描述框架的用途及实际应用解析
什么是RDF?
RDF代表 资源描述框架
RDF是用于描述网络资源的框架
RDF旨在被计算机阅读和理解
RDF并非设计用于供人阅读
RDF以 XML 编写
示例
- 描述购物商品的属性,如价格和可用性
- 描述网络活动的时间表
- 描述网页的信息(内容,作者,创建和修改日期)
- 描述网络图片的内容和评级
- 为搜索引擎描述内容
- 描述电子图书馆
RDF旨在提供一种通用的描述信息的方式,以便计算机应用程序可以阅读和理解。RDF描述并不是设计用于在网络上显示。RDF文档以XML编写。 RDF使用的XML语言称为RDF/XML。通过使用XML,可以轻松地在使用不同类型的操作系统和应用程序语言的不同类型的计算机之间交换RDF信息。
RDF与“语义网络”
- 网络信息具有确切的含义
- 网络信息可以被计算机理解和处理
- 计算机可以集成来自网络的信息
RDF使用Web标识符(URI)来标识资源。 RDF使用属性和属性值描述资源。RDF资源,属性和属性值RDF使用Web标识符(URI)标识事物,并使用属性和属性值描述资源。
RDF语句
资源,属性和属性值的组合形成语句(称为语句的主题,谓词和宾语)
RDF示例
以下是来自CD列表的两个记录:
| 标题 | 艺术家 | 国家 | 公司 | 价格 | 年份 |
|---|---|---|---|---|---|
| 帝国脱衣舞 | Bob Dylan | 美国 | 哥伦比亚 | 10.90 | 1985 |
| 隐藏你的心 | Bonnie Tyler | 英国 | CBS Records | 9.90 | 1988 |
以下是RDF文档中的几行:
<?xml version="1.0"?>
<rdf:RDF
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:cd命名空间指定了带有cd前缀的元素来自命名空间“http://www.recshop.fake/cd#”。rdf:Description元素包含了由rdf:about属性标识的资源的描述。元素:cd:artist,cd:country,cd:company等是资源的属性RDF文档,检查您的语法,并生成您的RDF文档的表格和图形视图。
RDF元素
RDF的主要元素是根元素 <RDF> 和 <Description> 元素,它标识了一个资源。
<rdf:RDF> 元素
<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> 元素
<rdf:Description> 元素使用 about 属性标识一个资源。
<?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>
元素 artist,country,company,price 和 year 在 http://www.recshop.fake/cd# 命名空间中定义。 此命名空间位于RDF之外(不是RDF的一部分)。 元素 artist,country,company,price 和 year 必须由其他人(公司,组织,个人等)定义。
属性作为属性
属性元素也可以定义为属性(而不是元素):
<?xml version="1.0"?>
<rdf:RDF
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>
在上面的示例中,属性 artist 没有值,但是有一个对包含有关艺术家信息的资源的引用。
RDF 容器
RDF容器用于描述一组事物。以下RDF元素用于描述组:<Bag>、<Seq>和<Alt>。
<rdf:Bag> 元素
<rdf:Bag> 元素用于描述一个值列表,这些值不必按特定顺序排列。
<rdf:Bag> 元素可以包含重复值。
示例
<?xml version="1.0"?><rdf:RDF
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> 元素用于描述一个有序的值列表(例如,按字母顺序)。
<rdf:Seq> 元素可以包含重复值
示例
<?xml version="1.0"?><rdf:RDF
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> 元素
<rdf:Alt>元素用于描述备选值列表(用户只能选择其中一个值)。
示例
<?xml version="1.0"?><rdf:RDF
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集合
RDF 集合描述只能包含指定成员的组。
rdf:parseType="Collection" 属性
容器说明包含的资源是成员,但并未规定其他成员不允许存在。
RDF 集合用于描述只能包含指定成员的组。
通过属性 rdf:parseType="Collection" 描述集合。
示例
<?xml version="1.0"?><rdf:RDF
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 模式和应用类
RDF 模式(RDFS)是对 RDF 的扩展。RDF 用类、属性和值描述资源。此外,RDF 还需要一种方法来定义特定于应用程序的类和属性。必须使用 RDF 的扩展来定义特定于应用程序的类和属性。
RDF 模式(RDFS)
RDF 模式不提供实际的特定于应用程序的类和属性。相反,RDF 模式提供了描述特定于应用程序的类和属性的框架。RDF 模式中的类与面向对象编程语言中的类非常相似。这允许资源被定义为类的实例,并且类的子类。
RDFS 示例
以下示例演示了一些 RDFS 功能:
<?xml version="1.0"?><rdf:RDF
xml:base="http://www.animals.fake/animals#"><rdf:Description rdf:ID="animal">
</rdf:Description><rdf:Description rdf:ID="horse"><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
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>
达布林核心
达布林核心元数据倡议(DCMI)已经创建了一些预定义属性来描述文档。RDF 是元数据(关于数据的数据)。RDF 用于描述信息资源。达布林核心是一组用于描述文档的预定义属性。第一个达布林核心属性是在 1995 年在俄亥俄州达布林的元数据研讨会上定义的,目前由达布林核心元数据倡议维护。
| 属性 | 定义 |
|---|---|
| Contributor | 对资源内容做出贡献的实体 |
| Coverage | 资源内容的范围或覆盖范围 |
| Creator | 对资源内容负主要责任的实体 |
| Format | 资源的物理或数字表示 |
| Date | 资源生命周期中的事件日期 |
| Description | 资源内容的说明 |
| Identifier | 在给定上下文中对资源的明确引用 |
| Language | 资源的知识内容语言 |
| Publisher | 使资源可用的实体 |
| Relation | 到相关资源的引用 |
| Rights | 资源所拥有的和持有的权利信息 |
| Source | 当前资源的来源参考 |
| Subject | 资源内容的主题 |
| Title | 资源的名称 |
| Type | 资源内容的性质或类型 |
快速查看上面的表格表明,RDF 非常适合表示达布林核心信息。
RDF 示例
以下示例演示了 RDF 文档中一些达布林核心属性的使用:
<?xml version="1.0"?><rdf:RDF><rdf:Description rdf:about="http://example.org/resource"><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 | 所有类 | |
| rdfs:Datatype | 数据类型 | 类 |
| rdfs:Resource | 所有资源 | 类 |
| rdfs:Container | 容器 | 资源 |
| rdfs:Literal | 文字和数字的文字值 | 资源 |
| rdf:List | 列表 | 资源 |
| rdf:Property | 属性 | 资源 |
| rdf:Statement | 声明 | 资源 |
| rdf:Alt | 备选项容器 | 容器 |
| rdf:Bag | 无序容器 | 容器 |
| rdf:Seq | 有序容器 | 容器 |
| rdfs:ContainerMembershipProperty | 容器成员属性 | 属性 |
| rdf:XMLLiteral | XML 文字值 | 文字 |
RDFS / RDF 属性
| 元素 | 域 | 范围 | 描述 |
|---|---|---|---|
| rdfs:domain | 属性 | 类 | 资源的域 |
| rdfs:range | 属性 | 类 | 资源的范围 |
| rdfs:subPropertyOf | 属性 | 属性 | 属性的子属性 |
| rdfs:subClassOf | 类 | 类 | 资源是类的子类 |
| rdfs:comment | 资源 | 文字 | 资源的人类可读描述 |
| rdfs:label | 资源 | 文字 | 资源的人类可读标签(名称) |
| rdfs:isDefinedBy | 资源 | 资源 | 资源的定义 |
| rdfs:seeAlso | 资源 | 资源 | 关于资源的额外信息 |
| rdfs:member | 资源 | 资源 | 资源的成员 |
| rdf:first | 列表 | 资源 | |
| rdf:rest | 列表 | 列表 | |
| rdf:subject | 声明 | 资源 | 资源在 RDF 声明中的主题 |
| rdf:predicate | 声明 | 资源 | 资源在 RDF 声明中的谓词 |
| rdf:object | 声明 | 资源 | 资源在 RDF 声明中的对象 |
| rdf:value | 资源 | 资源 | 用于值的属性 |
| rdf:type | 资源 | 类 | 资源是类的实例 |
RDF 属性
| 属性 | 描述 |
|---|---|
| rdf:about | 定义正在描述的资源 |
| rdf:Description | 资源描述的容器 |
| rdf:resource | 定义要 |
识别属性的资源
| rdf:datatype | 定义元素的数据类型 |
| rdf:ID | 定义元素的 ID |
| rdf:li | 定义一个列表 |
| rdf:_n | 定义一个节点 |
| rdf:nodeID | 定义元素节点的 ID |
| rdf:parseType | 定义应如何解析元素 |
| rdf:RDF | RDF 文档的根 |
| xml:base | 定义 XML 基础 |
| xml:lang | 定义元素内容的语言 |
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
相关文章:
资源描述框架的用途及实际应用解析
什么是RDF? RDF代表 资源描述框架 RDF是用于描述网络资源的框架 RDF旨在被计算机阅读和理解 RDF并非设计用于供人阅读 RDF以 XML 编写 示例 描述购物商品的属性,如价格和可用性描述网络活动的时间表描述网页的信息(内容,作者&a…...
工业级物联网边缘网关解决方案-天拓四方
随着工业4.0时代的到来,越来越多的企业开始寻求智能化升级,以提高生产效率、降低运营成本并增强市场竞争力。然而,在实际的转型升级过程中,许多企业面临着数据孤岛、设备兼容性差、网络安全风险高等问题,这些问题严重制…...
认识微服务,认识Spring Cloud
1. 介绍 本博客探讨的内容如下所示 什么是微服务?什么是springcloud?微服务和springcloud有什么关系? 首先,没有在接触springcloud之前,我写的项目都是单体结构, 但随着网站的用户量越来越大,…...
电脑设置密码怎么设置?让你的电脑更安全!
在如今信息化的社会中,保护个人电脑的安全至关重要。设置密码是最基本的电脑安全措施之一,它可以有效防止未经授权的访问和保护个人隐私,可是电脑设置密码怎么设置?本文将介绍三种设置电脑密码的方法,帮助您加强电脑的…...
搜维尔科技:SenseGlove Nova2使用主动接触反馈来模拟手掌的感觉,结合力反馈和振动触觉反馈,使其成为市场上第一款具有手掌反馈的无线触觉手套
SenseGlove Nova2使用主动接触反馈来模拟手掌的感觉,结合力反馈和振动触觉反馈,使其成为市场上第一款具有手掌反馈的无线触觉手套。 搜维尔科技:SenseGlove Nova2使用主动接触反馈来模拟手掌的感觉,结合力反馈和振动触觉反馈&…...
基于Python的实验室管理系统的设计与实现(论文+源码)_kaic
摘 要 随着实验室设备越来越多,实验室及其设备管理工作变得越来越繁重,还存在些管理模式仍旧处于手工管理模式和一些抢占实验室的不文明现象,传统的手工模式已经满足不了日益增长的管理需求,而本系统摒弃传统模式,开启…...
Windows系统WDS+MDT网络启动自动化安装
Windows系统WDS+MDT网络启动自动化安装 适用于在Windows系统上WDS+MDT网络启动自动化安装 1. 安装准备 1.下载windows server 2019、windows 10 pro的ISO文件,并安装好windows server 2019 2.下载windows 10 2004版ADK及镜像包 1.1 安装平台 Windows 111.2. 软件信息 软件…...
Apple开发者证书创建完整过程
1.创建CSR文件: 打开钥匙串访问程序 选择从证书颁发机构请求 创建证书 保存CSR文件到桌面 成功如下: 开始创建证书: 选择...
for深入学习
目录 练习: 例1: 求解0-100中整除3的数有哪些 例2: 求0-100中含数字9个个数 作业: 练习: 例1: 求解0-100中整除3的数有哪些 代码: #include<stdio.h> int main() {printf("整…...
引用(C++)和内联函数
前言:本文主要讲解C语法中引用如何使用和使用时的一些技巧 基本语法 引用就是取别名 #include <iostream> using namespace std; int main() {int a 10;int& b a;//给a取别名为bcout << a << endl;cout << b << endl;return 0…...
【stm32/CubeMX、HAL库】swjtu嵌入式实验七 ADC 实验
相关电路与IO引脚 注意:串口打印重定向后使用printf打印需要在keil里勾选 Use MicroLIB ,否则会卡住。 参看:https://zhuanlan.zhihu.com/p/565613666 串口重定向: /* USER CODE BEGIN Includes */#include <stdio.h>//…...
springboot 解耦、隔离、异步的原则以及实战
在Spring Boot中实现解耦、隔离和异步的原则,能够提升应用程序的可维护性、可扩展性和性能。下面我会先介绍这三个原则的基本概念和意义,然后通过实战示例展示如何在Spring Boot应用中应用这些原则。 解耦 解耦是减少或消除应用程序组件之间依赖关系的过程,以提高模块的独…...
设计模式详解(八):外观模式——Facade
目录导航 什么是外观模式现实生活类比实战示例门面模式的好处门面模式源码举例 什么是外观模式 外观模式的英文名是Facade,意思是the front of a building,即建筑物的正面(门面),我个人更喜欢翻译成门面模式。门面模式…...
R语言绘图 | 双Y轴截断图
教程原文:双Y轴截断图绘制教程 本期教程 本期教程,我们提供的原文的译文,若有需求请回复关键词:20240529 小杜的生信笔记,自2021年11月开始做的知识分享,主要内容是R语言绘图教程、转录组上游分析、转录组…...
使用PNP管控制MCU是否需要复位
这两台用到一款芯片带电池,希望电池还有电芯片在工作的时候插入电源不要给芯片复位,当电池没电,芯片不在工作的时候,插入电源给芯片复位所以使用一个PNP三极管,通过芯片IO控制是否打开复位,当芯片正常工作的…...
二重,三重积分和曲面,曲线积分的关系和区别
这是我在学习完曲面曲线积分概念后容易和二重三重积分混淆而大概总结和区分了一下,如果有错误请大佬指出,多谢!!!...
处理STM32 DMA方式下的HAL_UART_ERROR_ORE错误
1. 检查并调整DMA和UART配置 确保初始化顺序:需要确保USART的CR寄存器UE位开关留到最后打开,即完成USART和DMA的所有配置初始化后再使能USART。这样可以避免初始化顺序不当导致的通信问题。配置合适的DMA缓冲区:确保DMA缓冲区足够大…...
初学者如何对大模型进行微调?
粗略地说,大模型训练有四个主要阶段:预训练、有监督微调、奖励建模、强化学习。 预训练消耗的时间占据了整个训练pipeline的99%,其他三个阶段是微调阶段,更多地遵循少量 GPU 和数小时或数天的路线。预训练对于算力和数据的要求非…...
【Qt知识】disconnect
在Qt框架中,disconnect函数用于断开信号与槽之间的连接。当不再需要某个信号触发特定槽函数时,或者为了防止内存泄漏和重复执行问题,你可以使用disconnect来取消这种关联。disconnect函数的基本用法可以根据不同的需求采用多种形式࿰…...
String,StringBuffer,StringBuilder的区别?
String是不可变的,StringBuffer和StringBuilder是可变的。StringBuffer是线程安全的,StringBuilder是非线程安全的。 String的 是如何实现的 使用拼接字符串,其实只是Java提供的一个语法糖。 其实String的 底层是new 了一个StringBuilde…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
