通过sparql从wikidata中提取同义词

通过sparql从wikidata中提取同义词,sparql,wikidata,Sparql,Wikidata,我试图使用SPARQL查询来提取化合物的同义词列表,但是我无法生成任何有效的查询。 特别是,我希望每个化合物都能得到它的名字和多种语言的别名列表(“也称为”) 我没有找到任何像样的例子,这里是我能提供的: SELECT ?element ?elementLabel ?elementAltLabel ?alternative WHERE { ?element wdt:P31 wd:Q11344. OPTIONAL { ?subject skos:altLabel ?alternative

我试图使用SPARQL查询来提取化合物的同义词列表,但是我无法生成任何有效的查询。 特别是,我希望每个化合物都能得到它的名字和多种语言的别名列表(“也称为”)

我没有找到任何像样的例子,这里是我能提供的:

SELECT ?element ?elementLabel ?elementAltLabel ?alternative 
WHERE {
  ?element wdt:P31 wd:Q11344.
  OPTIONAL { ?subject skos:altLabel ?alternative . }
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en,ja".} 
}
LIMIT 2
不幸的是,它正在超时


我试图理解这种语言是如何工作的,但我显然犯了一些愚蠢的大错误

可能尝试
OPTIONAL{element skos:altLabel?alternative.}
而不是当前的
OPTIONAL。没错。在
可选
内,您使用
?subject
作为变量,而在
外,您有
元素
——这确实是一个巨大的左连接,将超时。使用相同的变量。不要在不理解的情况下从某个地方复制和粘贴-这很可能发生在这里谢谢!是的,我不知道我在做什么……你误解了标签
服务
。它是一个内置和超越标准SPARQL的magic Blazegraph三重存储。这就是为什么您可以使用
?elementLabel
,而无需将其绑定到三重模式中的任何变量。另一方面,
?alternative
是标准SPARQL变量,不受标签服务的影响。这意味着,您必须使用适当的SPARQL筛选器,就像其他任何人必须使用
筛选器(langmatches(lang(?alternative),“en”)
可能尝试
可选{元素skos:altLabel?alternative.}
而不是当前的
可选。没错。在
可选
内,您使用
?subject
作为变量,而在
外,您有
元素
——这确实是一个巨大的左连接,将超时。使用相同的变量。不要在不理解的情况下从某个地方复制和粘贴-这很可能发生在这里谢谢!是的,我不知道我在做什么……你误解了标签
服务
。它是一个内置和超越标准SPARQL的magic Blazegraph三重存储。这就是为什么您可以使用
?elementLabel
,而无需将其绑定到三重模式中的任何变量。另一方面,
?alternative
是标准SPARQL变量,不受标签服务的影响。这意味着,您必须使用适当的SPARQL过滤器,就像其他任何人必须使用
过滤器一样(langmatches(lang(?alternative),“en”)