Presentation is loading. Please wait.

Presentation is loading. Please wait.

SPARQL现状及扩展思考.

Similar presentations


Presentation on theme: "SPARQL现状及扩展思考."— Presentation transcript:

1 SPARQL现状及扩展思考

2 SPARQL Query Language for RDF(2006.10)和SPARQL 1.1 Query Language(2012.07)所含内容对比图:

3 SPARQL Query Language for RDF(2006.10)和SPARQL 1.1 Query Language(2012.07)所含内容对比图:

4 聚合函数 在SPARQL 1.1 Query Language中,SPARQL查 询语言新增了聚合函数功能,包括了常用的数学聚 合函数COUNT,SUM,MIN,MAX和AVG等,例 如: SELECT (SUM(?price) AS ?totalPrice) WHERE{……}。

5 GROUP BY和HAVING GROUP BY ?x表示按照?x进行分组。
HAVING ( SUM (?pirce)>10 )表示选择价格总和大 于10的数据。 需要注意的是,GROUP BY和HAVING函数并不属 于条件子句where{}中,它们通常写在where{}之后。

6 联合查询 基于图模式的联合查询,表示至少有一个图模式是 匹配的,如果超过一个以上的图模式能够匹配,那 么所有可能的结果都会被找到。
SELECT ?title ?author WHERE { { ?book dc10:title ?title . ?book dc10:creator ?author } UNION { ?book dc11:title ?title . ?book dc11:creator ?author } } 基于图模式的联合查询,表示至少有一个图模式是 匹配的,如果超过一个以上的图模式能够匹配,那 么所有可能的结果都会被找到。

7 子查询 在某些复杂的SPARQL查询语句中,会出现子查询,与 SQL一样,子查询即在where{}中嵌套另一个完整的查 询语句,例如:
SELECT ?X,?Y WHERE { ?X …… SELECT ?Y WHERE{ ?Y …… }

8 否定语句——FILTER否定 FILTER NOT EXISTS { ?person foaf:name ?name }
表示查找不满足图模式的数据。

9 否定语句——MINUS否定 判断MINUS左边的图模式数据集与右边的图模式是 否匹配,如果与否定条件匹配,则过滤此结果。如: WHERE {
?s ?p ?o . MINUS { ?s foaf:givenName "Bob" } } 表示在满足{?s ?p ?o}条件的三元组中,过滤掉满足 {?S foaf:givenName “Bob”}条件的三元组。

10 否定语句——两种形式的区别 FILTER否定与它所在的位置无关,它只是检测一个 图模式是否存在于结果数据集中;MINUS将左右两 边的图模式进行评估,在左边的图模式中移除右边 图模式的数据集。 也就是说FILTER相当于查询结果的全局过滤,而 MINUS只是查询结果的局部过滤。

11 OPTIONAL OPTIONAL{}表示,括号中的图模式是可选的,不 是必须要满足匹配的条件。
如:OPTIONAL { ?x foaf:mbox ?mbox }  OPTIONAL{}图模式里面可使用FILTER。 WHERE { ?x dc:title ?title OPTIONAL { ?x ns:price ?price . FILTER (?price < 30) } }

12 图模式 图模式大致可以分为Basic Graph Patterns和 Group Graph Patterns。
Group Graph Patterns是由一系列Basic Graph Patterns构成的,用{}来表示空的Group Graph Patterns。

13 图模式 例1: PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox WHERE  {           ?x foaf:name ?name .           ?x foaf:mbox ?mbox .        } 这个查询是一个Group Graph Patterns,它包含 一个Basic Graph Patterns。

14 图模式 例2: PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox WHERE  { { ?x foaf:name ?name . }          { ?x foaf:mbox ?mbox . }        } 这个例子中,同样是一个Group Graph Patterns,却 被{}划分成了两个Basic Graph Patterns 将两个查询相比较,虽然两个查询的结构不一样,但是 其查询结果依然不变。

15 图模式 { ?x foaf:name ?name FILTER regex(?name, "Smith")
{    ?x foaf:name ?name FILTER regex(?name, "Smith")    ?x foaf:mbox ?mbox .  } FILTER并不会将此图模式拆分。   {}    上述语句描述了,两个只含有单独三元组的基本图模式,和一个 空的图模式。

16 SPARQL 1.1 Update SPARQL 1.1 Update( )中定义的 RDF图的更新语言,它的语法从SPARQL Query Language for RDF文档中衍化而来,包含了 SPARQL的INSERT,DELETE,UPDATE操作和对RDF 图的创建、更新、删除。

17 Graph Update—INSERT DATA
语法:INSERT DATA { GRAPH <g> {} } …… PREFIX dc: < PREFIX ns: < INSERT DATA { GRAPH < { < ns:price 42 } } 如果只是在默认图中添加三元组,那么直接使用INSERT DATA { 主 语 谓语 宾语} 的形式;如果要在某命名图中添加三元组,那么我们 需要用图的IRI来指定目标图。

18 Graph Update—DELETE DATA
语法:DELETE DATA { GRAPH <g> {} } …… PREFIX dc: DELETE DATA { < dc:title "David Copperfield" dc:creator "Edmund Wells" . }

19 Graph Update—INSERT/DELETE DATA
通过结合delete data和insert data,来达到更新 的目的。 原理是:使用delete data将需要更改的三元组删除, 然后用insert data插入新的三元组,这样就达到了 更新的目的。

20 Graph Update—INSERT/DELETE DATA
PREFIX foaf: < WITH < DELETE { ?person foaf:givenName 'Bill' } INSERT { ?person foaf:givenName 'William' } WHERE { ?person foaf:givenName 'Bill' } 这个实例首先将givenName为Bill的三元组删除, 然后插入新的givenName为William的三元组,从 而实现了将所有givenName为Bill更新为William的 目的。

21 Graph Management——CREAT/DROP
CREATE ( SILENT )? GRAPH IRIref DROP ( SILENT )? (GRAPH IRIref | DEFAULT | NAMED | ALL )

22 Graph Management——COPY,MOVE,ADD
COPY/MOVE/ADD DEFAULT TO COPY:copy操作会将目标图的数据全部覆盖掉, 源图中的数据保持不变。 MOVE:目标图会被源图的数据覆盖,源图中数据 会全部丢失。 ADD:add操作不会使任何图丢失它本身的信息, 只是在目标图中添加它没有的信息,相当于给两个 图做了一个并集操作。

23 SPARQL扩展思考 SPARQL语言本身并没有关于用户和用户组的定义 及相关内容。在关系数据库系统中,为了便于数据 库系统的安全管理,其对应的数据操作语言(如 SQL语言)都有关于用户和角色的定义说明。 随着语义Web的高速发展,必然也会对SPARQL语 言提出更高的要求,所以我们有必要提出SPARQL 语言的用户、角色的定义和管理。

24 用户和用户组 用户主要分为管理员和普通用户,管理员具有最高 操作权限,而普通用户需要在创建后对其进行授权, 方能获得相关权限。
用户组在创建后可对其权限进行初始化,可将某用 户组授权给某用户,此用户将会得到用户组的所有 权限。

25 图的创建 图可以被任何人创建,但是删除某张图只能由管理 员或图的创建者进行操作。
在图上的select、insert、delete、update权限可 以授权给某个用户或者某用户组。

26 图的创建——权限初始化 CREAT GRAPH IRIref (for public/private)
“for public”表示此图是一个开放图,会将在图 上的select权限自动授予所有用户; “for private”表示创建了一个私有图,只有图的 创建者和管理员才有对于此图的操作权限。

27 图,用户,用户组授权关系

28 END


Download ppt "SPARQL现状及扩展思考."

Similar presentations


Ads by Google