【问题标题】:SPARQL - Get entity type from a StringSPARQL - 从字符串中获取实体类型
【发布时间】:2018-05-16 11:14:50
【问题描述】:

我使用 Wikidata 的目的是为字符串“Scotland”查找属性“type / instance of”、“subclass of”和“part of”(如果存在)的值。

例如,通过手动浏览 Wikidata 的网站,我输入 Scotland,我找到了资源,并且这些数据显示在其中,就像:https://www.wikidata.org/wiki/Q22。因此,我可以看到苏格兰是“英国境内的国家”的一个实例。

SPARQL 中的等效查询是什么?

我尝试了这个“有效”查询,但它是否没有返回任何结果或绕过时间限制:

SELECT ?instanceOf ?subclassOf ?partOf WHERE {
  ?word rdfs:label ?label;
       wdt:P361 ?instanceOf;
       wdt:P279 ?subclassOf;
       wdt:P361 ?partOf.
  FILTER(CONTAINS(?label, "Scotland"))
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en".}
}

Try it here

【问题讨论】:

  • 1.标签上的过滤器,像这样,是TimeLimit的原因,它是一个真正的重请求。 2. 你确定关系存在吗? Q22 rdfs:subClassOf 不是例子。
  • 如果没有全文索引,这些查询通常会很昂贵......维基数据不托管任何全文索引,因此,在本地建立索引,例如通过 Lucene,然后从公共端点获取数据。
  • 感谢您的回复,但实际上我自己找到了解决方案:)。再见!

标签: sparql semantic-web wikidata


【解决方案1】:

如果您现在苏格兰在 wikidata 上已经是Entity Q22,您可以使用https://www.wikidata.org/wiki/Special:EntityData/Qxxxxx.json URL 检索所有与苏格兰相关的statements,而无需使用 SQARQL:https://www.wikidata.org/wiki/Special:EntityData/Q22.json。

另请参阅:WikiData 帮助中的About Data。

要按字符串搜索匹配的实体,请使用wbsearchentities REST API,例如:https://www.wikidata.org/w/api.php?action=wbsearchentities&search=scotland&language=en。

【讨论】:

  • 感谢 Udi 的完整回答,但我终于在我的查询中找到了自己的解决方案,祝你有美好的一天 :)!
  • 您能否将您的解决方案发布为答案,然后@Olscream 接受它?
猜你喜欢
  • 2011-01-25
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 2011-01-06
  • 2014-01-01
  • 1970-01-01
  • 2023-02-25
相关资源
最近更新 更多