Hi,
the time-graph in the ruby-gem follows the standard approach. Its
documented on github.
You are walking horizontally through the grid. Therefor you have to start
at the day-class in order walk to a different day. On the year-level, the
adjacent node is another year.
Am Donnerstag, 9. Februar 2017 07:39:50 UTC+1 schrieb Borov:
>
> Does your time-grid has the same node structure as in my diagram? I like
> the idea of counting number of days in the range and do a traversal,
> however, if I start the traversal from the top (Year) node it will get me
> all months and days for the specified limit.
>
> How do I start from the specific day and go let say to the right
> (ascending order) to get next days until the counted limit of days reached?
> If I start from a specific day, I would have to traverse to its parent
> (Month) and then to that parent (Year) in order to traverse days
> horizontally, but it's the same as starting from the Year.
>
> For example, this traversal query get's me the 10 days, but how do I start
> from a specific day and go to the right to get the next day, etc.?
>
> select from (
> traverse out()
> from #217:6 // Year node
> maxdepth 2
> strategy BREADTH_FIRST
> )
> where $depth >= 2
> limit 10
>
>
> Or am I missing something here? Or my graph (per diagrams) is not correct?
>
>
>
> On Wednesday, February 8, 2017 at 1:40:31 AM UTC-8, hartmut bischoff wrote:
>>
>>
>>
>> Am Mittwoch, 8. Februar 2017 09:55:43 UTC+1 schrieb hartmut bischoff:
>>>
>>> In the ruby-gem I realized it in a different way.
>>> If you populated a time-grid correctly, you got exact one object per
>>> time-frame (ie. one per day). The days are connected via nodes.
>>> Thus - if you count the time-frames (days) between start and end of your
>>> time-range, you know the count of nodes to traverse.
>>>
>>> This is the ruby-method to get these elements:
>>>
>>> 85 def environment previous_items = 10, next_items = nil
>>> 86 next_items = previous_items if next_items.nil? # default :
>>> symmetric fetching
>>> 87
>>> 88 my_query = -> (count) { dir = count <0 ? 'in' : 'out';
>>> db.execute
>>> { "select from ( traverse #{dir}(\"grid_of\") from #{rrid} while
>>> $depth <= #{count.abs}) where $depth >=1 " } } # don't fetch self
>>> 89
>>> 90 prev_result = previous_items.zero? ? [] : my_query[
>>> -previous_items
>>> ]
>>> 91 next_result = next_items.zero? ? [] : my_query[ next_items ]
>>> 92
>>> 93 prev_result.reverse << self | next_result
>>> 94 end
>>>
>>>
>>> From the documentation:
>>>
>>>> Get the nearest horizontal neighbors
>>>>
>>>> Takes one or two parameters.
>>>>
>>>> (TG::TimeBase.instance).environment: count_of_previous_nodes,
>>>> count_of_future_nodes
>>>>
>>>> Default: return the previous and next 10 items
>>>>
>>>> "22.4.1967".to_tg.environment.datum
>>>> => ["12.4.1967", "13.4.1967", "14.4.1967", "15.4.1967", "16.4.1967",
>>>> "17.4.1967", "18.4.1967", "19.4.1967", …"20.4.1967", "21.4.1967",
>>>> "22.4.1967", "23.4.1967", "24.4.1967", "25.4.1967", "26.4.1967",
>>>> "27.4.1967", "28.4. …1967", "29.4.1967", "30.4.1967", "1.5.1967",
>>>> "2.5.1967"]
>>>>
>>>
>>>
>>> I am sure you can easily adapt to java
>>>
>>
>>
>> I just checked
>>
>> 2.4.0 :017 > t1 = Date.new 2015, 10, 15 # 10/15/2015 - 02/05/2017
>> => Thu, 15 Oct 2015
>> 2.4.0 :018 > t2 = Date.new 2017, 5, 2
>> => Tue, 02 May 2017
>> 2.4.0 :019 > date_range = t1.to_tg.environment(t2-t1)
>> (...)
>>
>>
>> 2.4.0 :020 > date_range.first ## inspect ruby-object
>> => #<TG::Tag:0x00000001d90188 @metadata={"type"=>"d", "class"=>"tag",
>> "version"=>4, "fieldTypes"=>"in_grid_of=g,out_grid_of=g,in_day_of=g",
>> "cluster"=>26, "record"=>10431, "edges"=>{"in"=>["grid_of", "day_of"],
>> "out"=>["grid_of"]}}, @d=nil, @attributes={"value"=>29,
>> "in_grid_of"=>["#49:10802"], "out_grid_of"=>["#50:10802"],
>> "in_day_of"=>["#42:10431"], "created_at"=>Wed, 08 Feb 2017 10:30:39 +0100}>
>> 2.4.0 :021 > date_range.last
>> => #<TG::Tag:0x000000044c4f88 @metadata={"type"=>"d", "class"=>"tag",
>> "version"=>4, "fieldTypes"=>"in_grid_of=g,out_grid_of=g,in_day_of=g",
>> "cluster"=>28, "record"=>10713, "edges"=>{"in"=>["grid_of", "day_of"],
>> "out"=>["grid_of"]}}, @d=nil, @attributes={"value"=>2,
>> "in_grid_of"=>["#52:11094"], "out_grid_of"=>["#49:11095"],
>> "in_day_of"=>["#44:10713"], "created_at"=>Wed, 08 Feb 2017 10:30:40 +0100}>
>> 2.4.0 :022 > date_range.last.datum ## datum is a method of TG::Tag
>> => "2.5.2017"
>>
>>
>> 2.4.0 :024 > date_range.size
>> => 1131
>>
>>
>>
>> seems it works as proposed
>>
>>
>
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.