In my Implementation every vertex has its own bags of "knowledge" (i.e. it
knows all tuples belonging to it..).
So in Vertex 1 I have a field (an HashMap) containing the following info:

   - type=Person
   - livesIn=2 (and I know also that 2 is a vertexId)

In Vertex 3 I know:

   - type=Place
   - name=Berlin
   - containedIn=4 (and I know also that 4 is a vertexId)

and so on..


On Wed, Jul 8, 2015 at 2:29 PM, Vasiliki Kalavri <vasilikikala...@gmail.com>
wrote:

> Hi Flavio,
>
> yes, I think it's possible. I have one question before I try to explain
> how:
> do you model "Rome", "Berlin", "101.3" etc. in your above example as
> separate vertices or as properties of vertices?
>
> On 8 July 2015 at 10:43, Flavio Pompermaier <pomperma...@okkam.it> wrote:
>
>> Let's say I have some nodes of some type of interest (type1 and type2).
>> My source data looks like <sourceNodeId, type, edgeName, destNodeId>.
>> For example, I could be interested in sourceNodes having type == Person
>> to gather the value obtained from the expansion of some paths (for
>> example livesIn.name and marriedTo.name). Notice that I could define other
>> paths of interest for different types.. (For nodes of type Place I could be
>> interested in gathering containedIn.name).
>> If my source data looks like:
>>
>> (1, Person, livesIn, 2)
>> (1, Person, livesIn, 3)
>> (2, Place, name, "Rome")
>> (2, Place, lat, 101.3)
>> (2, Place, long, 101.3)
>> (3, Place, name, "Berlin")
>> (3, Place, containedIn, 4)
>> (4, Country, name, "Germany")
>>
>> I'd like that node 1 (in the end) collect the following paths:
>>
>> livesIn.name : "Rome" (from node 2)
>> livesIn.name : "Berlin" (from node 3)
>> livesIn.containedIn.name: "Germany" (from node 4)
>> marriedTo.name : null because not married :)
>>
>> So, in my vertexCentricIteration each Vertex knows its neighbors (e.g.
>> node 1 knows that 2 and 3 should be queried for their "name" attribute).
>> If they receive a message asking for "name" from node 1 they have to
>> reply to node 1 with the value of that property.
>>
>> So in my implementation, I check whether my node has to send some query
>> to neighbors and wait for the response. The problem is that node 3 for
>> example, once queried for property containedIn.name from node 1 it just
>> have to forward this path to node 4 and thell to 4 to reply to 1.
>>
>> Is that possible?
>>
>>
>> On Wed, Jul 8, 2015 at 10:19 AM, Vasiliki Kalavri <
>> vasilikikala...@gmail.com> wrote:
>>
>>> Is it the same message that you propagate or is it different for each
>>> vertex / neighbor? If you have to store a <neighborID, msg> pair for each
>>> neighbor, then you will quickly run out of memory. If it's the same message
>>> you need to send, or you simply need to add the current vertex Id, then you
>>> can probably get rid of the neighborID.
>>>
>>> By "outbox" I believe you mean storing them in the vertex value, correct?
>>> I don't think you will have to explicitly reset it, as in each superstep
>>> vertices only receive messages sent in the previous superstep, i.e. "old"
>>> messages don't get re-sent.
>>> On Jul 8, 2015 9:48 AM, "Flavio Pompermaier" <pomperma...@okkam.it>
>>> wrote:
>>>
>>>> The problem is that my nodes have to gather data coming from some path
>>>> of interest along the graph (depending on the type of the node), otherwise
>>>> they just have to forward the received message adding their id to the
>>>> message path (more or less). It's like a postal tracking system.
>>>>
>>>> The problem is that I have to reset the "outbox" of each vertex once
>>>> the messages have been sent..
>>>> Do you think that it makes sense in this case to have an outbox of
>>>> messages (destination, message) in each vertex and reset it in the
>>>> postSuperstep() of the VertexUpdateFunction?
>>>>
>>>> On Wed, Jul 8, 2015 at 9:38 AM, Vasiliki Kalavri <
>>>> vasilikikala...@gmail.com> wrote:
>>>>
>>>>> Hi Flavio!
>>>>>
>>>>> Are you talking about vertex-centric iterations in gelly?
>>>>>
>>>>> If yes, you can send messages to a particular vertex with
>>>>> "sendMessageTo(vertexId, msg)" and
>>>>> to all neighbors with "sendMessageToAllNeighbors(msg)". These methods
>>>>> are available inside the MessagingFunction.
>>>>> Accessing received messages happens inside the VertexUpdateFunction.
>>>>> So, the usual way of writing these programs is to:
>>>>> (1) go through received messages in the VertexUpdateFunction and
>>>>> compute the new vertex value based them
>>>>> (2) compute and send messages in the MessagingFunction.
>>>>>
>>>>> Would that work in you case?
>>>>>
>>>>> Cheers,
>>>>> Vasia.
>>>>>
>>>>> On 8 July 2015 at 08:47, Flavio Pompermaier <pomperma...@okkam.it>
>>>>> wrote:
>>>>>
>>>>>>
>>>>>> Hi to all,
>>>>>> is there a way in gelly to forward received messages (and modify
>>>>>> their content before sending)?
>>>>>>
>>>>>> Best,
>>>>>> Flavio
>>>>>>
>>>>>>
>>>>>
>>>>
>>
>

Reply via email to