gpt4 book ai didi

ruby-on-rails - 如何使用 Dbpedia ruby​​ gem 获取流派信息

转载 作者:数据小太阳 更新时间:2023-10-29 07:59:48 24 4
gpt4 key购买 nike

我正在尝试使用 Dbpedia gem 从维基百科获取艺术家信息 https://github.com/farbenmeer/dbpedia

但我无法弄清楚结果项的类型是什么。

基本上我想修改以下函数以找出哪个结果是艺术家,然后返回其 url:

  def self.get_slug(q)
results = Dbpedia.search(q)
result = # Do something to find out the result that is an artist
uri = result.uri rescue ""
return uri
end

我最后的办法是抓取每个结果 url,然后根据是否有可用的流派信息来确定它是否是艺术家。

最佳答案

您可以利用 DBpedia's SPARQL端点,而不是废弃所有结果。

假设您想要一个包含流派 的所有内容的列表。你可以查询:

SELECT DISTINCT ?thing WHERE {
?thing dbpedia-owl:genre ?genre
}
LIMIT 1000

但是说您不想要一切,您只是在寻找艺术家。可以是音乐家、画家、 Actor 等。

SELECT DISTINCT ?thing WHERE {
?thing dbpedia-owl:genre ?genre ;
rdf:type dbpedia-owl:Artist

}
LIMIT 1000

或者您可能只想要音乐家乐队:

SELECT DISTINCT ?thing WHERE {
{
?thing dbpedia-owl:genre ?genre ;
rdf:type dbpedia-owl:Band
}
UNION
{
?thing dbpedia-owl:genre ?genre ;
a dbpedia-owl:MusicalArtist # `a` is a shortcut for `rdf:type`
}
}
LIMIT 1000

最终,您希望音乐家或乐队的名字中包含“mega”,例如Megadeath 或 Megan White,以及资源的 URL。

SELECT DISTINCT ?thing, ?url, ?genre WHERE {
?thing foaf:name ?name ;
foaf:isPrimaryTopicOf ?url .
?name bif:contains "'mega*'" .
{
?thing dbpedia-owl:genre ?genre ;
a dbpedia-owl:Band
}
UNION
{
?thing dbpedia-owl:genre ?genre ;
a dbpedia-owl:MusicalArtist
}
UNION
{
?thing a <http://umbel.org/umbel/rc/MusicalPerformer>
}
}
LIMIT 1000

尝试使用 DBpedia's SPARQL Query Editor 查询此查询.

dbpedia gem你指出,揭示了sparql-client在它的 API 中。所以,我认为您将能够使用 #query 运行所有这些查询。方法

Dbpedia.sparql.query(query_string)

祝你好运!

关于ruby-on-rails - 如何使用 Dbpedia ruby​​ gem 获取流派信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25427845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com