3

我试图在一个地理边界框(大约覆盖法国)中获取所有事件,但我想排除所有重复发生的事件,所以我不会得到大量的法国网球公开赛等。为此,我在查询中使用了以下内容。

"/time/event/instance_of_recurring_event": {
    "id":    null,
    "optional": "forbidden"
}

但是,我注意到戛纳电影节出现(每年的个别事件),因为它们没有设置 instance_of_recurring_event 属性。然而,我可以看到经常性事件“戛纳电影节”与 2006 年、2007 年、2008 年(等)电影节活动有联系,所以我想我可以通过一些反思来消除它们。到目前为止,我所拥有的是:

[{
  "name": null,
  "id":   null,
  "/time/event/instance_of_recurring_event": {
    "id":       null,
    "optional": "forbidden"
  },
  "/time/event/locations": [{
    "geolocation": {
      "latitude>":  43.2,
      "latitude<":  49.68,
      "longitude>": -5.1,
      "longitude<": 7.27
    }
  }],
  "/type/reflect/any_reverse": [{
    "id":            null,
    "estimate-count": null,
    "name":          null,
    "/time/recurring_event/current_frequency": null
  }]
}]​

这让我看到 2008 年戛纳电影节与戛纳电影节主题相关(每年重复一次),但我不知道是否有任何方法可以将 2008 年戛纳电影节从我的列表。那有意义吗?

在此处尝试查询编辑器。

谢谢你的帮助!

4

1 回答 1

1

试试这个:http ://tinyurl.com/3okuuzw

几个变化:

  1. 我添加了类型:/time/event,以便您只能获取该类型的对象。在您的查询中,您没有按类型进行限制,而在 Freebase 中,您可以在没有类型的对象上声明属性。这是一个很小的变化,可能不会有很大的影响。

  2. 戛纳电影节所属的 /film/film_festival_event 类型有一个属性 /film/film_festival_event/festival 指向电影节系列。

我在查询末尾添加了一个子句,以排除设置了该属性的对象,并假设它们是重复事件。

这仅适用于电影节,但您可以将相同的模式重新用于其他属性。

[{
  "name": null,
  "mid":   null,
  "type" :"/time/event",
  "/time/event/instance_of_recurring_event": {
    "id":       null,
    "optional": "forbidden"
  },
  "/time/event/locations": [{
    "geolocation": {
      "latitude>":  43.2,
      "latitude<":  49.68,
      "longitude>": -5.1,
      "longitude<": 7.27
    }
  }],
  "/film/film_festival_event/festival": [{
    "mid":            null,
    "optional": "forbidden",
    "limit" : 0
  }]
}]​

一些额外的点:

一种。如果要将标识符存储在数据库中或以后以任何方式重新使用它们,则应使用“mid”而不是“id”。mid 是比 id 更强的标识符,因为它可以在合并和其他数据转换中幸存下来。请求 mid 而不是 id 也更快 - 当结果集很大时,实际上会产生很大的不同。

湾。"limit" : 0 表示“在结果中根本不返回此子句”。我认为您仍然需要 mid 因为您必须在具有其他指令的子句中至少具有一个属性(在这种情况下为限制和可选)。

于 2011-08-19T13:28:45.337 回答