文章目录
1. 简介
SPARQL(SPARQL Protocol and RDF Query Language),是为RDF开发的一种查询语言和数据获取协议。
对于从数据库读取数据的查询,SPARQL语言为不同目的指定了四种不同的查询变体。
-
SELECT查询:用于从SPARQL端点提取原始值,结果以表格格式返回。
-
CONSTRUCT查询:用于从SPARQL端点提取信息并将结果转换为有效的RDF。
-
ASK查询:用于为SPARQL端点上的查询提供简单的True / False结果。
-
DESCRIBE查询:用于从SPARQL端点提取RDF图,其内容留给端点根据维护者认为有用的信息来决定。
这些查询表单中的每一个都使用WHERE块来限制查询,但是,在DESCRIBE查询的情况下,WHERE是可选的。
2. 语法
2.1 Simple example
SPARQL中:
-
变量的前缀是
? -
用类似N3的语法表达三元组
-
查询返回一个变量的绑定结果集
_:a foaf:name “Johnny Lee Outlaw” .
_:a foaf:mbox <mailto:jlow@example.com> .
_:b foaf:name “Peter Goodguy” .
_:b foaf:mbox <mailto:peter@example.org> .
_:c foaf:mbox <mailto:carol@example.org> .
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox
WHERE {
?x foaf:name ?name .
?x foaf:mbox ?mbox .
}
| ?name | ?mbox |
|---|---|
| “Johnny Lee Outlaw” | mailto:jlow@example.com |
| “Peter Goodguy” | mailto:peter@example.org |
2.2 约束条件
SPARQL中,限制条件可以应用于变量。
SELECT ?title
WHERE {
?x dc:title ?title .
FILTER regex(?title, "^SPARQL")
}
SELECT ?title ?price
WHERE {
?x ns:price ?price .
FILTER (?price < 30.5)
?x dc:title ?title .
}
2.3 Group Graph Patterns
Group Graph Patterns是用{ }括起来的一组模式,决定了FILTER操作符(和其他操作符)的作用范围。
2.3.1 Optional Graph Patterns
OPTIONAL允许我们说明,为了产生绑定,不需要匹配Group Graph Patterns。
_:a rdf:type foaf:Person .
_:a foaf:name “Alice” .
_:a foaf:mbox <mailto:alice@example.com> .
_:a foaf:mbox <mailto:alice@work.example.com> .
_:b rdf:type foaf:Person .
_:b foaf:name “Bob” .
SELECT ?name ?mbox
WHERE {
?x foaf:name ?name .
OPTIONAL {
?x foaf:mbox ?mbox .
}
}
| ?name | ?mbox |
|---|---|
| “Alice” | mailto:alice@example.com |
| “Alice” | mailto:alice@work.example.com |
| “Bob” |
2.3.2 Union Graph Patterns
UNION有效地给我们提供了一个二择一的查询:要么匹配

本文介绍了SPARQL,一种用于RDF数据的查询语言,包括SELECT、CONSTRUCT、ASK和DESCRIBE四种查询类型。详细讲解了其语法,如约束条件、Group Graph Patterns、Optional和Union Graph Patterns等,并涉及SPARQL 1.1的更新,如Update操作、Aggregates、Subqueries和Property Paths。
8698

被折叠的 条评论
为什么被折叠?



