Uploaded image for project: 'TinkerPop'
  1. TinkerPop
  2. TINKERPOP-2008

GraphML import / export causing duplicated edge IDs

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Not A Bug
    • Affects Version/s: 3.3.3
    • Fix Version/s: None
    • Component/s: io
    • Labels:
      None

      Description

      I could only reproduce the problem of duplicated IDs in the graph output after a query on the Gremlin console if it was a larger/complex input file and only if both GraphML import and export were being used.
      If I loaded the file as identical Gryo file the export was without duplication.

      I assume there are some thresholds/memory dumps where you might compare the RTM.

      There 7 edges with duplicate IDs in the following lines of the attached file
      'output__in_table-table_graphml.graphml'

      Line 736: Duplicate unique value [370] declared for identity constraint "edge_id_unique" of element "graph".
      Line 758: Duplicate unique value [374] declared for identity constraint "edge_id_unique" of element "graph".
      Line 783: Duplicate unique value [378] declared for identity constraint "edge_id_unique" of element "graph".
      Line 797: Duplicate unique value [382] declared for identity constraint "edge_id_unique" of element "graph".
      Line 818: Duplicate unique value [386] declared for identity constraint "edge_id_unique" of element "graph".
      Line 854: Duplicate unique value [390] declared for identity constraint "edge_id_unique" of element "graph".
      Line 887: Duplicate unique value [400] declared for identity constraint "edge_id_unique" of element "graph".

      In addition, the problem is related to the query. If I load and save the Graph immediately no edge problem occurs.

      See mail thread: https://groups.google.com/forum/#!searchin/gremlin-users/svante%7Csort:date/gremlin-users/P8MdzzlFtng/vYqYlukJAgAJ

      \,,,/
      (o o)
      ----oOOo(3)oOOo----
      plugin activated: tinkerpop.server
      plugin activated: tinkerpop.utilities
      plugin activated: tinkerpop.tinkergraph
      gremlin> graph = TinkerGraph.open()
      ==>tinkergraph[vertices:0 edges:0]
      gremlin> graph.io(IoCore.graphml()).readGraph("f:" + File.separator + "tmp" + File.separator + "table_table.graphml");
      ==>null
      gremlin> g = graph.traversal()
      ==>graphtraversalsource[tinkergraph[vertices:184 edges:183], standard]
      gremlin> g.V().has('label', "EPSILON").as('epsilonV').inE().as('e1').outV().
      ......1> where(__.outE().count().is(eq(2))).as('choiceV').
      ......2> outE().where(neq('e1')).as('e2').inV().as('optionalV').
      ......3> select('choiceV').inE().as('srcE').outV().as('srcV').
      ......4> addE('optional').to('optionalV').as('newE').
      ......5> sideEffect(select('srcE').properties().unfold().as('p').
      ......6> select('newE').property(select('p').key(), select('p').value())).
      ......7> union(select('srcE').drop(),
      ......8> select('e1').drop(),
      ......9> select('e2').drop(),
      .....10> select('epsilonV').drop(),
      .....11> select('choiceV').drop())
      gremlin> graph.io(IoCore.graphml()).writeGraph("f:" + File.separator + "tmp" + File.separator + "output__in_table-table_graphml.graphml");
      ==>null

        Attachments

        1. input_table_table.graphml
          44 kB
          Svante Schubert
        2. input_table_table.kryo
          20 kB
          Svante Schubert
        3. output__in_table-table_graphml.graphml
          29 kB
          Svante Schubert
        4. output__in_table-table_kyro.graphml
          29 kB
          Svante Schubert

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              svanteschubert Svante Schubert
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: