我正在尝试使用SPARQL结构从dbpedia中剥离一组数据-我只对一组艺术家感兴趣,我希望Sesame在速度上尽可能小。
我认为我可以做的是使用CONSTRUCT来获取给定艺术家的每个谓词。我可以让第一个构造子句工作,以确保我得到类型"Person",但这只给了我满足那个子句的三个子句-我想要他们的名字,标签,birthPlaces等。我下面的查询是试图在第二个构造子句中捕获Monet的名字?如果我没记错的话,这会给我三倍的
<http://dbpedia.org/resource/Claude_Monet>  
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>   
<http://xmlns.com/foaf/0.1/Person>像这样的三元组
<http://dbpedia.org/resource/Claude_Monet>  
<http://xmlns.com/foaf/0.1/name>
"Claude Monet"@en我如何让我的查询使用Monet名字的对象作为变量,以便在插入空引号时使用?下面是查询
PREFIX purl: <http://purl.org/dc/elements/1.1/>
PREFIX foaf:    <http://xmlns.com/foaf/0.1/>
CONSTRUCT {
  ?s a foaf:Person .
  ?s foaf:name ""
} WHERE { 
  ?s foaf:surname "Monet"@en . 
  ?s purl:description "Painter"@en
} LIMIT 100真的很感谢你的帮助
麦克
发布于 2013-10-28 11:55:43
作为替代/速记,您还可以使用DESCRIBE查询,例如:
DESCRIBE <http://dbpedia.org/resource/Claude_Monet>将为您提供一个子图,其中包含<http://dbpedia.org/resource/Claude_Monet>的所有传入和传出属性,或者:
DESCRIBE ?x WHERE { ?x purl:description "Painter"@en }将为所有具有匹配purl:description的?x提供一个子图。
当然,这给了你更少的对提取的精确三元组的控制,但好处是它更短,并且如果特定资源不存在特定的三元组模式,也不需要进行调整(例如,如果由于任何原因,特定的绘制程序在WHERE子句中没有deathDate或foaf:surname或任何其他属性,则构造查询将不匹配)。
一个小小的警告: DESCRIBE查询结果的精确内容依赖于实现。例如,一些三元组可能选择只返回传出属性。但是Sesame (我相信DBPedia端点也是如此)返回所谓的Symmetric Concise Bounded Description。
https://stackoverflow.com/questions/19613074
复制相似问题