如何使用 SPARQL 在 DBPedia 中的消歧/查询子资源中捕获正确的资源?

How to catch correct resource among disambiguations / interrogate subresources in DBPedia using SPARQL?

我有 Youtube 音乐视频的标题,我需要从 DBPedia 收集其他信息,如专辑、艺术家、发行日期等。我还想获得所有这些实体的 'abstract'来自 DBPedia。我已经使用 Musicbrainz 来区分标题中的歌曲和艺术家,并且效果很好,除了少数情况。

但是我的主要问题是:当我通过歌曲询问 DBPedia(使用资源/{song} 的查询)时,有时我得不到答案,因为 {song} 导致歧义消除。示例:resource/It's_My_Life 有 11 个歧义,其中 6 个是歌曲。我需要资源 "It's_My_Life_(Bon_Jovi_song)"。我如何告诉 DBPedia 我需要某个艺术家的 'MusicalWork' 类型的资源?

我尝试了很多方法来使用 SPARQL 执行此操作,但我总是得到一个空的结果,而且我不知道我做错了什么。到目前为止,我只能获得每个消歧的摘要,但我无法获得消歧子资源的特定 属性(如摘要)。

SELECT ?x ?y WHERE {
    <http://dbpedia.org/resource/It's_My_Life>  dbo:wikiPageDisambiguates ?x .
    ?x dbo:abstract ?y .
}

我似乎不能比这更像父亲了。我试过:

SELECT ?x ?y WHERE {
    <http://dbpedia.org/resource/It's_My_Life>  dbo:wikiPageDisambiguates ?x .
    ?x dbo:MusicalArtist ?y .
    { SELECT ?z WHERE { 
        ?y dbo:abstract ?z}
    }
}

SELECT ?x ?y WHERE {
    <http://dbpedia.org/resource/It's_My_Life>  dbo:wikiPageDisambiguates ?x
    ?x rdfs:type ?y .
}

但是结果总是空的。我应该如何查询资源的子资源?谁能帮帮我?

解决方案,摘自@AKSW 的评论 --

SELECT ?x ?y 
WHERE
  { 
    <http://dbpedia.org/resource/It's_My_Life>  dbo:wikiPageDisambiguates  ?x              . 
    ?x                                          rdf:type                   dbo:MusicalWork . 
    ?x                                          dbo:abstract               ?y              . 
    FILTER ( LANGMATCHES ( LANG (?y), 'en' ) ) 
  }