Вот улучшенная версия приема данных с использованием дней с эпохи.Скрипт для загрузки данных, но, похоже, не работает.
//Use case for datetimes working at the same company
//only for tinkerpop
graph=TinkerGraph.open()
g=graph.traversal()
//from here on common between neptune and tinkerpop//Setup started
//create vertexes//create a company Coca Cola
g.addV('company').property(id,'c1')
g.V('c1').property('name','Coca Cola')
g.V('c1').property('questId','10')//create a person Alice
g.addV('person').property(id,'p1')
g.V('p1').property('questId','1')
g.V('p1').property('name','Alice')
//create a person Bob
g.addV('person').property(id,'p2')
g.V('p2').property('questId','2')
g.V('p2').property('name','Bob')
//create a person Chris
g.addV('person').property(id,'p3')
g.V('p3').property('questId','3')
g.V('p3').property('name','Chris')
//create a person David
g.addV('person').property(id,'p4')
g.V('p4').property('questId','4')
g.V('p4').property('name','David')//create a person Emma
g.addV('person').property(id,'p5')
g.V('p5').property('questId','5')
g.V('p5').property('name','Emma')//create edges
//Coca Cola employes Alice
g.addE('employeed').from(g.V('c1')).to(g.V('p1')).property(id,'c1p1')
g.E('c1p1').property('fromDate',14253).next()
g.E('c1p1').property('toDate',17877).next()//create edges
//Coca Cola employes Bob
g.addE('employeed').from(g.V('c1')).to(g.V('p2')).property(id,'c1p2')
g.E('c1p2').property('fromDate',16751).next()//create edges
//Coca Cola employes Chris
g.addE('employeed').from(g.V('c1')).to(g.V('p3')).property(id,'c1p3')
g.E('c1p3').property('fromDate',17175).next()
g.E('c1p3').property('toDate',17905).next()//create edges
//Coca Cola employes Chris
g.addE('employeed').from(g.V('c1')).to(g.V('p4')).property(id,'c1p4')
g.E('c1p4').property('fromDate',13887).next()
g.E('c1p4').property('toDate',16809).next()//create edges
//Coca Cola employes Emma
g.addE('employeed').from(g.V('c1')).to(g.V('p5')).property(id,'c1p5')
g.E('c1p5').property('fromDate',16809).next()
Здесь приведен запрос, чтобы заставить людей работать в течение последних двух лет с перекрытием в 1 год.Я должен получить только Боб.
//Neptune
g.V().has('person','name','Alice').
inE('employeed').as('e1').outV().
outE('employeed').where(neq('e1')).as('e2').inV().
project('colleague','start','end').
by('name').
by(union(select('e1','e2').select(values).unfold().values('fromDate'),
constant(16877)).max()).
by(union(coalesce(select('e1').values('toDate'), constant(17972)),
coalesce(select('e2').values('toDate'), constant(17972))).min()).
filter(math('end-start').is(gte(365))).
select('colleague')