Yes, I am using labels in Neo4j but only because I am the only user of this data set. If I paint myself into a semantic corner, it will be my fault and not poor design.
In any event, I ran into an odd limitation on labels that may be of general interest.
My script was dying because my label read: “expert-Validation.”
Thinking the Neo4j documentation should have the answer, I consulted:
Any non-empty unicode string can be used as a label name. In Cypher, you may need to use the backtick (`) syntax to avoid clashes with Cypher identifier rules. By convention, labels are written with CamelCase notation, with the first letter in upper case. For instance, User or CarOwner.
OK, so that’s encouraging, maybe I have run afoul of mathematical syntax or something.
Welllll, not quite.
8.3 Identifiers (under Cypher):
Identifier names are case sensitive, and can contain underscores and alphanumeric characters (a-z, 0-9), but must start with a letter. If other characters are needed, you can quote the identifier using backquote (`) signs.
The same rules apply to property names.
Sherman, set the WayBack Machine for 1986, we want to watch Charles Goldfarb write the name character provisions of ISO 8879:1986:
4.173 lower-case letters: Charcter class composed of the 26 unaccented small letters from “a” through “z”.
4.326 upper-case letters: Character class composed of the 26 capital letters from “A” through “Z”.
4.175 lower-case name start characters: Character class consisting of each lower-case name start character assigned by the concrete reference syntax.
4.328 upper-case name start characters: Character class consisting of upper-case forms of the corresponding lower-case name start characters.
4.94 digits: Character class composed of the 10 Arabic numerals from “0” to “9”.
4.174 lower-case name characters: Character class consisting of each lower-case name character assigned by the concrete reference syntax.
4.327 upper-case name start characters: Character class consisting of upper-case forms of the corresponding lower-case name characters.
I had the honor of knowing many of the contributors to the SGML standard, including its author, Charles Goldfarb.
But that was 1986. The Unicode project formally started two years later.
Over twenty-eight years after the SGML standard we have returned to name start characters and name characters (those not escaped by a “backtick”).
Is Unicode support really that uncommon in graph databases?