四种查询格式
SELECT
使用该格式结果直接返回所定义变量和它们绑定的数据,和SQL一样,SELECT *
用于选取所有的变量
CONSTRUCT
返回由图形模板中一个指定单一的RDF图,通过在解决方案序列中获取每个查询解决方案,替换图形模板的变量,然后合成RDF图(见基础学习(一)中末尾的例子)
ASK
ASK返回的是yes
或者no
,如果对应的查询有结果的话,结果输出yes
如果对应的查询没有结果则返回no
DESCRIBE
该模式返回包含有关资源的RDF数据的单个结果RDF图
该DESCRIBE表单获取解决方案中标识的每个资源以及IRI直接命名的任何资源,并通过任何可以用的信息的“描述”来组装单个RDF图,同理,DESCRIBE *
是查询所有变量的缩写
数据类型
类型文字值((typed literals)
xsd:integer
xsd:decimal
xsd:float
xsd:double
xsd:string
xsd:boolean
xsd:dateTime
Filter函数中的逻辑关系与运算符
Filter作为一个过滤器函数也有 ||
与&&
两种运算符
其中有三种对应的值,T(true),F(false)和E(error)
对应关系如下(来自官方文档)
A B A || B A && B
T T T T
T F T F
F T T F
F F F F
T E T E
E T T E
F E E F
E F E F
E E E E
bound函数
如果函数中的变量绑定到值(???)
个人理解:意思应该是如果匹配中含有该类型变量,则视为绑定成功
返回true,否则返回false,若匹配带有NaN或者INF类型的的被视为绑定成功
example:
data:
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
_:a foaf:givenName "Alice".
_:b foaf:givenName "Bob" .
_:b dc:date "2005-04-04T04:04:04Z"^^xsd:dateTime
查询语句:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?name
WHERE { ?x foaf:givenName ?givenName .
OPTIONAL { ?x dc:date ?date } .
FILTER ( bound(?date) ) }
结果:
givenName
"Bob"
可以看出,结果仅返回了带有date值得的Bob,另外一个例子中使用的是!bound
,与改例子相反,匹配的是不含date类型的匹配,因此结果为"Alice"
isIRI 函数
若果该函数中参数为一个合法IRI,那么返回true即匹配,否则不匹配
(用在Filter函数中作为过滤条件)
isBlank函数
如果函数参数是一个空白节点,返回true,否则返回false
同样用在Filter中作为过滤条件
isLiteral
若函数参数是一个字符串,返回true,否则返回false
example:
_:a foaf:name "Alice".
_:a foaf:mbox <mailto:alice@work.example> .
_:b foaf:name "Bob" .
_:b foaf:mbox "bob@work.example" .
Alice所含有的mbox是一个IRI,Bob所含有的mbox是一个字符串
str函数
个人理解:就是将相应的IRI转化为字符串进行处理
example:
在对IRI进行筛选时这个函数相当有用
regex(str(?mbox), "@work.example")
作用是筛选出带有"@work.example"的IRI,所以要将IRI转换为字符串处理
SPARQL官方文档:https://www.w3.org/TR/rdf-sparql-query/
Q.E.D.
Comments | 0 条评论