了解CONSTRUCT模板

问题描述 投票:0回答:1

我现在正在学习SPARQL,而且我无法理解CONSTRUCT模板的限制。通常一切正常,就像我期望的那样。但是,当我开始制作在语义上没有意义的模板时,我的理解就会失败。这是一个例子:

我存储了以下数据:

me:     a        foaf:Person .
foaf:mbox  rdfs:label  "Email" .

使用?s ?p ?o的默认模板,我显然可以获得准确的数据。如果我去寻找一些不道德的东西,就像这样:

CONSTRUCT {
    ?type ?labeled ?label
}
WHERE {
    me: a ?type .
    ?labeled rdfs:label ?label .
}

我回到这个三重奏:

foaf:Person  foaf:mbox  "Email" .

这种方式对我来说很有意义,因为有三个变量,每个变量只有一个可以在数据集中绑定的值。但是,只要我在模板中切换变量的顺序是这样的:?type ?label ?labeled,我就什么都没回来了。这是为什么?模板?type ?labeled ?label已经打破了数据的原始结构,我仍然得到了回报,那么为什么?type ?label ?labeled会有所不同呢?

sparql fuseki
1个回答
0
投票

As noted by @AKSW,文字不能是谓词。 "Email"是一个文字,因此它不能被构造成一个谓词位置。

© www.soinside.com 2019 - 2024. All rights reserved.