День Гремлин Недели для данной Даты - PullRequest
0 голосов
/ 02 сентября 2018

Я новичок в БД графов и на языке обхода графов Гремлин. У меня есть требование, когда клиентом, запустившим график, будет передана дата. Для заданной даты мне нужно сначала найти день недели и выполнить запрос к свойству вершины / ребра. Примечание: день недели будет ключом свойства в моем графе Vertex. например, Vertex (Retail Store) - свойства вершины будут отражать, открыт магазин или закрыт. [СОЛНЦЕ: ЗАКРЫТО, ПН: ОТКРЫТО, ВТ: ОТКРЫТО, СР: ОТКРЫТО, ЧТ: ОТКРЫТО, ПН: ОТКРЫТО, САТ: ОТКРЫТО]. Я также понимаю, что есть альтернативный способ решить эту проблему, попросив клиента передать дату и день недели - я хотел проверить возможность выполнения этого гремлина, поскольку у меня может быть сценарий использования для вычисления новой даты на основе пройденной даты и затем найдите день недели. Цени мысли.

1 Ответ

0 голосов
/ 04 сентября 2018

Gremlin как язык не имеет возможности вычислять день недели по дате, поэтому вам придется использовать лямбду для этого в самом Gremlin (который не всегда полностью совместим с все системы с поддержкой TinkerPop). Я думаю, что использование лямбды для этой цели, вероятно, приведет к некоторому довольно сложному виду Gremlin, потому что вы в основном создаете динамический ключ свойства, который ухудшит читабельность вашего кода, когда его можно обрабатывать гораздо проще.

Я думаю, что вы можете сделать это "намного проще", просто предварительно рассчитав день недели на своем родном языке программирования, а затем используя это значение в Gremlin. В Java это может выглядеть так (не проверено):

public String getStoreStatus(Date d, GraphTraversalSource g) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(d);
    String dayOfWeek = cal.getDisplayNames(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());

    return g.V().has('store','name','Target').values(dayOfWeek).next();
}
...