- From: Andy Seaborne <andy.seaborne@epimorphics.com>
- Date: Sun, 01 May 2011 18:39:03 +0100
- To: public-rdfa-wg@w3.org
> Hi Ivan, > > I've been implementing the RDF Interfaces over the last couple of days, > and have to admit that I'm struggling with the lexical-equality. > > Essentially it's increasingly looking like we'll need to drop all the > typed literal conversion, and constrain the definition of createLiteral > to be: > > createLiteral(DOMString value, DOMString language, NamedNode datatype) > > Which is very sad. Before this equality issue came up the API was quite > nice to use, you could do createLiteral(10.3) and that would > automatically create the appropriately typed Literal. > > A key problem is that if a graph is created from a serialization which > contains the following: > > <a> <b> "100"^^xsd:double . > <a> <b> "1E2"^^xsd:double . > <a> <b> "1e2"^^xsd:double . > <a> <b> "+100"^^xsd:double . > <a> <b> "+1E2"^^xsd:double . > <a> <b> "+1e2"^^xsd:double . > > and somebody creates a Literal with the code createLiteral(100, > "xsd:double"), then: > > a) there is no lexical representation to compare against for equality Convert the number to a string. > b) if equality is done on value space, then it is equal to all those > terms already in the graph, and further, all those terms are considered > equal by the API so the graph would only contain one triple. You may wish to have 2 notions: "sameTerm" and "sameValue" sameTerm is equality at the level of same lexical form/language/datatype/ sameValue requires In an open systems, sameValue may conclude "don't know", not just true and false. For example: samevalue("iiii"^^my:roman, "IV"^^my:roman) Does the system understand my:roman? If not, then while same lexical/same datatype means true even for unknown datatypes, here the lexical forms are different hence "don't know" If it does understand my:roman, then it can conclude true. Andy
Received on Sunday, 1 May 2011 17:39:37 UTC