rin*_*ahn 1 sparql jena fuseki wikidata federated-queries
如何查询远程端点(如DBPedia或Wikidata的端点)并在本地图形中插入生成的三元组?到目前为止,我知道有INSERT,ADD,COPY等命令可用于此类任务.我不明白的是如何在更新本地图表时寻址远程端点.有人可以提供最低限度的例子或主要步骤吗?
我在Windows上使用Apache Jena Fuseki v2,这是我目前的查询:
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX wd: <http://www.wikidata.org/entity/>
INSERT
{ GRAPH <???> { ?s ?p ?o } } #don't know what to insert here for "GRAPH"
WHERE
{ GRAPH <???> #don't know what to insert here for "GRAPH" either
{ #a working example query for wikidata:
?s wdt:P31 wd:Q5. #humans
?s wdt:P54 wd:Q43310. #germans
?s wdt:P1344 wd:Q79859. #part of world cup 2014
?s ?p ?o.
}
}
Run Code Online (Sandbox Code Playgroud)
我正在查询的本地端点是http://localhost:3030/mylocaldb/update.我已经读过,/update编辑数据库是必要的(我不确定我是否理解正确).
到目前为止我的方法是否正确?或者更像是SPARQL之外的其他脚本?
语法是
( WITH IRIref )?
INSERT QuadPattern
( USING ( NAMED )? IRIref )*
WHERE GroupGraphPattern
Run Code Online (Sandbox Code Playgroud)
如果INSERT模板指定了GRAPH块,那么这些将是受影响的图形.否则,操作将应用于默认图形,或者分别应用于WITH子句中指定的图形(如果已指定).如果不存在USING(NAMED)子句,则WHERE子句中的模式将与Graph Store匹配,否则将与USING(NAMED)子句指定的数据集匹配.与WHERE子句的匹配创建了应用于模板的绑定,以确定要插入的三元组(遵循与DELETE/INSERT相同的规则).
所以这基本上意味着,如果要将其存储在默认图形中,可以省略部件中的GRAPH定义INSERT,否则它将是您要存储数据的图形.
关于该WHERE子句,通常您必须使用SERVICE此处的关键字在Wikidata端点上应用联合查询(https://query.wikidata.org/bigdata/namespace/wdq/sparql):
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX wd: <http://www.wikidata.org/entity/>
INSERT
{ ?s ?p ?o }
WHERE
{ SERVICE <https://query.wikidata.org/bigdata/namespace/wdq/sparql>
{ #a working example query for wikidata:
?s wdt:P31 wd:Q5. #humans
?s wdt:P54 wd:Q43310. #germans
?s wdt:P1344 wd:Q79859. #part of world cup 2014
?s ?p ?o.
}
}
Run Code Online (Sandbox Code Playgroud)
我用Apache Jena测试了它,它在我的本地数据集中插入了4462个三元组.
| 归档时间: |
|
| 查看次数: |
519 次 |
| 最近记录: |