[ 
https://issues.apache.org/jira/browse/TINKERPOP-848?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17430480#comment-17430480
 ] 

ASF GitHub Bot commented on TINKERPOP-848:
------------------------------------------

spmallette commented on a change in pull request #1485:
URL: https://github.com/apache/tinkerpop/pull/1485#discussion_r731761779



##########
File path: 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/io/graphml/GraphMLReader.java
##########
@@ -138,9 +143,11 @@ public void readGraph(final InputStream graphInputStream, 
final Graph graphToWri
                         case GraphMLTokens.DATA:
                             final String key = reader.getAttributeValue(null, 
GraphMLTokens.KEY);
                             final String dataAttributeName = keyIdMap.get(key);
+                            final String defaultValue = defaultValues.get(key);
 
                             if (dataAttributeName != null) {
-                                final String value = reader.getElementText();
+                                String elementValue =  reader.getElementText();
+                                final String value = elementValue.length() == 
0 && defaultValue.length() != 0 ? defaultValue : elementValue;

Review comment:
       When I read the sentence you quoted:
   
   > There can be graph elements for which a GraphML-Attribute is defined but 
no value is declared by a corresponding data element. If a default value is 
defined for this GraphML-Attribute, then this default value is applied to the 
graph element.
   
   I can see how you might read it the way that you are, but I sense it was 
just loosely written. To get started, I'm fairly certain that the 
"GraphML-Attribute" referred to here is not `<data>`, but instead refers to 
`<node>` or `<edge>`.  The illustrative example that follows immediately after 
that sentence clarifies the behavior:
   
   > In the above example no value is defined for the node with identifier n1 
and the GraphML-Attribute with name color.
   
   where "n1" refers to:
   
   ```xml
   <key id="d0" for="node" attr.name="color" attr.type="string">
     <default>yellow</default>
   </key>
   ...
   <node id="n1"/>
   ```
   
   and:
   
   > Therefore this GraphML-Attribute has the default value, yellow for this 
node.
   
   The section finishes by discussing how a property value is left undefined, 
which fits this model as well. Taken all together, I think the behavior 
described by the example is the intended one, no?
   
   




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@tinkerpop.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> Support default attribute values in GraphMLReader
> -------------------------------------------------
>
>                 Key: TINKERPOP-848
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-848
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: io
>    Affects Versions: 3.0.2-incubating
>            Reporter: Pavel Klinov
>            Priority: Trivial
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> Looking at the code of GraphMLReader I see that it doesn't support default 
> values of attributes, which are allowed by the GraphML spec. This is a bit 
> annoying especially if the input defines default values for attributes which 
> are used for mandatory data, e.g. edge labels. 
> One small example is the sample graph at [1]. "d_e" is the label attribute 
> with a default value. There're <edge .. /> elements w/o body later in the 
> document and reading those will throw a "java.lang.IllegalArgumentException: 
> Label can not be null" exception (if the vendor considers edge labels 
> mandatory).
> I'd personaly squash both keyIdMap and keyTypesMap into a single String -> 
> AttrInfo map, where AttrInfo would contain information about the data 
> attribute name, type, and the default value.
> [1] http://www.eecs.wsu.edu/~yyao/DirectedStudyI/Datasets/AS/sample.graphml



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to