NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

SPARQL Update 将完善 REST 式 SOA 方案

  • 2008-05-14
  • 本文字数:2087 字

    阅读完需:约 7 分钟

链接开放数据(Linking Open Data)合作计划已经完成了一个全球性的REST 式SOA 方案,人们可以通过它访问来自大约50 个分布式提供者(如 DBpedia Geonames MusicBrainz WordNet DBLP bibliography 2000 U.S. Census 等)的超过 20 亿个相互链接着的断言(RDF 三元组(RDF triples))。所有这些数据都是以 RDF (Resource Description Framework,资源描述框架)格式发布的。各数据集均具有具名图(named graph)的结构,你可以基于普通的 HTTP GET、通过 Cool URI 来访问它(参见之前的文章)。 关于如何参与贡献的具体说明可以参见《How to Publish Linked Data on the Web》这篇文章。因为数据集是在不同来源之间普遍互联着的,所有这一切造就了一个大(即便算不上巨大)的机器可读的(machine readable)Web。 如果提供者还实现了SPARQL 端点(endpoint)的话(可能是用像 D2R Server 这种基于 RDBMS 的工具),客户端就可以针对这些数据使用强大的 RDF 查询语言——SPARQL 。 人类可以利用像 Firefox 插件 Tabulator 这样的 RDF 浏览器来获得体会。关于 LinkedData 的最近一次演讲强调了更复杂的应用模式,比如特定领域的LinkedData mashups、移动地理空间入口点(mobile geospatial entry-points)、语义搜索引擎(semantic search engines)、数据融合(data fusion)、聚合与深化工具(aggregation and drill down tools)等——这些肯定不久就会出现。

然而,目前有一个重大限制:这个帅呆了的网络只能提供只读访问。即将到来的 SPARQL Update 语言将解决这一问题。SPARQL 查询语言自从 2004 年由 W3C RDF 数据访问工作组(Data Access Working Group)开始开发、直至今年一月成为 W3C 推荐标准(Recommendation )以来, 有几个问题就一直没有得到解决,比如聚集函数(aggregate functions)和更新语言(update language)等。Andy Seaborne(知名的 Jena 开发者)和 Geetha Manjunath(二位均来自惠普公司)最近发布了 RDF 图更新语言 SPARQL/Update (亦被称作“SPARUL”)的第五版,这可以推进这一问题。该语言拟提供以下功能:

* 往 RDF 图中插入新的三元组。
\* 从 RDF 图中删除三元组。
\* 以单个动作的粒度来执行一组更新操作。
\* 在图库中创建新的 RDF 图。
\* 从图库中删除 RDF 图。

这比较像链接数据(Linked Data)的 PUT、POST、DELETE 实现(implementation)。但什么是图库(Graph Store)呢?图库就是“在单个服务管理下的一个 RDF 图仓库(repository )”,其作用是作为发布 SPARQL 表达式的端点(endpoint)。要知道,每个图都是一个“应由 URI 本身表示的”RDF 数据集——那么为何不直接向那个“Cool URI”发送 HTTP POST/PUT/DELETE 呢?

惠普公司的 SPARQL Update 草案既没有提出、也没有回答这一问题,但 SPARQL Update Wiki 在其 Q&A 部分给出了一些提示:

SPARQL 是只读的,所以可将它映射为 URIs(因此采用 GET)而不会违反 Web 架构的太多原则。
REST 风格的 HTTP 操作应该可以在添加、更新、删除具名图(named graphs)的操作中起更重要的作用。
虽然 PUT 和 POST 通常比较有用,但 REST 和 Web 架构没有阻止使用其他方法——那也许更有助于实现“对大图进行原子更新”。
请尽量避免重蹈 Web 服务的覆辙;应用协议不是用于“被绑定的”,因为那会掩盖其大部分价值。

RDF 和 REST 的资源(resources)概念是可以不一样的。从 2006 年的《the trouble with “binding”》《REST without RDF is only half as bad as SOAP》,直到今年二月的《Bridging the semantic Web and Web 2.0 with REST》,一直在讨论这一问题,不过尚未得出任何定论。为什么这很重要?

链接开放数据(Linking Open Data )的REST 式Web 为REST 式SOA 树立了一个出色的真实世界模式——在仅提供只读访问时。设想一下,企业以同样的方式在内部容易地发布它们的数据;那么跨企业的机构也同样可以做到(假定安全需求同样得到满足的话)。至于链接开放数据(Linking Open Data)里的UPDATE,这很可能将用SPARQL Update 来实现。虽然这是一个语言,而不是一个应用协议,但它基于了对这样一个协议的假设,即标识图库(Graph Store)而不是图(Graph)。所以,“避免重蹈Web 服务的覆辙”也许是值得的。

查看英文原文: SPARQL Update to Complete RESTful SOA Scenario - - - - - -

译者简介:徐涵,中文 W3C 技术推广网站 W3China(w3china.org)创始人,开放翻译计划(transwiki.org)发起人,W3C 特邀专家。2005 年毕业于东南大学,获计算机硕士学位。2003 年创办中文 W3C 技术推广网站 W3China(w3china.org),2004 年发起开放翻译计划(transwiki.org)致力于 W3C 技术文档的翻译,2006 年翻译出版国内首本中文 SOA 专著《Understanding SOA with Web Services 中文版》(荣获 2006 年度 CSDN 读书频道 SOA 先锋奖,入选 China-pub 2006 年度好书榜),2008 年翻译出版 REST 专著《RESTful Web Services 中文版》。研究兴趣包括:Web Architecture、Semantic Web、Web Services、SOA、Social Network 等。联系方式: hanxu@w3china.org 。参与 InfoQ 中文站内容建设,请邮件至 editors@cn.infoq.com

2008-05-14 02:241208
用户头像

发布了 63 篇内容, 共 25.1 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容

手把手教你应用三种工厂模式在SpringIOC中创建对象实例【案例详解】

Java 程序员 后端

手把手讲解-一个复杂动效的自定义绘制3,最全153道Spring全家桶面试题

Java 程序员 后端

提升开发效率N倍的20+命令行神器,赶紧收藏了,mybatis原理图

Java 程序员 后端

数据库索引的原理,springcloud视频百度云

Java 程序员 后端

我在北京已经几年了,Java百度网盘

Java 程序员 后端

我是全网最硬核的Java中间件领域作者,CSDN最值得关注的博主,大家同意吗

Java 程序员 后端

我用思维导图整理好了Java并发基础知识,还学不会就没救了!

Java 程序员 后端

我见过最详细的Redis解析:不懂Redis为什么高性能?如何做高可用

Java 程序员 后端

推荐一款技术人必备的接口测试神器:Apifox,不愧是大佬

Java 程序员 后端

我上高中的弟弟都能看懂的Docker学习教程,你看看讲的怎么样

Java 程序员 后端

我出息了,给 JDK 上报了一个 BUG,mongodb入门到精通

Java 程序员 后端

技术干货:单体,SOA,微服务,分布式,集群架构详解,java开发面试简历

Java 程序员 后端

拿捏了!ConcurrentHashMap!,宝塔linux建站教程

Java 程序员 后端

成功入职阿里,薪资翻倍~ 感谢这份顶级版,linux教程入门教程PDF

Java 程序员 后端

技术分享成就现在的我:中间件兴趣圈荣获CSDN2020博客之星亚军

Java 程序员 后端

数据库中间件MyCat实战笔记(第一步),arm架构linux系统

Java 程序员 后端

数据库ACID四大特性到底为了啥,一文带你看通透,java支付宝支付接口教程

Java 程序员 后端

成为架构师之前,你一定要懂的-CAP-定理,Java程序员必备书籍

Java 程序员 后端

成功拿到大厂offer的我熬夜整理了这份Java高频面试题(含答案)

Java 程序员 后端

手撕ArrayList底层,透彻分析源码,mysql索引优化面试题

Java 程序员 后端

拼多多3面+余额宝4面+蚂蚁金服5面,Java自学宝典

Java 程序员 后端

我,48岁,上海外企高管,9次Java面试经验总结

Java 程序员 后端

技术站最全MySQL数据库实战规范,java程序语言基础王锦盛

Java 程序员 后端

拜读!程序员60K+高薪技术,spring整合mybatis原理

Java 程序员 后端

推荐这款牛掰的 API 敏捷开发工具,java程序设计教程课后题答案

Java 程序员 后端

我丢,去面试初级Java开发岗位,被问到泛型,mysql索引原理面试题

Java 程序员 后端

我凭借这1000道java高频真题,顺利拿下京东、饿了么,java高级开发面试总结

Java 程序员 后端

我画了19张图,彻底帮你搞定Redis,mybatisgenerator教程

Java 程序员 后端

扫盲帖:聊聊微服务与分布式系统,Java校招面试指南

Java 程序员 后端

抱歉!没有这 28 款插件的 Chrome 是没有灵魂的,mysql自增主键实现原理

Java 程序员 后端

排除MySQL中常见错误的实用招术,什么是微服务扩展性和高可用、可扩展性

Java 程序员 后端

SPARQL Update将完善REST式SOA方案_SOA_Thomas Bandholtz_InfoQ精选文章