- From: Steve Harris <steve.harris@garlik.com>
- Date: Tue, 24 May 2011 10:39:06 +0100
- To: Andy Seaborne <andy.seaborne@epimorphics.com>
- Cc: Pat Hayes <phayes@ihmc.us>, public-rdf-wg@w3.org
On 2011-05-24, at 10:01, Andy Seaborne wrote:
>> More concerning is code like:
>>
>> Literal(String lexicalValue, Resource lang_or_dt)
>> {
>> if (typeof(lang_or_dt) == Literal) {
>> /* it has a language tag */
>> } else if (typeof(lang_or_dt) == URI) {
>> /* it has a datatype */
>> } else {
>> /* it has neither */
>> }
>> }
>>
>> We have a lot of such code.
>>
>> It /might/ all come out in the wash, but it's going to need some care.
>
> now swap the test and the situation is the same (RDF 1.0) and misses the language (RDF 1.1):
>
> if (typeof(lang_or_dt) == URI) {
> /* it has a datatype */
> } else if (typeof(lang_or_dt) == Literal) {
> /* it has a language tag */
>
>
>
> Of course, we might now end up with a new abstraction - the post-parse abstract graph.
Well, if the "correct" concrete syntax is given to be the "foo"@en form, then pre-2011 RDF systems will continue as before, and post 2011 systems can choose to represent internally as a datatype, or as a lang tag.
The difference would/could be in DATATYPE("foo"@en) in SPARQL.
If people write "foo"^^lang:en, then there will be some issues with pre-2011 systems.
The things I'm keen to avoid are e.g. in SPARQL Results, not having to emit:
<binding><literal datatype="http://www.w3.org/2001/XMLSchema#string">foo</literal></binding>
For each plain literal result.
- Steve
--
Steve Harris, CTO, Garlik Limited
1-3 Halford Road, Richmond, TW10 6AW, UK
+44 20 8439 8203 http://www.garlik.com/
Registered in England and Wales 535 7233 VAT # 849 0517 11
Registered office: Thames House, Portsmouth Road, Esher, Surrey, KT10 9AD
Received on Tuesday, 24 May 2011 09:39:36 UTC