[ 
https://issues.apache.org/jira/browse/TINKERPOP3-660?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stephen mallette updated TINKERPOP3-660:
----------------------------------------
          Component/s:     (was: tinkergraph)
                       structure
          Description: 
The order of nodes and edges in a loaded GraphML file can cause load to fail, 
despite being allowed by GraphML. ("In GraphML there is no order defined for 
the appearance of node and edge elements." 
--http://graphml.graphdrawing.org/primer/graphml-primer.html#Graph)

I produced this issue using version '3.0.0.M8-incubating'.

The following test file fails to load. However, if the edge is listed last, 
then it loads properly.

{code}
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns";>
        <key id="labelE" for="edge" attr.name="labelE" attr.type="string"/>
        <key id="labelV" for="node" attr.name="labelV" attr.type="string"/>
   <gml:graph xmlns:gml="http://graphml.graphdrawing.org/xmlns";
              edgedefault="directed"
                          id="G">
      <gml:node id="id44427" label="id44427">
         <gml:data key="labelV">node</gml:data>
      </gml:node>
      <gml:edge id="1" source="id44427" target="id73895">
             <data key="labelE">created</data>
          </gml:edge>
      <gml:node id="id73895" label="id73895">
         <gml:data key="labelV">node</gml:data>
      </gml:node>
   </gml:graph>
</graphml>

I used the following code to load the graph.

import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
import groovy.transform.TypeChecked;
@TypeChecked
class Loader {
        public static void main( String[] args ) {
                Long startTime = System.currentTimeMillis();
                Graph graph = TinkerGraph.open();
                
graph.io().readGraphML("D:/Secure/sandbox/20150304_Graports/simple.graphml");
                System.out.println("done in " + 
(System.currentTimeMillis()-startTime)/1000 + " seconds.");
        }
}
{code}

The problem seems to be that the creation of the edge registers the related 
nodes as existing, and then when it gets to the edge it hits a uniqueness 
problem.


P.S. Please forgive any faux pas I may have made in submitting this issue. I'm 
new to this.

  was:
The order of nodes and edges in a loaded GraphML file can cause load to fail, 
despite being allowed by GraphML. ("In GraphML there is no order defined for 
the appearance of node and edge elements." 
--http://graphml.graphdrawing.org/primer/graphml-primer.html#Graph)

I produced this issue using version '3.0.0.M8-incubating'.

The following test file fails to load. However, if the edge is listed last, 
then it loads properly.

<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns";>
        <key id="labelE" for="edge" attr.name="labelE" attr.type="string"/>
        <key id="labelV" for="node" attr.name="labelV" attr.type="string"/>
   <gml:graph xmlns:gml="http://graphml.graphdrawing.org/xmlns";
              edgedefault="directed"
                          id="G">
      <gml:node id="id44427" label="id44427">
         <gml:data key="labelV">node</gml:data>
      </gml:node>
      <gml:edge id="1" source="id44427" target="id73895">
             <data key="labelE">created</data>
          </gml:edge>
      <gml:node id="id73895" label="id73895">
         <gml:data key="labelV">node</gml:data>
      </gml:node>
   </gml:graph>
</graphml>

I used the following code to load the graph.

import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
import groovy.transform.TypeChecked;
@TypeChecked
class Loader {
        public static void main( String[] args ) {
                Long startTime = System.currentTimeMillis();
                Graph graph = TinkerGraph.open();
                
graph.io().readGraphML("D:/Secure/sandbox/20150304_Graports/simple.graphml");
                System.out.println("done in " + 
(System.currentTimeMillis()-startTime)/1000 + " seconds.");
        }
}

The problem seems to be that the creation of the edge registers the related 
nodes as existing, and then when it gets to the edge it hits a uniqueness 
problem.


P.S. Please forgive any faux pas I may have made in submitting this issue. I'm 
new to this.

    Affects Version/s:     (was: 3.0.0.GA)
        Fix Version/s: 3.0.0.GA
             Assignee: stephen mallette

> GraphML load has order dependency
> ---------------------------------
>
>                 Key: TINKERPOP3-660
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-660
>             Project: TinkerPop 3
>          Issue Type: Bug
>          Components: structure
>         Environment: Windows 7
>            Reporter: John Whelan
>            Assignee: stephen mallette
>             Fix For: 3.0.0.GA
>
>
> The order of nodes and edges in a loaded GraphML file can cause load to fail, 
> despite being allowed by GraphML. ("In GraphML there is no order defined for 
> the appearance of node and edge elements." 
> --http://graphml.graphdrawing.org/primer/graphml-primer.html#Graph)
> I produced this issue using version '3.0.0.M8-incubating'.
> The following test file fails to load. However, if the edge is listed last, 
> then it loads properly.
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <graphml xmlns="http://graphml.graphdrawing.org/xmlns";>
>       <key id="labelE" for="edge" attr.name="labelE" attr.type="string"/>
>       <key id="labelV" for="node" attr.name="labelV" attr.type="string"/>
>    <gml:graph xmlns:gml="http://graphml.graphdrawing.org/xmlns";
>               edgedefault="directed"
>                         id="G">
>       <gml:node id="id44427" label="id44427">
>          <gml:data key="labelV">node</gml:data>
>       </gml:node>
>       <gml:edge id="1" source="id44427" target="id73895">
>            <data key="labelE">created</data>
>         </gml:edge>
>       <gml:node id="id73895" label="id73895">
>          <gml:data key="labelV">node</gml:data>
>       </gml:node>
>    </gml:graph>
> </graphml>
> I used the following code to load the graph.
> import 
> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
> import org.apache.tinkerpop.gremlin.structure.Graph;
> import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
> import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerFactory;
> import groovy.transform.TypeChecked;
> @TypeChecked
> class Loader {
>       public static void main( String[] args ) {
>               Long startTime = System.currentTimeMillis();
>               Graph graph = TinkerGraph.open();
>               
> graph.io().readGraphML("D:/Secure/sandbox/20150304_Graports/simple.graphml");
>               System.out.println("done in " + 
> (System.currentTimeMillis()-startTime)/1000 + " seconds.");
>       }
> }
> {code}
> The problem seems to be that the creation of the edge registers the related 
> nodes as existing, and then when it gets to the edge it hits a uniqueness 
> problem.
> P.S. Please forgive any faux pas I may have made in submitting this issue. 
> I'm new to this.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to