Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 29 2016 16:37
    Travis bio4j/angulillos (archive/clean/code/90) passed (221)
  • Oct 29 2016 16:35
    codacy-bot commented #90
  • Oct 29 2016 16:35

    eparejatobes on code

    (compare)

  • Oct 29 2016 16:35
    eparejatobes unlabeled #90
  • Oct 29 2016 16:35

    eparejatobes on clean

    (compare)

  • Oct 29 2016 16:35
    eparejatobes closed #90
  • Oct 29 2016 16:35

    eparejatobes on master

    remove unused Optional imports make schema error messages shor… Merge branch 'clean/code/90' (compare)

  • Oct 29 2016 16:34
    eparejatobes commented #90
  • Oct 29 2016 16:34
    eparejatobes commented #90
  • Oct 29 2016 16:33
    eparejatobes synchronize #90
  • Oct 29 2016 16:33

    eparejatobes on code

    make schema error messages shor… (compare)

  • Oct 29 2016 16:32
    Travis bio4j/angulillos@cb70f33 (clean/code/90) passed (218)
  • Oct 29 2016 16:31
    Travis bio4j/angulillos (archive/update/build/88) passed (217)
  • Oct 29 2016 16:31
    eparejatobes labeled #90
  • Oct 29 2016 16:31
    eparejatobes opened #90
  • Oct 29 2016 16:31

    eparejatobes on code

    remove unused Optional imports (compare)

  • Oct 29 2016 16:29

    eparejatobes on build

    (compare)

  • Oct 29 2016 16:29
    eparejatobes unlabeled #88
  • Oct 29 2016 16:29

    eparejatobes on update

    (compare)

  • Oct 29 2016 16:29
    eparejatobes closed #88
Eduardo Pareja Tobes
@eparejatobes
I don't know, I'm not a great fan of all this enterprisey terminology
Alexey Alekhin
@laughedelic
my point was just to refer to the things that people are already familiar with...
Eduardo Pareja Tobes
@eparejatobes
yes yes agreed
feel free to add something like "one way of understanding what angulillos does is as a kind of OGM blahblah"
to the readme
Alexey Alekhin
@laughedelic
ahm.. I don’t think I have enough competence in this to write it properly...
Eduardo Pareja Tobes
@eparejatobes
same for me!
but do it
:smile:
Alexey Alekhin
@laughedelic
okay… "_
Eduardo Pareja Tobes
@eparejatobes
the world belongs to those who dare
Alexey Alekhin
@laughedelic
:trollface:
Alexey Alekhin
@laughedelic
@eparejatobes hi.
so what's wrong with #54?
Eduardo Pareja Tobes
@eparejatobes
well
Eduardo Pareja Tobes
@eparejatobes
In general it's better to keep things at the graph level
it gives you a way of having one place where you can override behavior when needed
Alexey Alekhin
@laughedelic
but those methods are not essential, it's just convenience, what they do is: check that your argument edge has a certain arity, call .outE (which relies on the implementation in the graph) and just add .findFirst().get or whatever.
so in the changed code, if you want to change how .outE works, you just do in the graph as before. only implementation in the graph communicate with the raw untyped-graph.
Eduardo Pareja Tobes
@eparejatobes
Not really. If your untyped graph has something like "give me first vertex out of"
it's cleaner to do that on the graph class
vertices and edges shouldn't carry any behavior
everything should be done on the graph
Alexey Alekhin
@laughedelic
but in any untyped graph API this will be on the vertex
I don't see these methods as behaviour. as I wrote, they are just some shortcuts, that come from the way you defined your edges types.
Eduardo Pareja Tobes
@eparejatobes
it won't be on the vertex
just check the code of any graph db
it will be in the end directed to a transaction
Alexey Alekhin
@laughedelic
tell me how it is Titan? or in Tinkerpop API?
Eduardo Pareja Tobes
@eparejatobes
i.e. a graph
Alexey Alekhin
@laughedelic
I see TitanVertex.query() and what it inherits from tinkerpop: gremlin.structure.Vertex.edges()
when you imlpement it in angulillos-titan, you do it by using these methods on the (raw) source vertex.
Alexey Alekhin
@laughedelic
here these methods are in the end directed to the graph's .outE as well
but Titan doesn't expose an API for doing this from the graph (as there is no point in such API, because if you already have the source vertex, what's the point)
Eduardo Pareja Tobes
@eparejatobes
what do you mean?
all outV/in/whatever
is implemented by delegating to the tx = graph
for example
Alexey Alekhin
@laughedelic
I'm saying that
  • on the level of implementation, it's the same in #54 (everything is done through the graph)
  • and on the level of API, (as far as I see) you cannot do that in Titan from the graph

I don't see the point in this huge code duplication :neutral_face:

If we are talking about the current situation, we have only one half-baked implementation using Titan and it doesn't have any special API for retrieving edges according to their arity.

And if you are talking about extensibility for other implementations, then these methods should be in the untyped graph.

Eduardo Pareja Tobes
@eparejatobes
I don't see any code duplication
you can refine untyped graph later on and add them if needed
if you add them to the untyped graph you create more objects in this case
and again, the whole point is to have all behavior centralized
in the corresponding graph
Alexey Alekhin
@laughedelic
are you going to override these methods in a particular typed graph?
Eduardo Pareja Tobes
@eparejatobes
it's perfectly possible
Alexey Alekhin
@laughedelic
I think that implementations of TypedGraph shouldn't depend on a particular UntypedGraph backend
Eduardo Pareja Tobes
@eparejatobes
they could. There's no other way of doing ad-hoc polymorphism than through subclassing
Alexey Alekhin
@laughedelic
typed graph as well as typed vertex/edge, etc are just a way to declare the graph schema and use the API taking dvantage of this schema