From 97f31d195d681edfe850c52aa4c235c29717f07e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Szeremeta?= Date: Thu, 12 Aug 2021 17:00:55 +0200 Subject: [PATCH] All primitive values are STRING, prefix is doc metadata --- other-notations/YARSpg.ebnf | 61 ++------- yarspg/YARSpg.g4 | 117 ++-------------- yarspg/examples/1-real-example-data.yarspg | 14 +- yarspg/examples/2-real-example-schema.yarspg | 14 +- .../examples/3-real-example-metadata.yarspg | 22 ++- .../4-real-example-metaproperties.yarspg | 20 ++- .../examples/5-real-example-variables.yarspg | 20 ++- .../canonical-3-real-example-metadata.yarspg | 16 +-- yarspg/examples/features-overview.yarspg | 32 +++-- yarspg/examples/test-example.yarspg | 127 +++++++++--------- 10 files changed, 150 insertions(+), 293 deletions(-) diff --git a/other-notations/YARSpg.ebnf b/other-notations/YARSpg.ebnf index b9a3d16..ca80ffa 100644 --- a/other-notations/YARSpg.ebnf +++ b/other-notations/YARSpg.ebnf @@ -37,7 +37,6 @@ yarspg ::= statement* statement ::= node | edge - | prefix_directive | doc_metadata | var_declaration | node_schema @@ -46,12 +45,8 @@ statement | section | graph | graphs_schema -prefix_directive - ::= pname IRI -pname ::= ':' ALNUM_PLUS ':' -pn_local ::= ALNUM_PLUS doc_metadata - ::= '-' '[' ((pn_local pname) | (IRI ":")) (STRING | IRI) ']' + ::= '-' prop_list var ::= '$' var_name var_declaration ::= var '=' prop ( ',' prop )* @@ -61,30 +56,23 @@ var_name ::= ALNUM_PLUS graph_id ::= ALNUM_PLUS local_metadata - ::= string_local_metadata - | rdf_local_metadata -string_local_metadata - ::= key ':' STRING -rdf_local_metadata - ::= ((pn_local pname) | (IRI ':')) (STRING | IRI) -local_metadata_list - ::= '+' '[' local_metadata (',' local_metadata)* ']' -props_list + ::= '+' prop_list +prop_list ::= ( '[' ( ( prop | var ) ( ',' ( prop | var ) )* )? ']' )? meta_prop ::= '@' key ':' value graphs_list ::= '/' graph_id (',' graph_id)* '/' -graph ::= '/' graph_id '/' ( '{' ( graph_label ( ',' graph_label )* )? '}' )? props_list? +graph ::= '/' graph_id '/' ( '{' ( graph_label ( ',' graph_label )* )? '}' )? prop_list? node - ::= '(' node_id ( '{' ( node_label ( ',' node_label )* )? '}' )? props_list? ')' graphs_list? local_metadata_list? + ::= '(' node_id ( '{' ( node_label ( ',' node_label )* )? '}' )? prop_list? ')' graphs_list? local_metadata? edge ::= directed | undirected section ::= '%' SECTION_NAME -directed ::= '(' node_id ')' '-' '(' edge_id? ( '{' ( edge_label ( ',' edge_label )* )? '}' )? props_list? ')' '->' '(' node_id ')' graphs_list? local_metadata_list? +directed ::= '(' node_id ')' '-' '(' edge_id? ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list? ')' '->' '(' node_id ')' graphs_list? local_metadata? undirected - ::= '(' node_id ')' '-' '(' edge_id? ( '{' ( edge_label ( ',' edge_label )* )? '}' )? props_list? ')' '-' '(' node_id ')' graphs_list? local_metadata_list? + ::= '(' node_id ')' '-' '(' edge_id? ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list? ')' '-' '(' node_id ')' graphs_list? local_metadata? node_id ::= ALNUM_PLUS node_label ::= STRING @@ -99,10 +87,6 @@ value ::= primitive_value | complex_value primitive_value ::= STRING - | DATETYPE - | number - | BOOL - | 'null' complex_value ::= set | list @@ -111,7 +95,7 @@ set ::= '{' ( primitive_value | set ) meta_prop* ( ',' ( primitive_value | list ::= '[' ( primitive_value | list ) meta_prop* ( ',' ( primitive_value | list ) meta_prop* )* ']' struct ::= '{' key ':' ( primitive_value | struct ) meta_prop* ( ',' key ':' ( primitive_value | struct ) meta_prop* )* '}' node_schema - ::= 'S' '(' node_id_schema ( '{' ( node_label ( ',' node_label )* )? '}' )? prop_list_schema? ')' graphs_list? local_metadata_list? + ::= 'S' '(' node_id_schema ( '{' ( node_label ( ',' node_label )* )? '}' )? prop_list_schema? ')' graphs_list? local_metadata? node_id_schema ::= ALNUM_PLUS prop_list_schema @@ -158,15 +142,11 @@ edge_schema ::= directed_schema | undirected_schema directed_schema - ::= 'S' '(' node_id_schema ')' '-' ( '(' ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list_schema? ')' )? '->' '(' node_id_schema ')' graphs_list? local_metadata_list? + ::= 'S' '(' node_id_schema ')' '-' ( '(' ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list_schema? ')' )? '->' '(' node_id_schema ')' graphs_list? local_metadata? undirected_schema - ::= 'S' '(' node_id_schema ')' '-' ( '(' ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list_schema? ')' )? '-' '(' node_id_schema1 ')' graphs_list? local_metadata_list? + ::= 'S' '(' node_id_schema ')' '-' ( '(' ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list_schema? ')' )? '-' '(' node_id_schema1 ')' graphs_list? local_metadata? graph_schema ::= 'S' '/' graph_id '/' prop_list_schema? -number ::= UNSIGNED_INT - | SIGNED_INT - | DECIMAL - | DOUBLE SECTION_NAME ::= 'GRAPH' | 'METADATA' @@ -175,35 +155,16 @@ SECTION_NAME | 'NODES' | 'EDGES' COMMENT ::= '#' [^#xd#xa#xc]* -STRING ::= STRING_LITERAL_QUOTE +STRING ::= '"' ([^"\#xd#xa] | "'" | '\"')* '"' UNSIGNED_INT ::= [0-9]* -SIGNED_INT - ::= SIGN [0-9]* -DECIMAL ::= SIGN? [0-9]* '.' [0-9]+ -DOUBLE ::= SIGN? ([0-9]+ '.' [0-9]* EXPONENT | '.' [0-9]+ EXPONENT | [0-9]+ EXPONENT) -EXPONENT ::= [eE] SIGN? [0-9]+ -BOOL ::= 'true' - | 'false' -DATETYPE ::= DATETIME - | DATE - | TIME -DATE ::= '-'? [0-9][0-9][0-9][0-9] '-' [0-9][0-9] '-' [0-9][0-9] TIMEZONE? -TIME ::= [0-9][0-9] ':' [0-9][0-9] ':' [0-9][0-9] ('.' [0-9]+)? TIMEZONE? -TIMEZONE ::= SIGN? [0-9] [0-9] ':' [0-9] [0-9] -DATETIME - ::= '-'? [0-9][0-9][0-9][0-9] '-' [0-9][0-9] '-' [0-9][0-9] 'T' [0-9][0-9] ':' [0-9][0-9] ':' [0-9][0-9] ('.' [0-9]+)? TIMEZONE? -STRING_LITERAL_QUOTE - ::= '"' ([^"\#xd#xa] | "'" | '\"')* '"' ALNUM_PLUS ::= PN_CHARS_BASE ((PN_CHARS | '.')* PN_CHARS)? -IRI ::= '<' (PN_CHARS | '.' | ':' | '/' | '\' | '#' | '@' | '%' | '&' | UCHAR)* '>' PN_CHARS ::= PN_CHARS_U | [-0-9#xB7#x0300-#x036F#x203F-#x2040] PN_CHARS_U ::= PN_CHARS_BASE | '_' -UCHAR ::= ('\u' | '\U' HEX HEX HEX HEX) HEX HEX HEX HEX PN_CHARS_BASE ::= [A-Za-z0-9#xC0-#xD6#xD8-#xF6#xF8-#x2FF#x370-#x37D#x37F-#x1FFF#x200C-#x200D#x2070-#x218F#x2C00-#x2FEF#x3001-#xD7FF#xF900-#xFDCF#xFDF0-#xFFFD] HEX ::= [0-9A-Fa-f] diff --git a/yarspg/YARSpg.g4 b/yarspg/YARSpg.g4 index 3e11b90..c88ced2 100644 --- a/yarspg/YARSpg.g4 +++ b/yarspg/YARSpg.g4 @@ -33,7 +33,6 @@ yarspg statement : node | edge - | prefix_directive | doc_metadata | var_declaration | node_schema @@ -44,20 +43,8 @@ statement | graph_schema ; -prefix_directive - : pname IRI - ; - -pname - : ':' ALNUM_PLUS ':' - ; - -pn_local - : ALNUM_PLUS - ; - doc_metadata - : '-' '[' ((pn_local pname) | (IRI ':')) (STRING | IRI) ']' + : '-' prop_list ; var @@ -81,23 +68,10 @@ graph_id ; local_metadata - : string_local_metadata - | rdf_local_metadata - ; - -string_local_metadata - : key ':' STRING - ; - -rdf_local_metadata - : ((pn_local pname) | (IRI ':')) (STRING | IRI) + : '+' prop_list ; -local_metadata_list - : '+' '[' local_metadata (',' local_metadata)* ']' - ; - -props_list +prop_list : '[' ( ( prop | var ) (',' ( prop | var ) )* )? ']' ; @@ -110,11 +84,11 @@ graphs_list ; graph - : '/' graph_id '/' ( '{' ( graph_label ( ',' graph_label )* )? '}' )? props_list? + : '/' graph_id '/' ( '{' ( graph_label ( ',' graph_label )* )? '}' )? prop_list? ; node - : '(' node_id ( '{' ( node_label ( ',' node_label )* )? '}' )? props_list? ')' graphs_list? local_metadata_list? + : '(' node_id ( '{' ( node_label ( ',' node_label )* )? '}' )? prop_list? ')' graphs_list? local_metadata? ; edge @@ -127,11 +101,11 @@ section ; directed - : '(' node_id ')' '-' '(' edge_id? ( '{' ( edge_label ( ',' edge_label )* )? '}' )? props_list? ')' '->' '(' node_id ')' graphs_list? local_metadata_list? + : '(' node_id ')' '-' '(' edge_id? ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list? ')' '->' '(' node_id ')' graphs_list? local_metadata? ; undirected - : '(' node_id ')' '-' '(' edge_id? ( '{' ( edge_label ( ',' edge_label )* )? '}' )? props_list? ')' '-' '(' node_id ')' graphs_list? local_metadata_list? + : '(' node_id ')' '-' '(' edge_id? ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list? ')' '-' '(' node_id ')' graphs_list? local_metadata? ; node_id @@ -169,10 +143,6 @@ value primitive_value : STRING - | DATETYPE - | number - | BOOL - | 'null' ; complex_value @@ -194,7 +164,7 @@ struct ; node_schema - : 'S' '(' node_id_schema ( '{' ( node_label ( ',' node_label )* )? '}' )? prop_list_schema? ')' graphs_list? local_metadata_list? + : 'S' '(' node_id_schema ( '{' ( node_label ( ',' node_label )* )? '}' )? prop_list_schema? ')' graphs_list? local_metadata? ; node_id_schema @@ -278,24 +248,17 @@ edge_schema ; directed_schema - : 'S' '(' node_id_schema ')' '-' ( '(' ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list_schema? ')' )? '->' '(' node_id_schema ')' graphs_list? local_metadata_list? + : 'S' '(' node_id_schema ')' '-' ( '(' ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list_schema? ')' )? '->' '(' node_id_schema ')' graphs_list? local_metadata? ; undirected_schema - : 'S' '(' node_id_schema ')' '-' ( '(' ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list_schema? ')' )? '-' '(' node_id_schema ')' graphs_list? local_metadata_list? + : 'S' '(' node_id_schema ')' '-' ( '(' ( '{' ( edge_label ( ',' edge_label )* )? '}' )? prop_list_schema? ')' )? '-' '(' node_id_schema ')' graphs_list? local_metadata? ; graph_schema : 'S' '/' graph_id '/' prop_list_schema? ; -number - : UNSIGNED_INT - | SIGNED_INT - | DECIMAL - | DOUBLE - ; - SECTION_NAME : 'GRAPH' | 'METADATA' @@ -310,71 +273,17 @@ COMMENT ; STRING - : STRING_LITERAL_QUOTE + : '"' (~ ["\\\r\n] | '\'' | '\\"')* '"' ; UNSIGNED_INT : [0-9]+ ; -SIGNED_INT - : SIGN [0-9]+ - ; - -DECIMAL - : SIGN? [0-9]* '.' [0-9]+ - ; - -DOUBLE - : SIGN? ([0-9]+ '.' [0-9]* EXPONENT | '.' [0-9]+ EXPONENT | [0-9]+ EXPONENT) - ; - -EXPONENT - : [eE] SIGN? [0-9]+ - ; - -BOOL - : 'true' - | 'false' - ; - -DATETYPE - : DATETIME | DATE | TIME - ; - -DATE - : '-'? [0-9][0-9][0-9][0-9] '-' [0-9][0-9] '-' [0-9][0-9] TIMEZONE? - ; - -TIME - : [0-9][0-9] ':' [0-9][0-9] ':' [0-9][0-9] ('.' [0-9]+)? TIMEZONE? - ; - -TIMEZONE - : SIGN? [0-9][0-9] ':' [0-9][0-9] - ; - -DATETIME - : '-'? [0-9][0-9][0-9][0-9] '-' [0-9][0-9] '-' [0-9][0-9] 'T' [0-9][0-9] ':' [0-9][0-9] ':' [0-9][0-9] ('.' [0-9]+)? TIMEZONE? - ; - -SIGN - : '+' - | '-' - ; - -STRING_LITERAL_QUOTE - : '"' (~ ["\\\r\n] | '\'' | '\\"')* '"' - ; - ALNUM_PLUS : PN_CHARS_BASE ((PN_CHARS | '.')* PN_CHARS)? ; -IRI - : '<' (PN_CHARS | '.' | ':' | '/' | '\\' | '#' | '@' | '%' | '&' | UCHAR)* '>' - ; - PN_CHARS : PN_CHARS_U | '-' | [0-9] | '\u00B7' | [\u0300-\u036F] | [\u203F-\u2040] ; @@ -383,10 +292,6 @@ PN_CHARS_U : PN_CHARS_BASE | '_' ; -UCHAR - : '\\u' HEX HEX HEX HEX | '\\U' HEX HEX HEX HEX HEX HEX HEX HEX - ; - PN_CHARS_BASE : 'A' .. 'Z' | 'a' .. 'z' | '0' .. '9' | '\u00C0' .. '\u00D6' | '\u00D8' .. '\u00F6' | '\u00F8' .. '\u02FF' | '\u0370' .. '\u037D' | '\u037F' .. '\u1FFF' | '\u200C' .. '\u200D' | '\u2070' .. '\u218F' | '\u2C00' .. '\u2FEF' | '\u3001' .. '\uD7FF' | '\uF900' .. '\uFDCF' | '\uFDF0' .. '\uFFFD' ; diff --git a/yarspg/examples/1-real-example-data.yarspg b/yarspg/examples/1-real-example-data.yarspg index ae56944..5158146 100644 --- a/yarspg/examples/1-real-example-data.yarspg +++ b/yarspg/examples/1-real-example-data.yarspg @@ -1,15 +1,15 @@ # Nodes (Author01 {"Author"}["fname": "John", "lname": "Smith"]) #Author01 (Author02 {"Author"}["fname": "Alice", "lname": "Brown"]) -(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": 10, "keyword": "Graph database"]) -(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": 10, "keyword": ["Query", "Graph"]]) -(Proc01 {"Proceedings"}["title": "BDAS", "year": 2018, "month": "May"]) -(Jour01 {"Journal"}["title": "J. DB", "year": 2020, "vol": 30]) +(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": "10", "keyword": "Graph database"]) +(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": "10", "keyword": ["Query", "Graph"]]) +(Proc01 {"Proceedings"}["title": "BDAS", "year": "2018", "month": "May"]) +(Jour01 {"Journal"}["title": "J. DB", "year": "2020", "vol": "30"]) # Edges -(EI01)-({"has_author"}["order": 1])->(Author01) -(EI01)-({"has_author"}["order": 2])->(Author02) -(EA01)-({"has_author"}["order": 1])->(Author02) +(EI01)-({"has_author"}["order": "1"])->(Author01) +(EI01)-({"has_author"}["order": "2"])->(Author02) +(EA01)-({"has_author"}["order": "1"])->(Author02) (EA01)-({"cites"})->(EI01) (EI01)-({"booktitle"}["pages": "111-121"])->(Proc01) (EA01)-({"published_in"}["pages": "222-232"])->(Jour01) \ No newline at end of file diff --git a/yarspg/examples/2-real-example-schema.yarspg b/yarspg/examples/2-real-example-schema.yarspg index a59102c..b1676c7 100644 --- a/yarspg/examples/2-real-example-schema.yarspg +++ b/yarspg/examples/2-real-example-schema.yarspg @@ -14,15 +14,15 @@ S(NS3)-({"published_in"}["pages": String])->(NS5) # Nodes (Author01 {"Author"}["fname": "John", "lname": "Smith"]) #Author01 (Author02 {"Author"}["fname": "Alice", "lname": "Brown"]) -(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": 10, "keyword": "Graph database"]) -(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": 10, "keyword": ["Query", "Graph"]]) -(Proc01 {"Proceedings"}["title": "BDAS", "year": 2018, "month": "May"]) -(Jour01 {"Journal"}["title": "J. DB", "year": 2020, "vol": 30]) +(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": "10", "keyword": "Graph database"]) +(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": "10", "keyword": ["Query", "Graph"]]) +(Proc01 {"Proceedings"}["title": "BDAS", "year": "2018", "month": "May"]) +(Jour01 {"Journal"}["title": "J. DB", "year": "2020", "vol": "30"]) # Edges -(EI01)-({"has_author"}["order": 1])->(Author01) -(EI01)-({"has_author"}["order": 2])->(Author02) -(EA01)-({"has_author"}["order": 1])->(Author02) +(EI01)-({"has_author"}["order": "1"])->(Author01) +(EI01)-({"has_author"}["order": "2"])->(Author02) +(EA01)-({"has_author"}["order": "1"])->(Author02) (EA01)-({"cites"})->(EI01) (EI01)-({"booktitle"}["pages": "111-121"])->(Proc01) (EA01)-({"published_in"}["pages": "222-232"])->(Jour01) \ No newline at end of file diff --git a/yarspg/examples/3-real-example-metadata.yarspg b/yarspg/examples/3-real-example-metadata.yarspg index 588a7d0..48aa46d 100644 --- a/yarspg/examples/3-real-example-metadata.yarspg +++ b/yarspg/examples/3-real-example-metadata.yarspg @@ -1,8 +1,6 @@ -# Prefix declaration -:foaf: - -# Metadata --[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk"] +# Metadata +-[":foaf": ""] +-["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk"] # Node schema S(NS1 {"Author"}["fname": String, "lname": String])+["created": "yesterday"] @@ -20,15 +18,15 @@ S(NS3)-({"published_in"}["pages": String])->(NS5) # Nodes (Author01 {"Author"}["fname": "John", "lname": "Smith"]) #Author01 (Author02 {"Author"}["fname": "Alice", "lname": "Brown"]) -(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": 10, "keyword": "Graph database"]) -(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": 10, "keyword": ["Query", "Graph"]]) -(Proc01 {"Proceedings"}["title": "BDAS", "year": 2018, "month": "May"]) -(Jour01 {"Journal"}["title": "J. DB", "year": 2020, "vol": 30]) +(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": "10", "keyword": "Graph database"]) +(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": "10", "keyword": ["Query", "Graph"]]) +(Proc01 {"Proceedings"}["title": "BDAS", "year": "2018", "month": "May"]) +(Jour01 {"Journal"}["title": "J. DB", "year": "2020", "vol": "30"]) # Edges -(EI01)-({"has_author"}["order": 1])->(Author01) -(EI01)-({"has_author"}["order": 2])->(Author02) -(EA01)-({"has_author"}["order": 1])->(Author02) +(EI01)-({"has_author"}["order": "1"])->(Author01) +(EI01)-({"has_author"}["order": "2"])->(Author02) +(EA01)-({"has_author"}["order": "1"])->(Author02) (EA01)-({"cites"})->(EI01) (EI01)-({"booktitle"}["pages": "111-121"])->(Proc01) (EA01)-({"published_in"}["pages": "222-232"])->(Jour01) \ No newline at end of file diff --git a/yarspg/examples/4-real-example-metaproperties.yarspg b/yarspg/examples/4-real-example-metaproperties.yarspg index a60ad3b..b34eeb9 100644 --- a/yarspg/examples/4-real-example-metaproperties.yarspg +++ b/yarspg/examples/4-real-example-metaproperties.yarspg @@ -1,8 +1,6 @@ -# Prefix declaration -:foaf: - # Metadata --[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk"] +-[":foaf": ""] +-["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk"] # Node schema S(NS1 {"Author"}["fname": String, "lname": String])+["created": "yesterday"] @@ -20,15 +18,15 @@ S(NS3)-({"published_in"}["pages": String])->(NS5) # Nodes (Author01 {"Author"}["fname": "John", "lname": "Smith"]) #Author01 (Author02 {"Author"}["fname": "Alice", "lname": "Brown"]) -(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": 10, "keyword": "Graph database"]) -(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": 10, "keyword": ["Query", "Graph"]]) -(Proc01 {"Proceedings"}["title": "BDAS", "year": 2018, "month": "May" @"season": "spring"]) -(Jour01 {"Journal"}["title": "J. DB", "year": 2020 @"date": 2020-06-16, "vol": 30]) +(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": "10", "keyword": "Graph database"]) +(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": "10", "keyword": ["Query", "Graph"]]) +(Proc01 {"Proceedings"}["title": "BDAS", "year": "2018", "month": "May" @"season": "spring"]) +(Jour01 {"Journal"}["title": "J. DB", "year": "2020" @"date": "2020-06-16", "vol": "30"]) # Edges -(EI01)-({"has_author"}["order": 1])->(Author01) -(EI01)-({"has_author"}["order": 2])->(Author02) -(EA01)-({"has_author"}["order": 1])->(Author02) +(EI01)-({"has_author"}["order": "1"])->(Author01) +(EI01)-({"has_author"}["order": "2"])->(Author02) +(EA01)-({"has_author"}["order": "1"])->(Author02) (EA01)-({"cites"})->(EI01) (EI01)-({"booktitle"}["pages": "111-121"])->(Proc01) (EA01)-({"published_in"}["pages": "222-232"])->(Jour01) \ No newline at end of file diff --git a/yarspg/examples/5-real-example-variables.yarspg b/yarspg/examples/5-real-example-variables.yarspg index 6291560..779165a 100644 --- a/yarspg/examples/5-real-example-variables.yarspg +++ b/yarspg/examples/5-real-example-variables.yarspg @@ -1,8 +1,6 @@ -# Prefix declaration -:foaf: - # Metadata --[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk"] +-[":foaf": ""] +-["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk"] # Variable $title_numpages = "title": String, "numpages": Integer @@ -23,15 +21,15 @@ S(NS3)-({"published_in"}["pages": String])->(NS5) # Nodes (Author01 {"Author"}["fname": "John", "lname": "Smith"]) #Author01 (Author02 {"Author"}["fname": "Alice", "lname": "Brown"]) -(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": 10, "keyword": "Graph database"]) -(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": 10, "keyword": ["Query", "Graph"]]) -(Proc01 {"Proceedings"}["title": "BDAS", "year": 2018, "month": "May"]) -(Jour01 {"Journal"}["title": "J. DB", "year": 2020 @"date": 2020-06-16, "vol": 30]) +(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": "10", "keyword": "Graph database"]) +(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": "10", "keyword": ["Query", "Graph"]]) +(Proc01 {"Proceedings"}["title": "BDAS", "year": "2018", "month": "May" @"season": "spring"]) +(Jour01 {"Journal"}["title": "J. DB", "year": "2020" @"date": "2020-06-16", "vol": "30"]) # Edges -(EI01)-({"has_author"}["order": 1])->(Author01) -(EI01)-({"has_author"}["order": 2])->(Author02) -(EA01)-({"has_author"}["order": 1])->(Author02) +(EI01)-({"has_author"}["order": "1"])->(Author01) +(EI01)-({"has_author"}["order": "2"])->(Author02) +(EA01)-({"has_author"}["order": "1"])->(Author02) (EA01)-({"cites"})->(EI01) (EI01)-({"booktitle"}["pages": "111-121"])->(Proc01) (EA01)-({"published_in"}["pages": "222-232"])->(Jour01) \ No newline at end of file diff --git a/yarspg/examples/canonical-3-real-example-metadata.yarspg b/yarspg/examples/canonical-3-real-example-metadata.yarspg index 64ddcc5..2aae437 100644 --- a/yarspg/examples/canonical-3-real-example-metadata.yarspg +++ b/yarspg/examples/canonical-3-real-example-metadata.yarspg @@ -1,5 +1,5 @@ %METADATA --[:"Łukasz Szeremeta and Dominik Tomaszuk"] +-["":"Łukasz Szeremeta and Dominik Tomaszuk"] %NODE SCHEMAS S(NS1{"Author"}["fname":String,"lname":String]) S(NS2{"Entry","InProceedings"}["title":String,"numpages":Integer,"keyword":String]) @@ -14,14 +14,14 @@ S(NS3)-({"published_in"}["pages":String])->(NS5) %NODES (Author01{"Author"}["fname":"John","lname":"Smith"])#Author01 (Author02{"Author"}["fname":"Alice","lname":"Brown"]) -(EI01{"Entry","InProceedings"}["title":"Serialization for...","numpages":10,"keyword":"Graph database"]) -(EA01{"Entry","Article"}["title":"Property Graph...","numpages":10,"keyword":["Query","Graph"]]) -(Proc01{"Proceedings"}["title":"BDAS","year":2018,"month":"May"]) -(Jour01{"Journal"}["title":"J. DB","year":2020,"vol":30]) +(EI01{"Entry","InProceedings"}["title":"Serialization for...","numpages":"10","keyword":"Graph database"]) +(EA01{"Entry","Article"}["title":"Property Graph...","numpages":"10","keyword":["Query","Graph"]]) +(Proc01{"Proceedings"}["title":"BDAS","year":"2018","month":"May"]) +(Jour01{"Journal"}["title":"J. DB","year":"2020","vol":"30"]) %EDGES -(EI01)-({"has_author"}["order":1])->(Author01) -(EI01)-({"has_author"}["order":2])->(Author02) -(EA01)-({"has_author"}["order":1])->(Author02) +(EI01)-({"has_author"}["order":"1"])->(Author01) +(EI01)-({"has_author"}["order":"2"])->(Author02) +(EA01)-({"has_author"}["order":"1"])->(Author02) (EA01)-({"cites"})->(EI01) (EI01)-({"booktitle"}["pages":"111-121"])->(Proc01) (EA01)-({"published_in"}["pages":"222-232"])->(Jour01) \ No newline at end of file diff --git a/yarspg/examples/features-overview.yarspg b/yarspg/examples/features-overview.yarspg index e1595d4..a8fd2a4 100644 --- a/yarspg/examples/features-overview.yarspg +++ b/yarspg/examples/features-overview.yarspg @@ -6,22 +6,20 @@ S/graph1/["prop": Bool, "prop2": String] # Graph with graph id and optional labels and properties -/graph1/{"graph_label", "graphlabel2"}["prop": true, "prop2": "Abc"] +/graph1/{"graph_label", "graphlabel2"}["prop": "true", "prop2": "Abc"] # Variables (can store properties; @ - meta properties) -$graph2_prop = "prop2": "Abc"@"ok": false +$graph2_prop = "prop2": "Abc"@"ok": "false" $graph2_prop_schema = "prop2": String @"ok": Bool # Use of variables S/graph2/["prop": Bool, $graph2_prop_schema] -/graph2/{"graph_label", "graphlabel2"}["prop": true, $graph2_prop] +/graph2/{"graph_label", "graphlabel2"}["prop": "true", $graph2_prop] -# Prefix declaration -:dc: -:foaf: - -# Metadata -- [foaf:maker: "Łukasz Szeremeta"] +# Metadata (with prefixes) +-[":dc": ""] +-[":foaf": ""] +-["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk"] # Node schema with node id and optional: node labels, properties, graphs and local metadata # MIN, MAX, OPTIONAL @@ -32,7 +30,7 @@ S(NS4 {"Proceedings"}["title": String, "year": Integer, "month": String OPTIONAL S(NS5 {"Journal"}["title": String, "year": Integer, "vol": Integer]) # Local metadata -S(NS1 {"Author"}["fname": String, "lname": String])+[foaf:maker: "Łukasz Szeremeta", : "Test metadata"] +S(NS1 {"Author"}["fname": String, "lname": String])+["foaf:maker": "Łukasz Szeremeta", "": "Test metadata"] # UNIQUE S(NS3 {"label333","c"}["value": String,"lang": String,"valid": Bool UNIQUE])/graph2/ @@ -52,15 +50,15 @@ S(NS3)-({"published_in"}["pages": String])->(NS5) # Node with node id and optional: node labels, properties, graphs and local metadata (Author01 {"Author"}["fname": "John", "lname": "Smith"]) #Author01 (Author02 {"Author"}["fname": "Alice", "lname": "Brown"]) -(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": 10, "keyword": "Graph database"]) -(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": 10, "keyword": ["Query", "Graph"]]) -(Proc01 {"Proceedings"}["title": "BDAS", "year": 2018, "month": "May"]) -(Jour01 {"Journal"}["title": "J. DB", "year": 2020, "vol": 30]) +(EI01 {"Entry", "InProceedings"}["title": "Serialization for...", "numpages": "10", "keyword": "Graph database"]) +(EA01 {"Entry", "Article"}["title": "Property Graph...", "numpages": "10", "keyword": ["Query", "Graph"]]) +(Proc01 {"Proceedings"}["title": "BDAS", "year": "2018", "month": "May"]) +(Jour01 {"Journal"}["title": "J. DB", "year": "2020", "vol": "30"]) # Edge with node ids and optional: edge id, edge labels, properties, graphs, local metadata -(EI01)-({"has_author"}["order": 1])->(Author01) -(EI01)-({"has_author"}["order": 2])->(Author02) -(EA01)-({"has_author"}["order": 1])->(Author02) +(EI01)-({"has_author"}["order": "1"])->(Author01) +(EI01)-({"has_author"}["order": "2"])->(Author02) +(EA01)-({"has_author"}["order": "1"])->(Author02) (EA01)-({"cites"})->(EI01) (EI01)-({"booktitle"}["pages": "111-121"])->(Proc01) (EA01)-({"published_in"}["pages": "222-232"])->(Jour01) \ No newline at end of file diff --git a/yarspg/examples/test-example.yarspg b/yarspg/examples/test-example.yarspg index 88bc720..9e39de3 100644 --- a/yarspg/examples/test-example.yarspg +++ b/yarspg/examples/test-example.yarspg @@ -1,13 +1,13 @@ %GRAPH S/graph1/["prop": Bool, "prop2": String] -/graph1/{"graph_label", "graphlabel2"}["prop": true, "prop2": "Abc"] +/graph1/{"graph_label", "graphlabel2"}["prop": "true", "prop2": "Abc"] -$graph2_prop = "prop2": "Abc"@"ok": false +$graph2_prop = "prop2": "Abc"@"ok": "false" $graph2_prop_schema = "prop2": String @"ok": Bool %GRAPH S/graph2/["prop": Bool, $graph2_prop_schema] -/graph2/{"graph_label", "graphlabel2"}["prop": true, $graph2_prop] +/graph2/{"graph_label", "graphlabel2"}["prop": "true", $graph2_prop] %GRAPH S/graph3/[] @@ -20,60 +20,59 @@ S/graph4/ # This is test example # Another comment -# Prefix declaration -:dc: -:foaf: +# Metadata (with prefixes) +-[":dc": ""] +-[":foaf": ""] -# Metadata % METADATA --[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk"] --[foaf:maker: ] -- [ dc:test: "Test metadata" ] -- [: "Łukasz Szeremeta and Dominik Tomaszuk"] --[: ] --[ : "Test"] +-["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk"] +-["foaf:maker": ""] +- [ "dc:test": "Test metadata" ] +- ["": "Łukasz Szeremeta and Dominik Tomaszuk"] +-["": "" ] +-[ "": "Test"] # comment3#12 % NODES % NODE SCHEMAS -$var44 = "aa1a":true,"a2aa":"text" -(a {"a1d","x"}[$var44,"aa3aa":null])+[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk", : "Test annotation"] -(a {"a1d","x"}["aa1a":true,"a2aa":"text","aa3aa":null])+[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk", : "Test annotation"] -(b43b {}[])+[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk"] #b43b -(b43b {"label1"}["value":5])+[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk"] #b43b +$var44 = "aa1a":"true","a2aa":"text" +(a {"a1d","x"}[$var44,"aa3aa":"null"])+["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk", "": "Test annotation"] +(a {"a1d","x"}["aa1a":"true","a2aa":"text","aa3aa":"null"])+["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk", "": "Test annotation"] +(b43b {}[])+["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk"] #b43b +(b43b {"label1"}["value":"5"])+["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk"] #b43b S(NS1 {}[])/graph2/ $var4_schema = "value": String,"lang": String $var44_schema = "value": String NULL,"lang": String OPTIONAL -S(NS2 {"label333","c"}[$var44_schema,"valid": Bool])/graph2/+[: , foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk", : "Test annotation", "cdf": "fgh", foaf:maker: ] -S(NS3 {"label333","c"}["value": String,"lang": String,"valid": Bool UNIQUE])/graph2/+[: , foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk", : "Test annotation", "cdf": "fgh", foaf:maker: ] -S(NS4 {"label333","c"}["value": String UNIQUE,"lang": String,"valid": Bool])/graph2/+[: , foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk", : "Test annotation", "cdf": "fgh", foaf:maker: ] -(c {"label333","c"}["value":"male","lang":"en","valid":false])/graph2, graph3/+[: , foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk", : "Test annotation", "cdf": "fgh", foaf:maker: ] +S(NS2 {"label333","c"}[$var44_schema,"valid": Bool])/graph2/+["": "", "foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk", "": "Test annotation", "cdf": "fgh", "foaf:maker": ""] +S(NS3 {"label333","c"}["value": String,"lang": String,"valid": Bool UNIQUE])/graph2/+["": "", "foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk", "": "Test annotation", "cdf": "fgh", "foaf:maker": ""] +S(NS4 {"label333","c"}["value": String UNIQUE,"lang": String,"valid": Bool])/graph2/+["": "", "foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk", "": "Test annotation", "cdf": "fgh", "foaf:maker": ""] +(c {"label333","c"}["value":"male","lang":"en","valid":"false"])/graph2, graph3/+["": "", "foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk", "": "Test annotation", "cdf": "fgh", "foaf:maker": ""] S(NS5 {"label546"}["key": Float]) S(NS52 {"label546"}["key": Float OPTIONAL]) S(NS6 {"label546"}["key": Float UNIQUE]) -(d {"label546"}["key":.1333]) -(d {"label546"}["key":.1333e+5]) -(d {"label546"}["key":1333E-2]) -(d {"label546"}["key":442.1333]) +(d {"label546"}["key":".1333"]) +(d {"label546"}["key":".1333e+5"]) +(d {"label546"}["key":"1333E-2"]) +(d {"label546"}["key":"442.1333"]) S(NS7 {"label546"}["key": Float@"source": String]) S(NS72 {"label546"}["key": Float@"source": String OPTIONAL]) -(d {"label546"}["key":442.1333@"source": "XZYNews"]) -(e {"ef22","y","v"}["key44":[true,false,"some text", null, 11, 11.2231]]) -(f ["node":"node without label"])+[foaf:maker: ] -(g {"df2","z","q"}["key664":[false,["another list", 52, 44.1]]])+["abc": "value33"] -(h {"label"}["key664":[false,["another list2", ["another list3", 54, false, true] , 52, 44.1]]]) -(h {"label"}["key664":[false,["another list2"@"info": {"source": "ABC", "trust": "XYZ"}, ["another list3", 54, false, true] , 52, 44.1]]]) -(h {"label"}["key664":[false,["another list2"@"info": {"source": "ABC", "trust": "XYZ"}, ["another list3", 54, false, true]@"access": [0, 1, 1, 0] @"ok": true, 52, 44.1]@"good": false]]) +(d {"label546"}["key":"442.1333"@"source": "XZYNews"]) +(e {"ef22","y","v"}["key44":["true","false","some text", "null", "11", "11.2231"]]) +(f ["node":"node without label"])+["foaf:maker": ""] +(g {"df2","z","q"}["key664":["false",["another list", "52", "44.1"]]])+["abc": "value33"] +(h {"label"}["key664":["false",["another list2", ["another list3", "54", "false", "true"] , "52", "44.1"]]]) +(h {"label"}["key664":["false",["another list2"@"info": {"source": "ABC", "trust": "XYZ"}, ["another list3", "54", "false", "true"] , "52", "44.1"]]]) +(h {"label"}["key664":["false",["another list2"@"info": {"source": "ABC", "trust": "XYZ"}, ["another list3", "54", "false", "true"]@"access": ["0", "1", "1", "0"] @"ok": "true", "52", "44.1"]@"good": "false"]]) S(NS8 {"label"}["keyword": Struct(String)]) S(NS82 {"label"}["keyword": Struct(String) OPTIONAL]) (i {"label"}["keyword": {"name": "abc", "title": "xyz"}]) S(NS9 {"label"}["keyword": Struct(String)@"ok": Integer]) S(NS92 {"label"}["keyword": Struct(String)@"ok": Integer OPTIONAL]) -(i {"label"}["keyword": {"name": "abc"@"info": "ok", "title": "xyz"}@"ok": 1]) +(i {"label"}["keyword": {"name": "abc"@"info": "ok", "title": "xyz"}@"ok": "1"]) S(NS10 {"2label4"}["keyword2": Struct(Struct(String))]) (2i44 {"2label4"}["keyword2": {"names": {"name": "abc", "title": "xyz"}, "names2": {"name2": "abc2", "title2": "xyz2"}, "names3": {"name3": "abc3", "title3": "xyz3"}}]) S(NS11 {"2label4"}["keyword2": Struct(Struct(String)@"struct": String)@"struct": String @"ok": Bool]) -(2i44 {"2label4"}["keyword2": {"names": {"name": "abc", "title": "xyz"}@"rating": 5, "names2": {"name2": "abc2"@"more": "ok", "title2": "xyz2"}, "names3": {"name3": "abc3", "title3": "xyz3"}@"struct": "inside"}@"struct": "outside" @"ok": true]) +(2i44 {"2label4"}["keyword2": {"names": {"name": "abc", "title": "xyz"}@"rating": "5", "names2": {"name2": "abc2"@"more": "ok", "title2": "xyz2"}, "names3": {"name3": "abc3", "title3": "xyz3"}@"struct": "inside"}@"struct": "outside" @"ok": "true"]) (i2 {"label"}["keyword": {"name": "abc", "title": {"name2": "abc2", "title2": "xyz2"}}]) S(NS12 {"432f"}["set": Set(String)])/graphname/ (z {"432f"}["set": {"name", "title"}])/graphname/ @@ -88,9 +87,9 @@ S(NS16 {"1ad32"}["list": List(String NULL)]) S(NS163 {"1ad32"}["list": List(String MAX 3)]) S(NS164 {"1ad32"}["list": List(String MIN 1)]) S(NS165 {"1ad32"}["list": List(String MAX 1)]) -(1dsc {"1ad32"}["list": ["name55", null]]) +(1dsc {"1ad32"}["list": ["name55", "null"]]) S(NS17 {"1ad32"}["list": List(String) NULL]) -(1dsc {"1ad32"}["list": null]) +(1dsc {"1ad32"}["list": "null"]) S(NS18 {"ad3"}["list": List(List(String))]) (ds {"ad3"}["list": [["name55", "name3"]]]) S(NS19 {"ad32"}["list": List(List(String))]) @@ -106,13 +105,13 @@ S(NS22 {"ZYT3"}["timezp": Time]) S(NS23 {"ZYT4"}["timezm": Time]) S(NS232 {"ZYT4"}["timezm": Time OPTIONAL]) S(NS24 {"ZYT5"}["datetime": DateTime]) -(ABC {"ZYT"}["date": 1999-01-01]) -(ABC2 {"ZYT2"}["time": 11:15:32]) -(ABC3 {"ZYT3"}["timezp": 11:15:32+01:30]) -(ABC4 {"ZYT4"}["timezm": 09:32:11-08:00]) -(ABC5 {"ZYT5"}["datetime": 1999-01-01T11:15:32]) -(ABC5 {"ZYT5"}["datetimetzp": 1999-01-01T11:15:32+01:30]) -(ABC5 {"ZYT5"}["datetimetzm": 1999-01-01T11:15:32-08:00]) +(ABC {"ZYT"}["date": "1999-01-01"]) +(ABC2 {"ZYT2"}["time": "11:15:32"]) +(ABC3 {"ZYT3"}["timezp": "11:15:32+01:30"]) +(ABC4 {"ZYT4"}["timezm": "09:32:11-08:00"]) +(ABC5 {"ZYT5"}["datetime": "1999-01-01T11:15:32"]) +(ABC5 {"ZYT5"}["datetimetzp": "1999-01-01T11:15:32+01:30"]) +(ABC5 {"ZYT5"}["datetimetzm": "1999-01-01T11:15:32-08:00"]) % EDGES % EDGE SCHEMAS @@ -128,10 +127,10 @@ S(A01)-({}[])-(A02)/graph2/+["metadata": "value", "another": "one"] S(A01)-({"aaa1a"}["key": String, "aab2bc": List(Integer)])->(A02) S(A01)-({"aaa1a"}["key": String UNIQUE, "aab2bc": List(Integer)])->(A02) (a)-(ferf {}[])->(c) -(a)-(ferf {"aaa1a"}["key": "value", "aab2bc": [44, 22]])->(c)+[: ] -$var_e344 = "aab2bc": [44, 22]@"list name": "alph" -(a)-(ferf {"aaa1a"}["key": "value"@"ok": "no", $var_e344])->(c)+[: ] -(a)-(ferf {"aaa1a"}["key": "value"@"ok": "no", "aab2bc": [44, 22]@"list name": "alph"])->(c)+[: ] +(a)-(ferf {"aaa1a"}["key": "value", "aab2bc": ["44", "22"]])->(c)+["": ""] +$var_e344 = "aab2bc": ["44", "22"]@"list name": "alph" +(a)-(ferf {"aaa1a"}["key": "value"@"ok": "no", $var_e344])->(c)+["": ""] +(a)-(ferf {"aaa1a"}["key": "value"@"ok": "no", "aab2bc": ["44", "22"]@"list name": "alph"])->(c)+["": ""] (a)-(id341 {"aaa2a"})->(c) S(HAd34)-({"bbb23b"})-(sje2) (b43b)-({"bbb23b"})-(e) @@ -146,8 +145,8 @@ S(asf3245)-({"bbb23b"}["bbbd32d": Bool UNIQUE, "value": List(String) OPTIONAL])- S(asf3245)-({"bbb23b"}["bbbd32d": Bool UNIQUE, "value": List(String MIN 4) OPTIONAL])-(wef3245) S(asf3244)-({"bbb23b"}["bbbd32d": Bool UNIQUE, "value": List(String) OPTIONAL @"psod": Struct(Integer) OPTIONAL])-(wef3245) S(asf3244)-({"bbb23b"}["bbbd32d": Bool UNIQUE, "value": List(String) OPTIONAL @"psod": Struct(Integer MAX 3) OPTIONAL])-(wef3245) -(b43b)-({"bbbb53b"}["bbbd32d": false, "value": null])-(e)+[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk", : "Test annotation"] -(b43b)-({"bbbb53b"}["bbbd32d": false, "value": null@"psod": {"dff": 1, "ewf": 55}])-(e)+[foaf:maker: "Łukasz Szeremeta and Dominik Tomaszuk", : "Test annotation"] +(b43b)-({"bbbb53b"}["bbbd32d": "false", "value": "null"])-(e)+["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk", "": "Test annotation"] +(b43b)-({"bbbb53b"}["bbbd32d": "false", "value": "null"@"psod": {"dff": "1", "ewf": "55"}])-(e)+["foaf:maker": "Łukasz Szeremeta and Dominik Tomaszuk", "": "Test annotation"] S(f23)-({"label"}["date": Date])->(f321) S(g34g2)-({"label2"}["time": Time])->(fwef334) @@ -159,17 +158,17 @@ S(wf2343)-({"label5"}["datetime": DateTime @"info": String])->(erg3264) S(sdaf56)-({"label5"}["datetime": DateTime UNIQUE])->(dsf53) S(sas34)-({"label6"}["datetimetzp": DateTime])->(sdag654) S(asdg41)-({"label7"}["datetimetzm": DateTime])->(asv94) -(ABC)-({"label"}["date": 1999-01-01])->(XYZ) -(ABC1)-({"label"}["dateminustimezone": -1999-01-01-08:00])->(XYZ1) -(ABC2)-({"label2"}["time": 11:15:32])->(XYZ2) -(ABC22)-({"label2"}["timems": 03:15:32.54])->(XYZ22) -(ABC223)-({"label2"}["timemstimezone": 03:15:32.54+05:00])->(XYZ223) -(ABC3)-({"label3"}["timezp": 11:15:32+01:30])->(XYZ3) -(ABC4)-({"label4"}["timezm": 09:32:11-08:00])->(XYZ4) -(ABC5)-({"label5"}["datetime": 1999-01-01T11:15:32])->(XYZ5) -(ABC6)-({"label6"}["datetimetzp": 1999-01-01T11:15:32+01:30])->(XYZ6) -(ABC7)-({"label7"}["datetimetzm": 1999-01-01T11:15:32-08:00])->(XYZ7) -(ABC8)-({"label7"}["datetimetzmminus": -0003-01-05T11:15:32+05:00])->(XYZ8) -(ABC9)-({"label7"}["datetimetzmminusms": -0003-01-05T11:15:32.432+05:00])->(XYZ9) -(ABC10)-({"label7"}["datetimetzmminusms2": -0003-01-05T11:15:32.5+05:00])->(XYZ10) -(ABC10)-({"label7"}["datetimetzmms3": 2020-01-07T14:15:32.24+08:00])->(XYZ10) \ No newline at end of file +(ABC)-({"label"}["date": "1999-01-01"])->(XYZ) +(ABC1)-({"label"}["dateminustimezone": "-1999-01-01-08:00"])->(XYZ1) +(ABC2)-({"label2"}["time": "11:15:32"])->(XYZ2) +(ABC22)-({"label2"}["timems": "03:15:32.54"])->(XYZ22) +(ABC223)-({"label2"}["timemstimezone": "03:15:32.54+05:00"])->(XYZ223) +(ABC3)-({"label3"}["timezp": "11:15:32+01:30"])->(XYZ3) +(ABC4)-({"label4"}["timezm": "09:32:11-08:00"])->(XYZ4) +(ABC5)-({"label5"}["datetime": "1999-01-01T11:15:32"])->(XYZ5) +(ABC6)-({"label6"}["datetimetzp": "1999-01-01T11:15:32+01:30"])->(XYZ6) +(ABC7)-({"label7"}["datetimetzm": "1999-01-01T11:15:32-08:00"])->(XYZ7) +(ABC8)-({"label7"}["datetimetzmminus": "-0003-01-05T11:15:32+05:00"])->(XYZ8) +(ABC9)-({"label7"}["datetimetzmminusms": "-0003-01-05T11:15:32.432+05:00"])->(XYZ9) +(ABC10)-({"label7"}["datetimetzmminusms2": "-0003-01-05T11:15:32.5+05:00"])->(XYZ10) +(ABC10)-({"label7"}["datetimetzmms3": "2020-01-07T14:15:32.24+08:00"])->(XYZ10) \ No newline at end of file