Исключение результатов MQL при отражении any_reverse - PullRequest
3 голосов
/ 18 августа 2011

Я пытаюсь получить все события в гео-ограничительной рамке (которая приблизительно охватывает Францию), но я хочу исключить все повторяющиеся события, чтобы не получать кучу открытий французского тенниса и тому подобное.Для этого я использовал в своем запросе следующее:

"/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 года из моего списка.Имеет ли это смысл?

Попробуйте здесь для редактора запросов.

Спасибо за любую помощь!

1 Ответ

1 голос
/ 19 августа 2011

Попробуйте это: 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 говорит «не возвращать это предложение вообще в результатах». Я думаю, что вам все еще нужна середина, потому что у вас должно быть хотя бы одно свойство в предложении, которое имеет другие директивы (в этом случае предельное и необязательное).

...