如何使用SPARQL可选
我必须使用这个Spaql查询来检索关于一个人的信息,我的问题是将可选结构分解为多个可选结构如何使用SPARQL可选,sparql,Sparql,我必须使用这个Spaql查询来检索关于一个人的信息,我的问题是将可选结构分解为多个可选结构 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX dbo: <http://dbpedia.org/ontology/> PREFIX dbpprop: <http://dbpedia.org/property/> PREFIX foaf: <http://xmlns.com/foaf/0.1/
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?label ?abstract ?placeOfBirth
?birthPlace ?birthDate ?page ?thumbnail
WHERE {
<http://dbpedia.org/resource/Ismail_Kadare> rdfs:label ?label ;
dbo:abstract ?abstract ;
foaf:page ?page .
OPTIONAL {
<http://dbpedia.org/resource/Ismail_Kadare> dbpprop:placeOfBirth ?placeOfBirth ;
dbpprop:birthPlace ?birthPlace ;
dbo:birthDate ?birthDate ;
dbo:thumbnail ?thumbnail .
}
FILTER (LANG(?label) = 'en')
FILTER (LANG(?abstract) = 'en')
}
LIMIT 1
前缀rdfs:
前缀dbo:
前缀dbpprop:
前缀foaf:
选择不同的?标签?摘要?出生地点
?出生地?出生日期?页面?缩略图
何处{
rdfs:标签?标签;
dbo:抽象?抽象;
第页?第页。
可选的{
dbpprop:出生地点?出生地点;
dbpprop:出生地?出生地;
dbo:生日?生日;
缩图?缩图。
}
过滤器(LANG(?label)=“en”)
过滤器(LANG(?abstract)='en')
}
限制1
将可选图案拆分为多个部分
模式
<http://dbpedia.org/resource/Ismail_Kadare> dbpprop:placeOfBirth ?placeOfBirth ;
dbpprop:birthPlace ?birthPlace ;
dbo:birthDate ?birthDate ;
dbo:thumbnail ?thumbnail .
其他问题
语言匹配比字符串匹配要复杂一点,这一点毫无意义,因此
FILTER (LANG(?label) = 'en')
FILTER (LANG(?abstract) = 'en')
你真的应该使用
filter(langMatches(lang(?label),'en'))
filter(langMatches(lang(?abstract),'en'))
它允许您检索使用全英语的不同语言标记的结果
选择distinct
和限制1
并非都是必需的
请注意,selectdistinct
确保结果中没有任何重复的行。但是,limit 1
意味着您最多只能有一个结果,因此不会有任何重复项需要删除
标准名称空间
看起来您是在对DBpedia进行查询,因此使用与定义相同的名称空间前缀可能是值得的,这样您就可以更轻松地复制和粘贴查询并进行实验。这样做(并使用values?x{dbpedia:Ismail_Kadare}
来避免一些输入,我们最终得到以下查询:
select ?label ?abstract ?placeOfBirth ?birthPlace ?birthDate ?page ?thumbnail
where {
values ?x { dbpedia:Ismail_Kadare }
?x rdfs:label ?label ;
dbpedia-owl:abstract ?abstract ;
foaf:page ?page .
optional { ?x dbpprop:placeOfBirth ?placeOfBirth }
optional { ?x dbpprop:birthPlace ?birthPlace }
optional { ?x dbpedia-owl:birthDate ?birthDate }
optional { ?x dbpedia-owl:thumbnail ?thumbnail }
filter langMatches(lang(?label),'en')
filter langMatches(lang(?abstract),'en')
}
limit 1
DBpedia端点不会为该查询返回任何内容,但这是因为没有foaf:page
属性,而不是因为该查询的格式不正确。我不知道您是否实际对DBpedia运行此操作,所以这可能无关紧要。将可选模式拆分为多个部分
模式
<http://dbpedia.org/resource/Ismail_Kadare> dbpprop:placeOfBirth ?placeOfBirth ;
dbpprop:birthPlace ?birthPlace ;
dbo:birthDate ?birthDate ;
dbo:thumbnail ?thumbnail .
其他问题
语言匹配比字符串匹配要复杂一点,这一点毫无意义,因此
FILTER (LANG(?label) = 'en')
FILTER (LANG(?abstract) = 'en')
你真的应该使用
filter(langMatches(lang(?label),'en'))
filter(langMatches(lang(?abstract),'en'))
它允许您检索使用全英语的不同语言标记的结果
选择distinct
和限制1
并非都是必需的
请注意,select distinct
可确保结果中没有任何重复行。但是,limit 1
意味着您最多只能有一个结果,因此不会有任何重复项要删除
标准名称空间
看起来您是在查询DBpedia,因此可能值得使用定义的相同名称空间前缀,以便您可以更轻松地复制和粘贴查询并进行实验。这样做(并使用values?x{DBpedia:Ismail_Kadare}
避免键入,我们最终使用以下查询:
select ?label ?abstract ?placeOfBirth ?birthPlace ?birthDate ?page ?thumbnail
where {
values ?x { dbpedia:Ismail_Kadare }
?x rdfs:label ?label ;
dbpedia-owl:abstract ?abstract ;
foaf:page ?page .
optional { ?x dbpprop:placeOfBirth ?placeOfBirth }
optional { ?x dbpprop:birthPlace ?birthPlace }
optional { ?x dbpedia-owl:birthDate ?birthDate }
optional { ?x dbpedia-owl:thumbnail ?thumbnail }
filter langMatches(lang(?label),'en')
filter langMatches(lang(?abstract),'en')
}
limit 1
DBpedia端点不会为该查询返回任何内容,但这是因为没有
foaf:page
属性,而不是因为该查询的格式不正确。我不知道您是否实际针对DBpedia运行此操作,所以这可能无关紧要。您能否建议另一个人,DBpedia端点将为其返回result plz。@balikatravella通过修改上述查询,您可以很容易地找到答案:将foaf:page
属性也设置为可选,并查看结果中哪些人对其有定义的值。@balikatravella这里有很多关于标签中StackOverflow的问题,可能会对您有所帮助。我真的无法回答帮助您修改此查询,因为此查询正在尝试检索foaf:page
属性的值,但没有。您没有给出任何其他关于您尝试检索的数据的描述,因此我们无法很好地修复此查询,因为您没有告诉我们它应该执行的操作。(如果我们不知道它有什么问题,我们就无法修复。)您是否可以建议另一个人,DBpedia endpoint将为其返回结果plz。@balikatravella您可以通过修改上述查询很容易找到答案:将foaf:page
属性也设置为可选,并查看结果中哪些人对其有定义的值。@balikatravella有很多查询需要查询标签中的StackOverflow上的离子可能会对您有所帮助。我无法真正帮助您修改此查询,因为此查询正在尝试检索foaf:page
属性的值,但没有。您没有给出任何其他关于您尝试检索的数据的描述,因此我们无法很好地修复自y以来的查询你还没有告诉我们它应该做什么。(如果我们不知道它坏了什么,我们就无法修复。)