Hi Luca
I quickly modified OGraphBatchInsert class and added a support for
multiple Edge class names. Now, I can see my Edges in the proper fields of
a given Vortex.
Would you tell me where is the latest version of this Java code? I am not
sure if I got the latest.
Also, I randomly get Timer exceptions and database seem to close. Why is
this ?
On Friday, December 12, 2014 10:41:58 AM UTC-5, Emin Agassi wrote:
>
>
> I think I know what is going on in this code. Basically, this class links
> all Edges to a given Vertex using either IN and OUT properties or only one
> specified Edge Class name. So, all edges end up being linked to only one
> property.
> That property ends up having a large collection of edges. In my case this
> collection must be filtered when traversing happens but this is not
> possible.
> The only method I found was to traverse all and then filter by @class but
> that does not work for all use cases.
> Hmmm. Blueprints Graph Api is much more versatile in this respect.
>
> On Friday, December 12, 2014 9:50:19 AM UTC-5, Emin Agassi wrote:
>>
>> Luca
>>
>> Just to clarify a bit. I like the new BatchInsert class because it is
>> much faster than Blueprints version. My very big graph (1.5 million
>> vertexes and 3+ million edges) load in minutes.
>> However, this class creates Edges that all end up being in one big OUT or
>> IN collection. Filtering edges in these collections while traversing a
>> graph is not very simple.
>> In a normal case when edges are created using SQL or Blueprints API, all
>> edges end up being named fields in the OUT or IN collections. This makes it
>> easy to write traversal SQL using the out('isA') or in('SAMEAS')
>> syntax. Do you know any other method to efficiently filter Edges in the
>> OUT and IN collections in a given Vertex without having explicit names.
>> Each of my edges have a property.
>>
>> Thanks for help!
>>
>> On Friday, December 12, 2014 9:05:55 AM UTC-5, Emin Agassi wrote:
>>>
>>> Luca
>>>
>>> Thanks. I wonder if I can quickly patch up that class to do what I need
>>> it to do. Not sure how long it will take for you guys to get to this.
>>> I actually was able to pass in the @class property and it does create
>>> Edges using the passed in classes But it does not create lightweight edges
>>> and so they do not have Labels associated with them.
>>> Interestingly, without labels it is not easy to traverse the Edges. I
>>> did not realize this before. The lightweight edges are much faster and
>>> easier to traverse. In fact, I am finding that the SQL syntax such as:
>>>
>>> out('xxxx')
>>>
>>> only works when Edges have class labels which I think it only happens
>>> with lightweight edges.
>>> Surely, I can use the following SQL to traverse:
>>>
>>> select expand(in) from ( traverse * from #10:0) where @class='isA'
>>>
>>> But the above is not as efficient as:
>>>
>>> traverse out('isA') from #10:0
>>>
>>> I am still a bit confused by how the BatchInser works. When I create an
>>> edge which extends the E using the SQL and with properties, it creates the
>>> new Edge and it has a label.
>>> But when BatchInsert creates the edge with the class, it does not get a
>>> Label. Can you point me to what might be the problem?
>>> here is the code that creates the Edge in the OGraphBatchInsert class:
>>>
>>>
>>> public void createEdge(final Long from, final Long to, Map<String,
>>> Object> properties) { if (settingProperties) { throw new
>>> IllegalStateException("Cannot create new edges when already set
>>> properties on vertices"); } if (from < 0) { throw new
>>> IllegalArgumentException(" Invalid vertex id: " + from); } if (to < 0)
>>> { throw new IllegalArgumentException(" Invalid vertex id: " + to); }
>>> if (useLightWeigthEdges && (properties == null || properties.size() == 0))
>>> { last = last < from ? from : last; last = last < to ? to : last;
>>> putInList(from,
>>> out, to); putInList(to, in, from); } else { ODocument edgeDoc = new
>>> ODocument(edgeClass);
>>> edgeDoc.fromMap(properties); edgeDoc.field("out", new
>>> ORecordId(getClusterId(from),
>>> getClusterPosition(from))); edgeDoc.field("in", new
>>> ORecordId(getClusterId(to),
>>> getClusterPosition(to))); db.save(edgeDoc); ORecordId rid = (ORecordId)
>>> edgeDoc.getIdentity(); putInList(from, out, rid); putInList(to, in,
>>> rid); } }
>>>
>>> How do I open the issue? Where do I go for this?
>>>
>>> On Friday, December 12, 2014 5:45:31 AM UTC-5, Lvc@ wrote:
>>>>
>>>> Hi Emin,
>>>> That API is quite raw. I know Luigi is working to extend it, but this
>>>> is not a so high priority now (we're under release of 2.0rc1).
>>>>
>>>> Please could you open a new issue on that?
>>>>
>>>> Lvc@
>>>>
>>>>
>>>> On 12 December 2014 at 03:52, Emin Agassi <[email protected]> wrote:
>>>>
>>>>>
>>>>> I found a setEdgeClass method in the OGraphBatchInsert class which
>>>>> allows to set the class name for all edges.However, I need to be able to
>>>>> set different classes for different edges.
>>>>> I am passing a @class property to the addEdge method but this does
>>>>> not work.
>>>>> Can anyone help?
>>>>>
>>>>>
>>>>> On Thursday, December 11, 2014 10:09:22 AM UTC-5, Emin Agassi wrote:
>>>>>>
>>>>>> Hi Luca,
>>>>>>
>>>>>> The OGraphBatchInsert class contains a createEdge method which does
>>>>>> not allow to create an Edge with a default label set.
>>>>>> Is there a method to provide a default label for the E edges?
>>>>>>
>>>>>> I do not want to create any additional properties on the Edges that I
>>>>>> am creating.
>>>>>> Default labels on the Edges allows very easy edge traversals.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>> --
>>>>>
>>>>> ---
>>>>> 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.
>>>>>
>>>>
>>>>
--
---
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.