<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.w3.org/2011/rdf-wg/wiki/skins/common/feed.css?207"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>RDF Working Group Wiki - User contributions [en]</title>
		<link>http://www.w3.org/2011/rdf-wg/wiki/Special:Contributions/Nrixham</link>
		<description>From RDF Working Group Wiki</description>
		<language>en</language>
		<generator>MediaWiki 1.15.5</generator>
		<lastBuildDate>Sat, 25 May 2013 00:04:08 GMT</lastBuildDate>
		<item>
			<title>TF-JSON</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-JSON</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* JSN3 */ cleanup to match spec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JSON RDF Task Force =&lt;br /&gt;
&lt;br /&gt;
The JSON RDF Task Force is primarily responsible for creating a JSON serialization of RDF.&lt;br /&gt;
&lt;br /&gt;
== Sub-pages ==&lt;br /&gt;
* [[TF-JSON-UC|Use cases]]&lt;br /&gt;
* [[JSON User Segments]]&lt;br /&gt;
* [[TF-JSON/Semantics of JSON|Semantics of JSON]]&lt;br /&gt;
&lt;br /&gt;
== Inputs ==&lt;br /&gt;
&lt;br /&gt;
* ''[http://n2.talis.com/wiki/RDF_JSON_Specification RDF JSON]'', by Talis.&lt;br /&gt;
* ''[http://json-ld.org/ JSON-LD]'', by Manu Sporny.&lt;br /&gt;
* ''[http://decentralyze.com/2010/06/04/from-json-to-rdf-in-six-easy-steps-with-jron/ JRON]'' by Sandro Hawke.&lt;br /&gt;
* ''[http://code.google.com/p/linked-data-api/wiki/Specification JSON serialization]''  in the Linked Data API.&lt;br /&gt;
* ''[http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL Query Results in JSON]'' by DAWG.&lt;br /&gt;
* ''[http://webr3.org/apps/specs/jsn3/ JSN3]'' by Nathan.&lt;br /&gt;
* ''[http://www.w3.org/2009/12/rdf-ws/papers/ws02 Flat triples approach to RDF graphs in JSON]'' by Dominik Tomaszuk&lt;br /&gt;
* ''[http://www.w3.org/2001/sw/wiki/index.php?title=RDF_Core_Work_Items&amp;amp;oldid=1990#JSON Ideas and issues from the community ]'' from RDF Core Work Items build on RDF/NextStepWorkshop, are reproduced below.&lt;br /&gt;
* ''[http://www.w3.org/wiki/JTriples JTriples ]'' by Michael Hausenblas&lt;br /&gt;
* ''[http://code.google.com/p/backplanejs/wiki/Rdfj RDFj]'' by Mark Birbeck probably.&lt;br /&gt;
&lt;br /&gt;
==== Materials from RDF Next Step WorkShop ====&lt;br /&gt;
&lt;br /&gt;
=====Pros=====&lt;br /&gt;
* Allows web authors (Javascript, HTML5, ... developers) more easily use rdf data with existing tools and techniques&lt;br /&gt;
* Multiple JSON formats and implementations (some interoperable) already exist showing interest in this work&lt;br /&gt;
=====Cons=====&lt;br /&gt;
* Current JSON formats are not aligned - differnent approaches - making it JSON-user friendly versus making it familiar to existing RDF users.&lt;br /&gt;
* Needs some R&amp;amp;D and alignment.&lt;br /&gt;
* Risk that the result would be some standard that would not be adopted if it was not 'web author' friendly.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* JSON Serialization of RDF&lt;br /&gt;
&lt;br /&gt;
== Questions to Contemplate ==&lt;br /&gt;
&lt;br /&gt;
# What are the use cases for the JSON serialization?&lt;br /&gt;
# Are we to create a lightweight JSON based RDF interchange format optimized for machines and speed, or an easy to work with JSON view of RDF optimized for humans (developers)?&lt;br /&gt;
# Is it necessary for developers to know RDF in order to use the simplest form of the RDF-in-JSON serialization?&lt;br /&gt;
# Should we attempt to support more than just RDF? Key-value pairs as well? Literals as subjects?&lt;br /&gt;
# Must RDF in JSON be 100% compatible with the JSON spec? Or must it only be able to be read by a JavaScript library and thus be JSON-like-but-not-compatible (and can thus deviate from the standard JSON spec)?&lt;br /&gt;
# Must all major RDF concepts be expressible via the RDF in JSON syntax?&lt;br /&gt;
# Should we go more for human-readability, or terse/compact/machine-friendly formats? What is the correct balance?&lt;br /&gt;
# Should there be a migration story for the JSON that is already used heavily on the Web? For example, in REST-based services?&lt;br /&gt;
# Should processing be a single-pass or multi-pass process? Should we support SAX-like streaming?&lt;br /&gt;
# Should there be support for [http://json-ld.org/spec/ED/20110201/#disjoint-graphs disjoint graphs]?&lt;br /&gt;
# Should we consider how the structure may be [http://payswarm.com/vocabs/signature#JsonldSignature digitally signed]?&lt;br /&gt;
# How should [http://json-ld.org/spec/ED/20110201/#the-normalization-algorithm normalization] occur?&lt;br /&gt;
# Should [http://webr3.org/blog/semantic-web/rdf-named-graphs-vs-graph-literals/ graph literals] be supported?&lt;br /&gt;
# Should [http://webr3.org/blog/semantic-web/rdf-named-graphs-vs-graph-literals/ named graphs] be supported?&lt;br /&gt;
# Should [http://json-ld.org/spec/ED/20110201/#automatic-typing automatic typing] be supported?&lt;br /&gt;
# Should [http://json-ld.org/spec/ED/20110201/#type-coercion type coercion] be supported?&lt;br /&gt;
# Should there be [http://json-ld.org/spec/ED/20110201/#the-json-ld-api an API] defined in order to easily map RDF-in-JSON to/from language-native formats?&lt;br /&gt;
&lt;br /&gt;
== RDF in JSON Design Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== There should be two serialization formats ===&lt;br /&gt;
&lt;br /&gt;
There should be a machine-friendly serialization format and there should be a human-friendly serialization format.&lt;br /&gt;
&lt;br /&gt;
* -1 [[User:Msporny|Manu Sporny]], given the limited time for this working group, I think we should focus on the human-friendly serialization format. RDF already has a number of machine-friendly serialization formats.&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]]. A simple &amp;quot;s&amp;quot;, &amp;quot;p&amp;quot;, &amp;quot;o&amp;quot; format is not the same amount of work as a human-friendly form. See [http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL JSON result format]&lt;br /&gt;
* 0 [[User:Lfeigenb|Lee]]. I'd worry about the WG's available time and resources.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] if possible.&lt;br /&gt;
* -0 [[User:Mbrunati|Matteo Brunati]] not enough time maybe&lt;br /&gt;
* -0 [[User:Cmatheus|Chris Matheus]] not a priority&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] Can we avoid this? One format to rule them all.&lt;br /&gt;
* 0 [[User:Nhumfrey|Nicholas Humfrey]] Ideally one would be a subset of the other.&lt;br /&gt;
* -0 [[User:Gcarothe3|Gavin Carothers]] There does not need to be a disconnect between human-friendly and machine-friendly for readability&lt;br /&gt;
&lt;br /&gt;
=== A primary goal SHOULD be to build a human-friendly version of the serialization for JSON developers === &lt;br /&gt;
&lt;br /&gt;
The serialization should be optimized for humans first, machines second. The ability for machines to quickly parse the file is secondary to the ability for developers to be able to use the serialization with JavaScript. A focus should be placed on making the serialization fit into JavaScript frameworks easily, even at the cost of JSON-LD processor implementation complexity.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Lfeigenb|Lee]]. Given the existing work in the RDFa group on an API, I'd rather see a simple, machine-friendly format that implementations can then make available via an API. I'm not convinced that a standard human-friendly JSON format is a big win.&lt;br /&gt;
* -0 [[User:Andy_Seaborne|Andy]] Different uses cases lead to different design tradeoffs.  (e.g [http://code.google.com/p/linked-data-api/ LDA] is a tree; ideal for them, bad for different uses.)&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] but only if the product can be considered simple JSON objects (k/v objects with a subject set) and the caveat is recognized that by not requiring an RDF toolkit or understanding of properties, inference etc, the data isn't really RDF... it's RDF-able - else -1, waste of time.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]] +1 Nathan observations&lt;br /&gt;
* +1 [[User:Cmatheus|Chris Matheus]] extremely helpful for users new to RDF&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Yes, please! Make it easy for developers to write RDF in JSON.&lt;br /&gt;
* -1 [[User:Nhumfrey|Nicholas Humfrey]] I am more interested in machines. Turtle is good for Humans.&lt;br /&gt;
* -1 [[User:Gcarothe3|Gavin Carothers]] Large JSON objects are already VERY human unfriendly.&lt;br /&gt;
&lt;br /&gt;
=== A primary goal SHOULD be to build a machine-optimized version of the serialization === &lt;br /&gt;
&lt;br /&gt;
The serialization should be optimized for machines first, humans second. The ability to use the serialization in JavaScript is secondary to the ability for machines to quickly parse the file. A focus should be placed on making implementations very easy to write.&lt;br /&gt;
&lt;br /&gt;
* -1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Lfeigenb|Lee]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]]&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] As stated before, I'd love to see one format to rule them all.&lt;br /&gt;
* +1 [[User:Nhumfrey|Nicholas Humfrey]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD be able to transform most JSON in use today into RDF ===&lt;br /&gt;
&lt;br /&gt;
There should be a flexible mechanism, such as a &amp;quot;context&amp;quot;, that is capable of mapping from JSON key-value pairs to RDF triples. This mechanism could be specified either in-band or out-of-band from the serialization. Having this feature could map much of the existing JSON in the wild into RDF.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Lfeigenb|Lee]]. Seems out-of-scope; do existing RDF-in-JSON solutions already have such mechanisms?&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] The original data was not written to be used in this way.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] Assuming we're still talking two serializations, then this would be very valuable, for twitter to be able to say here's our data, view it as simple objects or rdf graphs; although I'm unsure we can get there without a common vision across the water.&lt;br /&gt;
* -1 [[User:Mbrunati|Matteo Brunati]] +1 to Andy, it's not in the original usage of the data&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]] nice to have but should not consume this team's resources&lt;br /&gt;
* 0 [[User:Tsteiner|Thomas Steiner]] Time permitting, not a top priority IMHO.&lt;br /&gt;
* -1 [[User:Nhumfrey|Nicholas Humfrey]] too complex - and not worth standardising&lt;br /&gt;
* -1 [[User:Gcarothe3|Gavin Carothers]] JSON-RDF should be a syntax, not something like GRDDL. &lt;br /&gt;
&lt;br /&gt;
=== Developers do not need to be familiar at all with RDF to start using the serialization ===&lt;br /&gt;
&lt;br /&gt;
Understanding the semantic web and the concepts of RDF (triples, graphs, etc.) should not be required in order to use the format. That means that the format may have a very simple, stripped down version for beginners and a more advanced set of features for semantic web enthusiasts.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] only if two serializations, and as per previous comments.&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] I ''think'' I disagree. If you don't want to expose developers to RDF at all, then why not just use vanilla JSON? Also I don't understand how the beginner/advanced thing should work. A server will have to generate the one or the other, so it's not like client-side developers get to choose which version they want to be exposed to.&lt;br /&gt;
* -1 [[User:Mbrunati|Matteo Brunati]] I think a minimal semweb context is necessary: thinking on SIMILE Exhibit framework. It's not simple to use without a prior knowledge of the model.&lt;br /&gt;
* 0 [[User:Cmatheus|Chris Matheus]] some very basic knowledge may be important but deep knowledge should not be required&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] People should at /least/ have an understanding of triples, that's enough for most use cases.&lt;br /&gt;
* 0 [[User:Nhumfrey|Nicholas Humfrey]] don't hide the triples&lt;br /&gt;
* -1 [[User:Gcarothe3|Gavin Carothers]] RDF-JSON should act as an introduction to RDF. Not as something you can use without knowing about RDF.&lt;br /&gt;
&lt;br /&gt;
=== The serialization MAY include features not in RDF ===&lt;br /&gt;
&lt;br /&gt;
There are certain features, such as generic key-value pairs in JSON that do not map well to RDF. They would map well if RDF had a concept of plain literals in the subject or predicate position. The serialization could include these concepts but may specify that the values may not be serialized to all RDF serialization formats (such as RDF/XML, TURTLE or RDFa).&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] creates an incompatible sub-community of applications.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] useful for allowing &amp;quot;junk&amp;quot; data like debugging info and session tokens, again only if two serializations.&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] as per Andy. Generic key-value pairs can be translated to &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;gt; &amp;lt;#key&amp;gt; &amp;quot;value&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; or somesuch.&lt;br /&gt;
* -1 [[User:Mbrunati|Matteo Brunati]] as for Andy. making a default rule to the generic key-value stuff&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]] shouldn't spend time on this&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] Strong no. Stay compatible with RDF by all means.&lt;br /&gt;
* -1 [[User:Nhumfrey|Nicholas Humfrey]]&lt;br /&gt;
* -1 [[User:Gcarothe3|Gavin Carothers]] A single JSON object should be able to contain JSON-RDF as a value. Which addresses Nathan's need.&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST be 100% compatible with the JSON spec ===&lt;br /&gt;
&lt;br /&gt;
Additional features such as comments or short-hand notation to support datatypes could be supported in the serialization if we extended the JSON format. This would mean that the serialization would be incompatible with vanilla JSON readers and writers. While this may make serialization nicer, we should not make any additions/modifications to the JSON format to ensure maximum compatibility with pre-existing processors.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]]&lt;br /&gt;
* +1 [[User:Lfeigenb|Lee]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] else it's not JSON..&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* +1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Strong yes!&lt;br /&gt;
* +1 [[User:Nhumfrey|Nicholas Humfrey]]&lt;br /&gt;
* +1 [[User:Gcarothe3|Gavin Carothers]] &lt;br /&gt;
&lt;br /&gt;
=== It is a requirement that all RDF concepts MUST be expressible in the serialization ===&lt;br /&gt;
&lt;br /&gt;
There are concepts like RDF datatypes and g-snaps/graph literals that could be omitted from the serialization in order to reduce learning and implementation complexity. &lt;br /&gt;
&lt;br /&gt;
* -1 [[User:Msporny|Manu Sporny]], Good design is a balancing act - we should only include what will help the most number of people.&lt;br /&gt;
* +1 [[User:Lfeigenb|Lee]]. I'd hesitate to say &amp;quot;all&amp;quot;, but in general, a JSON RDF serialization would not be useful to us unless it was as much a 1st-class serialization of the RDF model as turtle, RDF/XML, etc.&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]] for the machine-friendly form to work with non-JSON apps and systems.&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] for the human-friendly form but the features dropped will vary from usage to usage.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] for machine (rdf in json)&lt;br /&gt;
* -1 [[User:Nrixham|Nathan]] for human (rdf-able json objects)&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]] not for this round&lt;br /&gt;
* +0.8 [[User:Mbrunati|Matteo Brunati]] probably yes, but not this time maybe, too complexity?&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] Easy things should be easy and hard things should be possible. Keep the entry barrier low (inferred types), but allow the experts to do crazy things.&lt;br /&gt;
* +1 [[User:Nhumfrey|Nicholas Humfrey]] Definitely for the machine version of the spec.&lt;br /&gt;
* +1 [[User:Gcarothe3|Gavin Carothers]] Two serializations of the same abstract RDF should be the same.&lt;br /&gt;
&lt;br /&gt;
=== There should be a migration story for going from existing JSON in the wild to this new format ===&lt;br /&gt;
&lt;br /&gt;
The serialization task force should ensure that there is a subset of the serialization that is useful to beginners that use pure JSON, then show how developers could sprinkle in a little RDF into their JSON, then show how developers can fully migrate to the new serialization format. The transition to the serialization format will probably take multiple years The transition should be as smooth and organic as possible. We should also understand that many may not need to transition to RDF - JSON may work just fine for their application. We should not assume that people will go straight from regular JSON to the new serialization format.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] for human rdf-able json object serialization, if we can get there.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* -0 [[User:Cmatheus|Chris Matheus]] time permitting&lt;br /&gt;
* -0 [[User:Tsteiner|Thomas Steiner]] Time permitting&lt;br /&gt;
* 0 [[User:Nhumfrey|Nicholas Humfrey]] Not a priority&lt;br /&gt;
* -1 [[User:Gcarothe3|Gavin Carothers]] Key value pairs are not RDF. There is a leap to make.&lt;br /&gt;
&lt;br /&gt;
=== Memory usage and CPU usage while processing SHOULD be a primary consideration ===&lt;br /&gt;
&lt;br /&gt;
Memory and CPU usage for processing JSON is low. We should ensure that processing the serialization format is only slightly more complex than processing regular JSON.&lt;br /&gt;
&lt;br /&gt;
* +0 [[User:Msporny|Manu Sporny]], we want to be cognizant of resource usage but I don't think this should be a primary driver for design decisions for the language.&lt;br /&gt;
* -1 [[User:Lfeigenb|Lee]]. Seems like an implementation detail to me.&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] (NB: JSON structures are read entirely into memory before the application gets to see them.)&lt;br /&gt;
* +0.5 [[User:Nrixham|Nathan]] there is a balance between memory and processing to be struck, ntriples = more byte, turtle = more processing, same considerations for JSON.&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] IMHO if you need the ultimate performance, use, e.g., N-Triples, readability should have a higher priority, personally speaking.&lt;br /&gt;
* +1 [[User:Nhumfrey|Nicholas Humfrey]] It is important that it should be parsable as a stream (single pass)&lt;br /&gt;
&lt;br /&gt;
=== The design target is small snippets of RDF Data ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;small&amp;quot; might be less than 1 million triples, not 10.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]]&lt;br /&gt;
* 0 [[User:Nrixham|Nathan]] two different considerations for machine or human, I'd say under 10k for human, over and beyond for machine&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] For huge dumps use, e.g., N-Triples IMHO.&lt;br /&gt;
* 0 [[User:Nhumfrey|Nicholas Humfrey]]&lt;br /&gt;
&lt;br /&gt;
=== Design target: graphs or resources ===&lt;br /&gt;
&lt;br /&gt;
A human friendly JSON format can be designed more towards graphs (multiple subjects) or more targeted on just describing one resource (subject).  This is not to exclude one possibility over the other - this is to decide the focus.&lt;br /&gt;
&lt;br /&gt;
* graphs [[User:Andy_Seaborne|Andy]]&lt;br /&gt;
* machine: graphs, human: resource [[User:Nrixham|Nathan]]&lt;br /&gt;
* graphs [[User:Msporny|Manu Sporny]], but I don't think we'll need to choose between the two if we're smart about it. For instance, JSON-LD allows expressing graphs just as easily as expressing resources.&lt;br /&gt;
* graphs [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* resources [[User:Tsteiner|Thomas Steiner]]&lt;br /&gt;
* resources [[User:Nhumfrey|Nicholas Humfrey]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST support disjoint/unconnected graphs ===&lt;br /&gt;
&lt;br /&gt;
All current RDF serialization formats allow you to express two graphs that are not necessarily connected to one another. The new serialization format should allow the same mechanism. This is also important because normalization is difficult to achieve in a general way without also supporting disjoint graphs in the serialization. JSON-LD [http://json-ld.org/spec/ED/20110201/#disjoint-graphs disjoint graphs example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]] One graph with two+ disjoint components per serialization&lt;br /&gt;
* +0 [[User:Andy_Seaborne|Andy]] Multiple graphs per serialziation.  No more than follow work in other TFs.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] as per andy's comments&lt;br /&gt;
* +1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST provide a normalization algorithm ===&lt;br /&gt;
&lt;br /&gt;
Normalization, also known as canonicalization, is typically used when determining whether two sub-graphs that are expressed in different ways are identical. It is also very useful when hashing sub-graphs for checksumming or digital signature purposes. JSON-LD [http://json-ld.org/spec/ED/20110201/#the-normalization-algorithm normalization example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]], I think we need normalization because we need to have a good digital signatures story&lt;br /&gt;
* ? [[User:Andy_Seaborne|Andy]]. Unclear - are we signing the graph or the serialization? Is a Turtle-signed graph the same graph?  Would it include IRI normalization?&lt;br /&gt;
* +0 [[User:Nrixham|Nathan]]&lt;br /&gt;
* +0 [[User:Cmatheus|Chris Matheus]] highly desirable if there's time&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Time permitting&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD enable digital signatures ===&lt;br /&gt;
&lt;br /&gt;
Digital Signatures have a number of useful purposes. When combined with g-snaps/graph literals they provide a very easy way of establishing cryptographically verifiable provenance. These features are used heavily in electronic commerce. JSON-LD [http://payswarm.com/vocabs/signature#JsonldSignature digital signature example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +0 [[User:Nrixham|Nathan]]&lt;br /&gt;
* 0 [[User:Rcygania2|Richard Cyganiak]] Nice to have but won't make or break the format.&lt;br /&gt;
* +0 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* 0 [[User:Cmatheus|Chris Matheus]] nice to have&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Time permitting, not highest priority IMHO, though.&lt;br /&gt;
* 0 [[User:Nhumfrey|Nicholas Humfrey]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD support advanced graph concepts ===&lt;br /&gt;
&lt;br /&gt;
The serialization format should support advanced graph concepts such as g-box, g-snap and g-text such that you can make statements about snapshots of graphs. Annotating graphs with metadata such as graph retrieval time, digital signatures on the contents of the graph, and other metadata associated with graphs are an important feature for higher-level concepts like provenance. Sandro's explanation of [http://lists.w3.org/Archives/Public/public-rdf-wg/2011Feb/0092.html advanced graph concepts].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] Has security implications for RDF crawlers; requires larger API surface; SPARQL only returns single graphs anyways; use case is unclear&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] Not unless the format is following standard work done in other TFs.&lt;br /&gt;
* +0.5 [[User:Nrixham|Nathan]] follow other TFs&lt;br /&gt;
* 0 [[User:Mbrunati|Matteo Brunati]] too problematic probably, +1 Richard notes&lt;br /&gt;
* -0 [[User:Cmatheus|Chris Matheus]] not this round unless the Graph TF results happens quickly and their incorporation is straight forawrd&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST support automatic typing ===&lt;br /&gt;
&lt;br /&gt;
Being able to transform a JSON document into a native object is one of the key benefits of using JSON over other serialization formats. Automatically typing of numbers and boolean values into language-native datatypes removes an extra step that developers must perform without this feature. For example, one could easily transform a serialized number that is an xsd:integer into a language-native integer. JSON-LD [http://json-ld.org/spec/ED/20110201/#automatic-typing automatic typing example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]]&lt;br /&gt;
* +1 [[User:Rcygania2|Richard Cyganiak]] I'd say it's what users expect.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* +1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Strong yes. This is what the JavaScript community would expect I think.&lt;br /&gt;
* +1 [[User:Nhumfrey|Nicholas Humfrey]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD support type coercion ===&lt;br /&gt;
&lt;br /&gt;
While not immediately obvious, type coercion allows one to map regular JSON into RDF in a way that may add datatype decorators to object literals. In other words, it provides for a way to get Typed Literals from regular JSON data. JSON-LD [http://json-ld.org/spec/ED/20110201/#type-coercion type coercion example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] for human one, -1 for machine one&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Yes, as this is what people (IMHO) expect, and it keeps the entry barrier low. Still allow for overriding.&lt;br /&gt;
* +1 [[User:Nhumfrey|Nicholas Humfrey]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD rely on microsyntaxes instead of nested structures ===&lt;br /&gt;
&lt;br /&gt;
There are two common approaches to expressing RDF in JSON. One of them is to use nested structures to express language and type information for literals. The other approach is to use shallow structures with microsyntaxes mirroring TURTLE to express language and type information for literals.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] It's ugly as hell and makes the language unusable without an API&lt;br /&gt;
* -1 [[User:Nrixham|Nathan]]&lt;br /&gt;
* -1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] Microsyntaxes are easy to get wrong. Nested structures occupy more memory and require two object accesses on read/write, however, with default/inferred types, this could be OK.&lt;br /&gt;
* +1 [[User:Nhumfrey|Nicholas Humfrey]] It depends on how complex the micro-syntax is. I like the idea of making the JSON less verbose (for humans)&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD provide an API ===&lt;br /&gt;
&lt;br /&gt;
An API would allow developers to transform incoming documents into a format that is easier for them to work with. In other words, it would allow them to drop all type information if it wasn't useful to them, or remove any micro-syntaxes that would get in the way of basic usage of the data. Keep in mind that even JSON has an api: JSON.parse(). JSON-LD [http://json-ld.org/spec/ED/20110201/#the-json-ld-api API example].&lt;br /&gt;
&lt;br /&gt;
(?? Reword as: The serialization SHOULD assume working with a JavaScript RDF API ([[User:Andy_Seaborne|Andy]]))&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Nrixham|Nathan]] the machine one will have the RDF API, the human one is pointless if it needs and API.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]] as Andy said, working with an API ( are there other WG are working on that or not? )&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]] not this round&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] The JSON is the API, we just need to make it easy enough.&lt;br /&gt;
* 0 [[User:Nhumfrey|Nicholas Humfrey]] Nice to have - but should not be required&lt;br /&gt;
&lt;br /&gt;
=== There SHOULD be one and only one way to serialize a given triple ===&lt;br /&gt;
&lt;br /&gt;
The more different ways there are to express the same triple or graph, the harder it gets to use the host language's native toolbox (that is, pure JS expressions) to process data. At some point, using the host language becomes impossible without using a parser library layered on top of the host language, negating the benefit of basing the language on JSON in the first place. (Note, this is about using different JSON structures to express the same triple; not about different triples expressing the same statement in RDF Semantics, like &amp;lt;tt&amp;gt;&amp;quot;foo&amp;quot;&amp;lt;/tt&amp;gt; vs &amp;lt;tt&amp;gt;&amp;quot;foo&amp;quot;^^xsd:string&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Rcygania2|Richard Cyganiak]] This is the lesson to be learnt from RDF/XML.&lt;br /&gt;
* +0 [[User:Msporny|Manu Sporny]], while I agree in principle I don't know how we'd enforce this in practice - that is, what's the difference between &amp;quot;foo&amp;quot; and &amp;quot;foo&amp;quot;^^xsd:string in JSON? Would you serialize the plain literal &amp;quot;foo&amp;quot; and the Typed Literal &amp;quot;foo&amp;quot;^^xsd:string in the same way in JSON? If the answer is yes, isn't the translation lossy?&lt;br /&gt;
** This one is inherent to the way the RDF model is defined. There's nothing that can be done about it in the syntax. The concern here was about using different JSON structures to express the same triple. I clarified the description.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]] as for Richard, RDF/XML is the lesson&lt;br /&gt;
* ++1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* +0 [[User:Tsteiner|Thomas Steiner]] Can it be done? How about 1.0 double vs 1.0 float? Compare, e.g., QUnit's equality tests (jQuery unit test framework): deepEqual (http://docs.jquery.com/QUnit/deepEqual#actualexpectedmessage) vs. strictEqual (http://docs.jquery.com/QUnit/strictEqual#actualexpectedmessage) vs. equal (http://docs.jquery.com/QUnit/equal#actualexpectedmessage)&lt;br /&gt;
* 0 [[User:Nhumfrey|Nicholas Humfrey]] Desirable&lt;br /&gt;
&lt;br /&gt;
== JSON Serializations By Example ==&lt;br /&gt;
&lt;br /&gt;
=== Sample Graphs ===&lt;br /&gt;
&lt;br /&gt;
'''Basic Example'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@prefix foaf:  &amp;lt;http://xmlns.com/foaf/0.1/&amp;gt; .&lt;br /&gt;
@prefix  dc:   &amp;lt;http://purl.org/dc/elements/1.1/&amp;gt; .&lt;br /&gt;
@prefix rdfs:  &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; .&lt;br /&gt;
@prefix xsd:   &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; .&lt;br /&gt;
@prefix :      &amp;lt;http://example/&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://jondoe.example.org/#me&amp;gt; a foaf:Person ;&lt;br /&gt;
	foaf:nick &amp;quot;Jonny&amp;quot; ;&lt;br /&gt;
	foaf:givenname &amp;quot;Jon&amp;quot; ;&lt;br /&gt;
	foaf:family_name &amp;quot;Doe&amp;quot; ;&lt;br /&gt;
	foaf:depiction &amp;lt;http://jondoe.example.org/me.jpg&amp;gt; ;&lt;br /&gt;
	foaf:homepage &amp;lt;http://jondoe.example.org/&amp;gt; ;&lt;br /&gt;
	foaf:interest &amp;lt;http://dbpedia.org/resource/Film&amp;gt; ;&lt;br /&gt;
	foaf:knows &amp;lt;http://janedoe.example.org/#me&amp;gt; ;&lt;br /&gt;
 	foaf:knows [ foaf:name &amp;quot;John Smith&amp;quot; ] .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://janedoe.example.org/#me&amp;gt; a foaf:Person ;&lt;br /&gt;
	foaf:name &amp;quot;Jane Doe&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:book1&lt;br /&gt;
  dc:creator &amp;lt;http://jondoe.example.org/#me&amp;gt; ;&lt;br /&gt;
  dc:contributor ( &amp;lt;http://janedoe.example.org/#me&amp;gt; [ foaf:name &amp;quot;John Smith&amp;quot; ] ) ;&lt;br /&gt;
  dc:date &amp;quot;2011&amp;quot;^^xsd:gYear ;&lt;br /&gt;
  dc:title  &amp;quot;Swansea&amp;quot; ;&lt;br /&gt;
  dc:subject  &amp;lt;http://en.wikipedia.org/wiki/Swansea&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://en.wikipedia.org/wiki/Swansea&amp;gt;&lt;br /&gt;
  dc:date     &amp;quot;2011-03-23&amp;quot;^^xsd:date ;&lt;br /&gt;
  rdfs:label  &amp;quot;Swansea&amp;quot;@en , &amp;quot;Abertawe&amp;quot;@cy .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Advanced Example''' (based on this [http://www.ebusiness-unibw.org/wiki/Rdfa4google#Opening_Hours_in_Tabular_Form GoodRelations example])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@prefix gr: &amp;lt;http://purl.org/goodrelations/v1#&amp;gt; .&lt;br /&gt;
@prefix rdfs: &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; .&lt;br /&gt;
@prefix vcard: &amp;lt;http://www.w3.org/2006/vcard/ns#&amp;gt; .&lt;br /&gt;
@prefix xsd: &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; .&lt;br /&gt;
@prefix foaf: &amp;lt;http://xmlns.com/foaf/0.1/&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://business.example.org/openinghours.html#business&amp;gt; a gr:BusinessEntity ;&lt;br /&gt;
     rdfs:label &amp;quot;Example Business, Inc.&amp;quot;@en ;&lt;br /&gt;
     gr:hasPOS &amp;lt;http://business.example.org/openinghours.html#shop&amp;gt; ;&lt;br /&gt;
     gr:legalName &amp;quot;Example Business, Inc.&amp;quot;@en ;&lt;br /&gt;
     foaf:page &amp;lt;http://business.example.com&amp;gt;, &amp;lt;http://business.example.org/openinghours.html&amp;gt; ;&lt;br /&gt;
     vcard:fn &amp;quot;Example Business, Inc.&amp;quot;@en ;&lt;br /&gt;
     vcard:geo&lt;br /&gt;
         [ vcard:latitude &amp;quot;49.0202626&amp;quot;^^xsd:float ;&lt;br /&gt;
           vcard:longitude &amp;quot;12.8407428&amp;quot;^^xsd:float&lt;br /&gt;
         ] ;&lt;br /&gt;
     vcard:tel &amp;quot;+49-12-3546789&amp;quot;^^xsd:string ;&lt;br /&gt;
     vcard:url &amp;lt;http://business.example.com&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;http://business.example.org/openinghours.html#shop&amp;gt; a gr:LocationOfSalesOrServiceProvisioning ;&lt;br /&gt;
      gr:hasOpeningHoursSpecification&lt;br /&gt;
          &amp;lt;http://business.example.org/openinghours.html#mon&amp;gt;,&lt;br /&gt;
          &amp;lt;http://business.example.org/openinghours.html#tue&amp;gt;,&lt;br /&gt;
          &amp;lt;http://business.example.org/openinghours.html#wed&amp;gt;,&lt;br /&gt;
          &amp;lt;http://business.example.org/openinghours.html#thu&amp;gt;,&lt;br /&gt;
          &amp;lt;http://business.example.org/openinghours.html#fri&amp;gt;,&lt;br /&gt;
          &amp;lt;http://business.example.org/openinghours.html#sat&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://business.example.org/openinghours.html#mon&amp;gt; a gr:OpeningHoursSpecification ;&lt;br /&gt;
     gr:closes &amp;quot;18:00:00&amp;quot;^^xsd:time ;&lt;br /&gt;
     gr:hasOpeningHoursDayOfWeek gr:Monday ;&lt;br /&gt;
     gr:opens &amp;quot;08:00:00&amp;quot;^^xsd:time .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://business.example.org/openinghours.html#tue&amp;gt; a gr:OpeningHoursSpecification ;&lt;br /&gt;
    gr:closes &amp;quot;18:00:00&amp;quot;^^xsd:time ;&lt;br /&gt;
    gr:hasOpeningHoursDayOfWeek gr:Tuesday ;&lt;br /&gt;
    gr:opens &amp;quot;08:00:00&amp;quot;^^xsd:time .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://business.example.org/openinghours.html#wed&amp;gt; a gr:OpeningHoursSpecification ;&lt;br /&gt;
    gr:closes &amp;quot;14:00:00&amp;quot;^^xsd:time ;&lt;br /&gt;
    gr:hasOpeningHoursDayOfWeek gr:Wednesday ;&lt;br /&gt;
    gr:opens &amp;quot;08:00:00&amp;quot;^^xsd:time .&lt;br /&gt;
     &lt;br /&gt;
&amp;lt;http://business.example.org/openinghours.html#thu&amp;gt; a gr:OpeningHoursSpecification ;&lt;br /&gt;
    gr:closes &amp;quot;18:00:00&amp;quot;^^xsd:time ;&lt;br /&gt;
    gr:hasOpeningHoursDayOfWeek gr:Thursdays ;&lt;br /&gt;
    gr:opens &amp;quot;08:00:00&amp;quot;^^xsd:time .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://business.example.org/openinghours.html#fri&amp;gt; a gr:OpeningHoursSpecification ;&lt;br /&gt;
    gr:closes &amp;quot;20:00:00&amp;quot;^^xsd:time ;&lt;br /&gt;
    gr:hasOpeningHoursDayOfWeek gr:Friday ;&lt;br /&gt;
    gr:opens &amp;quot;08:00:00&amp;quot;^^xsd:time .&lt;br /&gt;
&lt;br /&gt;
&amp;lt;http://business.example.org/openinghours.html#sat&amp;gt; a gr:OpeningHoursSpecification ;&lt;br /&gt;
     gr:closes &amp;quot;15:00:00&amp;quot;^^xsd:time ;&lt;br /&gt;
     gr:hasOpeningHoursDayOfWeek gr:Saturday ;&lt;br /&gt;
     gr:opens &amp;quot;09:00:00&amp;quot;^^xsd:time .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Artificial data which cover many cases and many Turtle shortcuts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@prefix rdfs:    &amp;lt;http://www.w3.org/2000/01/rdf-schema#&amp;gt; .&lt;br /&gt;
@prefix xsd:     &amp;lt;http://www.w3.org/2001/XMLSchema#&amp;gt; .&lt;br /&gt;
@prefix : &amp;lt;http://example/&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
:x1 :p1 1 ;&lt;br /&gt;
    :p2 1.0 ;&lt;br /&gt;
    :p3 1.0e0 ;&lt;br /&gt;
    :p4 () ;&lt;br /&gt;
    :p5 (1 2 &amp;quot;three&amp;quot; ) ;&lt;br /&gt;
    :p6  [ :q 57 ; :q 89 ] ;&lt;br /&gt;
    :p7 _:a .&lt;br /&gt;
&lt;br /&gt;
_:a  :p1 :z ;&lt;br /&gt;
     :p2 &amp;quot;str&amp;quot; ;&lt;br /&gt;
     :p3 &amp;quot;str&amp;quot;^^xsd:string .&lt;br /&gt;
&lt;br /&gt;
[]  :p :z .&lt;br /&gt;
&lt;br /&gt;
:z rdfs:label &amp;quot;Swansea&amp;quot;@en , &amp;quot;Abertawe&amp;quot;@cy ;&lt;br /&gt;
   :q1 &amp;quot;2011-03-23T13:40:22.489+00:00&amp;quot;^^xsd:dateTime ;&lt;br /&gt;
   :q2 &amp;quot;2011-03-23Z&amp;quot;^^xsd:date ;&lt;br /&gt;
   :q3 &amp;quot;2011-03-23&amp;quot;^^xsd:date ;&lt;br /&gt;
   :q4 &amp;quot;2011+01:00&amp;quot;^^xsd:gYear ;&lt;br /&gt;
   :q5 &amp;quot;2011&amp;quot;^^xsd:gYear .&lt;br /&gt;
&lt;br /&gt;
(&amp;quot;a&amp;quot; &amp;quot;b&amp;quot; &amp;quot;c&amp;quot; ) :p [ :p (1 2) , (3 4) ] .&lt;br /&gt;
&lt;br /&gt;
[ :p (1 2) , (3 4) ] :p (&amp;quot;a&amp;quot; &amp;quot;b&amp;quot; &amp;quot;c&amp;quot; ) .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and some short forms that are not legal Turtle, but represent legal RDF triples. They are SPARQL.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(&amp;quot;a&amp;quot; &amp;quot;b&amp;quot; &amp;quot;c&amp;quot; ) .&lt;br /&gt;
&lt;br /&gt;
[ :p (1 2) , (3 4) ] .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JSON Serializations Lineup ==&lt;br /&gt;
&lt;br /&gt;
=== Shared Example for Serialization Lineup (Turtle) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@prefix foaf:     &amp;amp;lt;http://xmlns.com/foaf/0.1/&amp;amp;gt; .&lt;br /&gt;
@prefix xsd:      &amp;amp;lt;http://www.w3.org/2001/XMLSchema#&amp;amp;gt; .&lt;br /&gt;
@prefix vcard:    &amp;amp;lt;http://www.w3.org/2006/vcard/ns#&amp;amp;gt; .&lt;br /&gt;
@prefix iCollide: &amp;amp;lt;http://example.org/icollide#&amp;amp;gt; .&lt;br /&gt;
@prefix :         &amp;amp;lt;http://example/&amp;amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt; a foaf:Person ;&lt;br /&gt;
  foaf:name &amp;quot;Jon&amp;quot; ;&lt;br /&gt;
  iCollide:name &amp;quot;Jon&amp;quot; ;&lt;br /&gt;
  foaf:depiction &amp;amp;lt;http://jondoe.example.org/me.jpg&amp;amp;gt; ;&lt;br /&gt;
  foaf:knows ( &amp;amp;lt;http://janedoe.example.org/#me&amp;amp;gt; [ foaf:name &amp;quot;John Smith&amp;quot; ] ) ;&lt;br /&gt;
  foaf:birthday &amp;quot;2010-03-23T13:40:22.489+00:00&amp;quot;^^xsd:dateTime ;&lt;br /&gt;
  foaf:age 1 ;&lt;br /&gt;
  foaf:description &amp;quot;Just another Jon Doe&amp;quot;@en, &amp;quot;Justement un autre Jon Doe&amp;quot;@fr ;&lt;br /&gt;
  vcard:geo [&lt;br /&gt;
    vcard:latitude &amp;quot;49.0202626&amp;quot;^^xsd:float ;&lt;br /&gt;
    vcard:longitude &amp;quot;12.8407428&amp;quot;^^xsd:float&lt;br /&gt;
  ] ;&lt;br /&gt;
  vcard:tel &amp;quot;+49-12-3546789&amp;quot;^^xsd:string .&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;http://janedoe.example.org/#me&amp;amp;gt; a foaf:Person .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''': We tried to compile a worst case real-world scenario of things that could potentially appear in Turtle, namely:&lt;br /&gt;
* literals&lt;br /&gt;
* literals with language tags&lt;br /&gt;
* literals with trivial data types&lt;br /&gt;
* literals with non-trivial data types&lt;br /&gt;
* blank nodes&lt;br /&gt;
* lists&lt;br /&gt;
* IRIs&lt;br /&gt;
* potentially colliding CURIE prefixes&lt;br /&gt;
&lt;br /&gt;
=== Linked Data API ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;format&amp;quot;: &amp;quot;linked-data-api&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.2&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
      &amp;quot;_about&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/Person&amp;quot;,&lt;br /&gt;
      &amp;quot;foaf_name&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
      &amp;quot;iCollide_name&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
      &amp;quot;depiction&amp;quot;: &amp;quot;http://jondoe.example.org/me.jpg&amp;quot;,&lt;br /&gt;
      &amp;quot;knows&amp;quot;: [&lt;br /&gt;
        &amp;quot;http://janedoe.example.org/#me&amp;quot;,&lt;br /&gt;
        &amp;quot;_:b0&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;birthday&amp;quot;: &amp;quot;Tue Mar 23 2010 14:40:22 GMT+0100 (CET)&amp;quot;,&lt;br /&gt;
      &amp;quot;age&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;description&amp;quot;: [&lt;br /&gt;
        &amp;quot;Just another Jon Doe@en&amp;quot;,&lt;br /&gt;
        &amp;quot;Justement un autre Jon Doe@fr&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;geo&amp;quot;: {&lt;br /&gt;
        &amp;quot;format&amp;quot;: &amp;quot;linked-data-api&amp;quot;,&lt;br /&gt;
        &amp;quot;version&amp;quot;: &amp;quot;0.2&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;: {&lt;br /&gt;
          &amp;quot;latitude&amp;quot;: &amp;quot;49.0202626^^xsd:float&amp;quot;,&lt;br /&gt;
          &amp;quot;longitude&amp;quot;: &amp;quot;12.8407428^^xsd:float&amp;quot;                    &lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;tel&amp;quot;: &amp;quot;+49-12-3546789^^xsd:string&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;format&amp;quot;: &amp;quot;linked-data-api&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.2&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
      &amp;quot;_about&amp;quot;: &amp;quot;http://janedoe.example.org/#me&amp;quot;,&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/Person&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;format&amp;quot;: &amp;quot;linked-data-api&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.2&amp;quot;,&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
      &amp;quot;_id&amp;quot;: &amp;quot;_:b0&amp;quot;,&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;John Smith&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }              &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* Linked Data API boilerplate at the beginning&lt;br /&gt;
* No concept of namespaces whatsoever (lossy RDF)&lt;br /&gt;
* Microsyntax for language tags&lt;br /&gt;
* Microsyntax for types&lt;br /&gt;
* Microsyntax for subject (_about)&lt;br /&gt;
&lt;br /&gt;
=== JRON ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;__prefixes&amp;quot;: {&lt;br /&gt;
      &amp;quot;foaf_&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;,&lt;br /&gt;
      &amp;quot;xsd_&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#&amp;quot;,&lt;br /&gt;
      &amp;quot;vcard_&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#&amp;quot;,     &lt;br /&gt;
      &amp;quot;rdfs_&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#&amp;quot;,&lt;br /&gt;
      &amp;quot;iCollide_&amp;quot;: &amp;quot;http://example.org/icollide#&amp;quot;&lt;br /&gt;
    },            &lt;br /&gt;
    &amp;quot;__iri&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;,&lt;br /&gt;
    &amp;quot;rdfs_type&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/Person&amp;quot;,&lt;br /&gt;
    &amp;quot;foaf_name&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
    &amp;quot;iCollide_name&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
    &amp;quot;foaf_depiction&amp;quot;: &amp;quot;http://jondoe.example.org/me.jpg&amp;quot;,&lt;br /&gt;
    &amp;quot;foaf_knows&amp;quot;: {&lt;br /&gt;
      &amp;quot;__values&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;__iri&amp;quot;: &amp;quot;http://janedoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;__node_id&amp;quot;: &amp;quot;_:b0&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;foaf_birthday&amp;quot;: {&lt;br /&gt;
      &amp;quot;__repr&amp;quot;: &amp;quot;2010-03-23T13:40:22.489+00:00&amp;quot;,&lt;br /&gt;
      &amp;quot;__type&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;foaf_age&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;foaf_description&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;__text&amp;quot;: &amp;quot;Just another Jon Doe&amp;quot;,&lt;br /&gt;
        &amp;quot;__lang&amp;quot;: &amp;quot;en&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;__text&amp;quot;: &amp;quot;Justement un autre Jon Doe&amp;quot;,&lt;br /&gt;
        &amp;quot;__lang&amp;quot;: &amp;quot;fr&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;vcard_geo&amp;quot;: {&lt;br /&gt;
      &amp;quot;__prefixes&amp;quot;: {&lt;br /&gt;
        &amp;quot;vcard_&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;vcard_latitude&amp;quot;: {&lt;br /&gt;
        &amp;quot;__repr&amp;quot;: &amp;quot;49.0202626&amp;quot;,&lt;br /&gt;
        &amp;quot;__type&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#float&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;vcard_longitude&amp;quot;: {&lt;br /&gt;
        &amp;quot;__repr&amp;quot;: &amp;quot;12.8407428&amp;quot;,&lt;br /&gt;
        &amp;quot;__type&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#float&amp;quot;                    &lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vcard_tel&amp;quot;: {&lt;br /&gt;
      &amp;quot;__repr&amp;quot;: &amp;quot;+49-12-3546789&amp;quot;,&lt;br /&gt;
      &amp;quot;__type&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;__prefixes&amp;quot;: {&lt;br /&gt;
      &amp;quot;rdfs_&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#&amp;quot;&lt;br /&gt;
    },                &lt;br /&gt;
    &amp;quot;__iri&amp;quot;: &amp;quot;http://janedoe.example.org/#me&amp;quot;,&lt;br /&gt;
    &amp;quot;rdfs_type&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/Person&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;__prefixes&amp;quot;: {&lt;br /&gt;
      &amp;quot;foaf_&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;__node_id&amp;quot;: &amp;quot;_:b0&amp;quot;,&lt;br /&gt;
    &amp;quot;foaf_name&amp;quot;: &amp;quot;John Smith&amp;quot;&lt;br /&gt;
  }            &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* Concept of namespaces in __prefixes section&lt;br /&gt;
* Microsyntax for subject (__iri, __node_id)&lt;br /&gt;
* Paired values for data types&lt;br /&gt;
* Paired values for language tags&lt;br /&gt;
&lt;br /&gt;
=== JSN3 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  {            &lt;br /&gt;
    &amp;quot;@prefix&amp;quot;: {&lt;br /&gt;
      &amp;quot;foaf:&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;,&lt;br /&gt;
      &amp;quot;xsd:&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#&amp;quot;,&lt;br /&gt;
      &amp;quot;vcard:&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#&amp;quot;,     &lt;br /&gt;
      &amp;quot;rdfs:&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#&amp;quot;,&lt;br /&gt;
      &amp;quot;iCollide:&amp;quot;: &amp;quot;http://example.org/icollide#&amp;quot;&lt;br /&gt;
      &amp;quot;:&amp;quot;: &amp;quot;http://example/&amp;quot;&lt;br /&gt;
    },            &lt;br /&gt;
    &amp;quot;http://jondoe.example.org/#me&amp;quot;: {&lt;br /&gt;
      &amp;quot;a&amp;quot;: &amp;quot;foaf:Person&amp;quot;,&lt;br /&gt;
      &amp;quot;foaf:name&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
      &amp;quot;iCollide:name&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
      &amp;quot;foaf:depiction&amp;quot;: &amp;quot;http://jondoe.example.org/me.jpg&amp;quot;,&lt;br /&gt;
      &amp;quot;foaf:knows&amp;quot;: [[&lt;br /&gt;
          &amp;quot;http://janedoe.example.org/#me&amp;quot;,&lt;br /&gt;
          {&amp;quot;foaf:name&amp;quot;: &amp;quot;John Smith&amp;quot;}&lt;br /&gt;
      ]],                  &lt;br /&gt;
      &amp;quot;foaf:birthday&amp;quot;: {&lt;br /&gt;
        &amp;quot;^^xsd:dateTime&amp;quot;: &amp;quot;2010-03-23T13:40:22.489+00:00&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;foaf:age&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;foaf:description&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;@en&amp;quot;: &amp;quot;Just another Jon Doe&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;@fr&amp;quot;: &amp;quot;Justement un autre Jon Doe&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;vcard:geo&amp;quot;: {&lt;br /&gt;
        &amp;quot;vcard:latitude&amp;quot;: {&lt;br /&gt;
          &amp;quot;xsd:float&amp;quot;: &amp;quot;49.0202626&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;vcard:longitude&amp;quot;: {&lt;br /&gt;
          &amp;quot;xsd:float&amp;quot;: &amp;quot;12.8407428&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;vcard:tel&amp;quot;: {&lt;br /&gt;
        &amp;quot;xsd:string&amp;quot;: &amp;quot;+49-12-3546789&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    },           &lt;br /&gt;
    &amp;quot;http://janedoe.example.org/#me&amp;quot;: {&lt;br /&gt;
      &amp;quot;a&amp;quot;: &amp;quot;foaf:Person&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
           &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* Concept of namespaces and base&lt;br /&gt;
* Subject is an object key&lt;br /&gt;
* Data type arcs for data types&lt;br /&gt;
* Language tag arcs for language tags&lt;br /&gt;
&lt;br /&gt;
===  JSON-LD ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  {                &lt;br /&gt;
    &amp;quot;#&amp;quot;: {&lt;br /&gt;
      &amp;quot;#base&amp;quot;: &amp;quot;http://example/&amp;quot;,                &lt;br /&gt;
      &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;,&lt;br /&gt;
      &amp;quot;xsd&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#&amp;quot;,&lt;br /&gt;
      &amp;quot;vcard&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#&amp;quot;,     &lt;br /&gt;
      &amp;quot;rdfs&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#&amp;quot;,&lt;br /&gt;
      &amp;quot;iCollide&amp;quot;: &amp;quot;http://example.org/icollide#&amp;quot;&lt;br /&gt;
    },            &lt;br /&gt;
    &amp;quot;@&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;,&lt;br /&gt;
    &amp;quot;a&amp;quot;: &amp;quot;foaf:Person&amp;quot;,&lt;br /&gt;
    &amp;quot;foaf:name&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
    &amp;quot;iCollide:name&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
    &amp;quot;foaf:depiction&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/me.jpg&amp;amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;foaf:knows&amp;quot;: [&lt;br /&gt;
      &amp;quot;&amp;amp;lt;http://janedoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;_:b0&amp;quot;&lt;br /&gt;
    ],                  &lt;br /&gt;
    &amp;quot;foaf:birthday&amp;quot;: &amp;quot;2010-03-23T13:40:22.489+00:00^^xsd:dateTime&amp;quot;,&lt;br /&gt;
    &amp;quot;foaf:age&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;foaf:description&amp;quot;: [&lt;br /&gt;
      &amp;quot;Just another Jon Doe@en&amp;quot;,&lt;br /&gt;
      &amp;quot;Justement un autre Jon Doe@fr&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;vcard:geo&amp;quot;: {&lt;br /&gt;
      &amp;quot;#&amp;quot;: {&lt;br /&gt;
        &amp;quot;#base&amp;quot;: &amp;quot;http://example/&amp;quot;,                                    &lt;br /&gt;
        &amp;quot;vcard&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;vcard:latitude&amp;quot;: &amp;quot;49.0202626^^xsd:float&amp;quot;,&lt;br /&gt;
      &amp;quot;vcard:longitude&amp;quot;: &amp;quot;12.8407428^^xsd:float&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;vcard:tel&amp;quot;: &amp;quot;+49-12-3546789^^xsd:string&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;@&amp;quot;: &amp;quot;http://janedoe.example.org/#me&amp;quot;,&lt;br /&gt;
    &amp;quot;a&amp;quot;: &amp;quot;foaf:Person&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;#&amp;quot;: {&lt;br /&gt;
      &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;@&amp;quot;: &amp;quot;_:b0&amp;quot;,&lt;br /&gt;
    &amp;quot;foaf:name&amp;quot;: &amp;quot;John Smith&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* Concept of namespaces and base&lt;br /&gt;
* Microsyntax for subject (@)&lt;br /&gt;
* Microsyntax for language tags&lt;br /&gt;
* Microsyntax for data types&lt;br /&gt;
&lt;br /&gt;
=== JTriples ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://www.w3.org/2000/01/rdf-schema#type&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/Person&amp;amp;gt;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/name&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;Jon&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://example.org/icollide#name&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;Jon&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/depiction&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/me.jpg&amp;amp;gt;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/knows&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;&amp;amp;lt;http://janedoe.example.org/#me&amp;amp;gt;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/knows&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;_:b0&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/birthday&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;\&amp;quot;2010-03-23T13:40:22.489+00:00\&amp;quot;^^&amp;amp;lt;http://www.w3.org/2001/XMLSchema#dateTime&amp;amp;gt;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/age&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: 1&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/description&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;\&amp;quot;Just another Jon Doe\&amp;quot;@en&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/description&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;\&amp;quot;Justement un autre Jon Doe\&amp;quot;@fr&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://www.w3.org/2006/vcard/ns#geo&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;_:b1&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://www.w3.org/2006/vcard/ns#tel&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;\&amp;quot;+49-12-3546789\&amp;quot;^^http://www.w3.org/2001/XMLSchema#string&amp;amp;gt;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;_:b0&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/name&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;John Smith&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;_:b1&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://www.w3.org/2006/vcard/ns#latitude&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;\&amp;quot;49.0202626\&amp;quot;^^&amp;amp;lt;http://www.w3.org/2001/XMLSchema#float&amp;amp;gt;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;_:b1&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://www.w3.org/2006/vcard/ns#longitude&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;\&amp;quot;12.8407428\&amp;quot;^^&amp;amp;lt;http://www.w3.org/2001/XMLSchema#float&amp;amp;gt;&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;s&amp;quot;: &amp;quot;&amp;amp;lt;http://janedoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;p&amp;quot;: &amp;quot;&amp;amp;lt;http://www.w3.org/2000/01/rdf-schema#type&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;o&amp;quot;: &amp;quot;&amp;amp;lt;http://xmlns.com/foaf/0.1/Person&amp;amp;gt;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]              &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* No concept of namespaces&lt;br /&gt;
* Microsyntax for language tags (with escaped quotes (\&amp;quot;))&lt;br /&gt;
* Microsyntax for data types (with escaped quotes (\&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
=== RDF/JSON ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  {                &lt;br /&gt;
    &amp;quot;http://jondoe.example.org/#me&amp;quot;: {&lt;br /&gt;
      &amp;quot;http://www.w3.org/2000/01/rdf-schema#type&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/Person&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;http://example.org/icollide#name&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;http://xmlns.com/foaf/0.1/depiction&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/me.jpg&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;http://xmlns.com/foaf/0.1/knows&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://janedoe.example.org/#me&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;_:b0&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;_bnode&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],                  &lt;br /&gt;
      &amp;quot;http://xmlns.com/foaf/0.1/birthday&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;2010-03-23T13:40:22.489+00:00&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;http://xmlns.com/foaf/0.1/age&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;http://xmlns.com/foaf/0.1/description&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;Just another Jon Doe&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;lang&amp;quot;: &amp;quot;en&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;Justement un autre Jon Doe&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,                      &lt;br /&gt;
          &amp;quot;lang&amp;quot;: &amp;quot;fr&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;http://www.w3.org/2006/vcard/ns#geo&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;_:b1&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;bnode&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],                  &lt;br /&gt;
      &amp;quot;http://www.w3.org/2006/vcard/ns#tel&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;+49-12-3546789&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
                            &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;http://janedoe.example.org/#me&amp;quot;: {&lt;br /&gt;
      &amp;quot;http://www.w3.org/2000/01/rdf-schema#type&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/Person&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_:b0&amp;quot;: {&lt;br /&gt;
    &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;value&amp;quot;: &amp;quot;John Smith&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_:b1&amp;quot;: {&lt;br /&gt;
      &amp;quot;http://www.w3.org/2006/vcard/ns#latitude&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;49.0202626&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#dateTime#float&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;http://www.w3.org/2006/vcard/ns#longitude&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;12.8407428&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#dateTime#float&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }              &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* No concept of namespaces, full IRIs as object keys&lt;br /&gt;
* Paired values for language tags&lt;br /&gt;
* Paired values for data types&lt;br /&gt;
* Subject as object key&lt;br /&gt;
&lt;br /&gt;
=== RDFj ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;context&amp;quot;: {&lt;br /&gt;
      &amp;quot;base&amp;quot;: &amp;quot;&amp;amp;lt;http://example/&amp;amp;gt;&amp;quot;,                &lt;br /&gt;
      &amp;quot;token&amp;quot;: {&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;,&lt;br /&gt;
        &amp;quot;depiction&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/depiction&amp;quot;,&lt;br /&gt;
        &amp;quot;knows&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/knows&amp;quot;,                    &lt;br /&gt;
        &amp;quot;birthday&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/birthday&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/age&amp;quot;,                    &lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/description&amp;quot;,                    &lt;br /&gt;
        &amp;quot;xsd&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#&amp;quot;,&lt;br /&gt;
        &amp;quot;geo&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#geo&amp;quot;,     &lt;br /&gt;
        &amp;quot;tel&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#tel&amp;quot;,     &lt;br /&gt;
        &amp;quot;nameICollide&amp;quot;: &amp;quot;http://example.org/icollide#name&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    },            &lt;br /&gt;
    &amp;quot;$&amp;quot; :&amp;quot;&amp;amp;&amp;amp;lt;http://jondoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;a&amp;quot;: &amp;quot;foaf:Person&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
    &amp;quot;nameICollide&amp;quot;: &amp;quot;Jon&amp;quot;,&lt;br /&gt;
    &amp;quot;depiction&amp;quot;: &amp;quot;&amp;amp;lt;http://jondoe.example.org/me.jpg&amp;amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;knows&amp;quot;: [&lt;br /&gt;
      &amp;quot;&amp;amp;lt;http://janedoe.example.org/#me&amp;amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;amp;lt;bnode:b0&amp;amp;gt;&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;birthday&amp;quot;: &amp;quot;2010-03-23T13:40:22.489+00:00^^http://www.w3.org/2001/XMLSchema#dateTime&amp;quot;,&lt;br /&gt;
    &amp;quot;age&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;description&amp;quot;: [&lt;br /&gt;
      &amp;quot;Just another Jon Doe@en&amp;quot;,&lt;br /&gt;
      &amp;quot;Justement un autre Jon Doe@fr&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;geo&amp;quot;: {&lt;br /&gt;
      &amp;quot;latitude&amp;quot;: {&lt;br /&gt;
        &amp;quot;context&amp;quot;: {&lt;br /&gt;
          &amp;quot;base&amp;quot;: &amp;quot;&amp;amp;lt;http://example/&amp;amp;gt;&amp;quot;,                &lt;br /&gt;
          &amp;quot;token&amp;quot;: {&lt;br /&gt;
            &amp;quot;latitude&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#latitude&amp;quot;,     &lt;br /&gt;
            &amp;quot;longitude&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#longitude&amp;quot;     &lt;br /&gt;
          }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;$&amp;quot;: &amp;quot;&amp;amp;lt;&amp;amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;latitude&amp;quot;: &amp;quot;49.0202626^^http://www.w3.org/2001/XMLSchema#float&amp;quot;,&lt;br /&gt;
        &amp;quot;longitude&amp;quot;: &amp;quot;12.8407428^^http://www.w3.org/2001/XMLSchema#float&amp;quot;                    &lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;tel&amp;quot;: &amp;quot;+49-12-3546789^^http://www.w3.org/2001/XMLSchema#string&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;$&amp;quot;: &amp;quot;http://janedoe.example.org/#me&amp;quot;,&lt;br /&gt;
    &amp;quot;a&amp;quot;: &amp;quot;foaf:Person&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;context&amp;quot;: {&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;$&amp;quot;: &amp;quot;bnode:b0&amp;quot;,&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;John Smith&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* Concept of namespaces and base in form of namespaced tokens&lt;br /&gt;
* Microsyntax for language tags&lt;br /&gt;
* Microsyntax for data types&lt;br /&gt;
* Microsyntax for subject ($)&lt;br /&gt;
&lt;br /&gt;
=== SPARQL Query Results in JSON ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;head&amp;quot;: {&lt;br /&gt;
      &amp;quot;vars&amp;quot;: [&lt;br /&gt;
        &amp;quot;name&amp;quot;,&lt;br /&gt;
        &amp;quot;depiction&amp;quot;,&lt;br /&gt;
        &amp;quot;knows&amp;quot;,&lt;br /&gt;
        &amp;quot;birthday&amp;quot;,&lt;br /&gt;
        &amp;quot;age&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;,&lt;br /&gt;
        &amp;quot;xsd&amp;quot;,&lt;br /&gt;
        &amp;quot;geo&amp;quot;,&lt;br /&gt;
        &amp;quot;tel&amp;quot;,&lt;br /&gt;
        &amp;quot;nameICollide&amp;quot;                  &lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;results&amp;quot;: { &lt;br /&gt;
      &amp;quot;bindings&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Jon&amp;quot;                        &lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;nameICollide&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Jon&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;depiction&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/me.jpg&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;knows&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;http://janedoe.example.org/#me&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;knows&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;bnode&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;b1&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;birthday&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;typed-literal&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;2010-03-23T13:40:22.489+00:00&amp;quot;,&lt;br /&gt;
            &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot;                        &lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;age&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: 1&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;description&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Just another Jon Doe&amp;quot;,&lt;br /&gt;
            &amp;quot;xml:lang&amp;quot;: &amp;quot;en&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;description&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;Justement un autre Jon Doe&amp;quot;,&lt;br /&gt;
            &amp;quot;xml:lang&amp;quot;: &amp;quot;fr&amp;quot;                        &lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;geo&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;bnode&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;b2&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;tel&amp;quot;: {&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;typed-literal&amp;quot;,&lt;br /&gt;
            &amp;quot;value&amp;quot;: &amp;quot;+49-12-3546789&amp;quot;,&lt;br /&gt;
            &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;                        &lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }                  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* No concept of namespaces, but un-namespaces tokens&lt;br /&gt;
* No support for lists&lt;br /&gt;
* Paired values for language tags&lt;br /&gt;
* Paired values for data types&lt;br /&gt;
&lt;br /&gt;
=== Flat triples approach to RDF graphs in JSON ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;          &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;triples&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#type&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/Person&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
        }, &lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;Jon&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;:  {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;:  {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://example.org/icollide#name&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;object&amp;quot;:  {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;Jon&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/depiction&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/me.jpg&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/knows&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://janedoe.example.org/#me&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/knows&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;bnode&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;_:b0&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/birthday&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;typed-literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;2010-03-23T13:40:22.489+00:00&amp;quot;,&lt;br /&gt;
          &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#dateTime&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/age&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: 1&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/description&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;Just another Jon Doe&amp;quot;,&lt;br /&gt;
          &amp;quot;xml:lang&amp;quot;: &amp;quot;en&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/description&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;Justement un autre Jon Doe&amp;quot;,&lt;br /&gt;
          &amp;quot;xml:lang&amp;quot;: &amp;quot;fr&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#geo&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;bnode&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;_:b1&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://jondoe.example.org/#me&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#tel&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;typed-literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;+49-12-3546789&amp;quot;,&lt;br /&gt;
          &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#string&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;bnode&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;_:b0&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;John Smith&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;bnode&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;_:b1&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#latitude&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;typed-literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;49.0202626&amp;quot;,&lt;br /&gt;
          &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#float&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;bnode&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;_:b1&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://www.w3.org/2006/vcard/ns#longitude&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;typed-literal&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;12.8407428&amp;quot;,&lt;br /&gt;
          &amp;quot;datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#float&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      },&lt;br /&gt;
&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;subject&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://janedoe.example.org/#me&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;predicate&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#type&amp;quot;&lt;br /&gt;
        } ,&lt;br /&gt;
        &amp;quot;object&amp;quot;: {&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;uri&amp;quot;,&lt;br /&gt;
          &amp;quot;value&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/Person&amp;quot;&lt;br /&gt;
        } &lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Remarks''':&lt;br /&gt;
* No concept of namespaces, but subject, predicate, object sub-objects&lt;br /&gt;
* Paired values for language tags&lt;br /&gt;
* Paired values for data types&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Msporny Manu Sporny]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Cmatheus Chris Matheus]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Andy_Seaborne Andy Seaborne]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Tsteiner Thomas Steiner]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Mbrunati Matteo Brunati]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Dwood4 David Wood]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Phayes3 Pat Hayes]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Sandro Sandro Hawke]&lt;br /&gt;
* [[User:Nhumfrey|Nicholas Humfrey]]&lt;/div&gt;</description>
			<pubDate>Mon, 04 Apr 2011 14:25:36 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-JSON</comments>		</item>
		<item>
			<title>F2F1</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/F2F1</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;Date&lt;br /&gt;
:13-14 April 2011&lt;br /&gt;
;Location&lt;br /&gt;
: Amsterdam, The Netherlands   ([http://homepages.cwi.nl/~steven/amsterdam.html a guide])&lt;br /&gt;
;Agenda&lt;br /&gt;
:tbd&lt;br /&gt;
;Venue&lt;br /&gt;
:[http://www.cwi.nl CWI]; See [http://www.cwi.nl/general/Address separate page] for directions, or the [http://homepages.cwi.nl/~steven/amsterdam.html pages on Amsterdam] done by Steven Pemberton&lt;br /&gt;
;Hotel Recommendations&lt;br /&gt;
:[[ftf-amsterdam-hotels|Hotel info]]&lt;br /&gt;
&lt;br /&gt;
; Intent to attend (you must sign up to get internet access, food, ...)&lt;br /&gt;
: David Wood&lt;br /&gt;
: Ivan Herman&lt;br /&gt;
: Richard Cyganiak&lt;br /&gt;
: Matteo Brunati&lt;br /&gt;
: Sandro Hawke&lt;br /&gt;
: Steve Harris&lt;br /&gt;
: Guus Schreiber&lt;br /&gt;
: Jean-Francois Baget&lt;br /&gt;
: Mischa Tuffield&lt;br /&gt;
: Nicholas Humfrey&lt;br /&gt;
: Yves Raimond&lt;br /&gt;
: Thomas Steiner&lt;br /&gt;
: Dieter Fensel (trying to reschulde another meeting; will know soon)&lt;br /&gt;
: Fabien Gandon&lt;br /&gt;
; Intent to attend remotely&lt;br /&gt;
: Antoine Zimmermann&lt;br /&gt;
: Peter F. Patel-Schneider (maybe in person, but not yet determined)&lt;br /&gt;
: Axel Polleres&lt;br /&gt;
: Gavin Carothers (Time zones likely to be challenging)&lt;br /&gt;
: Lee Feigenbaum&lt;br /&gt;
: Manu Sporny&lt;br /&gt;
: Scott Bauer&lt;br /&gt;
: Nathan Rixham&lt;br /&gt;
&lt;br /&gt;
; Regrets&lt;br /&gt;
: Andy Seaborne&lt;/div&gt;</description>
			<pubDate>Wed, 16 Mar 2011 15:12:49 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:F2F1</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datatypes ===&lt;br /&gt;
&lt;br /&gt;
RDF includes support for specifying the datatype of literals, commonly referred to as &amp;quot;Typed Literals&amp;quot;, this allows any literal to be given a specific datatype, typically one of the xsd: types.&lt;br /&gt;
&lt;br /&gt;
JSON has inbuilt support for a minimal set of datatypes, namely strings, numbers (which covers integers, doubles and decimals), booleans, arrays and objects.&lt;br /&gt;
&lt;br /&gt;
Commonly used datatypes which are not in JSON but frequently used in RDF, are IRI and the various forms of date and time.&lt;br /&gt;
&lt;br /&gt;
Note: Many other JSON related specifications have found a need to define support for IRIs and various forms of date/time, for example [http://activitystrea.ms/head/json-activity.html Activity Streams JSON].&lt;br /&gt;
&lt;br /&gt;
Note: Objects and Arrays will typically have special meaning/usage for RDF - JSON, so will not be discussed further here.&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility ====&lt;br /&gt;
&lt;br /&gt;
This approach would constrain the syntax to only being able to express those datatypes already existing in JSON, namely:&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Requires no special processing of data&lt;br /&gt;
* Familiar to most JSON users&lt;br /&gt;
* Simple&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility + IRIs and Date/Time ====&lt;br /&gt;
&lt;br /&gt;
This approach would extend the native JSON datatypes to include support for IRI, Date, Time and DateTime:&lt;br /&gt;
 * IRI&lt;br /&gt;
 * Date&lt;br /&gt;
 * DateTime&lt;br /&gt;
 * Time&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
note: the additional types would need to be quoted like strings in order to keep JSON compatibility, e.g. &amp;quot;http://example.org/&amp;quot; rather than the same without quotes.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Property Range from Vocab ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting from the range of the property being used.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; tooling to do so. (nathan: is this a drawback??)&lt;br /&gt;
&lt;br /&gt;
==== Map the property to a datatype ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting on the property, this could be included in the serialization, or in an external map as with the External Maps option for URIs.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; ''new'' tooling to do so.&lt;br /&gt;
&lt;br /&gt;
==== Datatypes from JSON schema ====&lt;br /&gt;
&lt;br /&gt;
As above, what we're doing could be merged with JSON Schema, in fact we could fully externalize and work with JSON Schema to create a single spec which covers most of the webs JSON needs, and our own RDF needs - but that's perhaps too wild for this group and out of charter.&lt;br /&gt;
&lt;br /&gt;
(nathan likes this idea)&lt;br /&gt;
&lt;br /&gt;
==== In-String TypedLiterals ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the datatype in a single quoted string, for example &amp;quot;FDE3^^xsd:base64Binary&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use full IRIs for datatypes, may explicitly offer a set of predefined tokens mapped to IRIs (e.g. &amp;quot;^int&amp;quot;), may have the datatype prefixed or postfixed - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
* What to do when you don't understand a datatype?&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/datatype ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;FDE3&amp;quot;,&lt;br /&gt;
    &amp;quot;_datatype&amp;quot;: &amp;quot;xsd:base64Binary&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - datatype arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: { &amp;quot;xsd:base64Binary&amp;quot;: &amp;quot;FDE3&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#typed-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
* Smaller bytesize on the wire (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Languages ===&lt;br /&gt;
&lt;br /&gt;
RDF currently includes support for specifying the language strings (for example english or dutch), Plain Literals, support is often serialization specific, with RDFa delegating to the lang/xml:lang attributes, and turtle taking the &amp;quot;Bob&amp;quot;@en approach.&lt;br /&gt;
&lt;br /&gt;
JSON currently has no support for specifying the language of strings.&lt;br /&gt;
&lt;br /&gt;
==== No Language ====&lt;br /&gt;
&lt;br /&gt;
It's an option... JSON natively supports unicode, thus strings like &amp;quot;花澄&amp;quot; are perfectly acceptable, and JSON is used effectively throughout the web without requiring a language tag, and further often text consists of multiple different languages and which language tag to use is not clear. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;彭博社:2987名人大代表中70名最富的人资产总值为4931亿人民币，约751亿美元！The richest 70 of the 2,987 members have a combined wealth of 493.1 billion yuan ($75.1 billion)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/westmoon/status/43526455497474048 source]&lt;br /&gt;
&lt;br /&gt;
==== Property Specifies Language ====&lt;br /&gt;
&lt;br /&gt;
This option would involve language specific properties being created in vocabs, for example &amp;quot;rdfs:label-en&amp;quot; and &amp;quot;rdfs:label-ja&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not saying much about this one as it's a huge change to RDF and quite possibly entirely impractical from almost every angle. But, it is an option.&lt;br /&gt;
&lt;br /&gt;
==== Property Modifiers ====&lt;br /&gt;
&lt;br /&gt;
This option involves adding a language hint to the property, as serialization sugar only, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;label@en&amp;quot;: &amp;quot;London&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Potentially lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Potentially smaller bytesize on the wire than both of the paired values option (and allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Can be verbose when working with data in many languages (requires a min of one property value pair per language)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== In-String Language ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the language in a single quoted string, for example &amp;quot;花澄@ja&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use IRIs for languages, may explicitly offer a set of predefined tokens (e.g. &amp;quot;@en&amp;quot;), may have the language prefixed (&amp;quot;ja@花澄&amp;quot;) or postfixed (&amp;quot;花澄@ja&amp;quot;) - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing (including tracking back over parsed data)&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/language ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;花澄&amp;quot;,&lt;br /&gt;
    &amp;quot;_language&amp;quot;: &amp;quot;ja&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - language arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&amp;quot;@en&amp;quot;: &amp;quot;London&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#language-specification-in-plain-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Smaller bytesize on the wire than the other paired values option (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Externalized Languages / Language Mapped to Property ====&lt;br /&gt;
&lt;br /&gt;
Can't think of a decent, reliable way to do this? Maybe somebody can.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syntax Structure ===&lt;br /&gt;
&lt;br /&gt;
RDF is very flexible syntax-wise, because it is a graph based data model (nodes and edges), and can be expressed in any number of ways, from a set of triples, through to key/value objects with a subject assigned.&lt;br /&gt;
&lt;br /&gt;
JSON is typically used to express simple key/value objects, plain old data objects.&lt;br /&gt;
&lt;br /&gt;
RDF in JSON can therefore be assembled as key/value objects with a subject assigned, or in an n-triples like manner (a big list of triples) or anywhere in-between, as with turtle.&lt;br /&gt;
&lt;br /&gt;
note: the benefits and disadvantages run much deeper than the simple ones mentioned in this section, as each option in this document has it's own set of trade-offs, however some primary ones are listed here which are specific to the general syntax option.&lt;br /&gt;
&lt;br /&gt;
==== Triples ====&lt;br /&gt;
&lt;br /&gt;
This option involves specifying the serialization to be a simple set of s,p,o triples, an example may be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;object&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;} },&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;_:b1&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;fdb3&amp;quot;, &amp;quot;_datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#base64Binary&amp;quot;} }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous&lt;br /&gt;
* Simple for machines process (and to spec!)&lt;br /&gt;
* Could be a good machine2machine interchange format for triples.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires RDF Tooling to use for most practical purposes&lt;br /&gt;
* Extremely unfriendly for typical JSON Developers (and anybody working with the JSON.parsed data directly)&lt;br /&gt;
* Extremely verbose + large bytesize over the wire&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach constrains to a triple based syntax, typically lends to &amp;quot;one way to do each thing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Iterative Reduction ====&lt;br /&gt;
&lt;br /&gt;
This approach involves iteratively reducing the Triples approach until something more &amp;quot;turtle-list&amp;quot; (for lack of a better word) is created. Simple beginning steps may involve:&lt;br /&gt;
&lt;br /&gt;
Allowing multiple object values:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: [{&amp;quot;_value&amp;quot;: &amp;quot;London&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Londra&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;it&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Lontoo&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;fi&amp;quot;}] }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Turn each Property-Object chain in to a key/value object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;subject-IRI&amp;quot;: {&lt;br /&gt;
   &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;: [{&amp;quot;_value&amp;quot;: &amp;quot;London&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Londra&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;it&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Lontoo&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;fi&amp;quot;}],&lt;br /&gt;
   &amp;quot;http://www.w3.org/2002/07/owl#sameAs&amp;quot;: [ &amp;quot;http://data.nytimes.com/14085781296239331901&amp;quot;, &amp;quot;http://sws.geonames.org/2643743/&amp;quot; ]&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and so forth, perhaps adopting some of the various options outlined in this document in the process.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
&lt;br /&gt;
Drawbacks ''(depending how close to &amp;quot;Objects&amp;quot; you get)'':&lt;br /&gt;
* Requires RDF Tooling to use for most practical purposes &lt;br /&gt;
* Unfriendly for typical JSON Developers (and anybody working with the JSON.parsed data directly)&lt;br /&gt;
* It's not triples, and it's not objects&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach is unconstrained and every option is viable, including multiple option combinations (multiple ways to state a property for example).&lt;br /&gt;
&lt;br /&gt;
note: there may be more benefits, feel free to add, the original author of this document (nathan) can't see any though, to him this is just unfriendly turtle.&lt;br /&gt;
&lt;br /&gt;
==== Objects ====&lt;br /&gt;
&lt;br /&gt;
This approach starts with typical plain old simple objects as found in most JSON in the wild, then focusses on keeping it as close to the JSON data that's in the wild as possible, and allowing data from specific sources to be consumed without the use of RDF tooling. This lends more to a mapping based approach.&lt;br /&gt;
&lt;br /&gt;
Example starting point:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;id&amp;quot;: 1237642,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typical approach would be to start with a simple key/value object then layer on subjects and additional datatypes (like IRI and dates)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;@id&amp;quot;: &amp;quot;http://example.org/users/1237642#&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then handle URI properties (see the many options under URI Properties above for more):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;@vocab&amp;quot;: &amp;quot;http://example.org/schema/user#&amp;quot;,&lt;br /&gt;
 &amp;quot;@id&amp;quot;: &amp;quot;http://example.org/users/1237642#&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Simple for developers to work with when using JSON.parsed data / not nose-following&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Easy to publish without requiring a full RDF tooling or tech stack changes&lt;br /&gt;
* Potentially allows bootstrapping of many web 2.0 data sources.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires RDF Tooling to use when following your nose around the web&lt;br /&gt;
* Takes more processing when working with the data like RDF than the Triples approach&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach is constrained such that the end result would be as close to existing typical JSON usage as possible, to simple objects that is.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
&lt;br /&gt;
There are many different variations possible, especially when taking the &amp;quot;Iterative Reduction&amp;quot; approach.&lt;br /&gt;
&lt;br /&gt;
Two points to consider from nathan:&lt;br /&gt;
* Every follow your nose usecase always requires tooling and processing, so this can be null and voided from most of the drawback sections. The main variables are &amp;quot;how much processing?&amp;quot;, &amp;quot;how big? (bytesize)&amp;quot; and &amp;quot;can this be easily used as simple JSON.parsed data when not following your nose?&amp;quot;.&lt;br /&gt;
* It helps to have a usecase/requirements/constraints when creating things, both the &amp;quot;triples&amp;quot; and &amp;quot;objects&amp;quot; approaches have clear requirements and end goals, the &amp;quot;iterative reduction&amp;quot; option on the other hand..&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 20:49:43 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* Objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datatypes ===&lt;br /&gt;
&lt;br /&gt;
RDF includes support for specifying the datatype of literals, commonly referred to as &amp;quot;Typed Literals&amp;quot;, this allows any literal to be given a specific datatype, typically one of the xsd: types.&lt;br /&gt;
&lt;br /&gt;
JSON has inbuilt support for a minimal set of datatypes, namely strings, numbers (which covers integers, doubles and decimals), booleans, arrays and objects.&lt;br /&gt;
&lt;br /&gt;
Commonly used datatypes which are not in JSON but frequently used in RDF, are IRI and the various forms of date and time.&lt;br /&gt;
&lt;br /&gt;
Note: Many other JSON related specifications have found a need to define support for IRIs and various forms of date/time, for example [http://activitystrea.ms/head/json-activity.html Activity Streams JSON].&lt;br /&gt;
&lt;br /&gt;
Note: Objects and Arrays will typically have special meaning/usage for RDF - JSON, so will not be discussed further here.&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility ====&lt;br /&gt;
&lt;br /&gt;
This approach would constrain the syntax to only being able to express those datatypes already existing in JSON, namely:&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Requires no special processing of data&lt;br /&gt;
* Familiar to most JSON users&lt;br /&gt;
* Simple&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility + IRIs and Date/Time ====&lt;br /&gt;
&lt;br /&gt;
This approach would extend the native JSON datatypes to include support for IRI, Date, Time and DateTime:&lt;br /&gt;
 * IRI&lt;br /&gt;
 * Date&lt;br /&gt;
 * DateTime&lt;br /&gt;
 * Time&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
note: the additional types would need to be quoted like strings in order to keep JSON compatibility, e.g. &amp;quot;http://example.org/&amp;quot; rather than the same without quotes.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Property Range from Vocab ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting from the range of the property being used.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; tooling to do so. (nathan: is this a drawback??)&lt;br /&gt;
&lt;br /&gt;
==== Map the property to a datatype ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting on the property, this could be included in the serialization, or in an external map as with the External Maps option for URIs.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; ''new'' tooling to do so.&lt;br /&gt;
&lt;br /&gt;
==== Datatypes from JSON schema ====&lt;br /&gt;
&lt;br /&gt;
As above, what we're doing could be merged with JSON Schema, in fact we could fully externalize and work with JSON Schema to create a single spec which covers most of the webs JSON needs, and our own RDF needs - but that's perhaps too wild for this group and out of charter.&lt;br /&gt;
&lt;br /&gt;
(nathan likes this idea)&lt;br /&gt;
&lt;br /&gt;
==== In-String TypedLiterals ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the datatype in a single quoted string, for example &amp;quot;FDE3^^xsd:base64Binary&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use full IRIs for datatypes, may explicitly offer a set of predefined tokens mapped to IRIs (e.g. &amp;quot;^int&amp;quot;), may have the datatype prefixed or postfixed - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
* What to do when you don't understand a datatype?&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/datatype ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;FDE3&amp;quot;,&lt;br /&gt;
    &amp;quot;_datatype&amp;quot;: &amp;quot;xsd:base64Binary&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - datatype arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: { &amp;quot;xsd:base64Binary&amp;quot;: &amp;quot;FDE3&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#typed-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
* Smaller bytesize on the wire (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Languages ===&lt;br /&gt;
&lt;br /&gt;
RDF currently includes support for specifying the language strings (for example english or dutch), Plain Literals, support is often serialization specific, with RDFa delegating to the lang/xml:lang attributes, and turtle taking the &amp;quot;Bob&amp;quot;@en approach.&lt;br /&gt;
&lt;br /&gt;
JSON currently has no support for specifying the language of strings.&lt;br /&gt;
&lt;br /&gt;
==== No Language ====&lt;br /&gt;
&lt;br /&gt;
It's an option... JSON natively supports unicode, thus strings like &amp;quot;花澄&amp;quot; are perfectly acceptable, and JSON is used effectively throughout the web without requiring a language tag, and further often text consists of multiple different languages and which language tag to use is not clear. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;彭博社:2987名人大代表中70名最富的人资产总值为4931亿人民币，约751亿美元！The richest 70 of the 2,987 members have a combined wealth of 493.1 billion yuan ($75.1 billion)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/westmoon/status/43526455497474048 source]&lt;br /&gt;
&lt;br /&gt;
==== Property Specifies Language ====&lt;br /&gt;
&lt;br /&gt;
This option would involve language specific properties being created in vocabs, for example &amp;quot;rdfs:label-en&amp;quot; and &amp;quot;rdfs:label-ja&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not saying much about this one as it's a huge change to RDF and quite possibly entirely impractical from almost every angle. But, it is an option.&lt;br /&gt;
&lt;br /&gt;
==== Property Modifiers ====&lt;br /&gt;
&lt;br /&gt;
This option involves adding a language hint to the property, as serialization sugar only, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;label@en&amp;quot;: &amp;quot;London&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Potentially lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Potentially smaller bytesize on the wire than both of the paired values option (and allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Can be verbose when working with data in many languages (requires a min of one property value pair per language)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== In-String Language ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the language in a single quoted string, for example &amp;quot;花澄@ja&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use IRIs for languages, may explicitly offer a set of predefined tokens (e.g. &amp;quot;@en&amp;quot;), may have the language prefixed (&amp;quot;ja@花澄&amp;quot;) or postfixed (&amp;quot;花澄@ja&amp;quot;) - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing (including tracking back over parsed data)&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/language ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;花澄&amp;quot;,&lt;br /&gt;
    &amp;quot;_language&amp;quot;: &amp;quot;ja&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - language arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&amp;quot;@en&amp;quot;: &amp;quot;London&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#language-specification-in-plain-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Smaller bytesize on the wire than the other paired values option (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Externalized Languages / Language Mapped to Property ====&lt;br /&gt;
&lt;br /&gt;
Can't think of a decent, reliable way to do this? Maybe somebody can.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syntax Structure ===&lt;br /&gt;
&lt;br /&gt;
RDF is very flexible syntax-wise, because it is a graph based data model (nodes and edges), and can be expressed in any number of ways, from a set of triples, through to key/value objects with a subject assigned.&lt;br /&gt;
&lt;br /&gt;
JSON is typically used to express simple key/value objects, plain old data objects.&lt;br /&gt;
&lt;br /&gt;
RDF in JSON can therefore be assembled as key/value objects with a subject assigned, or in an n-triples like manner (a big list of triples) or anywhere in-between, as with turtle.&lt;br /&gt;
&lt;br /&gt;
note: the benefits and disadvantages run much deeper than the simple ones mentioned in this section, as each option in this document has it's own set of trade-offs, however some primary ones are listed here which are specific to the general syntax option.&lt;br /&gt;
&lt;br /&gt;
==== Triples ====&lt;br /&gt;
&lt;br /&gt;
This option involves specifying the serialization to be a simple set of s,p,o triples, an example may be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;object&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;} },&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;_:b1&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;fdb3&amp;quot;, &amp;quot;_datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#base64Binary&amp;quot;} }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous&lt;br /&gt;
* Simple for machines process (and to spec!)&lt;br /&gt;
* Could be a good machine2machine interchange format for triples.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires RDF Tooling to use for most practical purposes&lt;br /&gt;
* Extremely unfriendly for typical JSON Developers (and anybody working with the JSON.parsed data directly)&lt;br /&gt;
* Extremely verbose + large bytesize over the wire&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach constrains to a triple based syntax, typically lends to &amp;quot;one way to do each thing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Iterative Reduction ====&lt;br /&gt;
&lt;br /&gt;
This approach involves iteratively reducing the Triples approach until something more &amp;quot;turtle-list&amp;quot; (for lack of a better word) is created. Simple beginning steps may involve:&lt;br /&gt;
&lt;br /&gt;
Allowing multiple object values:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: [{&amp;quot;_value&amp;quot;: &amp;quot;London&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Londra&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;it&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Lontoo&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;fi&amp;quot;}] }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Turn each Property-Object chain in to a key/value object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;subject-IRI&amp;quot;: {&lt;br /&gt;
   &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;: [{&amp;quot;_value&amp;quot;: &amp;quot;London&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Londra&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;it&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Lontoo&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;fi&amp;quot;}],&lt;br /&gt;
   &amp;quot;http://www.w3.org/2002/07/owl#sameAs&amp;quot;: [ &amp;quot;http://data.nytimes.com/14085781296239331901&amp;quot;, &amp;quot;http://sws.geonames.org/2643743/&amp;quot; ]&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and so forth, perhaps adopting some of the various options outlined in this document in the process.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
&lt;br /&gt;
Drawbacks ''(depending how close to &amp;quot;Objects&amp;quot; you get)'':&lt;br /&gt;
* Requires RDF Tooling to use for most practical purposes &lt;br /&gt;
* Unfriendly for typical JSON Developers (and anybody working with the JSON.parsed data directly)&lt;br /&gt;
* It's not triples, and it's not objects&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach is unconstrained and every option is viable, including multiple option combinations (multiple ways to state a property for example).&lt;br /&gt;
&lt;br /&gt;
note: there may be more benefits, feel free to add, the original author of this document (nathan) can't see any though, to him this is just unfriendly turtle.&lt;br /&gt;
&lt;br /&gt;
==== Objects ====&lt;br /&gt;
&lt;br /&gt;
This approach starts with typical plain old simple objects as found in most JSON in the wild, then focusses on keeping it as close to the JSON data that's in the wild as possible, and allowing data from specific sources to be consumed without the use of RDF tooling. This lends more to a mapping based approach.&lt;br /&gt;
&lt;br /&gt;
Example starting point:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;id&amp;quot;: 1237642,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typical approach would be to start with a simple key/value object then layer on subjects and additional datatypes (like IRI and dates)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;@id&amp;quot;: &amp;quot;http://example.org/users/1237642#&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then handle URI properties (see the many options under URI Properties above for more):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;@vocab&amp;quot;: &amp;quot;http://example.org/schema/user#&amp;quot;,&lt;br /&gt;
 &amp;quot;@id&amp;quot;: &amp;quot;http://example.org/users/1237642#&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Simple for developers to work with when using JSON.parsed data / not nose-following&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Easy to publish without requiring a full RDF tooling or tech stack changes&lt;br /&gt;
* Potentially allows bootstrapping of many web 2.0 data sources.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires RDF Tooling to use when following your nose around the web&lt;br /&gt;
* Takes more processing when working with the data like RDF than the Triples approach&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach is constrained such that the end result would be as close to existing typical JSON usage as possible, to simple objects that is.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
&lt;br /&gt;
There are many different variations possible, especially when taking the &amp;quot;Iterative Reduction&amp;quot; approach.&lt;br /&gt;
&lt;br /&gt;
Two points to consider from nathan:&lt;br /&gt;
* Every follow your nose usecase always requires tooling and processing, so this can be null and voided from most of the drawback sections. The only variables are &amp;quot;how much processing?&amp;quot;, &amp;quot;how big? (bytesize)&amp;quot; and &amp;quot;can this be easily used as simple JSON.parsed data when not following your nose?&amp;quot;.&lt;br /&gt;
* It helps to have a usecase/requirements/constraints when creating things, both the &amp;quot;triples&amp;quot; and &amp;quot;objects&amp;quot; approaches have clear requirements and end goals, the &amp;quot;iterative reduction&amp;quot; option on the other hand..&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 20:49:03 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datatypes ===&lt;br /&gt;
&lt;br /&gt;
RDF includes support for specifying the datatype of literals, commonly referred to as &amp;quot;Typed Literals&amp;quot;, this allows any literal to be given a specific datatype, typically one of the xsd: types.&lt;br /&gt;
&lt;br /&gt;
JSON has inbuilt support for a minimal set of datatypes, namely strings, numbers (which covers integers, doubles and decimals), booleans, arrays and objects.&lt;br /&gt;
&lt;br /&gt;
Commonly used datatypes which are not in JSON but frequently used in RDF, are IRI and the various forms of date and time.&lt;br /&gt;
&lt;br /&gt;
Note: Many other JSON related specifications have found a need to define support for IRIs and various forms of date/time, for example [http://activitystrea.ms/head/json-activity.html Activity Streams JSON].&lt;br /&gt;
&lt;br /&gt;
Note: Objects and Arrays will typically have special meaning/usage for RDF - JSON, so will not be discussed further here.&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility ====&lt;br /&gt;
&lt;br /&gt;
This approach would constrain the syntax to only being able to express those datatypes already existing in JSON, namely:&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Requires no special processing of data&lt;br /&gt;
* Familiar to most JSON users&lt;br /&gt;
* Simple&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility + IRIs and Date/Time ====&lt;br /&gt;
&lt;br /&gt;
This approach would extend the native JSON datatypes to include support for IRI, Date, Time and DateTime:&lt;br /&gt;
 * IRI&lt;br /&gt;
 * Date&lt;br /&gt;
 * DateTime&lt;br /&gt;
 * Time&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
note: the additional types would need to be quoted like strings in order to keep JSON compatibility, e.g. &amp;quot;http://example.org/&amp;quot; rather than the same without quotes.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Property Range from Vocab ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting from the range of the property being used.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; tooling to do so. (nathan: is this a drawback??)&lt;br /&gt;
&lt;br /&gt;
==== Map the property to a datatype ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting on the property, this could be included in the serialization, or in an external map as with the External Maps option for URIs.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; ''new'' tooling to do so.&lt;br /&gt;
&lt;br /&gt;
==== Datatypes from JSON schema ====&lt;br /&gt;
&lt;br /&gt;
As above, what we're doing could be merged with JSON Schema, in fact we could fully externalize and work with JSON Schema to create a single spec which covers most of the webs JSON needs, and our own RDF needs - but that's perhaps too wild for this group and out of charter.&lt;br /&gt;
&lt;br /&gt;
(nathan likes this idea)&lt;br /&gt;
&lt;br /&gt;
==== In-String TypedLiterals ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the datatype in a single quoted string, for example &amp;quot;FDE3^^xsd:base64Binary&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use full IRIs for datatypes, may explicitly offer a set of predefined tokens mapped to IRIs (e.g. &amp;quot;^int&amp;quot;), may have the datatype prefixed or postfixed - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
* What to do when you don't understand a datatype?&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/datatype ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;FDE3&amp;quot;,&lt;br /&gt;
    &amp;quot;_datatype&amp;quot;: &amp;quot;xsd:base64Binary&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - datatype arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: { &amp;quot;xsd:base64Binary&amp;quot;: &amp;quot;FDE3&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#typed-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
* Smaller bytesize on the wire (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Languages ===&lt;br /&gt;
&lt;br /&gt;
RDF currently includes support for specifying the language strings (for example english or dutch), Plain Literals, support is often serialization specific, with RDFa delegating to the lang/xml:lang attributes, and turtle taking the &amp;quot;Bob&amp;quot;@en approach.&lt;br /&gt;
&lt;br /&gt;
JSON currently has no support for specifying the language of strings.&lt;br /&gt;
&lt;br /&gt;
==== No Language ====&lt;br /&gt;
&lt;br /&gt;
It's an option... JSON natively supports unicode, thus strings like &amp;quot;花澄&amp;quot; are perfectly acceptable, and JSON is used effectively throughout the web without requiring a language tag, and further often text consists of multiple different languages and which language tag to use is not clear. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;彭博社:2987名人大代表中70名最富的人资产总值为4931亿人民币，约751亿美元！The richest 70 of the 2,987 members have a combined wealth of 493.1 billion yuan ($75.1 billion)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/westmoon/status/43526455497474048 source]&lt;br /&gt;
&lt;br /&gt;
==== Property Specifies Language ====&lt;br /&gt;
&lt;br /&gt;
This option would involve language specific properties being created in vocabs, for example &amp;quot;rdfs:label-en&amp;quot; and &amp;quot;rdfs:label-ja&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not saying much about this one as it's a huge change to RDF and quite possibly entirely impractical from almost every angle. But, it is an option.&lt;br /&gt;
&lt;br /&gt;
==== Property Modifiers ====&lt;br /&gt;
&lt;br /&gt;
This option involves adding a language hint to the property, as serialization sugar only, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;label@en&amp;quot;: &amp;quot;London&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Potentially lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Potentially smaller bytesize on the wire than both of the paired values option (and allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Can be verbose when working with data in many languages (requires a min of one property value pair per language)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== In-String Language ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the language in a single quoted string, for example &amp;quot;花澄@ja&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use IRIs for languages, may explicitly offer a set of predefined tokens (e.g. &amp;quot;@en&amp;quot;), may have the language prefixed (&amp;quot;ja@花澄&amp;quot;) or postfixed (&amp;quot;花澄@ja&amp;quot;) - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing (including tracking back over parsed data)&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/language ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;花澄&amp;quot;,&lt;br /&gt;
    &amp;quot;_language&amp;quot;: &amp;quot;ja&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - language arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&amp;quot;@en&amp;quot;: &amp;quot;London&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#language-specification-in-plain-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Smaller bytesize on the wire than the other paired values option (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Externalized Languages / Language Mapped to Property ====&lt;br /&gt;
&lt;br /&gt;
Can't think of a decent, reliable way to do this? Maybe somebody can.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syntax Structure ===&lt;br /&gt;
&lt;br /&gt;
RDF is very flexible syntax-wise, because it is a graph based data model (nodes and edges), and can be expressed in any number of ways, from a set of triples, through to key/value objects with a subject assigned.&lt;br /&gt;
&lt;br /&gt;
JSON is typically used to express simple key/value objects, plain old data objects.&lt;br /&gt;
&lt;br /&gt;
RDF in JSON can therefore be assembled as key/value objects with a subject assigned, or in an n-triples like manner (a big list of triples) or anywhere in-between, as with turtle.&lt;br /&gt;
&lt;br /&gt;
note: the benefits and disadvantages run much deeper than the simple ones mentioned in this section, as each option in this document has it's own set of trade-offs, however some primary ones are listed here which are specific to the general syntax option.&lt;br /&gt;
&lt;br /&gt;
==== Triples ====&lt;br /&gt;
&lt;br /&gt;
This option involves specifying the serialization to be a simple set of s,p,o triples, an example may be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;object&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;} },&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;_:b1&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;fdb3&amp;quot;, &amp;quot;_datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#base64Binary&amp;quot;} }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous&lt;br /&gt;
* Simple for machines process (and to spec!)&lt;br /&gt;
* Could be a good machine2machine interchange format for triples.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires RDF Tooling to use for most practical purposes&lt;br /&gt;
* Extremely unfriendly for typical JSON Developers (and anybody working with the JSON.parsed data directly)&lt;br /&gt;
* Extremely verbose + large bytesize over the wire&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach constrains to a triple based syntax, typically lends to &amp;quot;one way to do each thing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Iterative Reduction ====&lt;br /&gt;
&lt;br /&gt;
This approach involves iteratively reducing the Triples approach until something more &amp;quot;turtle-list&amp;quot; (for lack of a better word) is created. Simple beginning steps may involve:&lt;br /&gt;
&lt;br /&gt;
Allowing multiple object values:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: [{&amp;quot;_value&amp;quot;: &amp;quot;London&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Londra&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;it&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Lontoo&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;fi&amp;quot;}] }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Turn each Property-Object chain in to a key/value object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;subject-IRI&amp;quot;: {&lt;br /&gt;
   &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;: [{&amp;quot;_value&amp;quot;: &amp;quot;London&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Londra&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;it&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Lontoo&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;fi&amp;quot;}],&lt;br /&gt;
   &amp;quot;http://www.w3.org/2002/07/owl#sameAs&amp;quot;: [ &amp;quot;http://data.nytimes.com/14085781296239331901&amp;quot;, &amp;quot;http://sws.geonames.org/2643743/&amp;quot; ]&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and so forth, perhaps adopting some of the various options outlined in this document in the process.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
&lt;br /&gt;
Drawbacks ''(depending how close to &amp;quot;Objects&amp;quot; you get)'':&lt;br /&gt;
* Requires RDF Tooling to use for most practical purposes &lt;br /&gt;
* Unfriendly for typical JSON Developers (and anybody working with the JSON.parsed data directly)&lt;br /&gt;
* It's not triples, and it's not objects&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach is unconstrained and every option is viable, including multiple option combinations (multiple ways to state a property for example).&lt;br /&gt;
&lt;br /&gt;
note: there may be more benefits, feel free to add, the original author of this document (nathan) can't see any though, to him this is just unfriendly turtle.&lt;br /&gt;
&lt;br /&gt;
==== Objects ====&lt;br /&gt;
&lt;br /&gt;
This approach starts with typical plain old simple objects as found in most JSON in the wild, then focusses on keeping it as close to the JSON data that's in the wild as possible, and allowing data from specific sources to be consumed without the use of RDF tooling. This lends more to a mapping based approach.&lt;br /&gt;
&lt;br /&gt;
Example starting point:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;id&amp;quot;: 1237642,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typical approach would be to start with a simple key/value object then layer on subjects and additional datatypes (like IRI and dates)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;@id&amp;quot;: &amp;quot;http://example.org/users/1237642#&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then handle URI properties (see the many options under URI Properties above for more):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;@vocab&amp;quot;: &amp;quot;http://example.org/schema/user#&amp;quot;,&lt;br /&gt;
 &amp;quot;@id&amp;quot;: &amp;quot;http://example.org/users/1237642#&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Simple for developers to work with when using JSON.parsed data&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Easy to publish without requiring a full RDF tooling or tech stack changes&lt;br /&gt;
* Potentially allows bootstrapping of many web 2.0 data sources.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires RDF Tooling to use when following your nose around the web&lt;br /&gt;
* Takes more processing when working with the data like RDF than the Triples approach&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach is constrained such that the end result would be as close to existing typical JSON usage, to simple objects that is.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
&lt;br /&gt;
There are many different variations possible, especially when taking the &amp;quot;Iterative Reduction&amp;quot; approach.&lt;br /&gt;
&lt;br /&gt;
Two points to consider from nathan:&lt;br /&gt;
* Every follow your nose usecase always requires tooling and processing, so this can be null and voided from most of the drawback sections. The only variables are &amp;quot;how much processing?&amp;quot;, &amp;quot;how big? (bytesize)&amp;quot; and &amp;quot;can this be easily used as simple JSON.parsed data when not following your nose?&amp;quot;.&lt;br /&gt;
* It helps to have a usecase/requirements/constraints when creating things, both the &amp;quot;triples&amp;quot; and &amp;quot;objects&amp;quot; approaches have clear requirements and end goals, the &amp;quot;iterative reduction&amp;quot; option on the other hand..&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 20:43:20 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* Syntax Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datatypes ===&lt;br /&gt;
&lt;br /&gt;
RDF includes support for specifying the datatype of literals, commonly referred to as &amp;quot;Typed Literals&amp;quot;, this allows any literal to be given a specific datatype, typically one of the xsd: types.&lt;br /&gt;
&lt;br /&gt;
JSON has inbuilt support for a minimal set of datatypes, namely strings, numbers (which covers integers, doubles and decimals), booleans, arrays and objects.&lt;br /&gt;
&lt;br /&gt;
Commonly used datatypes which are not in JSON but frequently used in RDF, are IRI and the various forms of date and time.&lt;br /&gt;
&lt;br /&gt;
Note: Many other JSON related specifications have found a need to define support for IRIs and various forms of date/time, for example [http://activitystrea.ms/head/json-activity.html Activity Streams JSON].&lt;br /&gt;
&lt;br /&gt;
Note: Objects and Arrays will typically have special meaning/usage for RDF - JSON, so will not be discussed further here.&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility ====&lt;br /&gt;
&lt;br /&gt;
This approach would constrain the syntax to only being able to express those datatypes already existing in JSON, namely:&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Requires no special processing of data&lt;br /&gt;
* Familiar to most JSON users&lt;br /&gt;
* Simple&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility + IRIs and Date/Time ====&lt;br /&gt;
&lt;br /&gt;
This approach would extend the native JSON datatypes to include support for IRI, Date, Time and DateTime:&lt;br /&gt;
 * IRI&lt;br /&gt;
 * Date&lt;br /&gt;
 * DateTime&lt;br /&gt;
 * Time&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
note: the additional types would need to be quoted like strings in order to keep JSON compatibility, e.g. &amp;quot;http://example.org/&amp;quot; rather than the same without quotes.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Property Range from Vocab ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting from the range of the property being used.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; tooling to do so. (nathan: is this a drawback??)&lt;br /&gt;
&lt;br /&gt;
==== Map the property to a datatype ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting on the property, this could be included in the serialization, or in an external map as with the External Maps option for URIs.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; ''new'' tooling to do so.&lt;br /&gt;
&lt;br /&gt;
==== Datatypes from JSON schema ====&lt;br /&gt;
&lt;br /&gt;
As above, what we're doing could be merged with JSON Schema, in fact we could fully externalize and work with JSON Schema to create a single spec which covers most of the webs JSON needs, and our own RDF needs - but that's perhaps too wild for this group and out of charter.&lt;br /&gt;
&lt;br /&gt;
(nathan likes this idea)&lt;br /&gt;
&lt;br /&gt;
==== In-String TypedLiterals ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the datatype in a single quoted string, for example &amp;quot;FDE3^^xsd:base64Binary&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use full IRIs for datatypes, may explicitly offer a set of predefined tokens mapped to IRIs (e.g. &amp;quot;^int&amp;quot;), may have the datatype prefixed or postfixed - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
* What to do when you don't understand a datatype?&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/datatype ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;FDE3&amp;quot;,&lt;br /&gt;
    &amp;quot;_datatype&amp;quot;: &amp;quot;xsd:base64Binary&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - datatype arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: { &amp;quot;xsd:base64Binary&amp;quot;: &amp;quot;FDE3&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#typed-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
* Smaller bytesize on the wire (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Languages ===&lt;br /&gt;
&lt;br /&gt;
RDF currently includes support for specifying the language strings (for example english or dutch), Plain Literals, support is often serialization specific, with RDFa delegating to the lang/xml:lang attributes, and turtle taking the &amp;quot;Bob&amp;quot;@en approach.&lt;br /&gt;
&lt;br /&gt;
JSON currently has no support for specifying the language of strings.&lt;br /&gt;
&lt;br /&gt;
==== No Language ====&lt;br /&gt;
&lt;br /&gt;
It's an option... JSON natively supports unicode, thus strings like &amp;quot;花澄&amp;quot; are perfectly acceptable, and JSON is used effectively throughout the web without requiring a language tag, and further often text consists of multiple different languages and which language tag to use is not clear. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;彭博社:2987名人大代表中70名最富的人资产总值为4931亿人民币，约751亿美元！The richest 70 of the 2,987 members have a combined wealth of 493.1 billion yuan ($75.1 billion)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/westmoon/status/43526455497474048 source]&lt;br /&gt;
&lt;br /&gt;
==== Property Specifies Language ====&lt;br /&gt;
&lt;br /&gt;
This option would involve language specific properties being created in vocabs, for example &amp;quot;rdfs:label-en&amp;quot; and &amp;quot;rdfs:label-ja&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not saying much about this one as it's a huge change to RDF and quite possibly entirely impractical from almost every angle. But, it is an option.&lt;br /&gt;
&lt;br /&gt;
==== Property Modifiers ====&lt;br /&gt;
&lt;br /&gt;
This option involves adding a language hint to the property, as serialization sugar only, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;label@en&amp;quot;: &amp;quot;London&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Potentially lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Potentially smaller bytesize on the wire than both of the paired values option (and allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Can be verbose when working with data in many languages (requires a min of one property value pair per language)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== In-String Language ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the language in a single quoted string, for example &amp;quot;花澄@ja&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use IRIs for languages, may explicitly offer a set of predefined tokens (e.g. &amp;quot;@en&amp;quot;), may have the language prefixed (&amp;quot;ja@花澄&amp;quot;) or postfixed (&amp;quot;花澄@ja&amp;quot;) - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing (including tracking back over parsed data)&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/language ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;花澄&amp;quot;,&lt;br /&gt;
    &amp;quot;_language&amp;quot;: &amp;quot;ja&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - language arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&amp;quot;@en&amp;quot;: &amp;quot;London&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#language-specification-in-plain-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Smaller bytesize on the wire than the other paired values option (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Externalized Languages / Language Mapped to Property ====&lt;br /&gt;
&lt;br /&gt;
Can't think of a decent, reliable way to do this? Maybe somebody can.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syntax Structure ===&lt;br /&gt;
&lt;br /&gt;
RDF is very flexible syntax-wise, because it is a graph based data model (nodes and edges), and can be expressed in any number of ways, from a set of triples, through to key/value objects with a subject assigned.&lt;br /&gt;
&lt;br /&gt;
JSON is typically used to express simple key/value objects, plain old data objects.&lt;br /&gt;
&lt;br /&gt;
RDF in JSON can therefore be assembled as key/value objects with a subject assigned, or in an n-triples like manner (a big list of triples) or anywhere in-between, as with turtle.&lt;br /&gt;
&lt;br /&gt;
note: the benefits and disadvantages run much deeper than the simple ones mentioned in this section, as each option in this document has it's own set of trade-offs, however some primary ones are listed here which are specific to the general syntax option.&lt;br /&gt;
&lt;br /&gt;
==== Triples ====&lt;br /&gt;
&lt;br /&gt;
This option involves specifying the serialization to be a simple set of s,p,o triples, an example may be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;object&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;} },&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;_:b1&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;fdb3&amp;quot;, &amp;quot;_datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#base64Binary&amp;quot;} }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous&lt;br /&gt;
* Simple for machines process (and to spec!)&lt;br /&gt;
* Could be a good machine2machine interchange format for triples.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires RDF Tooling to use for most practical purposes&lt;br /&gt;
* Extremely unfriendly for typical JSON Developers (and anybody working with the JSON.parsed data directly)&lt;br /&gt;
* Extremely verbose + large bytesize over the wire&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach constrains to a triple based syntax, typically lends to &amp;quot;one way to do each thing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Iterative Reduction ====&lt;br /&gt;
&lt;br /&gt;
This approach involves iteratively reducing the Triples approach until something more &amp;quot;turtle-list&amp;quot; (for lack of a better word) is created. Simple beginning steps may involve:&lt;br /&gt;
&lt;br /&gt;
Allowing multiple object values:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: [{&amp;quot;_value&amp;quot;: &amp;quot;London&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Londra&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;it&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Lontoo&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;fi&amp;quot;}] }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Turn each Property-Object chain in to a key/value object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;subject-IRI&amp;quot;: {&lt;br /&gt;
   &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;: [{&amp;quot;_value&amp;quot;: &amp;quot;London&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Londra&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;it&amp;quot;},{&amp;quot;_value&amp;quot;: &amp;quot;Lontoo&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;fi&amp;quot;}],&lt;br /&gt;
   &amp;quot;http://www.w3.org/2002/07/owl#sameAs&amp;quot;: [ &amp;quot;http://data.nytimes.com/14085781296239331901&amp;quot;, &amp;quot;http://sws.geonames.org/2643743/&amp;quot; ]&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and so forth, perhaps adopting some of the various options outlined in this document in the process.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
&lt;br /&gt;
Drawbacks ''(depending how close to &amp;quot;Objects&amp;quot; you get)'':&lt;br /&gt;
* Requires RDF Tooling to use for most practical purposes &lt;br /&gt;
* Unfriendly for typical JSON Developers (and anybody working with the JSON.parsed data directly)&lt;br /&gt;
* It's not triples, and it's not objects&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach is unconstrained and every option is viable, including multiple option combinations (multiple ways to state a property for example).&lt;br /&gt;
&lt;br /&gt;
note: there may be more benefits, feel free to add, the original author of this document (nathan) can't see any though, to him this is just unfriendly turtle.&lt;br /&gt;
&lt;br /&gt;
==== Objects ====&lt;br /&gt;
&lt;br /&gt;
This approach starts with typical plain old simple objects as found in most JSON in the wild, then focusses on keeping it as close to the JSON data that's in the wild as possible, and allowing data from specific sources to be consumed without the use of RDF tooling. This lends more to a mapping based approach.&lt;br /&gt;
&lt;br /&gt;
Example starting point:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;id&amp;quot;: 1237642,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typical approach would be to start with a simple key/value object then layer on subjects and additional datatypes (like IRI and dates)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;@id&amp;quot;: &amp;quot;http://example.org/users/1237642#&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then handle URI properties (see the many options under URI Properties above for more):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;@vocab&amp;quot;: &amp;quot;http://example.org/schema/user#&amp;quot;,&lt;br /&gt;
 &amp;quot;@id&amp;quot;: &amp;quot;http://example.org/users/1237642#&amp;quot;,&lt;br /&gt;
 &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
 &amp;quot;age&amp;quot;: 44&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Simple for developers to work with when using JSON.parsed data&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Easy to publish without requiring a full RDF tooling or tech stack changes&lt;br /&gt;
* Potentially allows bootstrapping of many web 2.0 data sources.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires RDF Tooling to use when following your nose around the web&lt;br /&gt;
* Takes more processing when working with the data like RDF than the Triples approach&lt;br /&gt;
&lt;br /&gt;
Distinguishing Features:&lt;br /&gt;
* approach is constrained such that the end result would be as close to existing typical JSON usage, to simple objects that is.&lt;br /&gt;
&lt;br /&gt;
==== Summary ====&lt;br /&gt;
&lt;br /&gt;
There are many different variations possible, especially when taking the &amp;quot;Iterative Reduction&amp;quot; approach.&lt;br /&gt;
&lt;br /&gt;
Two points to consider from the nathan:&lt;br /&gt;
* Every follow your nose usecase always requires tooling and processing, so this can be null and voided from most of the drawback sections. The only variables are &amp;quot;how much processing?&amp;quot;, &amp;quot;how big? (bytesize)&amp;quot; and &amp;quot;can this be easily used as simple JSON.parsed data when not following your nose?&amp;quot;.&lt;br /&gt;
* It helps to have a usecase/requirements/constraints when creating things, both the &amp;quot;triples&amp;quot; and &amp;quot;objects&amp;quot; approaches have clear requirements and end goals, the &amp;quot;iterative reduction&amp;quot; option on the other hand..&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 20:29:11 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;adding Syntax Structure section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datatypes ===&lt;br /&gt;
&lt;br /&gt;
RDF includes support for specifying the datatype of literals, commonly referred to as &amp;quot;Typed Literals&amp;quot;, this allows any literal to be given a specific datatype, typically one of the xsd: types.&lt;br /&gt;
&lt;br /&gt;
JSON has inbuilt support for a minimal set of datatypes, namely strings, numbers (which covers integers, doubles and decimals), booleans, arrays and objects.&lt;br /&gt;
&lt;br /&gt;
Commonly used datatypes which are not in JSON but frequently used in RDF, are IRI and the various forms of date and time.&lt;br /&gt;
&lt;br /&gt;
Note: Many other JSON related specifications have found a need to define support for IRIs and various forms of date/time, for example [http://activitystrea.ms/head/json-activity.html Activity Streams JSON].&lt;br /&gt;
&lt;br /&gt;
Note: Objects and Arrays will typically have special meaning/usage for RDF - JSON, so will not be discussed further here.&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility ====&lt;br /&gt;
&lt;br /&gt;
This approach would constrain the syntax to only being able to express those datatypes already existing in JSON, namely:&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Requires no special processing of data&lt;br /&gt;
* Familiar to most JSON users&lt;br /&gt;
* Simple&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility + IRIs and Date/Time ====&lt;br /&gt;
&lt;br /&gt;
This approach would extend the native JSON datatypes to include support for IRI, Date, Time and DateTime:&lt;br /&gt;
 * IRI&lt;br /&gt;
 * Date&lt;br /&gt;
 * DateTime&lt;br /&gt;
 * Time&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
note: the additional types would need to be quoted like strings in order to keep JSON compatibility, e.g. &amp;quot;http://example.org/&amp;quot; rather than the same without quotes.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Property Range from Vocab ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting from the range of the property being used.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; tooling to do so. (nathan: is this a drawback??)&lt;br /&gt;
&lt;br /&gt;
==== Map the property to a datatype ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting on the property, this could be included in the serialization, or in an external map as with the External Maps option for URIs.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; ''new'' tooling to do so.&lt;br /&gt;
&lt;br /&gt;
==== Datatypes from JSON schema ====&lt;br /&gt;
&lt;br /&gt;
As above, what we're doing could be merged with JSON Schema, in fact we could fully externalize and work with JSON Schema to create a single spec which covers most of the webs JSON needs, and our own RDF needs - but that's perhaps too wild for this group and out of charter.&lt;br /&gt;
&lt;br /&gt;
(nathan likes this idea)&lt;br /&gt;
&lt;br /&gt;
==== In-String TypedLiterals ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the datatype in a single quoted string, for example &amp;quot;FDE3^^xsd:base64Binary&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use full IRIs for datatypes, may explicitly offer a set of predefined tokens mapped to IRIs (e.g. &amp;quot;^int&amp;quot;), may have the datatype prefixed or postfixed - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
* What to do when you don't understand a datatype?&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/datatype ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;FDE3&amp;quot;,&lt;br /&gt;
    &amp;quot;_datatype&amp;quot;: &amp;quot;xsd:base64Binary&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - datatype arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: { &amp;quot;xsd:base64Binary&amp;quot;: &amp;quot;FDE3&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#typed-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
* Smaller bytesize on the wire (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Languages ===&lt;br /&gt;
&lt;br /&gt;
RDF currently includes support for specifying the language strings (for example english or dutch), Plain Literals, support is often serialization specific, with RDFa delegating to the lang/xml:lang attributes, and turtle taking the &amp;quot;Bob&amp;quot;@en approach.&lt;br /&gt;
&lt;br /&gt;
JSON currently has no support for specifying the language of strings.&lt;br /&gt;
&lt;br /&gt;
==== No Language ====&lt;br /&gt;
&lt;br /&gt;
It's an option... JSON natively supports unicode, thus strings like &amp;quot;花澄&amp;quot; are perfectly acceptable, and JSON is used effectively throughout the web without requiring a language tag, and further often text consists of multiple different languages and which language tag to use is not clear. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;彭博社:2987名人大代表中70名最富的人资产总值为4931亿人民币，约751亿美元！The richest 70 of the 2,987 members have a combined wealth of 493.1 billion yuan ($75.1 billion)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/westmoon/status/43526455497474048 source]&lt;br /&gt;
&lt;br /&gt;
==== Property Specifies Language ====&lt;br /&gt;
&lt;br /&gt;
This option would involve language specific properties being created in vocabs, for example &amp;quot;rdfs:label-en&amp;quot; and &amp;quot;rdfs:label-ja&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not saying much about this one as it's a huge change to RDF and quite possibly entirely impractical from almost every angle. But, it is an option.&lt;br /&gt;
&lt;br /&gt;
==== Property Modifiers ====&lt;br /&gt;
&lt;br /&gt;
This option involves adding a language hint to the property, as serialization sugar only, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;label@en&amp;quot;: &amp;quot;London&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Potentially lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Potentially smaller bytesize on the wire than both of the paired values option (and allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Can be verbose when working with data in many languages (requires a min of one property value pair per language)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== In-String Language ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the language in a single quoted string, for example &amp;quot;花澄@ja&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use IRIs for languages, may explicitly offer a set of predefined tokens (e.g. &amp;quot;@en&amp;quot;), may have the language prefixed (&amp;quot;ja@花澄&amp;quot;) or postfixed (&amp;quot;花澄@ja&amp;quot;) - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing (including tracking back over parsed data)&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/language ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;花澄&amp;quot;,&lt;br /&gt;
    &amp;quot;_language&amp;quot;: &amp;quot;ja&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - language arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&amp;quot;@en&amp;quot;: &amp;quot;London&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#language-specification-in-plain-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Smaller bytesize on the wire than the other paired values option (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Externalized Languages / Language Mapped to Property ====&lt;br /&gt;
&lt;br /&gt;
Can't think of a decent, reliable way to do this? Maybe somebody can.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Syntax Structure ===&lt;br /&gt;
&lt;br /&gt;
RDF is very flexible syntax-wise, because it is a graph based data model (nodes and edges), and can be expressed in any number of ways, from a set of triples, through to key/value objects with a subject assigned.&lt;br /&gt;
&lt;br /&gt;
JSON is typically used to express simple key/value objects, plain old data objects.&lt;br /&gt;
&lt;br /&gt;
RDF in JSON can therefore be assembled as key/value objects with a subject assigned, or in an n-triples like manner (a big list of triples) or anywhere in-between, as with turtle.&lt;br /&gt;
&lt;br /&gt;
note: the benefits and disadvantages run much deeper than the simple ones mentioned in this section, as each option in this document has it's own set of trade-offs, however some primary ones are listed here which are specific to the general syntax option.&lt;br /&gt;
&lt;br /&gt;
==== Triples ====&lt;br /&gt;
&lt;br /&gt;
This option involves specifying the serialization to be a simple set of s,p,o triples, an example may be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;object&amp;quot;, &amp;quot;_language&amp;quot;: &amp;quot;en&amp;quot;} },&lt;br /&gt;
  {&amp;quot;s&amp;quot;: &amp;quot;_:b1&amp;quot;, &amp;quot;p&amp;quot;: &amp;quot;IRI&amp;quot;, &amp;quot;o&amp;quot;: {&amp;quot;_value&amp;quot;: &amp;quot;fdb3&amp;quot;, &amp;quot;_datatype&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema#base64Binary&amp;quot;} },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous&lt;br /&gt;
* Simple for machines process (and to spec!)&lt;br /&gt;
* Could be a good machine2machine interchange format for triples.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires RDF Tooling to use for most practical purposes&lt;br /&gt;
* Extremely unfriendly for typical JSON Developers (and anybody working with the JSON.parsed data directly)&lt;br /&gt;
* Extremely verbose + large bytesize over the wire&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 19:35:12 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datatypes ===&lt;br /&gt;
&lt;br /&gt;
RDF includes support for specifying the datatype of literals, commonly referred to as &amp;quot;Typed Literals&amp;quot;, this allows any literal to be given a specific datatype, typically one of the xsd: types.&lt;br /&gt;
&lt;br /&gt;
JSON has inbuilt support for a minimal set of datatypes, namely strings, numbers (which covers integers, doubles and decimals), booleans, arrays and objects.&lt;br /&gt;
&lt;br /&gt;
Commonly used datatypes which are not in JSON but frequently used in RDF, are IRI and the various forms of date and time.&lt;br /&gt;
&lt;br /&gt;
Note: Many other JSON related specifications have found a need to define support for IRIs and various forms of date/time, for example [http://activitystrea.ms/head/json-activity.html Activity Streams JSON].&lt;br /&gt;
&lt;br /&gt;
Note: Objects and Arrays will typically have special meaning/usage for RDF - JSON, so will not be discussed further here.&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility ====&lt;br /&gt;
&lt;br /&gt;
This approach would constrain the syntax to only being able to express those datatypes already existing in JSON, namely:&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Requires no special processing of data&lt;br /&gt;
* Familiar to most JSON users&lt;br /&gt;
* Simple&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility + IRIs and Date/Time ====&lt;br /&gt;
&lt;br /&gt;
This approach would extend the native JSON datatypes to include support for IRI, Date, Time and DateTime:&lt;br /&gt;
 * IRI&lt;br /&gt;
 * Date&lt;br /&gt;
 * DateTime&lt;br /&gt;
 * Time&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
note: the additional types would need to be quoted like strings in order to keep JSON compatibility, e.g. &amp;quot;http://example.org/&amp;quot; rather than the same without quotes.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Property Range from Vocab ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting from the range of the property being used.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; tooling to do so. (nathan: is this a drawback??)&lt;br /&gt;
&lt;br /&gt;
==== Map the property to a datatype ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting on the property, this could be included in the serialization, or in an external map as with the External Maps option for URIs.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; ''new'' tooling to do so.&lt;br /&gt;
&lt;br /&gt;
==== Datatypes from JSON schema ====&lt;br /&gt;
&lt;br /&gt;
As above, what we're doing could be merged with JSON Schema, in fact we could fully externalize and work with JSON Schema to create a single spec which covers most of the webs JSON needs, and our own RDF needs - but that's perhaps too wild for this group and out of charter.&lt;br /&gt;
&lt;br /&gt;
(nathan likes this idea)&lt;br /&gt;
&lt;br /&gt;
==== In-String TypedLiterals ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the datatype in a single quoted string, for example &amp;quot;FDE3^^xsd:base64Binary&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use full IRIs for datatypes, may explicitly offer a set of predefined tokens mapped to IRIs (e.g. &amp;quot;^int&amp;quot;), may have the datatype prefixed or postfixed - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
* What to do when you don't understand a datatype?&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/datatype ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;FDE3&amp;quot;,&lt;br /&gt;
    &amp;quot;_datatype&amp;quot;: &amp;quot;xsd:base64Binary&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - datatype arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: { &amp;quot;xsd:base64Binary&amp;quot;: &amp;quot;FDE3&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#typed-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
* Smaller bytesize on the wire (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Languages ===&lt;br /&gt;
&lt;br /&gt;
RDF currently includes support for specifying the language strings (for example english or dutch), Plain Literals, support is often serialization specific, with RDFa delegating to the lang/xml:lang attributes, and turtle taking the &amp;quot;Bob&amp;quot;@en approach.&lt;br /&gt;
&lt;br /&gt;
JSON currently has no support for specifying the language of strings.&lt;br /&gt;
&lt;br /&gt;
==== No Language ====&lt;br /&gt;
&lt;br /&gt;
It's an option... JSON natively supports unicode, thus strings like &amp;quot;花澄&amp;quot; are perfectly acceptable, and JSON is used effectively throughout the web without requiring a language tag, and further often text consists of multiple different languages and which language tag to use is not clear. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;彭博社:2987名人大代表中70名最富的人资产总值为4931亿人民币，约751亿美元！The richest 70 of the 2,987 members have a combined wealth of 493.1 billion yuan ($75.1 billion)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/westmoon/status/43526455497474048 source]&lt;br /&gt;
&lt;br /&gt;
==== Property Specifies Language ====&lt;br /&gt;
&lt;br /&gt;
This option would involve language specific properties being created in vocabs, for example &amp;quot;rdfs:label-en&amp;quot; and &amp;quot;rdfs:label-ja&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not saying much about this one as it's a huge change to RDF and quite possibly entirely impractical from almost every angle. But, it is an option.&lt;br /&gt;
&lt;br /&gt;
==== Property Modifiers ====&lt;br /&gt;
&lt;br /&gt;
This option involves adding a language hint to the property, as serialization sugar only, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;label@en&amp;quot;: &amp;quot;London&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Potentially lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Potentially smaller bytesize on the wire than both of the paired values option (and allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Can be verbose when working with data in many languages (requires a min of one property value pair per language)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== In-String Language ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the language in a single quoted string, for example &amp;quot;花澄@ja&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use IRIs for languages, may explicitly offer a set of predefined tokens (e.g. &amp;quot;@en&amp;quot;), may have the language prefixed (&amp;quot;ja@花澄&amp;quot;) or postfixed (&amp;quot;花澄@ja&amp;quot;) - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing (including tracking back over parsed data)&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/language ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;花澄&amp;quot;,&lt;br /&gt;
    &amp;quot;_language&amp;quot;: &amp;quot;ja&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - language arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&amp;quot;@en&amp;quot;: &amp;quot;London&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#language-specification-in-plain-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Smaller bytesize on the wire than the other paired values option (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Externalized Languages / Language Mapped to Property ====&lt;br /&gt;
&lt;br /&gt;
Can't think of a decent, reliable way to do this? Maybe somebody can.&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 18:59:40 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* No Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datatypes ===&lt;br /&gt;
&lt;br /&gt;
RDF includes support for specifying the datatype of literals, commonly referred to as &amp;quot;Typed Literals&amp;quot;, this allows any literal to be given a specific datatype, typically one of the xsd: types.&lt;br /&gt;
&lt;br /&gt;
JSON has inbuilt support for a minimal set of datatypes, namely strings, numbers (which covers integers, doubles and decimals), booleans, arrays and objects.&lt;br /&gt;
&lt;br /&gt;
Commonly used datatypes which are not in JSON but frequently used in RDF, are IRI and the various forms of date and time.&lt;br /&gt;
&lt;br /&gt;
Note: Many other JSON related specifications have found a need to define support for IRIs and various forms of date/time, for example [http://activitystrea.ms/head/json-activity.html Activity Streams JSON].&lt;br /&gt;
&lt;br /&gt;
Note: Objects and Arrays will typically have special meaning/usage for RDF - JSON, so will not be discussed further here.&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility ====&lt;br /&gt;
&lt;br /&gt;
This approach would constrain the syntax to only being able to express those datatypes already existing in JSON, namely:&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Requires no special processing of data&lt;br /&gt;
* Familiar to most JSON users&lt;br /&gt;
* Simple&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility + IRIs and Date/Time ====&lt;br /&gt;
&lt;br /&gt;
This approach would extend the native JSON datatypes to include support for IRI, Date, Time and DateTime:&lt;br /&gt;
 * IRI&lt;br /&gt;
 * Date&lt;br /&gt;
 * DateTime&lt;br /&gt;
 * Time&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
note: the additional types would need to be quoted like strings in order to keep JSON compatibility, e.g. &amp;quot;http://example.org/&amp;quot; rather than the same without quotes.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Property Range from Vocab ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting from the range of the property being used.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; tooling to do so. (nathan: is this a drawback??)&lt;br /&gt;
&lt;br /&gt;
==== Map the property to a datatype ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting on the property, this could be included in the serialization, or in an external map as with the External Maps option for URIs.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; ''new'' tooling to do so.&lt;br /&gt;
&lt;br /&gt;
==== Datatypes from JSON schema ====&lt;br /&gt;
&lt;br /&gt;
As above, what we're doing could be merged with JSON Schema, in fact we could fully externalize and work with JSON Schema to create a single spec which covers most of the webs JSON needs, and our own RDF needs - but that's perhaps too wild for this group and out of charter.&lt;br /&gt;
&lt;br /&gt;
(nathan likes this idea)&lt;br /&gt;
&lt;br /&gt;
==== In-String TypedLiterals ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the datatype in a single quoted string, for example &amp;quot;FDE3^^xsd:base64Binary&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use full IRIs for datatypes, may explicitly offer a set of predefined tokens mapped to IRIs (e.g. &amp;quot;^int&amp;quot;), may have the datatype prefixed or postfixed - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
* What to do when you don't understand a datatype?&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/datatype ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;FDE3&amp;quot;,&lt;br /&gt;
    &amp;quot;_datatype&amp;quot;: &amp;quot;xsd:base64Binary&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - datatype arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: { &amp;quot;xsd:base64Binary&amp;quot;: &amp;quot;FDE3&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#typed-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
* Smaller bytesize on the wire (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Languages ===&lt;br /&gt;
&lt;br /&gt;
RDF currently includes support for specifying the language strings (for example english or dutch), Plain Literals, support is often serialization specific, with RDFa delegating to the lang/xml:lang attributes, and turtle taking the &amp;quot;Bob&amp;quot;@en approach.&lt;br /&gt;
&lt;br /&gt;
JSON currently has no support for specifying the language of strings.&lt;br /&gt;
&lt;br /&gt;
==== No Language ====&lt;br /&gt;
&lt;br /&gt;
It's an option... JSON natively supports unicode, thus strings like &amp;quot;花澄&amp;quot; are perfectly acceptable, and JSON is used effectively throughout the web without requiring a language tag, and further often text consists of multiple different languages and which language tag to use is not clear. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;彭博社:2987名人大代表中70名最富的人资产总值为4931亿人民币，约751亿美元！The richest 70 of the 2,987 members have a combined wealth of 493.1 billion yuan ($75.1 billion)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://twitter.com/westmoon/status/43526455497474048 source]&lt;br /&gt;
&lt;br /&gt;
==== Property Specifies Language ====&lt;br /&gt;
&lt;br /&gt;
This option would involve language specific properties being created in vocabs, for example &amp;quot;rdfs:label-en&amp;quot; and &amp;quot;rdfs:label-ja&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not saying much about this one as it's a huge change to RDF and quite possibly entirely impractical from almost every angle. But, it is an option.&lt;br /&gt;
&lt;br /&gt;
==== Property Modifiers ====&lt;br /&gt;
&lt;br /&gt;
This option involves adding a language hint to the property, as serialization sugar only, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;label@en&amp;quot;: &amp;quot;London&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Potentially lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Potentially smaller bytesize on the wire than both of the paired values option (and allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Can be verbose when working with data in many languages (requires a min of one property value pair per language)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== In-String Language ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the language in a single quoted string, for example &amp;quot;花澄@ja&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use IRIs for languages, may explicitly offer a set of predefined tokens (e.g. &amp;quot;@en&amp;quot;), may have the language prefixed (&amp;quot;ja@花澄&amp;quot;) or postfixed (&amp;quot;花澄@ja&amp;quot;) - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing (including tracking back over parsed data)&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/language ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;花澄&amp;quot;,&lt;br /&gt;
    &amp;quot;_language&amp;quot;: &amp;quot;ja&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - language arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&amp;quot;@en&amp;quot;: &amp;quot;London&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#language-specification-in-plain-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Smaller bytesize on the wire than the other paired values option (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 18:43:44 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;Languages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datatypes ===&lt;br /&gt;
&lt;br /&gt;
RDF includes support for specifying the datatype of literals, commonly referred to as &amp;quot;Typed Literals&amp;quot;, this allows any literal to be given a specific datatype, typically one of the xsd: types.&lt;br /&gt;
&lt;br /&gt;
JSON has inbuilt support for a minimal set of datatypes, namely strings, numbers (which covers integers, doubles and decimals), booleans, arrays and objects.&lt;br /&gt;
&lt;br /&gt;
Commonly used datatypes which are not in JSON but frequently used in RDF, are IRI and the various forms of date and time.&lt;br /&gt;
&lt;br /&gt;
Note: Many other JSON related specifications have found a need to define support for IRIs and various forms of date/time, for example [http://activitystrea.ms/head/json-activity.html Activity Streams JSON].&lt;br /&gt;
&lt;br /&gt;
Note: Objects and Arrays will typically have special meaning/usage for RDF - JSON, so will not be discussed further here.&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility ====&lt;br /&gt;
&lt;br /&gt;
This approach would constrain the syntax to only being able to express those datatypes already existing in JSON, namely:&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Requires no special processing of data&lt;br /&gt;
* Familiar to most JSON users&lt;br /&gt;
* Simple&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility + IRIs and Date/Time ====&lt;br /&gt;
&lt;br /&gt;
This approach would extend the native JSON datatypes to include support for IRI, Date, Time and DateTime:&lt;br /&gt;
 * IRI&lt;br /&gt;
 * Date&lt;br /&gt;
 * DateTime&lt;br /&gt;
 * Time&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
note: the additional types would need to be quoted like strings in order to keep JSON compatibility, e.g. &amp;quot;http://example.org/&amp;quot; rather than the same without quotes.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Property Range from Vocab ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting from the range of the property being used.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; tooling to do so. (nathan: is this a drawback??)&lt;br /&gt;
&lt;br /&gt;
==== Map the property to a datatype ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting on the property, this could be included in the serialization, or in an external map as with the External Maps option for URIs.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; ''new'' tooling to do so.&lt;br /&gt;
&lt;br /&gt;
==== Datatypes from JSON schema ====&lt;br /&gt;
&lt;br /&gt;
As above, what we're doing could be merged with JSON Schema, in fact we could fully externalize and work with JSON Schema to create a single spec which covers most of the webs JSON needs, and our own RDF needs - but that's perhaps too wild for this group and out of charter.&lt;br /&gt;
&lt;br /&gt;
(nathan likes this idea)&lt;br /&gt;
&lt;br /&gt;
==== In-String TypedLiterals ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the datatype in a single quoted string, for example &amp;quot;FDE3^^xsd:base64Binary&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use full IRIs for datatypes, may explicitly offer a set of predefined tokens mapped to IRIs (e.g. &amp;quot;^int&amp;quot;), may have the datatype prefixed or postfixed - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
* What to do when you don't understand a datatype?&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/datatype ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;FDE3&amp;quot;,&lt;br /&gt;
    &amp;quot;_datatype&amp;quot;: &amp;quot;xsd:base64Binary&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - datatype arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: { &amp;quot;xsd:base64Binary&amp;quot;: &amp;quot;FDE3&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#typed-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
* Smaller bytesize on the wire (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Languages ===&lt;br /&gt;
&lt;br /&gt;
RDF currently includes support for specifying the language strings (for example english or dutch), Plain Literals, support is often serialization specific, with RDFa delegating to the lang/xml:lang attributes, and turtle taking the &amp;quot;Bob&amp;quot;@en approach.&lt;br /&gt;
&lt;br /&gt;
JSON currently has no support for specifying the language of strings.&lt;br /&gt;
&lt;br /&gt;
==== No Language ====&lt;br /&gt;
&lt;br /&gt;
It's an option... JSON natively supports unicode, thus strings like &amp;quot;花澄&amp;quot; are perfectly acceptable, and JSON is used effectively throughout the web without requiring a language tag, and further often text consists of multiple different languages and which language tag to use is not clear (for example &amp;quot;彭博社:2987名人大代表中70名最富的人资产总值为4931亿人民币，约751亿美元！The richest 70 of the 2,987 members have a combined wealth of 493.1 billion yuan ($75.1 billion)&amp;quot; [http://twitter.com/westmoon/status/43526455497474048 source])&lt;br /&gt;
&lt;br /&gt;
==== Property Specifies Language ====&lt;br /&gt;
&lt;br /&gt;
This option would involve language specific properties being created in vocabs, for example &amp;quot;rdfs:label-en&amp;quot; and &amp;quot;rdfs:label-ja&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not saying much about this one as it's a huge change to RDF and quite possibly entirely impractical from almost every angle. But, it is an option.&lt;br /&gt;
&lt;br /&gt;
==== Property Modifiers ====&lt;br /&gt;
&lt;br /&gt;
This option involves adding a language hint to the property, as serialization sugar only, for example:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;label@en&amp;quot;: &amp;quot;London&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Potentially lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Potentially smaller bytesize on the wire than both of the paired values option (and allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Can be verbose when working with data in many languages (requires a min of one property value pair per language)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== In-String Language ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the language in a single quoted string, for example &amp;quot;花澄@ja&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use IRIs for languages, may explicitly offer a set of predefined tokens (e.g. &amp;quot;@en&amp;quot;), may have the language prefixed (&amp;quot;ja@花澄&amp;quot;) or postfixed (&amp;quot;花澄@ja&amp;quot;) - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing (including tracking back over parsed data)&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/language ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;花澄&amp;quot;,&lt;br /&gt;
    &amp;quot;_language&amp;quot;: &amp;quot;ja&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - language arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify plain literals with languages as such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&amp;quot;@en&amp;quot;: &amp;quot;London&amp;quot;} }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#language-specification-in-plain-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express languages&lt;br /&gt;
* Lighter to process than &amp;quot;in-string language&amp;quot;&lt;br /&gt;
* Smaller bytesize on the wire than the other paired values option (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing to use the data&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 18:41:26 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;added datatypes options&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datatypes ===&lt;br /&gt;
&lt;br /&gt;
RDF includes support for specifying the datatype of literals, commonly referred to as &amp;quot;Typed Literals&amp;quot;, this allows any literal to be given a specific datatype, typically one of the xsd: types.&lt;br /&gt;
&lt;br /&gt;
JSON has inbuilt support for a minimal set of datatypes, namely strings, numbers (which covers integers, doubles and decimals), booleans, arrays and objects.&lt;br /&gt;
&lt;br /&gt;
Commonly used datatypes which are not in JSON but frequently used in RDF, are IRI and the various forms of date and time.&lt;br /&gt;
&lt;br /&gt;
Note: Many other JSON related specifications have found a need to define support for IRIs and various forms of date/time, for example [http://activitystrea.ms/head/json-activity.html Activity Streams JSON].&lt;br /&gt;
&lt;br /&gt;
Note: Objects and Arrays will typically have special meaning/usage for RDF - JSON, so will not be discussed further here.&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility ====&lt;br /&gt;
&lt;br /&gt;
This approach would constrain the syntax to only being able to express those datatypes already existing in JSON, namely:&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Requires no special processing of data&lt;br /&gt;
* Familiar to most JSON users&lt;br /&gt;
* Simple&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
==== Limited Expressibility + IRIs and Date/Time ====&lt;br /&gt;
&lt;br /&gt;
This approach would extend the native JSON datatypes to include support for IRI, Date, Time and DateTime:&lt;br /&gt;
 * IRI&lt;br /&gt;
 * Date&lt;br /&gt;
 * DateTime&lt;br /&gt;
 * Time&lt;br /&gt;
 * String (Unicode)&lt;br /&gt;
 * Number (Integer, Double, Decimal)&lt;br /&gt;
 * Boolean (true, false)&lt;br /&gt;
 * Null (? does RDF have a concept of null,or datatype for it ?)&lt;br /&gt;
&lt;br /&gt;
note: the additional types would need to be quoted like strings in order to keep JSON compatibility, e.g. &amp;quot;http://example.org/&amp;quot; rather than the same without quotes.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* No way to use other common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Property Range from Vocab ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting from the range of the property being used.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; tooling to do so. (nathan: is this a drawback??)&lt;br /&gt;
&lt;br /&gt;
==== Map the property to a datatype ====&lt;br /&gt;
&lt;br /&gt;
Either of the Limited Expressibility options could be augmented with type hinting on the property, this could be included in the serialization, or in an external map as with the External Maps option for URIs.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Potentially requires no special processing of data (when not following your nose)&lt;br /&gt;
* Familiar to most users&lt;br /&gt;
* Simple&lt;br /&gt;
* Enough to cover most common use cases.&lt;br /&gt;
* Allows expression of common or custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Potentially requires understanding of properties when following your nose &amp;amp; ''new'' tooling to do so.&lt;br /&gt;
&lt;br /&gt;
==== Datatypes from JSON schema ====&lt;br /&gt;
&lt;br /&gt;
As above, what we're doing could be merged with JSON Schema, in fact we could fully externalize and work with JSON Schema to create a single spec which covers most of the webs JSON needs, and our own RDF needs - but that's perhaps too wild for this group and out of charter.&lt;br /&gt;
&lt;br /&gt;
(nathan likes this idea)&lt;br /&gt;
&lt;br /&gt;
==== In-String TypedLiterals ====&lt;br /&gt;
&lt;br /&gt;
This approach involves including both the data and the datatype in a single quoted string, for example &amp;quot;FDE3^^xsd:base64Binary&amp;quot;&lt;br /&gt;
&lt;br /&gt;
note: the exact format of the combined string would be up for discussion, we may want to use full IRIs for datatypes, may explicitly offer a set of predefined tokens mapped to IRIs (e.g. &amp;quot;^int&amp;quot;), may have the datatype prefixed or postfixed - many different approaches&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
* What to do when you don't understand a datatype?&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - value/datatype ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: {&lt;br /&gt;
    &amp;quot;_value&amp;quot;: &amp;quot;FDE3&amp;quot;,&lt;br /&gt;
    &amp;quot;_datatype&amp;quot;: &amp;quot;xsd:base64Binary&amp;quot;,&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;br /&gt;
* Verbose&lt;br /&gt;
&lt;br /&gt;
==== Paired Values - datatype arcs ====&lt;br /&gt;
&lt;br /&gt;
Using either the object or array syntax from JSON, we could specify typed literals like such:&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;property&amp;quot;: { &amp;quot;xsd:base64Binary&amp;quot;: &amp;quot;FDE3&amp;quot; } }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
note: see [http://webr3.org/apps/specs/jsn3/#typed-literals JSN3] for more examples&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* All typed literals like this, including numbers.&lt;br /&gt;
* Only some typed literals like this.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Can express all common and custom datatypes&lt;br /&gt;
* Smaller bytesize on the wire (allows repetition)&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Always requires special processing&lt;br /&gt;
* Unfamiliar to most typical JSON users&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 15:58:23 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>User:Nrixham</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* Nathan Rixham */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nathan Rixham ==&lt;br /&gt;
&lt;br /&gt;
Invited Expert in the RDF WG and do not represent any company.&lt;br /&gt;
&lt;br /&gt;
=== Focus ===&lt;br /&gt;
&lt;br /&gt;
Within the RDF WG I'm looking to help out wherever I can in order to support the other members, key areas I'll be focussing on are:&lt;br /&gt;
&lt;br /&gt;
* Standardization of the JSON syntax (considering the RDF API and being a JS developer)&lt;br /&gt;
* Standardization of the Turtle syntax (with an N3 focus)&lt;br /&gt;
* Clean up around IRIs / RDF URI References and DataTypes/Plain Literals&lt;br /&gt;
* Considerations when deprecating some features of RDF (Robustness Principal etc.)&lt;br /&gt;
* Support for multiple graphs and graph stores (both named and literal graphs, considering the RDF API, and read-write linked data tech requirements)&lt;br /&gt;
* Linked Data considerations (inc Read/Write) and &amp;quot;follow your nose&amp;quot; (ties in with AWWSW TF work)&lt;br /&gt;
&lt;br /&gt;
=== Other W3C Experience ===&lt;br /&gt;
&lt;br /&gt;
* Member of the RDFa WG&lt;br /&gt;
* Member of the AWWSW TF&lt;br /&gt;
* Member of the WebID XG&lt;br /&gt;
* Editor of the RDF API&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
I'm a developer who sits at the intersection of the Semantic Web, WebArch, HTML, WebApps, REST/HTTP, JS, Auth/Security and Web Development communities, my primary focus is converging the various web technologies in order to realize the read write web of linked data, intelligent agents, and the model outlined in TimBLs Socially Aware Cloud Storage Design Issue. Thankfully I'm in a position where I can spend most of my time helping this process along through contributing to standardization efforts, communication between groups, and contributions to open source and public domain projects; my efforts within the RDF WG will be one part of that bigger picture.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More: [http://twitter.com/webr3 @webr3] / [http://webr3.org/blog/general/generic-to-do-plan/ info]&lt;br /&gt;
&lt;br /&gt;
[[category:Members]]&lt;/div&gt;</description>
			<pubDate>Sat, 12 Mar 2011 00:34:33 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/User_talk:Nrixham</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* JSON Syntax Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF, in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;/div&gt;</description>
			<pubDate>Fri, 11 Mar 2011 22:31:11 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* JSON Syntax Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs + Single Vocab ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses a made up syntax!&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#vocab&amp;quot;: &amp;quot;http://example.org/my-vocab#&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must append &amp;quot;name&amp;quot; to the value of #vocab (&amp;quot;http://example.org/my-vocab#&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
This may look wonderful, but comes with the one-vocab caveat that means when publishers require multiple terms, they will be likely to create &amp;quot;proxy&amp;quot; vocabularies that simply pull together many terms from different vocabularies and merge them. There is a processing and understanding cost to that which can't be stepped in to lightly.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to RDFa users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires understanding of equivalent property statements in custom vocabularies when following your nose around the web.&lt;br /&gt;
* Real world property equivalence is ''far'' more complicated.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;/div&gt;</description>
			<pubDate>Fri, 11 Mar 2011 22:29:24 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>JSON Syntax Options</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/JSON_Syntax_Options</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;Created page with &amp;quot;== JSON Syntax Options ==  This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF in JSON.  === URI Properties ===  RDF uses UR…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== JSON Syntax Options ==&lt;br /&gt;
&lt;br /&gt;
This page is being used by the RDF WG to harvest different approaches to enabling the key features of RDF in JSON.&lt;br /&gt;
&lt;br /&gt;
=== URI Properties ===&lt;br /&gt;
&lt;br /&gt;
RDF uses URIs to name things, including properties. A key benefit of this is that it allows different data sources to all use properties defined in open vocabularies, thus enabling shared understanding of data.&lt;br /&gt;
&lt;br /&gt;
JSON on the other hand, is typically used for domain specific / silo based information where properties are simple lexical terms (like &amp;quot;name&amp;quot;) and what the property &amp;quot;means&amp;quot; is documented somewhere out of band, for instance in API documentation, or in a JSON-Schema document.&lt;br /&gt;
&lt;br /&gt;
There follows a collection of different approaches we can take which enable the use of URI identified properties in JSON.&lt;br /&gt;
&lt;br /&gt;
==== Full URIs ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;{ &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;: &amp;quot;Bob&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Unambiguous and easy to process.&lt;br /&gt;
* When following your nose around the web, property equivalence uses the in serialization URI.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Increased bytesize over the wire.&lt;br /&gt;
* Can be verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
* Verbose to author.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;obj[&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;]&lt;br /&gt;
obj[ foaf('name') ] // when using a tabulator ns style approach in your code&lt;br /&gt;
obj[ resolve('foaf:name') ] // when using a function which allows the resolution of CURIEs as found in the RDF API&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURIEs ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;foaf&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; },&lt;br /&gt;
  &amp;quot;foaf:name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must split &amp;quot;foaf:name&amp;quot; on the colon, replace &amp;quot;foaf&amp;quot; with it's related mapping in the prefix map &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;, concatenate &amp;quot;name&amp;quot; to &amp;quot;http://xmlns.com/foaf/0.1/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Separator Options:&lt;br /&gt;
* : colon (familiar, but ''can't'' use . notation in JSON.parsed output)&lt;br /&gt;
* _ underscore (unfamiliar, ambiguous when property also contains an underscore)&lt;br /&gt;
* $ dollar (unfamiliar, but ''can'' use . notation in JSON.parsed output)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easier to author&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize CURIEs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires CURIE resolution to do property comparison (equivalence must be between URIs not CURIEs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;ns0:ame&amp;quot; or &amp;quot;f:name&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional JSON users&lt;br /&gt;
* Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj[&amp;quot;foaf:name&amp;quot;]; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TERMs (no colon) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace &amp;quot;name&amp;quot; with it's related value in the map &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* Unfamiliar to traditional RDF users&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TERMs (with colon allowed) ====&lt;br /&gt;
&lt;br /&gt;
Note: this example uses JSON-LD syntax for the prefix maps:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;#&amp;quot;: { &amp;quot;name&amp;quot;: &amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;rdfs:label&amp;quot;: &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot; },&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;Bob&amp;quot;,&lt;br /&gt;
  &amp;quot;rdfs:label&amp;quot;: &amp;quot;Bob&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reconstruct the URI, one must replace the term (&amp;quot;name&amp;quot;, &amp;quot;rdfs:label&amp;quot;) with it's related value in the map (&amp;quot;http://xmlns.com/foaf/0.1/name&amp;quot;, &amp;quot;http://www.w3.org/2000/01/rdf-schema#label&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Reduced bytesize over the wire&lt;br /&gt;
* Familiar to traditional JSON users&lt;br /&gt;
* Familiar to traditional RDF users&lt;br /&gt;
* Easy to author&lt;br /&gt;
* ''non-colon names only'': Easy to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Requires tooling to normalize TERMs prior to using the data when following your nose around the web.&lt;br /&gt;
* Requires TERM resolution to do property comparison (equivalence must be between URIs not TERMs)&lt;br /&gt;
* Unreliable when following your nose around the web (the same URI could be shortened to &amp;quot;foo&amp;quot; or &amp;quot;bar&amp;quot;)&lt;br /&gt;
* ''with colon names only'': Verbose to use when using the returned (JSON.parsed) data without an API or tooling.&lt;br /&gt;
&lt;br /&gt;
Example usage (assuming the returned data has been JSON.parsed):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
obj.name; // non-colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
obj[&amp;quot;rdfs:label&amp;quot;]; // with colon - but ONLY when you are familiar with the data and NOT when following your nose&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Option: External Maps ====&lt;br /&gt;
&lt;br /&gt;
Three of the above options ( CURIEs, TERMs no colon, TERMS with colon ) all require a prefix or term map to be included in order to turn shortened properties in to full URIs.&lt;br /&gt;
&lt;br /&gt;
There is a possibility that these maps could be factored out and referenced externally, this option comes with it's own set of benefits and drawbacks.&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
* Minimal data over the wire.&lt;br /&gt;
* When used with either of the TERMs options, allows bootstrapping of existing JSON data in the wild.&lt;br /&gt;
* Encourages vocabulary merging and reuse.&lt;br /&gt;
* Potentially far easier to deploy, doesn't require publishers to implement/have a sem web stack.&lt;br /&gt;
&lt;br /&gt;
Drawbacks:&lt;br /&gt;
* Sometimes requires two GETs when following your nose.&lt;br /&gt;
* External map unavailability removes your ability to see the data as RDF.&lt;br /&gt;
* Some changes to external maps could change the meaning of the data.&lt;/div&gt;</description>
			<pubDate>Fri, 11 Mar 2011 22:15:39 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:JSON_Syntax_Options</comments>		</item>
		<item>
			<title>TF-JSON</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-JSON</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* RDF in JSON Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JSON RDF Task Force =&lt;br /&gt;
&lt;br /&gt;
The JSON RDF Task Force is primarily responsible for creating a JSON serialization of RDF.&lt;br /&gt;
&lt;br /&gt;
== Inputs ==&lt;br /&gt;
&lt;br /&gt;
* ''[http://n2.talis.com/wiki/RDF_JSON_Specification RDF JSON]'', by Talis.&lt;br /&gt;
* ''[http://json-ld.org/ JSON-LD]'', by Manu Sporny.&lt;br /&gt;
* ''[http://decentralyze.com/2010/06/04/from-json-to-rdf-in-six-easy-steps-with-jron/ JRON]'' by Sandro Hawke.&lt;br /&gt;
* ''[http://code.google.com/p/linked-data-api/wiki/Specification JSON serialization]''  in the Linked Data API.&lt;br /&gt;
* ''[http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL Query Results in JSON]'' by DAWG.&lt;br /&gt;
* ''[http://webr3.org/apps/specs/jsn3/ JSN3]'' by Nathan.&lt;br /&gt;
* ''[http://www.w3.org/2009/12/rdf-ws/papers/ws02 Flat triples approach to RDF graphs in JSON]'' by Dominik Tomaszuk&lt;br /&gt;
* ''[http://www.w3.org/2001/sw/wiki/index.php?title=RDF_Core_Work_Items&amp;amp;oldid=1990#JSON Ideas and issues from the community ]'' from RDF Core Work Items build on RDF/NextStepWorkshop, are reproduced below.&lt;br /&gt;
* ''[http://www.w3.org/wiki/JTriples JTriples ]'' by Michael Hausenblas&lt;br /&gt;
* ''[http://code.google.com/p/backplanejs/wiki/Rdfj RDFj]'' by Mark Birbeck probably.&lt;br /&gt;
&lt;br /&gt;
==== Materials from RDF Next Step WorkShop ====&lt;br /&gt;
&lt;br /&gt;
=====Pros=====&lt;br /&gt;
* Allows web authors (Javascript, HTML5, ... developers) more easily use rdf data with existing tools and techniques&lt;br /&gt;
* Multiple JSON formats and implementations (some interoperable) already exist showing interest in this work&lt;br /&gt;
=====Cons=====&lt;br /&gt;
* Current JSON formats are not aligned - differnent approaches - making it JSON-user friendly versus making it familiar to existing RDF users.&lt;br /&gt;
* Needs some R&amp;amp;D and alignment.&lt;br /&gt;
* Risk that the result would be some standard that would not be adopted if it was not 'web author' friendly.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* JSON Serialization of RDF&lt;br /&gt;
&lt;br /&gt;
== Questions to Contemplate ==&lt;br /&gt;
&lt;br /&gt;
# What are the use cases for the JSON serialization?&lt;br /&gt;
# Are we to create a lightweight JSON based RDF interchange format optimized for machines and speed, or an easy to work with JSON view of RDF optimized for humans (developers)?&lt;br /&gt;
# Is it necessary for developers to know RDF in order to use the simplest form of the RDF-in-JSON serialization?&lt;br /&gt;
# Should we attempt to support more than just RDF? Key-value pairs as well? Literals as subjects?&lt;br /&gt;
# Must RDF in JSON be 100% compatible with the JSON spec? Or must it only be able to be read by a JavaScript library and thus be JSON-like-but-not-compatible (and can thus deviate from the standard JSON spec)?&lt;br /&gt;
# Must all major RDF concepts be expressible via the RDF in JSON syntax?&lt;br /&gt;
# Should we go more for human-readability, or terse/compact/machine-friendly formats? What is the correct balance?&lt;br /&gt;
# Should there be a migration story for the JSON that is already used heavily on the Web? For example, in REST-based services?&lt;br /&gt;
# Should processing be a single-pass or multi-pass process? Should we support SAX-like streaming?&lt;br /&gt;
# Should there be support for [http://json-ld.org/spec/ED/20110201/#disjoint-graphs disjoint graphs]?&lt;br /&gt;
# Should we consider how the structure may be [http://payswarm.com/vocabs/signature#JsonldSignature digitally signed]?&lt;br /&gt;
# How should [http://json-ld.org/spec/ED/20110201/#the-normalization-algorithm normalization] occur?&lt;br /&gt;
# Should [http://webr3.org/blog/semantic-web/rdf-named-graphs-vs-graph-literals/ graph literals] be supported?&lt;br /&gt;
# Should [http://webr3.org/blog/semantic-web/rdf-named-graphs-vs-graph-literals/ named graphs] be supported?&lt;br /&gt;
# Should [http://json-ld.org/spec/ED/20110201/#automatic-typing automatic typing] be supported?&lt;br /&gt;
# Should [http://json-ld.org/spec/ED/20110201/#type-coercion type coercion] be supported?&lt;br /&gt;
# Should there be [http://json-ld.org/spec/ED/20110201/#the-json-ld-api an API] defined in order to easily map RDF-in-JSON to/from language-native formats?&lt;br /&gt;
&lt;br /&gt;
== RDF in JSON Use Cases ==&lt;br /&gt;
&lt;br /&gt;
=== Migrating to Semantic Web Services ===&lt;br /&gt;
&lt;br /&gt;
Frank runs a website that provides Web Services via a REST-based API that supports JSON. He would like developers using his system to be able to easily post and get RDF data RESTfully via his Web Services. He wants to make sure that the data that is exchanged looks very much like the JSON data that is passed to and from the Web Services that he already provides. He wants to make sure that developers can utilize the current JSON-based tools and workflows, perhaps with a tiny library for the serializations he uses, but still ensure that he can add semantics to that data in a way that is easy to explain to his Web Service customers.&lt;br /&gt;
&lt;br /&gt;
=== Generalized storage of Semantic Data in Web Services ===&lt;br /&gt;
&lt;br /&gt;
ACME Corp is operating a website with a JSON API. They want to give users the ability to store arbitrary additional data alongside certain objects managed via the API. For example, when a user account is created via the API, the client app should be able to also submit a digital signature or “My upcoming trips” data. The client app would be able to use that data on subsequent requests. To avoid accidental clashes between fields used by different client apps, ACME Corp wants to use RDF as the data model. Nevertheless, they want to keep the impact on the existing JSON API and existing clients to a minimum.&lt;br /&gt;
&lt;br /&gt;
=== Developing a Javascript application that interacts with a graph store ===&lt;br /&gt;
&lt;br /&gt;
Herbert is developing a Javascript application that interacts with an RDF store. He wants to be able to easily PUT, POST and GET RDF data RESTfully using the [http://www.w3.org/TR/sparql11-http-rdf-update/ SPARQL RDF Dataset HTTP Protocol].  Since he is working in Javascript, he wants to be able to send data to a graph store using JSON to represent the RDF data.&lt;br /&gt;
&lt;br /&gt;
=== Expose a service that internally uses RDF in a JSON-friendly way ===&lt;br /&gt;
&lt;br /&gt;
Stacy operates several Web Services. She designed the data that is sent and received by her Web Services in a way that maps very easily to RDF. She wants to be able to take the data that she is already publishing and transform it into RDF for internal use. She wants to be able to do this without impacting the developers that are currently using her system.&lt;br /&gt;
&lt;br /&gt;
She also wants to be able to give the developers that care about RDF a data model that maps to RDF well. She would like to support both regular JSON developers and semantic web JSON developers at the same time via her JSON-based Web Services API.&lt;br /&gt;
&lt;br /&gt;
=== Digital Signatures on Graphs ===&lt;br /&gt;
&lt;br /&gt;
Graeme would like to publish assets for sale on his website via a JSON-based Web Services API. He would like this data to be cached on third party sites without the pricing information being changed or forged. He accomplishes this by digitally signing the graph of information that he publishes such that search engines and other caching mechanisms can relay the information without needing to directly access his site. By cryptographically signing the graph, he is also ensuring that information about the asset, including pricing information, cannot be changed or forged to different values.&lt;br /&gt;
&lt;br /&gt;
=== Universal Payment Standard for the Web ===&lt;br /&gt;
&lt;br /&gt;
The [http://payswarm.com/ PaySwarm Web platform] is an open web standard that enables Web browsers and Web devices to perform Universal Web Payment. The nascent standard is using a form of RDF in JSON extensively in order to support distributed listing of [http://payswarm.com/vocabs/payswarm#Asset assets], description of [http://payswarm.com/vocabs/payswarm#License licenses] and [http://payswarm.com/vocabs/payswarm#Contract digital contracts], and [http://payswarm.com/vocabs/signature#JsonldSignature digital signatures] on graphs of RDF information. Information is published via HTML+RDFa and then used in JSON-form when transmitted to and from PaySwarm-aware Web Services.&lt;br /&gt;
&lt;br /&gt;
=== Treating JSON data as RDF for use in Data Spaces ===&lt;br /&gt;
&lt;br /&gt;
In data integration scenarios it can be useful to “crawl” a JSON API, and reflect the crawled data in an RDF expression that can then be stored in a SPARQL store and further refined/mapped/linked with other RDF. A main challenge in “crawling” JSON APIs in a generic way is the question how to find/construct new URIs to GET from the first JSON response, as this often requires API specific knowledge, such as which fields contains URIs and which templates should be used to construct URIs from field values. Ideally, such URIs would be captured in the RDF representation so that the RDF representation captures the “link structure” in the original JSON. In this use case, producing “idiomatic” RDF that uses proper vocabularies etc from the JSON is perhaps not realistic; the structure of the produced RDF would closely reflect the JSON object structure, and vocabulary terms would be local to the API.&lt;br /&gt;
&lt;br /&gt;
=== Pulling In Data From An External Linked Data Service ===&lt;br /&gt;
&lt;br /&gt;
Joe has had a Justin Bieber fan site hosted on GeoCities forever. After GeoCities got shut down, he first considered migrating his content onto a Facebook fan site, however, having heard of the Semantic Web's recent success stories, decided to run his own site, get some server space, install WordPress, install a WordPress RDFa plugin, and be happy. From reading an article on W3Schools, he knows that if he writes... &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div xmlns:foaf=&amp;quot;http://xmlns.com/foaf/0.1/&amp;quot; about=&amp;quot;http://dbpedia.org/resource/Justin_Bieber&amp;quot;&amp;gt;&lt;br /&gt;
  Justin Bieber's birthday is on&lt;br /&gt;
  &amp;lt;span property=&amp;quot;foaf:birthday&amp;quot; content=&amp;quot;1994-03-01&amp;quot;&amp;gt;March 1, 1994&amp;lt;/span&amp;gt;			&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
...he makes a statement about ''the'' Justin Bieber. At some point he decides to create a Justin Bieber images widget for his site with content from that cool new Semantic Web image site where he can retrieve semantically annotated images using their HTTP API like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET http://cool-semantic-image-site.example.org/api/v1/for-sure-not-rest/images?q=dbp:Justin_Bieber&amp;amp;format=json&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This API returns data in application/rdf-however-we-call-it+json, so he can simply JSON.parse the result, and use it like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var results = JSON.parse(responseText);&lt;br /&gt;
results.images.forEach(function(img) {&lt;br /&gt;
  // build HTML&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
He loves this API, because it is easy to work with in jQuery, plus the returned JSON code is easy to understand by just looking at it.&lt;br /&gt;
&lt;br /&gt;
=== Access CONSTRUCT/DESCRIBE query results from JSON apps ===&lt;br /&gt;
&lt;br /&gt;
SPARQL provides a JSON format for SELECT and ASK queries: currently a [http://www.w3.org/TR/rdf-sparql-json-res/ a W3C WG NOTE].&lt;br /&gt;
&lt;br /&gt;
A JSON serialization of RDF would make the results of CONSTRUCT (and DESCRIBE) queries accessible as JSON-consuming clients.&lt;br /&gt;
&lt;br /&gt;
=== Traditional JSON API over an RDF store ===&lt;br /&gt;
&lt;br /&gt;
Pablo is developing a new web service. He has recently started to explore RDF, and would like to build the new service with an RDF store as the backend. However, all his other services have JSON APIs. He is concerned about alienating his customers by offering only RDF and SPARQL interfaces. He would like a solution that allows him to expose a JSON-based API on top of the RDF store. It should be similar to his other APIs and feel familiar to his users. On the other hand, he also wants to expose the full RDF data model to allow those with the right tooling to make maximum use of his data.&lt;br /&gt;
&lt;br /&gt;
=== View as RDF ===&lt;br /&gt;
&lt;br /&gt;
Eli has an existing popular HTTP API which returns JSON and has many users, he has recently learned of the benefits of the semantic web and linked data, and would like to provide a way for users to see his data as RDF, without changing his entire heavily invested in technology stack or breaking backwards compatibility on his API. Eli can only make minor tweaks, such as adding http based id's to the objects the API returns, and providing a map which relates object property names to well known RDF properties.&lt;br /&gt;
&lt;br /&gt;
== RDF in JSON Design Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== There should be two serialization formats ===&lt;br /&gt;
&lt;br /&gt;
There should be a machine-friendly serialization format and there should be a human-friendly serialization format.&lt;br /&gt;
&lt;br /&gt;
* -1 [[User:Msporny|Manu Sporny]], given the limited time for this working group, I think we should focus on the human-friendly serialization format. RDF already has a number of machine-friendly serialization formats.&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]]. A simple &amp;quot;s&amp;quot;, &amp;quot;p&amp;quot;, &amp;quot;o&amp;quot; format is not the same amount of work as a human-friendly form. See [http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL JSON result format]&lt;br /&gt;
* 0 [[User:Lfeigenb|Lee]]. I'd worry about the WG's available time and resources.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] if possible.&lt;br /&gt;
* -0 [[User:Mbrunati|Matteo Brunati]] not enough time maybe&lt;br /&gt;
* -0 [[User:Cmatheus|Chris Matheus]] not a priority&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] Can we avoid this? One format to rule them all.&lt;br /&gt;
&lt;br /&gt;
=== A primary goal SHOULD be to build a human-friendly version of the serialization for JSON developers === &lt;br /&gt;
&lt;br /&gt;
The serialization should be optimized for humans first, machines second. The ability for machines to quickly parse the file is secondary to the ability for developers to be able to use the serialization with JavaScript. A focus should be placed on making the serialization fit into JavaScript frameworks easily, even at the cost of JSON-LD processor implementation complexity.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Lfeigenb|Lee]]. Given the existing work in the RDFa group on an API, I'd rather see a simple, machine-friendly format that implementations can then make available via an API. I'm not convinced that a standard human-friendly JSON format is a big win.&lt;br /&gt;
* -0 [[User:Andy_Seaborne|Andy]] Different uses cases lead to different design tradeoffs.  (e.g [http://code.google.com/p/linked-data-api/ LDA] is a tree; ideal for them, bad for different uses.)&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] but only if the product can be considered simple JSON objects (k/v objects with a subject set) and the caveat is recognized that by not requiring an RDF toolkit or understanding of properties, inference etc, the data isn't really RDF... it's RDF-able - else -1, waste of time.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]] +1 Nathan observations&lt;br /&gt;
* +1 [[User:Cmatheus|Chris Matheus]] extremely helpful for users new to RDF&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Yes, please! Make it easy for developers to write RDF in JSON.&lt;br /&gt;
&lt;br /&gt;
=== A primary goal SHOULD be to build a machine-optimized version of the serialization === &lt;br /&gt;
&lt;br /&gt;
The serialization should be optimized for machines first, humans second. The ability to use the serialization in JavaScript is secondary to the ability for machines to quickly parse the file. A focus should be placed on making implementations very easy to write.&lt;br /&gt;
&lt;br /&gt;
* -1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Lfeigenb|Lee]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]]&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] As stated before, I'd love to see one format to rule them all.&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD be able to transform most JSON in use today into RDF ===&lt;br /&gt;
&lt;br /&gt;
There should be a flexible mechanism, such as a &amp;quot;context&amp;quot;, that is capable of mapping from JSON key-value pairs to RDF triples. This mechanism could be specified either in-band or out-of-band from the serialization. Having this feature could map much of the existing JSON in the wild into RDF.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Lfeigenb|Lee]]. Seems out-of-scope; do existing RDF-in-JSON solutions already have such mechanisms?&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] The original data was not written to be used in this way.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] Assuming we're still talking two serializations, then this would be very valuable, for twitter to be able to say here's our data, view it as simple objects or rdf graphs; although I'm unsure we can get there without a common vision across the water.&lt;br /&gt;
* -1 [[User:Mbrunati|Matteo Brunati]] +1 to Andy, it's not in the original usage of the data&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]] nice to have but should not consume this team's resources&lt;br /&gt;
* 0 [[User:Tsteiner|Thomas Steiner]] Time permitting, not a top priority IMHO.&lt;br /&gt;
&lt;br /&gt;
=== Developers do not need to be familiar at all with RDF to start using the serialization ===&lt;br /&gt;
&lt;br /&gt;
Understanding the semantic web and the concepts of RDF (triples, graphs, etc.) should not be required in order to use the format. That means that the format may have a very simple, stripped down version for beginners and a more advanced set of features for semantic web enthusiasts.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] only if two serializations, and as per previous comments.&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] I ''think'' I disagree. If you don't want to expose developers to RDF at all, then why not just use vanilla JSON? Also I don't understand how the beginner/advanced thing should work. A server will have to generate the one or the other, so it's not like client-side developers get to choose which version they want to be exposed to.&lt;br /&gt;
* -1 [[User:Mbrunati|Matteo Brunati]] I think a minimal semweb context is necessary: thinking on SIMILE Exhibit framework. It's not simple to use without a prior knowledge of the model.&lt;br /&gt;
* 0 [[User:Cmatheus|Chris Matheus]] some very basic knowledge may be important but deep knowledge should not be required&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] People should at /least/ have an understanding of triples, that's enough for most use cases.&lt;br /&gt;
&lt;br /&gt;
=== The serialization MAY include features not in RDF ===&lt;br /&gt;
&lt;br /&gt;
There are certain features, such as generic key-value pairs in JSON that do not map well to RDF. They would map well if RDF had a concept of plain literals in the subject or predicate position. The serialization could include these concepts but may specify that the values may not be serialized to all RDF serialization formats (such as RDF/XML, TURTLE or RDFa).&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] creates an incompatible sub-community of applications.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] useful for allowing &amp;quot;junk&amp;quot; data like debugging info and session tokens, again only if two serializations.&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] as per Andy. Generic key-value pairs can be translated to &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;gt; &amp;lt;#key&amp;gt; &amp;quot;value&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; or somesuch.&lt;br /&gt;
* -1 [[User:Mbrunati|Matteo Brunati]] as for Andy. making a default rule to the generic key-value stuff&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]] shouldn't spend time on this&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] Strong no. Stay compatible with RDF by all means.&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST be 100% compatible with the JSON spec ===&lt;br /&gt;
&lt;br /&gt;
Additional features such as comments or short-hand notation to support datatypes could be supported in the serialization if we extended the JSON format. This would mean that the serialization would be incompatible with vanilla JSON readers and writers. While this may make serialization nicer, we should not make any additions/modifications to the JSON format to ensure maximum compatibility with pre-existing processors.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]]&lt;br /&gt;
* +1 [[User:Lfeigenb|Lee]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] else it's not JSON..&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* +1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Strong yes!&lt;br /&gt;
&lt;br /&gt;
=== It is a requirement that all RDF concepts MUST be expressible in the serialization ===&lt;br /&gt;
&lt;br /&gt;
There are concepts like RDF datatypes and g-snaps/graph literals that could be omitted from the serialization in order to reduce learning and implementation complexity. &lt;br /&gt;
&lt;br /&gt;
* -1 [[User:Msporny|Manu Sporny]], Good design is a balancing act - we should only include what will help the most number of people.&lt;br /&gt;
* +1 [[User:Lfeigenb|Lee]]. I'd hesitate to say &amp;quot;all&amp;quot;, but in general, a JSON RDF serialization would not be useful to us unless it was as much a 1st-class serialization of the RDF model as turtle, RDF/XML, etc.&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]] for the machine-friendly form to work with non-JSON apps and systems.&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] for the human-friendly form but the features dropped will vary from usage to usage.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] for machine (rdf in json)&lt;br /&gt;
* -1 [[User:Nrixham|Nathan]] for human (rdf-able json objects)&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]] not for this round&lt;br /&gt;
* +0.8 [[User:Mbrunati|Matteo Brunati]] probably yes, but not this time maybe, too complexity?&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] Easy things should be easy and hard things should be possible. Keep the entry barrier low (inferred types), but allow the experts to do crazy things.&lt;br /&gt;
&lt;br /&gt;
=== There should be a migration story for going from existing JSON in the wild to this new format ===&lt;br /&gt;
&lt;br /&gt;
The serialization task force should ensure that there is a subset of the serialization that is useful to beginners that use pure JSON, then show how developers could sprinkle in a little RDF into their JSON, then show how developers can fully migrate to the new serialization format. The transition to the serialization format will probably take multiple years The transition should be as smooth and organic as possible. We should also understand that many may not need to transition to RDF - JSON may work just fine for their application. We should not assume that people will go straight from regular JSON to the new serialization format.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] for human rdf-able json object serialization, if we can get there.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* -0 [[User:Cmatheus|Chris Matheus]] time permitting&lt;br /&gt;
* -0 [[User:Tsteiner|Thomas Steiner]] Time permitting&lt;br /&gt;
&lt;br /&gt;
=== Memory usage and CPU usage while processing SHOULD be a primary consideration ===&lt;br /&gt;
&lt;br /&gt;
Memory and CPU usage for processing JSON is low. We should ensure that processing the serialization format is only slightly more complex than processing regular JSON.&lt;br /&gt;
&lt;br /&gt;
* +0 [[User:Msporny|Manu Sporny]], we want to be cognizant of resource usage but I don't think this should be a primary driver for design decisions for the language.&lt;br /&gt;
* -1 [[User:Lfeigenb|Lee]]. Seems like an implementation detail to me.&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] (NB: JSON structures are read entirely into memory before the application gets to see them.)&lt;br /&gt;
* +0.5 [[User:Nrixham|Nathan]] there is a balance between memory and processing to be struck, ntriples = more byte, turtle = more processing, same considerations for JSON.&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] IMHO if you need the ultimate performance, use, e.g., N-Triples, readability should have a higher priority, personally speaking.&lt;br /&gt;
&lt;br /&gt;
=== The design target is small snippets of RDF Data ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;small&amp;quot; might be less than 1 million triples, not 10.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]]&lt;br /&gt;
* 0 [[User:Nrixham|Nathan]] two different considerations for machine or human, I'd say under 10k for human, over and beyond for machine&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] For huge dumps use, e.g., N-Triples IMHO.&lt;br /&gt;
&lt;br /&gt;
=== Design target: graphs or resources ===&lt;br /&gt;
&lt;br /&gt;
A human friendly JSON format can be designed more towards graphs (multiple subjects) or more targeted on just describing one resource (subject).  This is not to exclude one possibility over the other - this is to decide the focus.&lt;br /&gt;
&lt;br /&gt;
* graphs [[User:Andy_Seaborne|Andy]]&lt;br /&gt;
* machine: graphs, human: resource [[User:Nrixham|Nathan]]&lt;br /&gt;
* graphs [[User:Msporny|Manu Sporny]], but I don't think we'll need to choose between the two if we're smart about it. For instance, JSON-LD allows expressing graphs just as easily as expressing resources.&lt;br /&gt;
* graphs [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* resources [[User:Tsteiner|Thomas Steiner]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST support disjoint/unconnected graphs ===&lt;br /&gt;
&lt;br /&gt;
All current RDF serialization formats allow you to express two graphs that are not necessarily connected to one another. The new serialization format should allow the same mechanism. This is also important because normalization is difficult to achieve in a general way without also supporting disjoint graphs in the serialization. JSON-LD [http://json-ld.org/spec/ED/20110201/#disjoint-graphs disjoint graphs example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]] One graph with two+ disjoint components per serialization&lt;br /&gt;
* +0 [[User:Andy_Seaborne|Andy]] Multiple graphs per serialziation.  No more than follow work in other TFs.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] as per andy's comments&lt;br /&gt;
* +1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST provide a normalization algorithm ===&lt;br /&gt;
&lt;br /&gt;
Normalization, also known as canonicalization, is typically used when determining whether two sub-graphs that are expressed in different ways are identical. It is also very useful when hashing sub-graphs for checksumming or digital signature purposes. JSON-LD [http://json-ld.org/spec/ED/20110201/#the-normalization-algorithm normalization example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]], I think we need normalization because we need to have a good digital signatures story&lt;br /&gt;
* ? [[User:Andy_Seaborne|Andy]]. Unclear - are we signing the graph or the serialization? Is a Turtle-signed graph the same graph?  Would it include IRI normalization?&lt;br /&gt;
* +0 [[User:Nrixham|Nathan]]&lt;br /&gt;
* +0 [[User:Cmatheus|Chris Matheus]] highly desirable if there's time&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Time permitting&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD enable digital signatures ===&lt;br /&gt;
&lt;br /&gt;
Digital Signatures have a number of useful purposes. When combined with g-snaps/graph literals they provide a very easy way of establishing cryptographically verifiable provenance. These features are used heavily in electronic commerce. JSON-LD [http://payswarm.com/vocabs/signature#JsonldSignature digital signature example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +0 [[User:Nrixham|Nathan]]&lt;br /&gt;
* 0 [[User:Rcygania2|Richard Cyganiak]] Nice to have but won't make or break the format.&lt;br /&gt;
* +0 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* 0 [[User:Cmatheus|Chris Matheus]] nice to have&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Time permitting, not highest priority IMHO, though.&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD support advanced graph concepts ===&lt;br /&gt;
&lt;br /&gt;
The serialization format should support advanced graph concepts such as g-box, g-snap and g-text such that you can make statements about snapshots of graphs. Annotating graphs with metadata such as graph retrieval time, digital signatures on the contents of the graph, and other metadata associated with graphs are an important feature for higher-level concepts like provenance. Sandro's explanation of [http://lists.w3.org/Archives/Public/public-rdf-wg/2011Feb/0092.html advanced graph concepts].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] Has security implications for RDF crawlers; requires larger API surface; SPARQL only returns single graphs anyways; use case is unclear&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] Not unless the format is following standard work done in other TFs.&lt;br /&gt;
* +0.5 [[User:Nrixham|Nathan]] follow other TFs&lt;br /&gt;
* 0 [[User:Mbrunati|Matteo Brunati]] too problematic probably, +1 Richard notes&lt;br /&gt;
* -0 [[User:Cmatheus|Chris Matheus]] not this round unless the Graph TF results happens quickly and their incorporation is straight forawrd&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST support automatic typing ===&lt;br /&gt;
&lt;br /&gt;
Being able to transform a JSON document into a native object is one of the key benefits of using JSON over other serialization formats. Automatically typing of numbers and boolean values into language-native datatypes removes an extra step that developers must perform without this feature. For example, one could easily transform a serialized number that is an xsd:integer into a language-native integer. JSON-LD [http://json-ld.org/spec/ED/20110201/#automatic-typing automatic typing example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]]&lt;br /&gt;
* +1 [[User:Rcygania2|Richard Cyganiak]] I'd say it's what users expect.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* +1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Strong yes. This is what the JavaScript community would expect I think.&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD support type coercion ===&lt;br /&gt;
&lt;br /&gt;
While not immediately obvious, type coercion allows one to map regular JSON into RDF in a way that may add datatype decorators to object literals. In other words, it provides for a way to get Typed Literals from regular JSON data. JSON-LD [http://json-ld.org/spec/ED/20110201/#type-coercion type coercion example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] for human one, -1 for machine one&lt;br /&gt;
* +1 [[User:Tsteiner|Thomas Steiner]] Yes, as this is what people (IMHO) expect, and it keeps the entry barrier low. Still allow for overriding.&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD rely on microsyntaxes instead of nested structures ===&lt;br /&gt;
&lt;br /&gt;
There are two common approaches to expressing RDF in JSON. One of them is to use nested structures to express language and type information for literals. The other approach is to use shallow structures with microsyntaxes mirroring TURTLE to express language and type information for literals.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] It's ugly as hell and makes the language unusable without an API&lt;br /&gt;
* -1 [[User:Nrixham|Nathan]]&lt;br /&gt;
* -1 [[User:Mbrunati|Matteo Brunati]]&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] Microsyntaxes are easy to get wrong. Nested structures occupy more memory and require two object accesses on read/write, however, with default/inferred types, this could be OK.&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD provide an API ===&lt;br /&gt;
&lt;br /&gt;
An API would allow developers to transform incoming documents into a format that is easier for them to work with. In other words, it would allow them to drop all type information if it wasn't useful to them, or remove any micro-syntaxes that would get in the way of basic usage of the data. Keep in mind that even JSON has an api: JSON.parse(). JSON-LD [http://json-ld.org/spec/ED/20110201/#the-json-ld-api API example].&lt;br /&gt;
&lt;br /&gt;
(?? Reword as: The serialization SHOULD assume working with a JavaScript RDF API ([[User:Andy_Seaborne|Andy]]))&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Nrixham|Nathan]] the machine one will have the RDF API, the human one is pointless if it needs and API.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]] as Andy said, working with an API ( are there other WG are working on that or not? )&lt;br /&gt;
* -1 [[User:Cmatheus|Chris Matheus]] not this round&lt;br /&gt;
* -1 [[User:Tsteiner|Thomas Steiner]] The JSON is the API, we just need to make it easy enough.&lt;br /&gt;
&lt;br /&gt;
=== There SHOULD be one and only one way to serialize a given triple ===&lt;br /&gt;
&lt;br /&gt;
The more different ways there are to express the same triple or graph, the harder it gets to use the host language's native toolbox (that is, pure JS expressions) to process data. At some point, using the host language becomes impossible without using a parser library layered on top of the host language, negating the benefit of basing the language on JSON in the first place. (Note, this is about using different JSON structures to express the same triple; not about different triples expressing the same statement in RDF Semantics, like &amp;lt;tt&amp;gt;&amp;quot;foo&amp;quot;&amp;lt;/tt&amp;gt; vs &amp;lt;tt&amp;gt;&amp;quot;foo&amp;quot;^^xsd:string&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Rcygania2|Richard Cyganiak]] This is the lesson to be learnt from RDF/XML.&lt;br /&gt;
* +0 [[User:Msporny|Manu Sporny]], while I agree in principle I don't know how we'd enforce this in practice - that is, what's the difference between &amp;quot;foo&amp;quot; and &amp;quot;foo&amp;quot;^^xsd:string in JSON? Would you serialize the plain literal &amp;quot;foo&amp;quot; and the Typed Literal &amp;quot;foo&amp;quot;^^xsd:string in the same way in JSON? If the answer is yes, isn't the translation lossy?&lt;br /&gt;
** This one is inherent to the way the RDF model is defined. There's nothing that can be done about it in the syntax. The concern here was about using different JSON structures to express the same triple. I clarified the description.&lt;br /&gt;
* +1 [[User:Mbrunati|Matteo Brunati]] as for Richard, RDF/XML is the lesson&lt;br /&gt;
* ++1 [[User:Cmatheus|Chris Matheus]]&lt;br /&gt;
* +0 [[User:Tsteiner|Thomas Steiner]] Can it be done? How about 1.0 double vs 1.0 float? Compare, e.g., QUnit's equality tests (jQuery unit test framework): deepEqual (http://docs.jquery.com/QUnit/deepEqual#actualexpectedmessage) vs. strictEqual (http://docs.jquery.com/QUnit/strictEqual#actualexpectedmessage) vs. equal (http://docs.jquery.com/QUnit/equal#actualexpectedmessage)&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Msporny Manu Sporny]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Cmatheus Chris Matheus]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Andy_Seaborne Andy Seaborne]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Tsteiner Thomas Steiner]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Mbrunati Matteo Brunati]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Dwood4 David Wood]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Phayes3 Pat Hayes]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Sandro Sandro Hawke]&lt;/div&gt;</description>
			<pubDate>Thu, 10 Mar 2011 23:25:40 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-JSON</comments>		</item>
		<item>
			<title>TF-Graphs</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-Graphs</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Task Force &amp;quot;Graphs&amp;quot; =&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
Member [[TF-Graphs-UC|Use Cases]] for graphs, graph identifiers, etc.&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [[GraphConceptTerminology| Graph Concept Terminology]] to use when discussing &amp;quot;graphs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Material ==&lt;br /&gt;
* [[TF-Graphs/RDF-Datasets-Proposal|Proposal: RDF Datasets]]&lt;br /&gt;
&lt;br /&gt;
== Workshop results ==&lt;br /&gt;
&lt;br /&gt;
[http://www.w3.org/2001/sw/wiki/index.php?title=RDF_Core_Work_Items#Graph_Identification Suggestions called &amp;quot;Graph Identification&amp;quot; from Stanford Workshop] are reproduced below.&lt;br /&gt;
&lt;br /&gt;
=====Pros=====&lt;br /&gt;
* widely used by the community&lt;br /&gt;
* part of SPARQL already&lt;br /&gt;
* numerous use cases&lt;br /&gt;
* clarify confusion in implementation&lt;br /&gt;
&lt;br /&gt;
=====Cons=====&lt;br /&gt;
* adds complication and may not solve the issue nevertheless&lt;br /&gt;
* complicates the RDF model (potentially)&lt;br /&gt;
* risks with backward compatibility should be assessed (e.g., syntax)&lt;br /&gt;
* does it need standardization?&lt;br /&gt;
&lt;br /&gt;
=====Proposals=====&lt;br /&gt;
* Named graphs, provenance and trust , Jeremy Carroll, Christian Bizer, Patrick Hayes, Patrick Stickler, WWW 2005, http://www.w3.org/2009/12/rdf-ws/p613.pdf, http://www4.wiwiss.fu-berlin.de/bizer/SWTSGuide/carroll-ISWC2004.pdf&lt;br /&gt;
* Quadstores in general&lt;br /&gt;
* ODM RDF Metamodel (see http://www.omg.org/spec/ODM/1.0/, section 10.5, derived from Carroll et al.)&lt;br /&gt;
* Michel Chein and Marie-Laure Mugnier. Positive nested conceptual graphs. In Proceedings of ICCS '97, volume 1257 of LNAI, pages 95-109, Springer, 1997. (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.30.3644) ; Nested Graphs: A Graph-based Knowledge Representation Model with FOL Semantics (1998) ( http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.37.5256 )&lt;br /&gt;
* SPARQL Specifications ([http://www.w3.org/TR/rdf-sparql-query/#rdfDataset RDF Datasets]) and related to that, [http://www.w3.org/2001/sw/wiki/RDF/NextStepWorkshop/AxelWishlist Axel's proposal] to base the work on RDF Datasets (see IRC)&lt;br /&gt;
* Notation 3, Tim Berners-Lee, 1998 http://www.w3.org/DesignIssues/Notation3&lt;br /&gt;
* ideas from the Topic Maps work (see also SWBPD WG note, http://www.w3.org/TR/rdftm-survey/)&lt;br /&gt;
* “Triplesets: Tagging and Grouping in RDF Datasets”, http://www.w3.org/2009/12/rdf-ws/papers/ws24, Atanas Kiryakov, Vassil Momtchev&lt;br /&gt;
* hypergraphs (as a general mathematical domain)&lt;br /&gt;
&lt;br /&gt;
=====Technical Issues=====&lt;br /&gt;
* mutual roles of quads vs. singleton named graphs vs. named graphs&lt;br /&gt;
* extension the RDF(S) semantics?&lt;br /&gt;
* new RDF(S) terms? rdf:Graph, rdf:subGraphOf, rdf:equivalentGraph, etc.&lt;br /&gt;
* syntax (TRIG, [http://www.w3.org/Submission/rdfsource/ INRIA Member submission], [http://www.springerlink.com/content/wh8x37j46n941427/ Web, Graphs and Semantics] , n3)&lt;br /&gt;
* graph inclusion, can named graphs share triples&lt;br /&gt;
* whether blank nodes can be shared among multiple graphs&lt;br /&gt;
* whether blank nodes can be used as graph names&lt;br /&gt;
* named graphs do not fully replace reification&lt;br /&gt;
* how would follow your nose apply to named graphs?&lt;br /&gt;
* relationships to SPARQL&lt;br /&gt;
* effects on the SW stack&lt;br /&gt;
* how does it influence the OWL semantics?&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Lfeigenb Lee Feigenbaum]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Rcygania2 Richard Cyganiak]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Fgandon Fabien Gandon]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Gcarothe3 Gavin Carothers]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Phayes3 Pat Hayes]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:ZheWu Zhe Wu]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Ocorby Olivier Corby]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:sharris2 Steve Harris]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Sandro Sandro Hawke]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Andy_Seaborne Andy Seaborne]&lt;br /&gt;
* [[User:Azimmerm|Antoine Zimmermann]]&lt;/div&gt;</description>
			<pubDate>Wed, 09 Mar 2011 14:54:56 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-Graphs</comments>		</item>
		<item>
			<title>TF-Graphs</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-Graphs</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Task Force &amp;quot;Graphs&amp;quot; =&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
Member [[TF-Graphs-UC|Use Cases]] for graphs, graph identifiers, etc.&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
&lt;br /&gt;
* [GraphConceptTerminology Graph Concept Terminology] to use when discussing &amp;quot;graphs&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Material ==&lt;br /&gt;
* [[TF-Graphs/RDF-Datasets-Proposal|Proposal: RDF Datasets]]&lt;br /&gt;
&lt;br /&gt;
== Workshop results ==&lt;br /&gt;
&lt;br /&gt;
[http://www.w3.org/2001/sw/wiki/index.php?title=RDF_Core_Work_Items#Graph_Identification Suggestions called &amp;quot;Graph Identification&amp;quot; from Stanford Workshop] are reproduced below.&lt;br /&gt;
&lt;br /&gt;
=====Pros=====&lt;br /&gt;
* widely used by the community&lt;br /&gt;
* part of SPARQL already&lt;br /&gt;
* numerous use cases&lt;br /&gt;
* clarify confusion in implementation&lt;br /&gt;
&lt;br /&gt;
=====Cons=====&lt;br /&gt;
* adds complication and may not solve the issue nevertheless&lt;br /&gt;
* complicates the RDF model (potentially)&lt;br /&gt;
* risks with backward compatibility should be assessed (e.g., syntax)&lt;br /&gt;
* does it need standardization?&lt;br /&gt;
&lt;br /&gt;
=====Proposals=====&lt;br /&gt;
* Named graphs, provenance and trust , Jeremy Carroll, Christian Bizer, Patrick Hayes, Patrick Stickler, WWW 2005, http://www.w3.org/2009/12/rdf-ws/p613.pdf, http://www4.wiwiss.fu-berlin.de/bizer/SWTSGuide/carroll-ISWC2004.pdf&lt;br /&gt;
* Quadstores in general&lt;br /&gt;
* ODM RDF Metamodel (see http://www.omg.org/spec/ODM/1.0/, section 10.5, derived from Carroll et al.)&lt;br /&gt;
* Michel Chein and Marie-Laure Mugnier. Positive nested conceptual graphs. In Proceedings of ICCS '97, volume 1257 of LNAI, pages 95-109, Springer, 1997. (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.30.3644) ; Nested Graphs: A Graph-based Knowledge Representation Model with FOL Semantics (1998) ( http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.37.5256 )&lt;br /&gt;
* SPARQL Specifications ([http://www.w3.org/TR/rdf-sparql-query/#rdfDataset RDF Datasets]) and related to that, [http://www.w3.org/2001/sw/wiki/RDF/NextStepWorkshop/AxelWishlist Axel's proposal] to base the work on RDF Datasets (see IRC)&lt;br /&gt;
* Notation 3, Tim Berners-Lee, 1998 http://www.w3.org/DesignIssues/Notation3&lt;br /&gt;
* ideas from the Topic Maps work (see also SWBPD WG note, http://www.w3.org/TR/rdftm-survey/)&lt;br /&gt;
* “Triplesets: Tagging and Grouping in RDF Datasets”, http://www.w3.org/2009/12/rdf-ws/papers/ws24, Atanas Kiryakov, Vassil Momtchev&lt;br /&gt;
* hypergraphs (as a general mathematical domain)&lt;br /&gt;
&lt;br /&gt;
=====Technical Issues=====&lt;br /&gt;
* mutual roles of quads vs. singleton named graphs vs. named graphs&lt;br /&gt;
* extension the RDF(S) semantics?&lt;br /&gt;
* new RDF(S) terms? rdf:Graph, rdf:subGraphOf, rdf:equivalentGraph, etc.&lt;br /&gt;
* syntax (TRIG, [http://www.w3.org/Submission/rdfsource/ INRIA Member submission], [http://www.springerlink.com/content/wh8x37j46n941427/ Web, Graphs and Semantics] , n3)&lt;br /&gt;
* graph inclusion, can named graphs share triples&lt;br /&gt;
* whether blank nodes can be shared among multiple graphs&lt;br /&gt;
* whether blank nodes can be used as graph names&lt;br /&gt;
* named graphs do not fully replace reification&lt;br /&gt;
* how would follow your nose apply to named graphs?&lt;br /&gt;
* relationships to SPARQL&lt;br /&gt;
* effects on the SW stack&lt;br /&gt;
* how does it influence the OWL semantics?&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Lfeigenb Lee Feigenbaum]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Rcygania2 Richard Cyganiak]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Fgandon Fabien Gandon]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Gcarothe3 Gavin Carothers]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Phayes3 Pat Hayes]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:ZheWu Zhe Wu]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Ocorby Olivier Corby]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:sharris2 Steve Harris]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Sandro Sandro Hawke]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Andy_Seaborne Andy Seaborne]&lt;br /&gt;
* [[User:Azimmerm|Antoine Zimmermann]]&lt;/div&gt;</description>
			<pubDate>Wed, 09 Mar 2011 14:54:33 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-Graphs</comments>		</item>
		<item>
			<title>Graph Terminology</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/Graph_Terminology</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;created graph concept terminology page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Graph Concept Terminology ==&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;RDF Graph&amp;quot; has become used to refer to multiple different concepts over the years. This page introduces three temporary terms relating to different graph concepts, which can be used within RDF WG discussions and use cases.&lt;br /&gt;
&lt;br /&gt;
=== g-box ===&lt;br /&gt;
A &amp;quot;g-box&amp;quot; is a container, like a &amp;quot;set&amp;quot; data structure in&lt;br /&gt;
programming.  It holds some RDF arcs, with their nodes. (Alternatively,&lt;br /&gt;
it holds some RDF triples.).  G-boxes can overlap, sharing some of the&lt;br /&gt;
same nodes and arcs.  Two g-boxes can happen to have the same contents&lt;br /&gt;
(right now) while being distinct g-boxes. G-boxes contents can change:&lt;br /&gt;
today a particular g-box might contain the triples { my:a my:b _:x.&lt;br /&gt;
my:a my:c _:x }, and tomorrow it might instead contain { my:a my:b _:x.&lt;br /&gt;
my:a my:c2 _:x }.&lt;br /&gt;
&lt;br /&gt;
=== g-snap ===&lt;br /&gt;
A &amp;quot;g-snap&amp;quot; as an idealized snapshot of a g-box; it's a mathematical&lt;br /&gt;
set of RDF arcs, with their nodes.  (Alternatively, a mathematical set&lt;br /&gt;
of RDF triples.) Like g-boxes, g-snaps can overlap, sharing nodes and&lt;br /&gt;
arcs.  Unlike g-boxes, it makes no sense to talk about g-snaps&lt;br /&gt;
changing: they are defined to be exactly the collection of their&lt;br /&gt;
elements.  If a g-snap were to &amp;quot;change&amp;quot; it would simply be a different&lt;br /&gt;
g-snap.  If two g-snaps have the same nodes/arcs, they are really the&lt;br /&gt;
same g-snap.  The contents of a g-box at any point in time are a&lt;br /&gt;
g-snap. &lt;br /&gt;
&lt;br /&gt;
=== g-text ===&lt;br /&gt;
A &amp;quot;g-text&amp;quot; is a particular sequence of characters or bytes which&lt;br /&gt;
conveys a particular g-snap in some language (eg turtle or rdf/xml). If&lt;br /&gt;
you can parse a g-text, you know what is in the g-snap it conveys&lt;br /&gt;
(except blank nodes, as discussed below).  You can tell someone exactly&lt;br /&gt;
what is in a particular g-box at some instant by sending them a&lt;br /&gt;
g-text.  (You send them the g-text which conveys the g-snap which is&lt;br /&gt;
the current state/contents of that g-box.)&lt;br /&gt;
&lt;br /&gt;
== Possible Requirements ==&lt;br /&gt;
&lt;br /&gt;
* There may exist a need to make statements about a g-box, thus a way to refer to them may be required&lt;br /&gt;
* There may exist a need to make statements about a g-snap, or a distinct set of triples, thus a way to refer to one may be required&lt;br /&gt;
* There may exist a need to make statements about a &amp;quot;state&amp;quot; of a g-box, either previous or future, thus a way to refer to a g-snap as being the state of g-box-X at Y time may be needed.&lt;br /&gt;
&lt;br /&gt;
== General Story ==&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;named g-box&amp;quot; equates roughly to an &amp;quot;Information Resource&amp;quot; or a &amp;quot;Named Graph in a Quad Store&amp;quot;, ( name , G ) where G is a set of values over time { Gs1, Gs2, ... }, each value in the set is a g-snap, a distinct set of triples, and each g-snap can be &amp;quot;serialized&amp;quot; or &amp;quot;represented&amp;quot; in many different ways (RDF/XML, turtle, rdf-json, ...). Each distinct serialization/representation is a &amp;quot;g-text&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Kudos ====&lt;br /&gt;
Thanks to Sandro Hawke for introducing the terms and making our lives a little easier.&lt;/div&gt;</description>
			<pubDate>Wed, 09 Mar 2011 14:52:49 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:Graph_Terminology</comments>		</item>
		<item>
			<title>TF-JSON</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-JSON</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* RDF in JSON Design Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JSON RDF Task Force =&lt;br /&gt;
&lt;br /&gt;
The JSON RDF Task Force is primarily responsible for creating a JSON serialization of RDF.&lt;br /&gt;
&lt;br /&gt;
== Inputs ==&lt;br /&gt;
&lt;br /&gt;
* ''[http://n2.talis.com/wiki/RDF_JSON_Specification RDF JSON]'', by Talis.&lt;br /&gt;
* ''[http://json-ld.org/ JSON-LD]'', by Manu Sporny.&lt;br /&gt;
* ''[http://decentralyze.com/2010/06/04/from-json-to-rdf-in-six-easy-steps-with-jron/ JRON]'' by Sandro Hawke.&lt;br /&gt;
* ''[http://code.google.com/p/linked-data-api/wiki/Specification JSON serialization]''  in the Linked Data API.&lt;br /&gt;
* ''[http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL Query Results in JSON]'' by DAWG.&lt;br /&gt;
* ''[http://webr3.org/apps/specs/jsn3/ JSN3]'' by Nathan.&lt;br /&gt;
* ''[http://www.w3.org/2009/12/rdf-ws/papers/ws02 Flat triples approach to RDF graphs in JSON]'' by Dominik Tomaszuk&lt;br /&gt;
* ''[http://www.w3.org/2001/sw/wiki/index.php?title=RDF_Core_Work_Items&amp;amp;oldid=1990#JSON Ideas and issues from the community ]'' from RDF Core Work Items build on RDF/NextStepWorkshop, are reproduced below.&lt;br /&gt;
&lt;br /&gt;
==== Materials from RDF Next Step WorkShop ====&lt;br /&gt;
&lt;br /&gt;
=====Pros=====&lt;br /&gt;
* Allows web authors (Javascript, HTML5, ... developers) more easily use rdf data with existing tools and techniques&lt;br /&gt;
* Multiple JSON formats and implementations (some interoperable) already exist showing interest in this work&lt;br /&gt;
=====Cons=====&lt;br /&gt;
* Current JSON formats are not aligned - differnent approaches - making it JSON-user friendly versus making it familiar to existing RDF users.&lt;br /&gt;
* Needs some R&amp;amp;D and alignment.&lt;br /&gt;
* Risk that the result would be some standard that would not be adopted if it was not 'web author' friendly.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* JSON Serialization of RDF&lt;br /&gt;
&lt;br /&gt;
== Questions to Contemplate ==&lt;br /&gt;
&lt;br /&gt;
# What are the use cases for the JSON serialization?&lt;br /&gt;
# Are we to create a lightweight JSON based RDF interchange format optimized for machines and speed, or an easy to work with JSON view of RDF optimized for humans (developers)?&lt;br /&gt;
# Is it necessary for developers to know RDF in order to use the simplest form of the RDF-in-JSON serialization?&lt;br /&gt;
# Should we attempt to support more than just RDF? Key-value pairs as well? Literals as subjects?&lt;br /&gt;
# Must RDF in JSON be 100% compatible with the JSON spec? Or must it only be able to be read by a JavaScript library and thus be JSON-like-but-not-compatible (and can thus deviate from the standard JSON spec)?&lt;br /&gt;
# Must all major RDF concepts be expressible via the RDF in JSON syntax?&lt;br /&gt;
# Should we go more for human-readability, or terse/compact/machine-friendly formats? What is the correct balance?&lt;br /&gt;
# Should there be a migration story for the JSON that is already used heavily on the Web? For example, in REST-based services?&lt;br /&gt;
# Should processing be a single-pass or multi-pass process? Should we support SAX-like streaming?&lt;br /&gt;
# Should there be support for [http://json-ld.org/spec/ED/20110201/#disjoint-graphs disjoint graphs]?&lt;br /&gt;
# Should we consider how the structure may be [http://payswarm.com/vocabs/signature#JsonldSignature digitally signed]?&lt;br /&gt;
# How should [http://json-ld.org/spec/ED/20110201/#the-normalization-algorithm normalization] occur?&lt;br /&gt;
# Should [http://webr3.org/blog/semantic-web/rdf-named-graphs-vs-graph-literals/ graph literals] be supported?&lt;br /&gt;
# Should [http://webr3.org/blog/semantic-web/rdf-named-graphs-vs-graph-literals/ named graphs] be supported?&lt;br /&gt;
# Should [http://json-ld.org/spec/ED/20110201/#automatic-typing automatic typing] be supported?&lt;br /&gt;
# Should [http://json-ld.org/spec/ED/20110201/#type-coercion type coercion] be supported?&lt;br /&gt;
# Should there be [http://json-ld.org/spec/ED/20110201/#the-json-ld-api an API] defined in order to easily map RDF-in-JSON to/from language-native formats?&lt;br /&gt;
&lt;br /&gt;
== RDF in JSON Use Cases ==&lt;br /&gt;
&lt;br /&gt;
=== RDF REST Web Services ===&lt;br /&gt;
&lt;br /&gt;
Frank wants to be able to easily post and get RDF data RESTfully via Web Services. He wants to make sure that the data that is exchanged looks very much like the JSON data that is passed to and from popular services like Twitter's API. He wants to utilize the current JSON-based tools and workflows that he uses for all of his other data on the Web, but add semantics to that data in a way that is easy to explain to his fellow developers.&lt;br /&gt;
&lt;br /&gt;
=== Developing a Javascript application that interacts with a graph store ===&lt;br /&gt;
&lt;br /&gt;
Herbert is developing a Javascript application that interacts with an RDF store. He wants to be able to easily PUT, POST and GET RDF data RESTfully using the [http://www.w3.org/TR/sparql11-http-rdf-update/ SPARQL RDF Dataset HTTP Protocol].  Since he is working in Javascript, he wants to be able to send data to a graph store using JSON to represent the RDF data.&lt;br /&gt;
&lt;br /&gt;
=== Expose a service that internally uses RDF in a JSON-friendly way ===&lt;br /&gt;
&lt;br /&gt;
Stacy operates several Web Services. She designed the data that is sent and received by her Web Services in a way that maps very easily to RDF. She wants to be able to take the data that she is already publishing and transform it into RDF for internal use. She wants to be able to do this without impacting the developers that are currently using her system.&lt;br /&gt;
&lt;br /&gt;
She also wants to be able to give the developers that care about RDF a data model that maps to RDF well. She would like to support both regular JSON developers and semantic web JSON developers at the same time via her JSON-based Web Services API.&lt;br /&gt;
&lt;br /&gt;
=== Digital Signatures on Graphs ===&lt;br /&gt;
&lt;br /&gt;
Graeme would like to publish assets for sale on his website via a JSON-based Web Services API. He would like this data to be cached on third party sites without the pricing information being changed or forged. He accomplishes this by digitally signing the graph of information that he publishes such that search engines and other caching mechanisms can relay the information without needing to directly access his site. By cryptographically signing the graph, he is also ensuring that information about the asset, including pricing information, cannot be changed or forged to different values.&lt;br /&gt;
&lt;br /&gt;
=== Universal Payment Standard for the Web ===&lt;br /&gt;
&lt;br /&gt;
The [http://payswarm.com/ PaySwarm Web platform] is an open web standard that enables Web browsers and Web devices to perform Universal Web Payment. The nascent standard is using a form of RDF in JSON extensively in order to support distributed listing of [http://payswarm.com/vocabs/payswarm#Asset assets], description of [http://payswarm.com/vocabs/payswarm#License licenses] and [http://payswarm.com/vocabs/payswarm#Contract digital contracts], and [http://payswarm.com/vocabs/signature#JsonldSignature digital signatures] on graphs of RDF information. Information is published via HTML+RDFa and then used in JSON-form when transmitted to and from PaySwarm-aware Web Services.&lt;br /&gt;
&lt;br /&gt;
== RDF in JSON Design Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== There should be two serialization formats ===&lt;br /&gt;
&lt;br /&gt;
There should be a machine-friendly serialization format and there should be a human-friendly serialization format.&lt;br /&gt;
&lt;br /&gt;
* -1 [[User:Msporny|Manu Sporny]], given the limited time for this working group, I think we should focus on the human-friendly serialization format. RDF already has a number of machine-friendly serialization formats.&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]]. A simple &amp;quot;s&amp;quot;, &amp;quot;p&amp;quot;, &amp;quot;o&amp;quot; format is not the same amount of work as a human-friendly form. See [http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL JSON result format]&lt;br /&gt;
* 0 [[User:Lfeigenb|Lee]]. I'd worry about the WG's available time and resources.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] if possible.&lt;br /&gt;
&lt;br /&gt;
=== A primary goal SHOULD be to build a human-friendly version of the serialization for JSON developers === &lt;br /&gt;
&lt;br /&gt;
The serialization should be optimized for humans first, machines second. The ability for machines to quickly parse the file is secondary to the ability for developers to be able to use the serialization with JavaScript. A focus should be placed on making the serialization fit into JavaScript frameworks easily, even at the cost of JSON-LD processor implementation complexity.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Lfeigenb|Lee]]. Given the existing work in the RDFa group on an API, I'd rather see a simple, machine-friendly format that implementations can then make available via an API. I'm not convinced that a standard human-friendly JSON format is a big win.&lt;br /&gt;
* -0 [[User:Andy_Seaborne|Andy]] Different uses cases lead to different design tradeoffs.  (e.g [http://code.google.com/p/linked-data-api/ LDA] is a tree; ideal for them, bad for different uses.)&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] but only if the product can be considered simple JSON objects (k/v objects with a subject set) and the caveat is recognized that by not requiring an RDF toolkit or understanding of properties, inference etc, the data isn't really RDF... it's RDF-able - else -1, waste of time.&lt;br /&gt;
&lt;br /&gt;
=== A primary goal SHOULD be to build a machine-optimized version of the serialization === &lt;br /&gt;
&lt;br /&gt;
The serialization should be optimized for machines first, humans second. The ability to use the serialization in JavaScript is secondary to the ability for machines to quickly parse the file. A focus should be placed on making implementations very easy to write.&lt;br /&gt;
&lt;br /&gt;
* -1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Lfeigenb|Lee]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD be able to transform most JSON in use today into RDF ===&lt;br /&gt;
&lt;br /&gt;
There should be a flexible mechanism, such as a &amp;quot;context&amp;quot;, that is capable of mapping from JSON key-value pairs to RDF triples. This mechanism could be specified either in-band or out-of-band from the serialization. Having this feature could map much of the existing JSON in the wild into RDF.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Lfeigenb|Lee]]. Seems out-of-scope; do existing RDF-in-JSON solutions already have such mechanisms?&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] The original data was not written to be used in this way.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] Assuming we're still talking two serializations, then this would be very valuable, for twitter to be able to say here's our data, view it as simple objects or rdf graphs; although I'm unsure we can get there without a common vision across the water.&lt;br /&gt;
&lt;br /&gt;
=== Developers do not need to be familiar at all with RDF to start using the serialization ===&lt;br /&gt;
&lt;br /&gt;
Understanding the semantic web and the concepts of RDF (triples, graphs, etc.) should not be required in order to use the format. That means that the format may have a very simple, stripped down version for beginners and a more advanced set of features for semantic web enthusiasts.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] only if two serializations, and as per previous comments.&lt;br /&gt;
&lt;br /&gt;
=== The serialization MAY include features not in RDF ===&lt;br /&gt;
&lt;br /&gt;
There are certain features, such as generic key-value pairs in JSON that do not map well to RDF. They would map well if RDF had a concept of plain literals in the subject or predicate position. The serialization could include these concepts but may specify that the values may not be serialized to all RDF serialization formats (such as RDF/XML, TURTLE or RDFa).&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] creates an incompatible sub-community of applications.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] useful for allowing &amp;quot;junk&amp;quot; data like debugging info and session tokens, again only if two serializations.&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST be 100% compatible with the JSON spec ===&lt;br /&gt;
&lt;br /&gt;
Additional features such as comments or short-hand notation to support datatypes could be supported in the serialization if we extended the JSON format. This would mean that the serialization would be incompatible with vanilla JSON readers and writers. While this may make serialization nicer, we should not make any additions/modifications to the JSON format to ensure maximum compatibility with pre-existing processors.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]]&lt;br /&gt;
* +1 [[User:Lfeigenb|Lee]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] else it's not JSON..&lt;br /&gt;
&lt;br /&gt;
=== It is a requirement that all RDF concepts MUST be expressible in the serialization ===&lt;br /&gt;
&lt;br /&gt;
There are concepts like RDF datatypes and g-snaps/graph literals that could be omitted from the serialization in order to reduce learning and implementation complexity. &lt;br /&gt;
&lt;br /&gt;
* -1 [[User:Msporny|Manu Sporny]], Good design is a balancing act - we should only include what will help the most number of people.&lt;br /&gt;
* +1 [[User:Lfeigenb|Lee]]. I'd hesitate to say &amp;quot;all&amp;quot;, but in general, a JSON RDF serialization would not be useful to us unless it was as much a 1st-class serialization of the RDF model as turtle, RDF/XML, etc.&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]] for the machine-friendly form to work with non-JSON apps and systems.&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] for the human-friendly form but the features dropped will vary from usage to usage.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] for machine (rdf in json)&lt;br /&gt;
* -1 [[User:Nrixham|Nathan]] for human (rdf-able json objects)&lt;br /&gt;
&lt;br /&gt;
=== There should be a migration story for going from existing JSON in the wild to this new format ===&lt;br /&gt;
&lt;br /&gt;
The serialization task force should ensure that there is a subset of the serialization that is useful to beginners that use pure JSON, then show how developers could sprinkle in a little RDF into their JSON, then show how developers can fully migrate to the new serialization format. The transition to the serialization format will probably take multiple years The transition should be as smooth and organic as possible. We should also understand that many may not need to transition to RDF - JSON may work just fine for their application. We should not assume that people will go straight from regular JSON to the new serialization format.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] for human rdf-able json object serialization, if we can get there.&lt;br /&gt;
&lt;br /&gt;
=== Memory usage and CPU usage while processing SHOULD be a primary consideration ===&lt;br /&gt;
&lt;br /&gt;
Memory and CPU usage for processing JSON is low. We should ensure that processing the serialization format is only slightly more complex than processing regular JSON.&lt;br /&gt;
&lt;br /&gt;
* +0 [[User:Msporny|Manu Sporny]], we want to be cognizant of resource usage but I don't think this should be a primary driver for design decisions for the language.&lt;br /&gt;
* -1 [[User:Lfeigenb|Lee]]. Seems like an implementation detail to me.&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] (NB: JSON structures are read entirely into memory before the application gets to see them.)&lt;br /&gt;
* +0.5 [[User:Nrixham|Nathan]] there is a balance between memory and processing to be struck, ntriples = more byte, turtle = more processing, same considerations for JSON.&lt;br /&gt;
&lt;br /&gt;
=== The design target is small snippets of RDF Data ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;small&amp;quot; might be less that 1 million triples, not 10.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]]&lt;br /&gt;
* 0 [[User:Nrixham|Nathan]] two different considerations for machine or human, I'd say under 10k for human, over and beyond for machine&lt;br /&gt;
&lt;br /&gt;
=== Design target: graphs or resources ===&lt;br /&gt;
&lt;br /&gt;
A human friendly JSON format can be designed more towards graphs (multiple subjects) or more targeted on just describing one resource (subject).  This is not to exclude one possibility over the other - this is to decide the focus.&lt;br /&gt;
&lt;br /&gt;
* graphs [[User:Andy_Seaborne|Andy]]&lt;br /&gt;
* machine: graphs, human: resource [[User:Nrixham|Nathan]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST support disjoint/unconnected graphs ===&lt;br /&gt;
&lt;br /&gt;
All current RDF serialization formats allow you to express two graphs that are not necessarily connected to one another. The new serialization format should allow the same mechanism. This is also important because normalization is difficult to achieve in a general way without also supporting disjoint graphs in the serialization. JSON-LD [http://json-ld.org/spec/ED/20110201/#disjoint-graphs disjoint graphs example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Andy_Seaborne|Andy]] One graph with two+ disjoint components per serialization&lt;br /&gt;
* +0 [[User:Andy_Seaborne|Andy]] Multiple graphs per serialziation.  No more than follow work in other TFs.&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] as per andy's comments&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST provide a normalization algorithm ===&lt;br /&gt;
&lt;br /&gt;
Normalization, also known as canonicalization, is typically used when determining whether two sub-graphs that are expressed in different ways are identical. It is also very useful when hashing sub-graphs for checksumming or digital signature purposes. JSON-LD [http://json-ld.org/spec/ED/20110201/#the-normalization-algorithm normalization example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]], I think we need normalization because we need to have a good digital signatures story&lt;br /&gt;
* ? [[User:Andy_Seaborne|Andy]]. Unclear - are we signing the graph or the serialization? Is a Turtle-signed graph the same graph?  Would include IRI normalization?&lt;br /&gt;
* +0 [[User:Nrixham|Nathan]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD enable digital signatures ===&lt;br /&gt;
&lt;br /&gt;
Digital Signatures have a number of useful purposes. When combined with g-snaps/graph literals they provide a very easy way of establishing cryptographically verifiable provenance. These features are used heavily in electronic commerce. JSON-LD [http://payswarm.com/vocabs/signature#JsonldSignature digital signature example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +0 [[User:Nrixham|Nathan]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD support advanced graph concepts ===&lt;br /&gt;
&lt;br /&gt;
The serialization format should support advanced graph concepts such as g-box, g-snap and g-text such that you can make statements about snapshots of graphs. Annotating graphs with metadata such as graph retrieval time, digital signatures on the contents of the graph, and other metadata associated with graphs are an important feature for higher-level concepts like provenance. Sandro's explanation of [http://lists.w3.org/Archives/Public/public-rdf-wg/2011Feb/0092.html advanced graph concepts].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] Has security implications for RDF crawlers; requires larger API surface; SPARQL only returns single graphs anyways; use case is unclear&lt;br /&gt;
* -1 [[User:Andy_Seaborne|Andy]] Not unless the format is following standard work done in other TFs.&lt;br /&gt;
* +0.5 [[User:Nrixham|Nathan]] follow other TFs&lt;br /&gt;
&lt;br /&gt;
=== The serialization MUST support automatic typing ===&lt;br /&gt;
&lt;br /&gt;
Being able to transform a JSON document into a native object is one of the key benefits of using JSON over other serialization formats. Automatically typing of numbers and boolean values into language-native datatypes removes an extra step that developers must perform without this feature. For example, one could easily transform a serialized number that is an xsd:integer into a language-native integer. JSON-LD [http://json-ld.org/spec/ED/20110201/#automatic-typing automatic typing example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] &lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD support type coercion ===&lt;br /&gt;
&lt;br /&gt;
While not immediately obvious, type coercion allows one to map regular JSON into RDF in a way that may add datatype decorators to object literals. In other words, it provides for a way to get Typed Literals from regular JSON data. JSON-LD [http://json-ld.org/spec/ED/20110201/#type-coercion type coercion example].&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* +1 [[User:Nrixham|Nathan]] for human one, -1 for machine one&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD rely on microsyntaxes instead of nested structures ===&lt;br /&gt;
&lt;br /&gt;
There are two common approaches to expressing RDF in JSON. One of them is to use nested structures to express language and type information for literals. The other approach is to use shallow structures with microsyntaxes mirroring TURTLE to express language and type information for literals.&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Rcygania2|Richard Cyganiak]] It's ugly as hell and makes the language unusable without an API&lt;br /&gt;
* -1 [[User:Nrixham|Nathan]]&lt;br /&gt;
&lt;br /&gt;
=== The serialization SHOULD provide an API ===&lt;br /&gt;
&lt;br /&gt;
An API would allow developers to transform incoming documents into a format that is easier for them to work with. In other words, it would allow them to drop all type information if it wasn't useful to them, or remove any micro-syntaxes that would get in the way of basic usage of the data. Keep in mind that even JSON has an api: JSON.parse(). JSON-LD [http://json-ld.org/spec/ED/20110201/#the-json-ld-api API example].&lt;br /&gt;
&lt;br /&gt;
(?? Reword as: The serialization SHOULD assume working with a JavaScript RDF API ([[User:Andy_Seaborne|Andy]]))&lt;br /&gt;
&lt;br /&gt;
* +1 [[User:Msporny|Manu Sporny]]&lt;br /&gt;
* -1 [[User:Nrixham|Nathan]] the machine one will have the RDF API, the human one is pointless if it needs and API.&lt;br /&gt;
&lt;br /&gt;
=== There SHOULD be one and only one way to serialize a given triple ===&lt;br /&gt;
&lt;br /&gt;
The more different ways there are to express the same triple or graph, the harder it gets to use the host language's native toolbox (that is, pure JS expressions) to process data. At some point, using the host language becomes impossible without using a parser library layered on top of the host language, negating the benefit of basing the language on JSON in the first place. This is the lesson to be learnt from RDF/XML.&lt;br /&gt;
&lt;br /&gt;
* +0 [[User:Msporny|Manu Sporny]], while I agree in principle I don't know how we'd enforce this in practice - that is, what's the difference between &amp;quot;foo&amp;quot; and &amp;quot;foo&amp;quot;^^xsd:string in JSON? Would you serialize the plain literal &amp;quot;foo&amp;quot; and the Typed Literal &amp;quot;foo&amp;quot;^^xsd:string in the same way in JSON? If the answer is yes, isn't the translation lossy?&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Msporny Manu Sporny]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Cmatheus Chris Matheus]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Andy_Seaborne Andy Seaborne]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Tsteiner Thomas Steiner]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Mbrunati Matteo Brunati]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Dwood4 David Wood]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Phayes3 Pat Hayes]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Sandro Sandro Hawke]&lt;/div&gt;</description>
			<pubDate>Mon, 07 Mar 2011 10:25:40 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-JSON</comments>		</item>
		<item>
			<title>TF-Turtle</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-Turtle</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* Participants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Task Force &amp;quot;Turtle&amp;quot; =&lt;br /&gt;
&lt;br /&gt;
== Material ==&lt;br /&gt;
&lt;br /&gt;
* [[Inputs_Turtle|Inputs]]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Gcarothe3 Gavin Carothers]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Lfeigenb Lee Feigenbaum]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Andy_Seaborne Andy Seaborne]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;/div&gt;</description>
			<pubDate>Wed, 02 Mar 2011 16:41:50 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-Turtle</comments>		</item>
		<item>
			<title>TF-Graphs</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-Graphs</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Task Force &amp;quot;Graphs&amp;quot; =&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
Member [[TF-Graphs-UC|Use Cases]] for graphs, graph identifiers, etc.&lt;br /&gt;
&lt;br /&gt;
== Material ==&lt;br /&gt;
&lt;br /&gt;
[http://www.w3.org/2001/sw/wiki/index.php?title=RDF_Core_Work_Items#Graph_Identification Suggestions called &amp;quot;Graph Identification&amp;quot; from Stanford Workshop] are reproduced below.&lt;br /&gt;
&lt;br /&gt;
=====Pros=====&lt;br /&gt;
* widely used by the community&lt;br /&gt;
* part of SPARQL already&lt;br /&gt;
* numerous use cases&lt;br /&gt;
* clarify confusion in implementation&lt;br /&gt;
&lt;br /&gt;
=====Cons=====&lt;br /&gt;
* adds complication and may not solve the issue nevertheless&lt;br /&gt;
* complicates the RDF model (potentially)&lt;br /&gt;
* risks with backward compatibility should be assessed (e.g., syntax)&lt;br /&gt;
* does it need standardization?&lt;br /&gt;
&lt;br /&gt;
=====Proposals=====&lt;br /&gt;
* Named graphs, provenance and trust , Jeremy Carroll, Christian Bizer, Patrick Hayes, Patrick Stickler, WWW 2005, http://www.w3.org/2009/12/rdf-ws/p613.pdf, http://www4.wiwiss.fu-berlin.de/bizer/SWTSGuide/carroll-ISWC2004.pdf&lt;br /&gt;
* Quadstores in general&lt;br /&gt;
* ODM RDF Metamodel (see http://www.omg.org/spec/ODM/1.0/, section 10.5, derived from Carroll et al.)&lt;br /&gt;
* Michel Chein and Marie-Laure Mugnier. Positive nested conceptual graphs. In Proceedings of ICCS '97, volume 1257 of LNAI, pages 95-109, Springer, 1997. (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.30.3644) ; Nested Graphs: A Graph-based Knowledge Representation Model with FOL Semantics (1998) ( http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.37.5256 )&lt;br /&gt;
* SPARQL Specifications ([http://www.w3.org/TR/rdf-sparql-query/#rdfDataset RDF Datasets]) and related to that, [http://www.w3.org/2001/sw/wiki/RDF/NextStepWorkshop/AxelWishlist Axel's proposal] to base the work on RDF Datasets (see IRC)&lt;br /&gt;
* Notation 3, Tim Berners-Lee, 1998 http://www.w3.org/DesignIssues/Notation3&lt;br /&gt;
* ideas from the Topic Maps work (see also SWBPD WG note, http://www.w3.org/TR/rdftm-survey/)&lt;br /&gt;
* “Triplesets: Tagging and Grouping in RDF Datasets”, http://www.w3.org/2009/12/rdf-ws/papers/ws24, Atanas Kiryakov, Vassil Momtchev&lt;br /&gt;
* hypergraphs (as a general mathematical domain)&lt;br /&gt;
&lt;br /&gt;
=====Technical Issues=====&lt;br /&gt;
* mutual roles of quads vs. singleton named graphs vs. named graphs&lt;br /&gt;
* extension the RDF(S) semantics?&lt;br /&gt;
* new RDF(S) terms? rdf:Graph, rdf:subGraphOf, rdf:equivalentGraph, etc.&lt;br /&gt;
* syntax (TRIG, [http://www.w3.org/Submission/rdfsource/ INRIA Member submission], [http://www.springerlink.com/content/wh8x37j46n941427/ Web, Graphs and Semantics] , n3)&lt;br /&gt;
* graph inclusion, can named graphs share triples&lt;br /&gt;
* whether blank nodes can be shared among multiple graphs&lt;br /&gt;
* whether blank nodes can be used as graph names&lt;br /&gt;
* named graphs do not fully replace reification&lt;br /&gt;
* how would follow your nose apply to named graphs?&lt;br /&gt;
* relationships to SPARQL&lt;br /&gt;
* effects on the SW stack&lt;br /&gt;
* how does it influence the OWL semantics?&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Lfeigenb Lee Feigenbaum]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Rcygania2 Richard Cyganiak]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Fgandon Fabien Gandon]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Gcarothe3 Gavin Carothers]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Phayes3 Pat Hayes]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:ZheWu Zhe Wu]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Ocorby Olivier Corby]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:sharris2 Steve Harris]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;/div&gt;</description>
			<pubDate>Wed, 02 Mar 2011 16:41:25 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-Graphs</comments>		</item>
		<item>
			<title>TF-JSON</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-JSON</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* Inputs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JSON RDF Task Force =&lt;br /&gt;
&lt;br /&gt;
The JSON RDF Task Force is primarily responsible for creating a JSON serialization of RDF.&lt;br /&gt;
&lt;br /&gt;
== Inputs ==&lt;br /&gt;
&lt;br /&gt;
* ''[http://n2.talis.com/wiki/RDF_JSON_Specification RDF JSON]'', by Talis.&lt;br /&gt;
* ''[http://json-ld.org/ JSON-LD]'', by Manu Sporny.&lt;br /&gt;
* ''[http://decentralyze.com/2010/06/04/from-json-to-rdf-in-six-easy-steps-with-jron/ JRON]'' by Sandro Hawke.&lt;br /&gt;
* ''[http://code.google.com/p/linked-data-api/wiki/Specification JSON serialization]''  in the Linked Data API.&lt;br /&gt;
* ''[http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL Query Results in JSON]'' by DAWG.&lt;br /&gt;
* ''[http://webr3.org/apps/specs/jsn3/ JSN3]'' by Nathan.&lt;br /&gt;
* ''[http://www.w3.org/2009/12/rdf-ws/papers/ws02 Flat triples approach to RDF graphs in JSON]'' by Dominik Tomaszuk&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* JSON Serialization of RDF&lt;br /&gt;
&lt;br /&gt;
== Questions to Contemplate ==&lt;br /&gt;
&lt;br /&gt;
# Are we to create a lightweight JSON based RDF interchange format optimized for machines and speed, or an easy to work with JSON view of RDF optimized for humans (developers)?&lt;br /&gt;
# Is it necessary for developers to know RDF in order to use the simplest form of the RDF-in-JSON serialization?&lt;br /&gt;
# Should we attempt to support more than just RDF? Key-value pairs as well? Literals as subjects?&lt;br /&gt;
# Must RDF-in-JSON be 100% compatible with JSON (aka: JSON-P)? Or must it only be able to be read by JSON and can thus deviate from the standard JSON spec?&lt;br /&gt;
# Must all major RDF concepts must be expressible via the RDF-in-JSON syntax?&lt;br /&gt;
# Should we go more for human-readability, or terse/compact/machine-friendly formats?&lt;br /&gt;
# Should there be a migration story for the JSON that is already used heavily on the Web? For example, in REST-based services?&lt;br /&gt;
# Should processing be a single-pass or multi-pass process? Should we support SAX-like streaming?&lt;br /&gt;
# Should there be support for disjoint graphs?&lt;br /&gt;
# Should we consider how the structure may be digitally signed?&lt;br /&gt;
# How should normalization occur?&lt;br /&gt;
# Should graph literals be supported?&lt;br /&gt;
# Should named graphs be supported?&lt;br /&gt;
# Should automatic typing be supported?&lt;br /&gt;
# Should type coercion be supported?&lt;br /&gt;
# Should there be an API defined in order to easily map RDF-in-JSON to/from language-native formats?&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* Manu Sporny&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Cmatheus Chris Matheus]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Andy_Seaborne Andy Seaborne]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Tsteiner Thomas Steiner]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Mbrunati Matteo Brunati]&lt;/div&gt;</description>
			<pubDate>Wed, 23 Feb 2011 16:40:12 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-JSON</comments>		</item>
		<item>
			<title>TF-JSON</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-JSON</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* Questions to Contemplate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JSON RDF Task Force =&lt;br /&gt;
&lt;br /&gt;
The JSON RDF Task Force is primarily responsible for creating a JSON serialization of RDF.&lt;br /&gt;
&lt;br /&gt;
== Inputs ==&lt;br /&gt;
&lt;br /&gt;
* ''[http://n2.talis.com/wiki/RDF_JSON_Specification RDF JSON]'', by Talis.&lt;br /&gt;
* ''[http://json-ld.org/ JSON-LD]'', by Manu Sporny.&lt;br /&gt;
* ''[http://decentralyze.com/2010/06/04/from-json-to-rdf-in-six-easy-steps-with-jron/ JRON]'' by Sandro Hawke.&lt;br /&gt;
* ''[http://code.google.com/p/linked-data-api/wiki/Specification JSON serialization]''  in the Linked Data API.&lt;br /&gt;
* ''[http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL Query Results in JSON]'' by DAWG.&lt;br /&gt;
* ''[http://webr3.org/apps/specs/jsn3/ JSN3]'' by Nathan.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* JSON Serialization of RDF&lt;br /&gt;
&lt;br /&gt;
== Questions to Contemplate ==&lt;br /&gt;
&lt;br /&gt;
# Are we to create a lightweight JSON based RDF interchange format optimized for machines and speed, or an easy to work with JSON view of RDF optimized for humans (developers)?&lt;br /&gt;
# Is it necessary for developers to know RDF in order to use the simplest form of the RDF-in-JSON serialization?&lt;br /&gt;
# Should we attempt to support more than just RDF? Key-value pairs as well? Literals as subjects?&lt;br /&gt;
# Must RDF-in-JSON be 100% compatible with JSON (aka: JSON-P)? Or must it only be able to be read by JSON and can thus deviate from the standard JSON spec?&lt;br /&gt;
# Must all major RDF concepts must be expressible via the RDF-in-JSON syntax?&lt;br /&gt;
# Should we go more for human-readability, or terse/compact/machine-friendly formats?&lt;br /&gt;
# Should there be a migration story for the JSON that is already used heavily on the Web? For example, in REST-based services?&lt;br /&gt;
# Should processing be a single-pass or multi-pass process? Should we support SAX-like streaming?&lt;br /&gt;
# Should there be support for disjoint graphs?&lt;br /&gt;
# Should we consider how the structure may be digitally signed?&lt;br /&gt;
# How should normalization occur?&lt;br /&gt;
# Should graph literals be supported?&lt;br /&gt;
# Should named graphs be supported?&lt;br /&gt;
# Should automatic typing be supported?&lt;br /&gt;
# Should type coercion be supported?&lt;br /&gt;
# Should there be an API defined in order to easily map RDF-in-JSON to/from language-native formats?&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* Manu Sporny&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Cmatheus Chris Matheus]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;/div&gt;</description>
			<pubDate>Sun, 20 Feb 2011 19:19:37 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-JSON</comments>		</item>
		<item>
			<title>TF-JSON</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-JSON</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JSON RDF Task Force =&lt;br /&gt;
&lt;br /&gt;
The JSON RDF Task Force is primarily responsible for creating a JSON serialization of RDF.&lt;br /&gt;
&lt;br /&gt;
== Inputs ==&lt;br /&gt;
&lt;br /&gt;
* ''[http://n2.talis.com/wiki/RDF_JSON_Specification RDF JSON]'', by Talis.&lt;br /&gt;
* ''[http://json-ld.org/ JSON-LD]'', by Manu Sporny.&lt;br /&gt;
* ''[http://decentralyze.com/2010/06/04/from-json-to-rdf-in-six-easy-steps-with-jron/ JRON]'' by Sandro Hawke.&lt;br /&gt;
* ''[http://code.google.com/p/linked-data-api/wiki/Specification JSON serialization]''  in the Linked Data API.&lt;br /&gt;
* ''[http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL Query Results in JSON]'' by DAWG.&lt;br /&gt;
* ''[http://webr3.org/apps/specs/jsn3/ JSN3]'' by Nathan.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* JSON Serialization of RDF&lt;br /&gt;
&lt;br /&gt;
== Questions to Contemplate ==&lt;br /&gt;
&lt;br /&gt;
# Are we to create a lightweight JSON based RDF interchange format optimized for machines and speed, or an easy to work with JSON view of RDF optimized for humans?&lt;br /&gt;
# Is it necessary for developers to know RDF in order to use the simplest form of the RDF-in-JSON serialization?&lt;br /&gt;
# Should we attempt to support more than just RDF? Key-value pairs as well? Literals as subjects?&lt;br /&gt;
# Must RDF-in-JSON be 100% compatible with JSON (aka: JSON-P)? Or must it only be able to be read by JSON and can thus deviate from the standard JSON spec?&lt;br /&gt;
# Must all major RDF concepts must be expressible via the RDF-in-JSON syntax?&lt;br /&gt;
# Should we go more for human-readability, or terse/compact/machine-friendly formats?&lt;br /&gt;
# Should there be a migration story for the JSON that is already used heavily on the Web? For example, in REST-based services?&lt;br /&gt;
# Should processing be a single-pass or multi-pass process? Should we support SAX-like streaming?&lt;br /&gt;
# Should there be support for disjoint graphs?&lt;br /&gt;
# Should we consider how the structure may be digitally signed?&lt;br /&gt;
# How should normalization occur?&lt;br /&gt;
# Should graph literals be supported?&lt;br /&gt;
# Should named graphs be supported?&lt;br /&gt;
# Should automatic typing be supported?&lt;br /&gt;
# Should type coercion be supported?&lt;br /&gt;
# Should there be an API defined in order to easily map RDF-in-JSON to/from language-native formats?&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* Manu Sporny&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Cmatheus Chris Matheus]&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham Nathan Rixham]&lt;/div&gt;</description>
			<pubDate>Sun, 20 Feb 2011 19:11:32 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-JSON</comments>		</item>
		<item>
			<title>TF-JSON</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/TF-JSON</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= JSON RDF Task Force =&lt;br /&gt;
&lt;br /&gt;
The JSON RDF Task Force is primarily responsible for creating a JSON serialization of RDF.&lt;br /&gt;
&lt;br /&gt;
== Inputs ==&lt;br /&gt;
&lt;br /&gt;
* ''[http://n2.talis.com/wiki/RDF_JSON_Specification RDF JSON]'', by Talis.&lt;br /&gt;
* ''[http://json-ld.org/ JSON-LD]'', by Manu Sporny.&lt;br /&gt;
* ''[http://decentralyze.com/2010/06/04/from-json-to-rdf-in-six-easy-steps-with-jron/ JRON]'' by Sandro Hawke.&lt;br /&gt;
* ''[http://code.google.com/p/linked-data-api/wiki/Specification JSON serialization]''  in the Linked Data API.&lt;br /&gt;
* ''[http://www.w3.org/TR/rdf-sparql-json-res/ SPARQL Query Results in JSON]'' by DAWG.&lt;br /&gt;
* ''[http://webr3.org/apps/specs/jsn3/ JSN3]'' by Nathan.&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
* JSON Serialization of RDF&lt;br /&gt;
&lt;br /&gt;
== Questions to Contemplate ==&lt;br /&gt;
&lt;br /&gt;
# Are we to create a lightweight JSON based RDF interchange format optimized for machines and speed, or an easy to work with JSON view of RDF optimized for humans?&lt;br /&gt;
# Is it necessary for developers to know RDF in order to use the simplest form of the RDF-in-JSON serialization?&lt;br /&gt;
# Should we attempt to support more than just RDF? Key-value pairs as well? Literals as subjects?&lt;br /&gt;
# Must RDF-in-JSON be 100% compatible with JSON (aka: JSON-P)? Or must it only be able to be read by JSON and can thus deviate from the standard JSON spec?&lt;br /&gt;
# Must all major RDF concepts must be expressible via the RDF-in-JSON syntax?&lt;br /&gt;
# Should we go more for human-readability, or terse/compact/machine-friendly formats?&lt;br /&gt;
# Should there be a migration story for the JSON that is already used heavily on the Web? For example, in REST-based services?&lt;br /&gt;
# Should processing be a single-pass or multi-pass process? Should we support SAX-like streaming?&lt;br /&gt;
# Should there be support for disjoint graphs?&lt;br /&gt;
# Should we consider how the structure may be digitally signed?&lt;br /&gt;
# How should normalization occur?&lt;br /&gt;
# Should graph literals be supported?&lt;br /&gt;
# Should named graphs be supported?&lt;br /&gt;
# Should automatic typing be supported?&lt;br /&gt;
# Should type coercion be supported?&lt;br /&gt;
# Should there be an API defined in order to easily map RDF-in-JSON to/from language-native formats?&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
* Manu Sporny&lt;br /&gt;
* [http://www.w3.org/2011/rdf-wg/wiki/User:Cmatheus Chris Matheus]&lt;/div&gt;</description>
			<pubDate>Sun, 20 Feb 2011 19:09:41 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:TF-JSON</comments>		</item>
		<item>
			<title>Main Page</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/Main_Page</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;/* Meetings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
= RDF Working Group =&lt;br /&gt;
&lt;br /&gt;
{{BlueBanner|''Mission: Update the [http://www.w3.org/standards/techs/rdf#w3c_all 2004 RDF Recommendations], extending RDF to include features desirable and important for interoperability, but without a negative effect on deployment.''    (See [http://www.w3.org/2011/01/rdf-wg-charter Charter])}}&lt;br /&gt;
&lt;br /&gt;
== Deliverables ==&lt;br /&gt;
&lt;br /&gt;
(Drafts will be linked from here, as they are created)&lt;br /&gt;
&lt;br /&gt;
See [http://www.w3.org/2011/rdf-wg/wiki/Category:Inputs Inputs].&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
See &lt;br /&gt;
[http://www.w3.org/2000/09/dbwg/details?group=46168&amp;amp;public=1 list of current participants],&lt;br /&gt;
(or [http://www.w3.org/2000/09/dbwg/details?group=46168 with contact info]),&lt;br /&gt;
[[Special:ListUsers|wiki user pages]],&lt;br /&gt;
[http://www.w3.org/2011/rdf-wg/track/users nicknames]&lt;br /&gt;
&lt;br /&gt;
If you want to join this group, see [[How to Join]].&lt;br /&gt;
&lt;br /&gt;
If you are officially in the group, you will automatically receive group email and your w3.org login and password will work on this wiki.&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
&lt;br /&gt;
Face-to-face: [[F2F1]] [[F2F2]] ...&lt;br /&gt;
&lt;br /&gt;
Teleconferences ([http://www.w3.org/2000/09/dbwg/details?group=46168&amp;amp;public=1 official participants] and invited guests only):&lt;br /&gt;
* Wednesdays, 11am US/Eastern time, for up to 90 minutes.&lt;br /&gt;
* Dial +1-617-761-6200 or sip:zakim@voip.w3.org then conference code 73394#&lt;br /&gt;
* [http://www.w3.org/Project/IRC/ IRC] channel: [irc://irc.w3.org:6665/#rdf-wg #rdf-wg].&lt;br /&gt;
* An agenda is [http://lists.w3.org/Archives/Public/public-rdf-wg/latest sent] 24 hours in advance; minutes follow within a day or two.&lt;br /&gt;
&lt;br /&gt;
Upcoming Telecons [[Scribes]]:&lt;br /&gt;
* 2011-02-16 [http://lists.w3.org/Archives/Public/public-rdf-wg/2011Feb/0018.html agenda]&lt;br /&gt;
&lt;br /&gt;
Recent Past:&lt;br /&gt;
* None Yet&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&lt;br /&gt;
Only trivial updates since the [http://www.w3.org/2011/01/rdf-wg-charter#deliverables charter version].&lt;br /&gt;
&lt;br /&gt;
* 2011-02: First teleconference&lt;br /&gt;
* 2011-04: First face-to-face meeting ([[F2F1]])&lt;br /&gt;
* 2011-05: Publication of the First Public Working Drafts for the RDF Recommendation Set&lt;br /&gt;
* 2011-10 or 11: Second face-to-face meeting ([[F2F2]])&lt;br /&gt;
* 2012-04: Third face-to-face meeting&lt;br /&gt;
* 2012-05: Publication of the Last Call Working Draft for the RDF Recommendation Set&lt;br /&gt;
* 2012-06: Publication of the Last Call Working Draft for the RDF Primer and Test Cases&lt;br /&gt;
* 2012-10 or 11: Fourth face-to-face meeting&lt;br /&gt;
* 2012-11: Publication of the Proposed Recommendations&lt;br /&gt;
* 2012-01: Publication of all final documents&lt;br /&gt;
&lt;br /&gt;
== W3C Working Group Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/Guide/ Art of Consensus (guide to working at W3C)] (W3C member confidential)&lt;br /&gt;
* [http://www.w3.org/2005/10/Process-20051014 World Wide Web Consortium (W3C) Process Document]&lt;br /&gt;
* [http://www.w3.org/Member/Mail/Overview.html All W3C Groups] (W3C member confidential)&lt;br /&gt;
&lt;br /&gt;
more?  zakim, irc, commonscribe, tracker, &lt;br /&gt;
&lt;br /&gt;
== Patent Policy ==&lt;br /&gt;
&lt;br /&gt;
This Working Group operates under the [http://www.w3.org//Consortium/Patent-Policy-20040205/ W3C Patent Policy] (5 February 2004 Version). To promote the widest adoption of Web standards, W3C seeks to issue Recommendations that can be implemented, according to this policy, on a Royalty-Free basis.&lt;br /&gt;
&lt;br /&gt;
For more information about disclosure obligations for this group, please see the [http://www.w3.org/2004/01/pp-impl/46168/status W3C Patent Policy Status Page].&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
== Staff ==&lt;br /&gt;
&lt;br /&gt;
Email the chairs and staff contacts at [mailto:team-rdf-chairs@w3.org team-rdf-chairs@w3.org].&lt;br /&gt;
&lt;br /&gt;
* [http://www.linkedin.com/pub/david-wood/a/b24/495 David Wood], Talis Inc., Co-Chair&lt;br /&gt;
* [http://www.cs.vu.nl/~guus/ Guus Schreiber], Vrije Universiteit, Co-Chair&lt;br /&gt;
* [http://www.w3.org/People/Sandro Sandro Hawke], W3C, Staff Contact&lt;br /&gt;
* [http://www.w3.org/People/Ivan Ivan Herman], W3C, Staff Contact&lt;/div&gt;</description>
			<pubDate>Wed, 16 Feb 2011 16:25:03 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/Talk:Main_Page</comments>		</item>
		<item>
			<title>User:Nrixham</title>
			<link>http://www.w3.org/2011/rdf-wg/wiki/User:Nrixham</link>
			<description>&lt;p&gt;Nrixham:&amp;#32;Created page with &amp;quot;== Nathan Rixham ==  Invited Expert in the RDF WG and do not represent any company.  === Focus ===  Within the RDF WG I'm looking to help out wherever I can in order to support t…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nathan Rixham ==&lt;br /&gt;
&lt;br /&gt;
Invited Expert in the RDF WG and do not represent any company.&lt;br /&gt;
&lt;br /&gt;
=== Focus ===&lt;br /&gt;
&lt;br /&gt;
Within the RDF WG I'm looking to help out wherever I can in order to support the other members, key areas I'll be focussing on are:&lt;br /&gt;
&lt;br /&gt;
* Standardization of the JSON syntax (considering the RDF API and being a JS developer)&lt;br /&gt;
* Standardization of the Turtle syntax (with an N3 focus)&lt;br /&gt;
* Clean up around IRIs / RDF URI References and DataTypes/Plain Literals&lt;br /&gt;
* Considerations when deprecating some features of RDF (Robustness Principal etc.)&lt;br /&gt;
* Support for multiple graphs and graph stores (both named and literal graphs, considering the RDF API, and read-write linked data tech requirements)&lt;br /&gt;
* Linked Data considerations (inc Read/Write) and &amp;quot;follow your nose&amp;quot; (ties in with AWWSW TF work)&lt;br /&gt;
&lt;br /&gt;
=== W3C Experience ===&lt;br /&gt;
&lt;br /&gt;
* Member of the RDFa WG&lt;br /&gt;
* Member of the AWWSW TF&lt;br /&gt;
* Member of the WebID XG&lt;br /&gt;
* Editor of the RDF API&lt;br /&gt;
&lt;br /&gt;
=== Background ===&lt;br /&gt;
&lt;br /&gt;
I'm a developer who sits at the intersection of the Semantic Web, WebArch, HTML, WebApps, REST/HTTP, JS, Auth/Security and Web Development communities, my primary focus is converging the various web technologies in order to realize the read write web of linked data, intelligent agents, and the model outlined in TimBLs Socially Aware Cloud Storage Design Issue. Thankfully I'm in a position where I can spend most of my time helping this process along through contributing to standardization efforts, communication between groups, and contributions to open source and public domain projects; my efforts within the RDF WG will be one part of that bigger picture.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More: [http://twitter.com/webr3 @webr3] / [http://webr3.org/blog/general/generic-to-do-plan/ info]&lt;br /&gt;
&lt;br /&gt;
[[category:Members]]&lt;/div&gt;</description>
			<pubDate>Thu, 10 Feb 2011 01:02:10 GMT</pubDate>			<dc:creator>Nrixham</dc:creator>			<comments>http://www.w3.org/2011/rdf-wg/wiki/User_talk:Nrixham</comments>		</item>
	</channel>
</rss>