Let’s pretend we live in January 2013, and RDF 1.1 has just been published. This including the RDF Working Group’s attempt to clean up string literals. The issue with string literals is that RDF currently offers three different ways for doing something as simple as writing down a string:
"foo"
,"foo"^^xsd:string
,- and the rather weird
"foo@"^^rdf:PlainLiteral
.
The working group is trying to fix this. Now here’s a quiz with some RDF trivia questions. What are the answers that you’d like to see? (“Don’t care” is a fine answer too.)
Q1. Does this RDF graph (written in Turtle) have one triple?
<a> <b> 1 . <a> <b> "1"^^xsd:integer .
Q2. Does this RDF graph (written in Turtle) have one triple?
<a> <c> "foo" . <a> <c> "foo"^^xsd:string .
Q3. Is this a valid Turtle file?
<a> <b> "foo@"^^rdf:PlainLiteral .
Q4. Is a parser allowed to unify "foo"
and "foo"^^xsd:string
into a single form while parsing?
Q5. Is this a valid N-Triples file?
<http://example.com/a> <http://example.com/b> "foo" .
Q6. Is this a valid N-Triples file?
<http://example.com/a> <http://example.com/b> "foo@"^^rdf:PlainLiteral .
Q7. Is this a valid N-Triples file?
<http://example.com/a> <http://example.com/b> "foo"@en .
Q8. Is this a valid N-Triples file?
<http://example.com/a> <http://example.com/b> "foo"^^xsd:string .
Q9. Is this true in SPARQL?
datatype("foo") = xsd:string
Q10. Is this true in SPARQL?
datatype("foo") = error
Q11. Is this true in SPARQL?
datatype("foo") = rdf:PlainLiteral
Q12. Is this true in SPARQL?
datatype("foo"@en) = xsd:string
Q13. Is this true in SPARQL?
datatype("foo"@en) = error
Q14. Is this true in SPARQL?
datatype("foo"@en) = rdf:PlainLiteral
Q15. Is this true in SPARQL?
datatype("foo"@en) = rdflang:en
Q16. Does the literal in this RDF/XML fragment have a language tag?
<rdf:Description rdf:about="a" xml:lang="en"> <b>foo</b> </rdf:Description>
Q17. Does the literal in this RDF/XML fragment have a language tag?
<rdf:Description rdf:about="a" xml:lang="en"> <b rdf:datatype="&xsd;string">foo</b> </rdf:Description>
For each of the following pairs of statements, if the statement on the left is true, then is the statement on the right true as well in a system that supports datatype inference (specifically, {xsd:string}-Entailment)?
Q18. { <a> <b> "foo" . } => { <a> <b> "foo"^^xsd:string . }
Q19. { <a> <b> "foo"^^xsd:string . } => { <a> <b> "foo" . }
Q20. { <a> <b> "foo" . } => { <a> <b> "foo"@en . }
Q21. { <a> <b> "foo"@en . } => { <a> <b> "foo" . }
Q22. { <a> <b> "foo"@en . } => { <a> <b> "foo"@en-GB . }
Q23. { <a> <b> "foo"@en-GB . } => { <a> <b> "foo"@en . }
Q24. { <a> <b> "foo"@fr . } => { <a> <b> "foo"@en . }
Leave your answer in the comments! We’ll check in January 2013 to see who came closest. The winner gets, uhhm, a copy of the RDF Concepts and Abstract Syntax spec signed by the editors …
1. yes
2. yes
3. no
4. yes
5. yes
6. no
7. yes
8. yes
9. yes
10. no
11. no
12. yes
13. no
14. no
15. wtf?
16. don’t care
17. don’t care
18. yes
19. yes
20. no
21. yes
22. no
23. yes, by a narrow margin
24. no