我正在SParqL中完成一项任务,我想将我的本体链接到dbpedia,以获取各种游戏的发布日期。对于本体中的每个游戏,我都添加了与dbpedia资源(:dbPediaEntry
)链接的属性以及该资源中描述的发布年份(:dbPediaPublishYear
)。这是因为在dbpedia中如何描述这些字段没有通用的结构(例如,某些资源的名称为“ years
”,其他资源的名称为“ firstReleaseDate
”)。因此,我的查询如下所示:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <MY_ONTOLOGY_IRI>
SELECT ?dbPediaPublishYear
FROM <http://dbpedia.org/page/Mastermind_(board_game)>
FROM <MY_ONTOLOGY_IRI>
WHERE {
:MasterMind :dbPediaEntry ?dbPediaEntry.
:MasterMind :dbPediaPublishYear ?dbPediaPublishYearPredicate.
?dbPediaEntry ?dbPediaPublishYearPredicate ?dbPediaPublishYear.
}
它按预期工作。但是,我唯一能够使它起作用的方法是使用FROM <http://dbpedia.org/page/Mastermind_(board_game)>
行。这意味着我每次切换游戏时都必须手动更改此IRI。相同的IRI存储在?dbPediaEntry
变量中,但是无法在WHERE
子句(我知道)之外访问该变量。是否可以使FROM
之后的IRI动态化并由变量确定?我虽然使用了嵌套查询,但似乎无法在嵌套查询中添加FROM
。