SPARQL 规范提到该子句FROM
可用于指定数据集。
FROM
SPARQL 查询可以通过使用子句和FROM NAMED
描述 RDF 数据集的子句来指定要用于匹配的数据集。
SPARQL 上下文中的“数据集”是什么?我对一般数据库非常熟悉,并且我原则上理解,然后对数据集执行对以 SQL 等语言表达的数据的查询,以解析该数据集的某个子集。
我试图理解以下查询:
prefix cpmeta: <...some_domain>
select distinct
?uri
?label
?stationId
from <...some_domain>
from <...some_domain>
from <...some_domain>
from <...some_domain>
from named <...some_domain>
where {
{ ?uri rdfs:label ?label }
UNION
{ ?uri cpmeta:hasName ?label }
UNION
{
graph <...some_domain> {
?uri a cpmeta:Station .
?uri cpmeta:hasName ?label .
}
}
?uri cpmeta:hasStationId ?stationId
}
limit 100
所以从规范文档中我原则上理解
- 指定了 4 个数据集,并且(我认为)
- 定义了一个“RDF 数据集”
然而。FROM
如果我省略andFROM NAMED
子句,查询实际上会执行(但结果略有不同) :
prefix cpmeta: <...some_domain>
select distinct
?uri
?label
?stationId
where {
{ ?uri rdfs:label ?label }
UNION
{ ?uri cpmeta:hasName ?label }
UNION
{
graph <...some_domain> {
?uri a cpmeta:Station .
?uri cpmeta:hasName ?label .
}
}
?uri cpmeta:hasStationId ?stationId
}
limit 100
这么清楚???已经指定了一个数据集。是通过prefix
?
问题:
- 为什么
RDF dataset
与常规数据集(FROM
vsFROM NAMED
)的标识不同 - 前缀的 URI 实际上在
FROM
语句中被重用。FROM
前缀和子句有什么区别?
这个问题 -在 SPARQL 查询中指定数据集- 展示了如何指定数据集,但没有解释在 SPARQL 查询的上下文中以及在 SPARQL 查询被解析为实际数据的上下文中这意味着什么。
这个问题 - SPARQL 查询中的 FROM 子句 - 提到没有 FROM 子句的 SPARQL 查询是针对默认数据集执行的。但是,为什么省略所有数据集仍然会导致查询返回数据呢?