2

当我在 freebase 查询生成器中运行此查询时

[{
  "/type/object/id": "/en/michael_jackson",
  "/type/object/name": null,
  "/type/object/type": "/music/artist",
  "/music/artist/album": [{
    "id":            null,
    "name":          [],
    "release_type!=": "Single",
    "/music/album/primary_release": [{
      "name":       null,
      "track_list": [{name:null}]
    }]
  }]
}];​

我得到了正确的结果,包括专辑和曲目列表,但如果将查询更改为

[{
  "/type/object/id": "/en/carly_rae_jepsen",
  "/type/object/name": null,
  "/type/object/type": "/music/artist",
  "/music/artist/album": [{
    "id":            null,
    "name":          [],
    "release_type!=": "Single",
    "/music/album/primary_release": [{
      "name":       null,
      "track_list": [{name:null}]
    }]
  }]
}];​

我什么都拿不回来。您可以在http://www.freebase.com/queryeditor尝试这两个查询。有人能指出我做错了什么吗?这两位都是艺术家,所以我也应该找回 Carly Rae Jepsen 的专辑和曲目列表。

4

1 回答 1

1

并非所有专辑都记录了主要版本。除非您真的关心这一点,否则我会放松您的约束并使用如下查询

[{
  "id": "/en/carly_rae_jepsen",
  "name": null,
  "type": "/music/artist",
  "/music/artist/album": [{
    "id":            null,
    "name":          null,
    "release_type!=": "Single",
    "/music/album/releases": [{
      "name":       null,
      "track_list": [{"name":null}]
    }]
  }]
}]​

对查询的其他一些调整:

  • 最后一个“名字”没有被引用
  • 查询不以分号结尾
  • /type/object 是默认值,可以省略,与最近指定类型关联的属性类似
  • name 是一个单值属性,所以使用 null 而不是 []

如果您想要主要版本(如果可用),但不限制您的查询,您可以使用“可选”:true。您可以通过按发布日期对所有版本进行排序并只选择第一个版本(假设它很有可能成为主要版本)来获得更好的结果。

结果查询如下所示

[{
  "id":   "/en/carly_rae_jepsen",
  "name": null,
  "type": "/music/artist",
  "album": [{
    "id":            null,
    "name":          [],
    "release_type!=": "Single",
    "primary_release": [{
      "optional": true,
      "name":     null,
      "track_list": [{
        "name": null
      }]
    }],
    "releases": [{
      "name":         null,
      "track_list": [{
        "name": null
      }],
      "release_date": null,
      "sort":         "release_date",
      "limit":        1
    }]
  }]
}]​
于 2012-11-06T13:49:24.413 回答