Copyright © 2015 W3C ® ( MIT , ERCIM , Keio , Beihang ). W3C liability , trademark and delete: <a href="http://www.w3.org/Consortium/Legal/copyright-documents"> insert: <a rel="license" href="http://www.w3.org/Consortium/Legal/copyright-documents"> document use rules apply.
This document defines the procedures and rules to be applied when converting tabular data into JSON. Tabular data may be complemented with metadata annotations that describe its structure, the meaning of its content and how it may form part of a collection of interrelated tabular data. This document specifies the effect of this metadata on the resulting JSON.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
The insert: <a href="http://www.w3.org/2013/csvw"> CSV on the Web Working Group insert: </a> was insert: <a href="http://www.w3.org/2013/05/lcsv-charter.html"> chartered insert: </a> to produce Recommendations for a recommendation "Access methods for CSV Metadata", Metadata" as well as recommendations for "Metadata vocabulary for CSV data" and "Mapping mechanism to transforming CSV into various Formats formats (e.g., RDF, JSON, or XML)". This document aims to satisfy the JSON variant of the mapping Recommendation. recommendation.
This document was published by the CSV on the Web Working Group as a Candidate Proposed Recommendation. This document is intended to become a W3C Recommendation. If you wish The insert: <abbr title="World Wide Web Consortium"> W3C insert: </abbr> Membership and other interested parties are invited to make review the document and send comments regarding this document, please send them to delete: <a href="mailto:public-csv-wg@w3.org"> insert: <a rel="discussion" href="mailto:public-csv-wg@w3.org"> public-csv-wg@w3.org ( subscribe , archives ). delete: <abbr title="World Wide Web Consortium"> W3C delete: </abbr> publishes a Candidate Recommendation to indicate ) through 15 December 2015. Advisory Committee Representatives should consult their insert: <a href="https://www.w3.org/2002/09/wbs/myQuestionnaires"> WBS questionnaires insert: </a> . Note that the document is believed to be stable and to encourage implementation by the developer community. This Candidate Recommendation is substantive technical comments were expected to advance to Proposed Recommendation no earlier than during the Last Call review period that ended 30 October 2015. All comments are welcome.
Please see the Working Group's delete: <a href="http://www.w3.org/2013/csvw/tests/reports/index.html"> insert: <a href="http://www.w3.org/2013/csvw/implementation_report.html"> implementation report .
Publication as a Candidate Proposed Recommendation does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy . W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy .
This document is governed by the delete: <a id="w3c_process_revision" href="http://www.w3.org/2014/Process-20140801/"> insert: <a id="w3c_process_revision" href="http://www.w3.org/2015/Process-20150901/"> 1 August 2014 September 2015 W3C Process Document .
This document describes the processing of delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-tabular-data"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-tabular-data"> tabular data to create a set of nested objects that MUST be serialized as JSON [ RFC7159 ].
The conversion of CSV content to JSON is intended for web developers who need not care about the complexities of RDF [ rdf11-concepts ]. Where the formality of RDF is required, [ csv2rdf ] provides the procedures for mapping from CSV content to RDF which may be serialized to [ json-ld ].
The [ tabular-data-model ] defines an delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-annotated-tabular-data-model" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-annotated-tabular-data-model" class="externalDFN"> annotated tabular data model consisting of delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table" class="externalDFN"> tables , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-column" class="externalDFN"> columns , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-row" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-row" class="externalDFN"> rows , and delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell" class="externalDFN"> cells , enriched with delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-annotation" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-annotations" class="externalDFN"> annotations that describe the structure of the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-tabular-data" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-tabular-data" class="externalDFN"> tabular data and the meaning of its content. A delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-group-of-tables" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-group-of-tables" class="externalDFN"> group of tables is a collection of delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table" class="externalDFN"> tables published as a single atomic unit.
The conversion procedure described in this specification operates on the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-annotated-tabular-data-model" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-annotated-tabular-data-model" class="externalDFN"> annotated tabular data model . This specification does not specify the processes needed to convert CSV-encoded data into tabular data form. Please refer to [ tabular-data-model ] for details of delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#parsing"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#parsing"> parsing tabular data .
Conversion applications MUST provide at least two modes of operation: delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> standard and delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> minimal .
delete: <dfn title="standard mode" id="dfn-standard-mode"> insert: <dfn data-dfn-type="dfn" id="dfn-standard-mode"> Standard mode conversion frames the information gleaned from the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell" class="externalDFN"> cells of the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-tabular-data" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-tabular-data" class="externalDFN"> tabular data with details of the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-row" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-row" class="externalDFN"> rows , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table" class="externalDFN"> tables , and a delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-group-of-tables" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-group-of-tables" class="externalDFN"> group of tables within which that information is provided.
delete: <dfn title="minimal mode" id="dfn-minimal-mode"> insert: <dfn data-dfn-type="dfn" id="dfn-minimal-mode"> Minimal mode conversion includes only the information gleaned from the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell" class="externalDFN"> cells of the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-tabular-data" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-tabular-data" class="externalDFN"> tabular data within the output.
delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> Standard and delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> minimal conversion are described normatively below .
Conversion applications MAY offer additional implementation specific conversion modes.
delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#dfn-transformation-definition" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#dfn-transformation-definition" class="externalDFN"> Transformation definitions , as defined in [ tabular-metadata ] MAY be used to specify how delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-tabular-data" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-tabular-data" class="externalDFN"> tabular data can be transformed into another format using a script or template. Such delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#dfn-transformation-definition" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#dfn-transformation-definition" class="externalDFN"> transformation definitions MAY use the JSON output described in this specification as input.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
The key words MAY and , MUST insert: </em> , and insert: <em class="rfc2119" title="SHOULD"> SHOULD are to be interpreted as described in [ RFC2119 ].
delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-tabular-data" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-tabular-data" class="externalDFN"> Tabular data MUST conform to the description from [ tabular-data-model ]. In particular note that each delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-row" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-row" class="externalDFN"> row MUST contain the same number of delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell" class="externalDFN"> cells (although some of these delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell" class="externalDFN"> cells may be empty).
Not all CSV-encoded data can be parsed into a tabular data model. An algorithm for parsing CSV-based files is described in [ tabular-data-model ].
The following typographic conventions are used in this specification:
markup
markup definition reference
markup external definition reference
Notes are in light green boxes with a green left border and with a "Note" header in green. Notes are normative or informative depending on the whether they are in a normative or informative section, respectively.
Examples are in light khaki boxes, with khaki left border, and with a numbered "Example" header in khaki. Examples are always informative. The content of the example is in monospace font and may be syntax colored.
The procedures for converting delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-tabular-data" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-tabular-data" class="externalDFN"> tabular data into JSON are described below for both delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> standard and delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> minimal modes.
null
or a sequence of values. notes
property. This may be an empty list. null
. A conformant JSON conversion application MUST produce output conforming to this algorithm according to the chosen mode of conversion: delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> standard or delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> minimal .
Where an delete: <a href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated table is defined in isolation (e.g. in the absence of a delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables ), a default delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables is provided with a single delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-group-tables" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table-group-tables" class="externalDFN"> tables annotation that refers to the given delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table .
The [ tabular-data-model ] specifies that string values within delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-tabular-data" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-tabular-data" class="externalDFN"> tabular data (such as delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column-titles" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-column-titles" class="externalDFN"> column titles or delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-string-value" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-string-value" class="externalDFN"> cell string values ) MUST contain only Unicode characters. No Unicode normalization (as specified in [ UAX15 ]) is applied to these string values during the conversion to JSON.
The steps in the algorithm defined here apply to delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> minimal mode.
Insert an empty delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array A into the JSON output. The delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects containing the name-value pairs associated with the delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell values will be subsequently inserted into this delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array .
Each delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table is processed sequentially in the order they are referenced in the delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables . For each delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table where the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-suppress-output" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table-suppress-output" class="externalDFN"> suppress output annotation is false
:
Each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row within the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table is processed sequentially in order. For each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row in the current delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table :
Generate a sequence of delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects , S 1 to S n , each of which corresponds to a delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject described by the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row , as described in 4.3 Generating Objects .
The delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject(s) described by each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row are determined according to the delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL annotation for each delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell in the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row . Where delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL is undefined, a default delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject for the delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row is used.
As described in 4.4 Generating Nested Objects , process the sequence of delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects , S 1 to S n , to produce a new sequence of root delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects , S R 1 to S R m , that MAY include nested delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects .
A delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row MAY describe multiple interrelated delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subjects ; where the delete: <a href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URL annotation on one delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell matches the delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL annotation on another delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell in the same delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row .
Insert each root delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object , S R 1 to S R m , into delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array A .
The steps in the algorithm defined here apply to delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> standard delete: </a> mode. mode insert: </a> .
Insert an empty delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object G into the JSON output which is associated with the delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables .
If the delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables has an delete: <a title="group of tables identifier" href="#dfn-group-of-tables-identifier" class="internalDFN"> insert: <a data-lt="group of tables identifier" href="#dfn-group-of-tables-identifier" class="internalDFN" data-link-type="dfn"> identifier I G ; insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object G :
@id
Insert any delete: <a href="#dfn-notes" class="internalDFN"> insert: <a href="#dfn-notes" class="internalDFN" data-link-type="dfn"> notes and delete: <a href="#dfn-non-core-annotations" class="internalDFN"> insert: <a href="#dfn-non-core-annotations" class="internalDFN" data-link-type="dfn"> non-core annotations specified for the delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object G according to the rules provided in 5. JSON-LD to JSON .
Insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object G :
tables
where A T is an delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array into which the delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects describing the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated tables will be subsequently inserted.
Each delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table is processed sequentially in the order they are referenced in the delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables .
For each delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table where the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-suppress-output" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table-suppress-output" class="externalDFN"> suppress output annotation is false
:
Insert an empty delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object T into the delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array A T to represent the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table .
If the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table has an delete: <a title="table identifier" href="#dfn-table-identifier" class="internalDFN"> insert: <a data-lt="table identifier" href="#dfn-table-identifier" class="internalDFN" data-link-type="dfn"> identifier I T ; insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object T :
@id
Specify the source tabular data file URL for the current table based on the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-url" class="externalDFN"> url annotation; insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object T :
url
Insert any delete: <a href="#dfn-notes" class="internalDFN"> insert: <a href="#dfn-notes" class="internalDFN" data-link-type="dfn"> notes and delete: <a href="#dfn-non-core-annotations" class="internalDFN"> insert: <a href="#dfn-non-core-annotations" class="internalDFN" data-link-type="dfn"> non-core annotations specified for the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object T according to the rules provided in 5. JSON-LD to JSON .
All other delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-core-annotations" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-core-annotations" class="externalDFN"> core annotations for the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table are ignored during the conversion; including information about delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-schema" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-schema" class="externalDFN"> table schemas and delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column" class="externalDFN"> their insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-column" class="externalDFN"> columns specified therein, delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-foreign-keys" class="externalDFN"> , insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-foreign-keys" class="externalDFN"> foreign keys , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-direction" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table-direction" class="externalDFN"> table direction , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-transformations" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-transformations" class="externalDFN"> transformations , etc.
Insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object T :
row
where A R is an delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array into which the delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects describing the delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> rows will be subsequently inserted.
Each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row within the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table is processed sequentially in order. For each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row in the current delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table :
Insert an empty delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object R into the delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array A R to represent the delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row .
Specify the delete: <a href="#dfn-row-number" class="internalDFN"> insert: <a href="#dfn-row-number" class="internalDFN" data-link-type="dfn"> row number n for the delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row ; insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object R :
rownum
Specify the delete: <a href="#dfn-row-source-number" class="internalDFN"> insert: <a href="#dfn-row-source-number" class="internalDFN" data-link-type="dfn"> row source number n source for the delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row within the source tabular data file URL using a fragment-identifier as specified in [ RFC7111 ]; if delete: <a href="#dfn-row-source-number" class="internalDFN"> insert: <a href="#dfn-row-source-number" class="internalDFN" data-link-type="dfn"> row source number is not null
, insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object R :
url
#row=
n source Specify any delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-row-titles" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-row-titles" class="externalDFN"> titles for the delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row ; if delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-row-titles" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-row-titles" class="externalDFN"> row titles is not null
, insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object R :
titles
where t is the single value or array of values provided by the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-row-titles" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-row-titles" class="externalDFN"> row titles annotation.
JSON has no native support for expressing language information; therefore any such information associated with the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-row-titles" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-row-titles" class="externalDFN"> row titles is ignored.
Insert any delete: <a href="#dfn-non-core-annotations" class="internalDFN"> insert: <a href="#dfn-non-core-annotations" class="internalDFN" data-link-type="dfn"> non-core annotations specified for the delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object R according to the rules provided in 5. JSON-LD to JSON .
Insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object R :
describes
where A is an delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array . The delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects containing the name-value pairs associated with the delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell values will be subsequently inserted into this delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array .
Generate a sequence of delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects , S 1 to S n , each of which corresponds to a delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject described by the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row , as described in 4.3 Generating Objects .
The delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject(s) described by each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row are determined according to the delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL annotation for each delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell in the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row . Where delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL is undefined, a default delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject for the delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row is used.
As described in 4.4 Generating Nested Objects , process the sequence of delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects , S 1 to S n , to produce a new sequence of root delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects , S R 1 to S R m , that MAY include nested delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects .
A delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row MAY describe multiple interrelated delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subjects ; where the delete: <a href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URL annotation on one delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell matches the delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL annotation on another delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell in the same delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row .
Insert each root delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object , S R 1 to S R m , into delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array A .
The steps in the algorithm defined here apply to both delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> standard and delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> minimal modes.
This algorithm generates a sequence of delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects , S 1 to S n , each of which corresponds to a delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject described by the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row . The algorithm inserts name-value pairs into S i depending on the cell values as outlined in the following steps.
Determine the unique delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subjects for the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row . The delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject(s) described by each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row are determined according to the delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL annotation for each delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell in the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row . A default delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject for the delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row is used for any delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells where delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL is undefined.
For each delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject that the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row describes where at least one of the delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells that refers to that delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject has a delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a data-lt="cell value" href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> value or delete: <a href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URL that is not null
, and is associated with a delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column where delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column-suppress-output" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-column-suppress-output" class="externalDFN"> suppress output annotation is false
:
Create an empty delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i to represent the delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject i .
( i is the index number with values from 1 to n , where n is the number of delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subjects for the delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row )
delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> Subject i is identified according to the delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL annotation of its associated delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells : I S . For a default delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject where delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL is not specified by its delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells , I S is null
.
If the identifier for delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject i , I S , is not null
, then insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i :
@id
Each delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell referring to delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject i is then processed sequentially according to the order of the delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns .
For each delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell referring to delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject i , where the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column-suppress-output" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-column-suppress-output" class="externalDFN"> suppress output annotation for the delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column associated with that delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell is false
, insert a name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i as described below:
If the value of delete: <a href="#dfn-property-url" class="internalDFN"> insert: <a href="#dfn-property-url" class="internalDFN" data-link-type="dfn"> property URL for the delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell is not null
, then delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name N takes the value of delete: <a href="#dfn-property-url" class="internalDFN"> insert: <a href="#dfn-property-url" class="internalDFN" data-link-type="dfn"> property URL compacted according to the rules as defined in delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#url-compaction"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#url-compaction"> URL Compaction in [ tabular-metadata ].
Else, delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name N takes the URI decoded value of the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column-name" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-name" class="externalDFN"> name annotation for the delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column associated with the delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell . (URI decoding is necessary as delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column-name" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-name" class="externalDFN"> name may have been encoded if it was taken from a supplied title.)
If the delete: <a href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URL for the current delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell is not null
, then insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i :
where V url is the value of delete: <a href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URL annotation for the current delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell expressed as a string in the JSON output. If N is @type
, compact V url according to the rules as defined in delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#url-compaction"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#url-compaction"> URL Compaction in [ tabular-metadata ].
Else, if the delete: <a href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell value is a delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-list" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-list" class="externalDFN"> list that is not empty, then the delete: <a href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell value provides a sequence of values for inclusion within the JSON output; insert an delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array A v containing each value V of the sequence into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i :
Each of the values V derived from the sequence MUST be expressed in the JSON output according to the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-datatype" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-datatype" class="externalDFN"> datatype of V as defined below in section 4.5 Interpreting datatypes .
Since delete: <a title="array" href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> arrays are implicitly ordered in JSON, the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-ordered" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-ordered" class="externalDFN"> ordered annotation has no effect on the JSON output.
Else, if the delete: <a href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell value is not null
, then the delete: <a href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell value provides a single value V for inclusion within the JSON output; insert the following name-value pair into delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i :
Value V derived from the delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell values MUST be expressed in the JSON output according to the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-datatype" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-datatype" class="externalDFN"> datatype of the value as defined in section 4.5 Interpreting datatypes .
If delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name N occurs more than once within delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i , the name-value pairs from each occurrence of delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name N MUST be compacted to form a single name-value pair with delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name N and whose value is an array containing all values from each of those name-value pairs. Where the value from one or more contributing name-value pairs is of type array, the values from contributing arrays are included directly to the resulting array (i.e. arrays of values are flattened).
The steps in the algorithm defined herein apply to both delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> standard and delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> minimal modes.
Where the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row describes multiple delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subjects , it MAY be possible to organise the delete: <a title="object" href="#dfn-object" class="internalDFN"> organize the insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects associated with those delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subjects such that some delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects are nested within others; e.g. where the delete: <a href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URL annotation for one delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell matches the delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL annotation for another delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell in the same delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row . This algorithm considers a sequence of delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects generated according to 4.3 Generating Objects , S 1 to S n , each of which corresponds to a delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject described by the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row . It generates a new sequence of delete: <a href="#dfn-root" class="internalDFN"> insert: <a href="#dfn-root" class="internalDFN" data-link-type="dfn"> root delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects , S R 1 to S R m , that MAY include nested delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects .
Where the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row describes only a single delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject , this algorithm may be bypassed as no nesting is possible. In such a case, the delete: <a href="#dfn-root" class="internalDFN"> insert: <a href="#dfn-root" class="internalDFN" data-link-type="dfn"> root delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S R 1 is identical to the original delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S 1 .
This nesting algorithm is based on the interrelationships between delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subjects described within a given delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row that are specified using the delete: <a href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URL annotation. delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> Cell values expressing the identity of a delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject in the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row (i.e., as a simple literal) will be ignored by this algorithm.
The algorithm uses the following terms:
The nesting algorithm is defined as follows:
For all delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells in the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row , determine the delete: <a title="value URL" href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URLs , V url , that occur only once . The list of these uniquely occurring delete: <a title="value URL" href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URLs is referred to as the URL-list .
Create an empty delete: <a href="#dfn-forest" class="internalDFN"> insert: <a href="#dfn-forest" class="internalDFN" data-link-type="dfn"> forest F . delete: <a title="vertex" href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> Vertices in the delete: <a title="tree" href="#dfn-tree" class="internalDFN"> insert: <a href="#dfn-tree" class="internalDFN" data-link-type="dfn"> trees of this delete: <a href="#dfn-forest" class="internalDFN"> insert: <a href="#dfn-forest" class="internalDFN" data-link-type="dfn"> forest represent the delete: <a title="subject" href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subjects described by the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row .
For each delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i in the sequence S 1 to S n :
Determine the identity of delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i : I S . If present in delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i , the name-value pair with delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name @id
provides the value of I S . Else, delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i is not explicitly identified and I S is null
.
Check whether there is a delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex N in delete: <a href="#dfn-forest" class="internalDFN"> insert: <a href="#dfn-forest" class="internalDFN" data-link-type="dfn"> forest F that represents delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i . If none of the existing delete: <a title="vertex" href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertices in delete: <a href="#dfn-forest" class="internalDFN"> insert: <a href="#dfn-forest" class="internalDFN" data-link-type="dfn"> forest F represent delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i , then insert a new delete: <a href="#dfn-tree" class="internalDFN"> insert: <a href="#dfn-tree" class="internalDFN" data-link-type="dfn"> tree into delete: <a href="#dfn-forest" class="internalDFN"> insert: <a href="#dfn-forest" class="internalDFN" data-link-type="dfn"> forest F whose delete: <a href="#dfn-root" class="internalDFN"> insert: <a href="#dfn-root" class="internalDFN" data-link-type="dfn"> root is a delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex N that represents delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i and has identity I S .
For all delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells associated with the current delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i (e.g. whose delete: <a href="#dfn-about-url" class="internalDFN"> insert: <a href="#dfn-about-url" class="internalDFN" data-link-type="dfn"> about URL annotation matches I S ):
If the delete: <a href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URL annotation of the current delete: <a href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell is defined and its value, V url , appears in the URL-list , then check each of the other delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects in the sequence S 1 to S n to determine if V url identifies one of those delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects .
For delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S j , if the name-value pair with delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name @id
is present and its value matches V url , then:
If the delete: <a href="#dfn-root" class="internalDFN"> insert: <a href="#dfn-root" class="internalDFN" data-link-type="dfn"> root of the delete: <a href="#dfn-tree" class="internalDFN"> insert: <a href="#dfn-tree" class="internalDFN" data-link-type="dfn"> tree containing delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex N is a delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex that represents delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S j , then delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i is already a delete: <a href="#dfn-descendant" class="internalDFN"> insert: <a href="#dfn-descendant" class="internalDFN" data-link-type="dfn"> descendant of delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S j ; no further action should insert: <em class="rfc2119" title="SHOULD"> SHOULD insert: </em> be taken for this instance of V url .
This clause in the algorithm prevents circular loops from being created.
Furthermore, because the URL-list contains delete: <a title="value URL" href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URLs that occur only once for the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row , delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i cannot be a delete: <a href="#dfn-descendant" class="internalDFN"> insert: <a href="#dfn-descendant" class="internalDFN" data-link-type="dfn"> descendant of an intermediate delete: <a title="vertex" href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertices in the delete: <a href="#dfn-tree" class="internalDFN"> insert: <a href="#dfn-tree" class="internalDFN" data-link-type="dfn"> tree .
Else, if there is a delete: <a href="#dfn-root" class="internalDFN"> insert: <a href="#dfn-root" class="internalDFN" data-link-type="dfn"> root delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex M in delete: <a href="#dfn-forest" class="internalDFN"> insert: <a href="#dfn-forest" class="internalDFN" data-link-type="dfn"> forest F that represents delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S j , then set delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex M as a delete: <a href="#dfn-child" class="internalDFN"> insert: <a href="#dfn-child" class="internalDFN" data-link-type="dfn"> child of delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex N and remove delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex M from the list of delete: <a title="root" href="#dfn-root" class="internalDFN"> insert: <a href="#dfn-root" class="internalDFN" data-link-type="dfn"> roots in delete: <a href="#dfn-forest" class="internalDFN"> insert: <a href="#dfn-forest" class="internalDFN" data-link-type="dfn"> forest F (i.e., the delete: <a href="#dfn-tree" class="internalDFN"> insert: <a href="#dfn-tree" class="internalDFN" data-link-type="dfn"> tree rooted by M becomes a sub-tree of N ).
Else, create a new delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex M that represents delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S j as a delete: <a href="#dfn-child" class="internalDFN"> insert: <a href="#dfn-child" class="internalDFN" data-link-type="dfn"> child of delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex N .
Each delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex in delete: <a href="#dfn-forest" class="internalDFN"> insert: <a href="#dfn-forest" class="internalDFN" data-link-type="dfn"> forest F represents an object in the original sequence of delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects S 1 to S n and is associated with a delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject described by the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row . Rearrange delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects S 1 to S n such that they mirror the structure of the delete: <a title="tree" href="#dfn-tree" class="internalDFN"> insert: <a href="#dfn-tree" class="internalDFN" data-link-type="dfn"> trees in delete: <a href="#dfn-forest" class="internalDFN"> insert: <a href="#dfn-forest" class="internalDFN" data-link-type="dfn"> forest F as follows: If delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex M , representing delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i , is a delete: <a href="#dfn-child" class="internalDFN"> insert: <a href="#dfn-child" class="internalDFN" data-link-type="dfn"> child of delete: <a href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertex N , representing delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S j , then the name-value pair in delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S j associated with the delete: <a href="#dfn-edge" class="internalDFN"> insert: <a href="#dfn-edge" class="internalDFN" data-link-type="dfn"> edge relating M and N MUST be modifed modified such that the (literal) value, V url , from that name-value pair is replaced by delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object S i thus creating a nested delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object .
delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> Objects represented by delete: <a href="#dfn-root" class="internalDFN"> insert: <a href="#dfn-root" class="internalDFN" data-link-type="dfn"> root delete: <a title="vertex" href="#dfn-vertex" class="internalDFN"> insert: <a href="#dfn-vertex" class="internalDFN" data-link-type="dfn"> vertices are referred to as delete: <a href="#dfn-root" class="internalDFN"> insert: <a href="#dfn-root" class="internalDFN" data-link-type="dfn"> root delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects .
Return the sequence of delete: <a href="#dfn-root" class="internalDFN"> insert: <a href="#dfn-root" class="internalDFN" data-link-type="dfn"> root delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects , S R 1 to S R m .
An implementation may be able to optimize the algorithm by skipping branches (e.g. if URL-list is empty) or by other means.
delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> Cell values are expressed in the JSON output according to the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-datatype" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-datatype" class="externalDFN"> cell value's datatype . The relationship between the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-datatype-base" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-base" class="externalDFN"> base annotation value of the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-datatype" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-datatype" class="externalDFN"> cell value's datatype and the primitive types supported by JSON (as specified in [ RFC7159 ]) is provided in the table below. below:
insert: <table style="width: 100%; text-align: left"> insert: <code> datatype insert: </code> insert: </th> | insert: <th> JSON primitive type insert: </th> | insert: </tr>
---|---|
insert: <code> anyAtomicType insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> anyURI insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> base64Binary insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> boolean insert: </code> insert: </td> | insert: <td> boolean insert: </td> | insert: </tr>
insert: <code> date insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> dateTime insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> dateTimeStamp insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> decimal insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> integer insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> long insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> int insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> short insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> byte insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> nonNegativeInteger insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> positiveInteger insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> unsignedLong insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> unsignedInt insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> unsignedShort insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> unsignedByte insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> nonPositiveInteger insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> negativeInteger insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> double insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> duration insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> dayTimeDuration insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> yearMonthDuration insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> float insert: </code> insert: </td> | insert: <td> number insert: </td> | insert: </tr>
insert: <code> gDay insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> gMonth insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> gMonthDay insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> gYear insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> gYearMonth insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> hexBinary insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> QName insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> string insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> normalizedString insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> token insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> language insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> Name insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> NMTOKEN insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> xml insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> html insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> json insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
insert: <code> time insert: </code> insert: </td> | insert: <td> string insert: </td> | insert: </tr>
Instances of JSON reserved characters within string values MUST be escaped as defined in [ RFC7159 ].
JSON has no native support for expressing language information; therefore the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-language" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-lang" class="externalDFN"> language of a value has no effect on the JSON output.
Only the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-datatype-base" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-base" class="externalDFN"> base annotation value is used to determine the primitive type used wihtin within the JSON output. Additional restrictions to the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-datatype" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-datatype" class="externalDFN"> cell value's datatype , such as the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-datatype-id" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-datatype-id" class="externalDFN"> id annotation, are ignored for the purposes of conversion to JSON.
A delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-datatype" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-datatype" class="externalDFN"> datatype's delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-datatype-format" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-format" class="externalDFN"> format is irrelevant to the conversion procedure defined in this specification; the delete: <a href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell value has already been parsed from the contents the delete: <a href="#dfn-cell" class="internalDFN"> of the insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell according to the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-datatype-format" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-format" class="externalDFN"> format annotation.
Where insert: <a href="#dfn-cell-errors" class="internalDFN" data-link-type="dfn"> Cell errors insert: </a> insert: <em class="rfc2119" title="MUST"> MUST insert: </em> be recorded by applications where the contents of the delete: <a href="#dfn-cell" class="internalDFN"> a insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cell cannot be parsed, parsed or other validation errors occur, delete: <a href="#dfn-cell-errors" class="internalDFN"> validated (see insert: <cite> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#parsing-cells"> Parsing Cells insert: </a> insert: </cite> and insert: <cite> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#validating-tables"> Validating Tables insert: </a> insert: </cite> in [ insert: <cite> insert: <a class="bibref" href="#bib-tabular-data-model"> tabular-data-model insert: </a> insert: </cite> ] respectively). In cases where insert: <a href="#dfn-cell-errors" class="internalDFN" data-link-type="dfn"> cell errors will be provided. It is an implementation decision are recorded, applications may attempt to determine how the appropriate JSON primitive type during the subsequent conversion applications should proceed in the event that delete: <a href="#dfn-cell-errors" class="internalDFN"> cell errors delete: </a> are encountered. process according to local rules.
This section defines a mechanism for transforming the [ json-ld ] delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#json-ld-dialect"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#json-ld-dialect"> dialect used for delete: <a href="#dfn-non-core-annotations" class="internalDFN"> insert: <a href="#dfn-non-core-annotations" class="internalDFN" data-link-type="dfn"> non-core annotations and delete: <a href="#dfn-notes" class="internalDFN"> insert: <a href="#dfn-notes" class="internalDFN" data-link-type="dfn"> notes originating from the processing of metadata (as defined in [ tabular-metadata ]) into JSON.
Conversion applications may have other means to create delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated tables , e.g., e.g. through some application specific API-s. APIs. In such cases the exact format for non-core annotations or notes may be different. Specifications for such annotation processes should specify how these annotations should be are converted into RDF. JSON.
Name-value pairs from delete: <a href="#dfn-notes" class="internalDFN"> insert: <a href="#dfn-notes" class="internalDFN" data-link-type="dfn"> notes and delete: <a href="#dfn-non-core-annotations" class="internalDFN"> insert: <a href="#dfn-non-core-annotations" class="internalDFN" data-link-type="dfn"> non-core annotations annotations are generally copied verbatim from the metadata description subject to the exceptions below:
Name-value pairs whose value is an delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object using the [ json-ld ] keyword @value
, for example:
{ "@value": "
V " }
are transformed to:
Name-value pairs occurring within the value object that use [ json-ld ] keywords @language
and @type
are ignored.
Name-value pairs whose value is an delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object using the [ json-ld ] keyword @id
to coerce a string-value to be interpreted as an IRI, for example:
{ "@id": "
V url " }
are transformed to:
In addition to compacting values of delete: <a title="property URL" href="#dfn-property-url" class="internalDFN"> insert: <a href="#dfn-property-url" class="internalDFN" data-link-type="dfn"> property URLs , URLs which ware were the value of insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects insert: </a> using the [ insert: <cite> insert: <a class="bibref" href="#bib-json-ld"> json-ld insert: </a> insert: </cite> ] keyword @type
used within the delete: <a href="#dfn-notes" class="internalDFN"> notes delete: </a> and delete: <a href="#dfn-non-core-annotations" class="internalDFN"> non-core annotations delete: </a> are compacted according to the rules as defined in delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#url-compaction"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#url-compaction"> URL Compaction in [ tabular-metadata ].
This section is non-normative.
Each of the examples expresses more complex conversions - it is recommended that readers of this specification work through the examples in sequential order.
This example comprises a single delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated table containing information attributes about countries; country code, position (latitude, longitude) and name. Whilst the input tabular data file, published at http://example.org/countries.csv
, includes a delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-header-line" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-header-line" class="externalDFN"> header line , no further metadata annotations are given. The tabular data file is provided below:
countryCode,latitude,longitude,name AD,42.5,1.6,Andorra AE,23.4,53.8,"United Arab Emirates" AF,33.9,67.7,Afghanistan
The delete: <a href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated table generated from parsing the tabular data file is shown below and provides the basis for the conversion to JSON.
Annotations for the resulting delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table T , with 4 columns and 3 rows, are shown below:
id | core annotations | ||
---|---|---|---|
url | columns | rows | |
T | http://example.org/countries.csv | C1 , C2 , C3 , C4 | R1 , R2 , R3 |
Annotations for the delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns , delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> rows and delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells in delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table T are shown in the tables below. below:
delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> Column annotations:
id | core annotations | |||||
---|---|---|---|---|---|---|
table | number | source number | cells | name | titles | |
C1 | T | 1 | 1 | C1.1 , C2.1 , C3.1 | countryCode | countryCode |
C2 | T | 2 | 2 | C1.2 , C2.2 , C3.2 | latitude | latitude |
C3 | T | 3 | 3 | C1.3 , C2.3 , C3.3 | longitude | longitude |
C4 | T | 4 | 4 | C1.4 , C2.4 , C3.4 | name | name |
delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> Row annotations:
id | core annotations | |||
---|---|---|---|---|
table | number | source number | cells | |
R1 | T | 1 | 2 | C1.1 , C1.2 , C1.3 , C1.4 |
R2 | T | 2 | 3 | C2.1 , C2.2 , C2.3 , C2.4 |
R3 | T | 3 | 4 | C3.1 , C3.2 , C3.3 , C3.4 |
delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> Cell annotations:
id | core annotations | |||||
---|---|---|---|---|---|---|
table | column | row | string value | value | property URL | |
C1.1 | T | C1 | R1 | "AD" | "AD" | null |
C1.2 | T | C2 | R1 | "42.5" | "42.5" | null |
C1.3 | T | C3 | R1 | "1.6" | "1.6" | null |
C1.4 | T | C4 | R1 | "Andorra" | "Andorra" | null |
C2.1 | T | C1 | R2 | "AE" | "AE" | null |
C2.2 | T | C2 | R2 | "23.4" | "23.4" | null |
C2.3 | T | C3 | R2 | "53.8" | "53.8" | null |
C2.4 | T | C4 | R2 | "United Arab Emirates" | "United Arab Emirates" | null |
C3.1 | T | C1 | R3 | "AF" | "AF" | null |
C3.2 | T | C2 | R3 | "33.9" | "33.9" | null |
C3.3 | T | C3 | R3 | "67.7" | "67.7" | null |
C3.4 | T | C4 | R3 | "Afghanistan" | "Afghanistan" | null |
delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> Minimal mode output for this example is provided below:
[{ "countryCode" : "AD" , "latitude" : "42.5" , "longitude" : "1.6" , "name" : "Andorra" }, { "countryCode" : "AE" , "latitude" : "23.4" , "longitude" : "53.8" , "name" : "United Arab Emirates" }, { "countryCode" : "AF" , "latitude" : "33.9" , "longitude" : "67.7" , "name" : "Afghanistan" }]
The delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL annotation has not been set for cells in table T ( { "url": "http://example.org/countries.csv"}
); delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells in a given delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row where delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL has not been specified are assumed to refer to the same delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject and so the name-value pairs associated with the delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell values of that delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row occur within the same delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object .
Given that the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-property-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-property-url" class="externalDFN"> property URL is null
for cells in table T ( { "url": "http://example.org/countries.csv"}
), the simplified delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name is used in the name-value pairs; e.g. countryCode
rather than http://example.org/countries.csv#countryCode
delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> Standard mode output for this example is provided below:
{ "tables" : [{ "url" : "http://example.org/countries.csv" , "row" : [{ "url" : "http://example.org/countries.csv#row=2" , "rownum" : 1 , "describes" : [{ "countryCode" : "AD" , "latitude" : "42.5" , "longitude" : "1.6" , "name" : "Andorra" }] }, { "url" : "http://example.org/countries.csv#row=3" , "rownum" : 2 , "describes" : [{ "countryCode" : "AE" , "latitude" : "23.4" , "longitude" : "53.8" , "name" : "United Arab Emirates" }] }, { "url" : "http://example.org/countries.csv#row=4" , "rownum" : 3 , "describes" : [{ "countryCode" : "AF" , "latitude" : "33.9" , "longitude" : "67.7" , "name" : "Afghanistan" }] }] }] }
Even though the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table was defined in isolation, the delete: <a href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated table is wrapped in a delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables .
The name-value pair with delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name url
provides reference to the original tabular data file and to specific delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> rows therein.
The delete: <a href="#dfn-row-number" class="internalDFN"> insert: <a href="#dfn-row-number" class="internalDFN" data-link-type="dfn"> row number is provided for each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row using name-value pair with delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name rownum
.
The delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object containing the name-values pairs associated with the delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell values of a delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row are related to the delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object for that delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row using the name-value pair with delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name describes
.
This example is based on Use Case #11 - City of Palo Alto Tree Data and comprises a single delete: <a href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated table describing an inventory of tree maintenance operations. The input tabular data file, published at http://example.org/tree-ops-ext.csv
, and the associated metadata description http://example.org/tree-ops-ext.csv-metadata.json
are provided below:
GID,On Street,Species,Trim Cycle,Diameter at Breast Ht,Inventory Date,Comments,Protected,KML 1,ADDISON AV,Celtis australis,Large Tree Routine Prune,11,10/18/2010,,,"<Point><coordinates>-122.156485,37.440963</coordinates></Point>" 2,EMERSON ST,Liquidambar styraciflua,Large Tree Routine Prune,11,6/2/2010,,,"<Point><coordinates>-122.156749,37.440958</coordinates></Point>" 6,ADDISON AV,Robinia pseudoacacia,Large Tree Routine Prune,29,6/1/2010,cavity or decay; trunk decay; codominant leaders; included bark; large leader or limb decay; previous failure root damage; root decay; beware of BEES,YES,"<Point><coordinates>-122.156299,37.441151</coordinates></Point>"
{ "@context" : [ "http://www.w3.org/ns/csvw" , { "@language" : "en" }], "@id" : "http://example.org/tree-ops-ext" , "url" : "tree-ops-ext.csv" , "dc:title" : "Tree Operations" , "dcat:keyword" : [ "tree" , "street" , "maintenance" ], "dc:publisher" : [{ "schema:name" : "Example Municipality" , "schema:url" : { "@id" : "http://example.org" } }], "dc:license" : { "@id" : "http://opendefinition.org/licenses/cc-by/" }, "dc:modified" : { "@value" : "2010-12-31" , "@type" : "xsd:date" }, "notes" : [{ "@type" : "oa:Annotation" , "oa:hasTarget" : { "@id" : "http://example.org/tree-ops-ext" }, "oa:hasBody" : { "@type" : "oa:EmbeddedContent" , "rdf:value" : "This is a very interesting comment about the table; it's a table!" , "dc:format" : { "@value" : "text/plain" } } }], "dialect" : { "trim" : true }, "tableSchema" : { "columns" : [{ "name" : "GID" , "titles" : [ "GID" , "Generic Identifier" ], "dc:description" : "An identifier for the operation on a tree." , "datatype" : "string" , "required" : true , "suppressOutput" : true }, { "name" : "on_street" , "titles" : "On Street" , "dc:description" : "The street that the tree is on." , "datatype" : "string" }, { "name" : "species" , "titles" : "Species" , "dc:description" : "The species of the tree." , "datatype" : "string" }, { "name" : "trim_cycle" , "titles" : "Trim Cycle" , "dc:description" : "The operation performed on the tree." , "datatype" : "string" , "lang" : "en" }, { "name" : "dbh" , "titles" : "Diameter at Breast Ht" , "dc:description" : "Diameter at Breast Height (DBH) of the tree (in feet), measured 4.5ft above ground." , "datatype" : "integer" }, { "name" : "inventory_date" , "titles" : "Inventory Date" , "dc:description" : "The date of the operation that was performed." , "datatype" : { "base" : "date" , "format" : "M/d/yyyy" } }, { "name" : "comments" , "titles" : "Comments" , "dc:description" : "Supplementary comments relating to the operation or tree." , "datatype" : "string" , "separator" : ";" }, { "name" : "protected" , "titles" : "Protected" , "dc:description" : "Indication (YES / NO) whether the tree is subject to a protection order." , "datatype" : { "base" : "boolean" , "format" : "YES|NO" }, "default" : "NO" }, { "name" : "kml" , "titles" : "KML" , "dc:description" : "KML-encoded description of tree location." , "datatype" : "xml" }], "primaryKey" : "GID" , "aboutUrl" : "http://example.org/tree-ops-ext#gid-{GID}" } }
The delete: <a href="#dfn-notes" class="internalDFN"> insert: <a href="#dfn-notes" class="internalDFN" data-link-type="dfn"> notes annotation in the metadata description uses the Open Annotation data model currently under development within the Web Annotations Working Group . This is purely illustrative; no constraints are placed on the value of the delete: <a href="#dfn-notes" class="internalDFN"> insert: <a href="#dfn-notes" class="internalDFN" data-link-type="dfn"> notes annotation.
The delete: <a href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated table generated from parsing the tabular data file and associated metadata is shown below and provides the basis for the conversion to JSON.
Core annotations for the resulting delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table T , with 9 delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns and 3 delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> rows , are shown below:
id | core annotations | ||||
---|---|---|---|---|---|
id | url | columns | rows | notes | |
T | <http://example.org/tree-ops-ext> | http://example.org/tree-ops-ext.csv | C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 | R1 , R2 , R3 | [{ "@type": "oa:Annotation", ... }] |
Non-core annotations for the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table T are:
dc:title
"Tree Operations"
dcat:keyword
["tree", "street", "maintenance"]
dc:publisher
[{ "schema:name": "Example Municipality", "schema:url": { "@id": "http://example.org" } }]
dc:license
{ "@id": "http://opendefinition.org/licenses/cc-by/" }
dc:modified
"2010-12-31"
The value of the delete: <a href="#dfn-notes" class="internalDFN"> insert: <a href="#dfn-notes" class="internalDFN" data-link-type="dfn"> notes annotation has been shortened for clarity in the table above.
Annotations for the delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns , delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> rows and delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells in delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table T are shown in the tables below. below:
delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> Column annotations:
id | core annotations | annotations | |||||||
---|---|---|---|---|---|---|---|---|---|
table | number | source number | cells | name | titles | required | suppress output | dc:description | |
C1 | T | 1 | 1 | C1.1 , C2.1 , C3.1 | GID | GID , Generic Identifier | true | true | An identifier for the operation on a tree. |
C2 | T | 2 | 2 | C1.2 , C2.2 , C3.2 | on_street | On Street | The street that the tree is on. | ||
C3 | T | 3 | 3 | C1.3 , C2.3 , C3.3 | species | Species | The species of the tree. | ||
C4 | T | 4 | 4 | C1.4 , C2.4 , C3.4 | trim_cycle | Trim Cycle | The operation performed on the tree. | ||
C5 | T | 5 | 5 | C1.5 , C2.5 , C3.5 | dbh | Diameter at Breast Ht | Diameter at Breast Height (DBH) of the tree (in feet), measured 4.5ft above ground. | ||
C6 | T | 6 | 6 | C1.6 , C2.6 , C3.6 | inventory_date | Inventory Date | The date of the operation that was performed. | ||
C7 | T | 7 | 7 | C1.7 , C2.7 , C3.7 | comments | Comments | Supplementary comments relating to the operation or tree. | ||
C8 | T | 8 | 8 | C1.8 , C2.8 , C3.8 | protected | Protected | Indication (YES / NO) whether the tree is subject to a protection order. | ||
C9 | T | 9 | 9 | C1.9 , C2.9 , C3.9 | kml | KML | KML-encoded description of tree location. |
In this example, output for delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column C1 ( GID
) is not required; note the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column-suppress-output" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-column-suppress-output" class="externalDFN"> suppress output annotation on this delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column .
delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> Row annotations:
id | core annotations | ||||
---|---|---|---|---|---|
table | number | source number | cells | primary key | |
R1 | T | 1 | 2 | C1.1 , C1.2 , C1.3 , C1.4 , C1.5 , C1.6 , C1.7 , C1.8 , C1.9 | C1.1 |
R2 | T | 2 | 3 | C2.1 , C2.2 , C2.3 , C2.4 , C2.5 , C2.6 , C2.7 , C2.8 , C2.9 | C2.1 |
R3 | T | 3 | 4 | C3.1 , C3.2 , C3.3 , C3.4 , C3.5 , C3.6 , C3.7 , C3.8 , C3.9 | C3.1 |
delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> Cell annotations:
id | core annotations | |||||
---|---|---|---|---|---|---|
table | column | row | string value | value | about URL | |
C1.1 | T | C1 | R1 | "1" | "1" | http://example.org/tree-ops-ext#gid-1 |
C1.2 | T | C2 | R1 | "ADDISON AV" | "ADDISON AV" | <http://example.org/tree-ops-ext#gid-1> |
C1.3 | T | C3 | R1 | "Celtis australis" | "Celtis australis" | <http://example.org/tree-ops-ext#gid-1> |
C1.4 | T | C4 | R1 | "Large Tree Routine Prune" | "Large Tree Routine Prune" (English) | <http://example.org/tree-ops-ext#gid-1> |
C1.5 | T | C5 | R1 | "11" | 11 | <http://example.org/tree-ops-ext#gid-1> |
C1.6 | T | C6 | R1 | "10/18/2010" | 2010-10-18 | <http://example.org/tree-ops-ext#gid-1> |
C1.7 | T | C7 | R1 | "" | null | <http://example.org/tree-ops-ext#gid-1> |
C1.8 | T | C8 | R1 | "" | false | <http://example.org/tree-ops-ext#gid-1> |
C1.9 | T | C9 | R1 | "<Point><coordinates>-122.156485,37.440963</coordinates></Point>" | "<Point><coordinates>-122.156485,37.440963</coordinates></Point>" (XML) | <http://example.org/tree-ops-ext#gid-1> |
C2.1 | T | C1 | R2 | "2" | "2" | <http://example.org/tree-ops-ext#gid-2> |
C2.2 | T | C2 | R2 | "EMERSON ST" | "EMERSON ST" | <http://example.org/tree-ops-ext#gid-2> |
C2.3 | T | C3 | R2 | "Liquidambar styraciflua" | "Liquidambar styraciflua" | <http://example.org/tree-ops-ext#gid-2> |
C2.4 | T | C4 | R2 | "Large Tree Routine Prune" | "Large Tree Routine Prune" (English) | <http://example.org/tree-ops-ext#gid-2> |
C2.5 | T | C5 | R2 | "11" | 11 | <http://example.org/tree-ops-ext#gid-2> |
C2.6 | T | C6 | R2 | "6/2/2010" | 2010-06-02 | <http://example.org/tree-ops-ext#gid-2> |
C2.7 | T | C7 | R2 | "" | null | <http://example.org/tree-ops-ext#gid-2> |
C2.8 | T | C8 | R2 | "" | false | <http://example.org/tree-ops-ext#gid-2> |
C2.9 | T | C9 | R2 | "<Point><coordinates>-122.156749,37.440958</coordinates></Point>" | "<Point><coordinates>-122.156749,37.440958</coordinates></Point>" (XML) | <http://example.org/tree-ops-ext#gid-2> |
C3.1 | T | C1 | R3 | "6" | "6" | <http://example.org/tree-ops-ext#gid-6> |
C3.2 | T | C2 | R3 | "ADDISON AV" | "ADDISON AV" | <http://example.org/tree-ops-ext#gid-6> |
C3.3 | T | C3 | R3 | "Robinia pseudoacacia" | "Robinia pseudoacacia" | <http://example.org/tree-ops-ext#gid-6> |
C3.4 | T | C4 | R3 | "Large Tree Routine Prune" | "Large Tree Routine Prune" (English) | <http://example.org/tree-ops-ext#gid-6> |
C3.5 | T | C5 | R3 | "29" | 29 | <http://example.org/tree-ops-ext#gid-6> |
C3.6 | T | C6 | R3 | "6/1/2010" | 2010-06-01 | <http://example.org/tree-ops-ext#gid-6> |
C3.7 | T | C7 | R3 | "cavity or decay; trunk decay; codominant leaders; included bark; large leader or limb decay; previous failure root damage; root decay; beware of BEES" | "cavity or decay" , "trunk decay" , "codominant leaders" , "included bark" , "large leader or limb decay" , "previous failure root damage" , "root decay" , "beware of BEES" | <http://example.org/tree-ops-ext#gid-6> |
C3.8 | T | C8 | R3 | "YES" | true | <http://example.org/tree-ops-ext#gid-6> |
C3.9 | T | C9 | R3 | "<Point><coordinates>-122.156299,37.441151</coordinates></Point>" | "<Point><coordinates>-122.156299,37.441151</coordinates></Point>" (XML) | <http://example.org/tree-ops-ext#gid-6> |
The lists of values from delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells in delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column C7 ( "name": "comments"
) are assumed to be unordered as the boolean delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-ordered" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-ordered" class="externalDFN"> ordered annotation, which defaults to false
, has not be set within the metadata description.
delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> Minimal mode output for this example is provided below:
[{ "@id" : "http://example.org/tree-ops-ext#gid-1" , "on_street" : "ADDISON AV" , "species" : "Celtis australis" , "trim_cycle" : "Large Tree Routine Prune" , "dbh" : 11 , "inventory_date" : "2010-10-18" , "protected" : false , "kml" : "<Point><coordinates>-122.156485,37.440963</coordinates></Point>" }, { "@id" : "http://example.org/tree-ops-ext#gid-2" , "on_street" : "EMERSON ST" , "species" : "Liquidambar styraciflua" , "trim_cycle" : "Large Tree Routine Prune" , "dbh" : 11 , "inventory_date" : "2010-06-02" , "protected" : false , "kml" : "<Point><coordinates>-122.156749,37.440958</coordinates></Point>" }, { "@id" : "http://example.org/tree-ops-ext#gid-6" , "on_street" : "ADDISON AV" , "species" : "Robinia pseudoacacia" , "trim_cycle" : "Large Tree Routine Prune" , "dbh" : 29 , "inventory_date" : "2010-06-01" , "comments" : [ "cavity or decay" , "trunk decay" , "codominant leaders" , "included bark" , "large leader or limb decay" , "previous failure root damage" , "root decay" , "beware of BEES" ], "protected" : true , "kml" : "<Point><coordinates>-122.156299,37.441151</coordinates></Point>" }]
The delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject described by each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row is explicitly defined using the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL annotation; e.g. the delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject of delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row R1 is http://example.org/tree-ops-ext#gid-1
.
Output for delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column C1 ( { "name": "GID" }
) is not included as delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column-suppress-output" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-column-suppress-output" class="externalDFN"> suppress output annotation is true
.
delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> Cells C1.7 and C2.7 ( delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> rows R1 and R2 ; delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column , { "name": "comments" }
) have null
delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a data-lt="cell value" href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> values - no output is included for these delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells .
delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> Cell C3.7 ( delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row R3 ; delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column , { "name": "comments" }
) contains a sequence of values; the set of values are included in an delete: <a href="#dfn-array" class="internalDFN"> insert: <a href="#dfn-array" class="internalDFN" data-link-type="dfn"> array .
delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> Standard mode output for this example is provided below:
{ "tables" : [{ "@id" : "http://example.org/tree-ops-ext" , "url" : "http://example.org/tree-ops-ext.csv" , "dc:title" : "Tree Operations" , "dcat:keyword" : [ "tree" , "street" , "maintenance" ], "dc:publisher" : [{ "schema:name" : "Example Municipality" , "schema:url" : "http://example.org" }], "dc:license" : "http://opendefinition.org/licenses/cc-by/" , "dc:modified" : "2010-12-31" , "notes" : [{ "@type" : "oa:Annotation" , "oa:hasTarget" : "http://example.org/tree-ops-ext" , "oa:hasBody" : { "@type" : "oa:EmbeddedContent" , "rdf:value" : "This is a very interesting comment about the table; it's a table!" , "dc:format" : "text/plain" } }], "row" : [{ "url" : "http://example.org/tree-ops-ext.csv#row=2" , "rownum" : 1 , "describes" : [{ "@id" : "http://example.org/tree-ops-ext#gid-1" , "on_street" : "ADDISON AV" , "species" : "Celtis australis" , "trim_cycle" : "Large Tree Routine Prune" , "dbh" : 11 , "inventory_date" : "2010-10-18" , "protected" : false , "kml" : "<Point><coordinates>-122.156485,37.440963</coordinates></Point>" }] }, { "url" : "http://example.org/tree-ops-ext.csv#row=3" , "rownum" : 2 , "describes" : [{ "@id" : "http://example.org/tree-ops-ext#gid-2" , "on_street" : "EMERSON ST" , "species" : "Liquidambar styraciflua" , "trim_cycle" : "Large Tree Routine Prune" , "dbh" : 11 , "inventory_date" : "2010-06-02" , "protected" : false , "kml" : "<Point><coordinates>-122.156749,37.440958</coordinates></Point>" }] }, { "url" : "http://example.org/tree-ops-ext.csv#row=4" , "rownum" : 3 , "describes" : [{ "@id" : "http://example.org/tree-ops-ext#gid-6" , "on_street" : "ADDISON AV" , "species" : "Robinia pseudoacacia" , "trim_cycle" : "Large Tree Routine Prune" , "dbh" : 29 , "inventory_date" : "2010-06-01" , "comments" : [ "cavity or decay" , "trunk decay" , "codominant leaders" , "included bark" , "large leader or limb decay" , "previous failure root damage" , "root decay" , "beware of BEES" ], "protected" : true , "kml" : "<Point><coordinates>-122.156299,37.441151</coordinates></Point>" }] }] }] }
delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> Table T ( { "url": "http://example.org/tree-ops-ext.csv"}
) has been explicitly identified: { "@id": "<http://exmple.org/tree-ops-ext>"}
.
delete: <a title="non-core annotations" href="#dfn-non-core-annotations" class="internalDFN"> insert: <a href="#dfn-non-core-annotations" class="internalDFN" data-link-type="dfn"> Non-core annotations and delete: <a href="#dfn-notes" class="internalDFN"> insert: <a href="#dfn-notes" class="internalDFN" data-link-type="dfn"> notes specified for delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table T ( { "url": "http://example.org/tree-ops-ext.csv"}
) are included in the output.
This example uses a single delete: <a href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated table describing a listing of music events. Each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row from the tabular data file corresponds to three resources; the music event itself, the location where that event occurs and the offer to sell tickets for that event. The goal is to convert the CSV content into schema.org markup that a search engine such as Google can use to index music events. Details of how Google expects this information to be structured can be found here .
The input tabular data file, published at http://example.org/events-listing.csv
, and the associated metadata description http://example.org/events-listing.csv-metadata.json
are provided below:
Name, Start Date, Location Name, Location Address, Ticket Url B.B. King,2014-04-12T19:30,"Lupo’s Heartbreak Hotel","79 Washington St., Providence, RI",https://www.etix.com/ticket/1771656 B.B. King,2014-04-13T20:00,"Lynn Auditorium","Lynn, MA, 01901",http://frontgatetickets.com/venue.php?id=11766
{ "@context" : [ "http://www.w3.org/ns/csvw" , { "@language" : "en" }], "url" : "events-listing.csv" , "dialect" : { "trim" : true }, "tableSchema" : { "columns" : [{ "name" : "name" , "titles" : "Name" , "aboutUrl" : "#event-{_row}" , "propertyUrl" : "schema:name" }, { "name" : "start_date" , "titles" : "Start Date" , "datatype" : { "base" : "datetime" , "format" : "yyyy-MM-ddTHH:mm" }, "aboutUrl" : "#event-{_row}" , "propertyUrl" : "schema:startDate" }, { "name" : "location_name" , "titles" : "Location Name" , "aboutUrl" : "#place-{_row}" , "propertyUrl" : "schema:name" }, { "name" : "location_address" , "titles" : "Location Address" , "aboutUrl" : "#place-{_row}" , "propertyUrl" : "schema:address" }, { "name" : "ticket_url" , "titles" : "Ticket Url" , "datatype" : "anyURI" , "aboutUrl" : "#offer-{_row}" , "propertyUrl" : "schema:url" }, { "name" : "type_event" , "virtual" : true , "aboutUrl" : "#event-{_row}" , "propertyUrl" : "rdf:type" , "valueUrl" : "schema:MusicEvent" }, { "name" : "type_place" , "virtual" : true , "aboutUrl" : "#place-{_row}" , "propertyUrl" : "rdf:type" , "valueUrl" : "schema:Place" }, { "name" : "type_offer" , "virtual" : true , "aboutUrl" : "#offer-{_row}" , "propertyUrl" : "rdf:type" , "valueUrl" : "schema:Offer" }, { "name" : "location" , "virtual" : true , "aboutUrl" : "#event-{_row}" , "propertyUrl" : "schema:location" , "valueUrl" : "#place-{_row}" }, { "name" : "offers" , "virtual" : true , "aboutUrl" : "#event-{_row}" , "propertyUrl" : "schema:offers" , "valueUrl" : "#offer-{_row}" }] } }
The CSV to JSON translation is limited to providing one statement, or triple, per delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column in the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table . The target schema.org markup requires 10 statements to describe each event. As the base tabular data file contains 5 columns, an additional 5 virtual delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns have been added in order to provide for the full complement of statements—including the relationships between the 3 resources (event, location, and offer) described by each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row of the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table . Note that the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column-virtual" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-virtual" class="externalDFN"> virtual annotation is true
for these virtual delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns .
Furthermore, note that no attempt is made to reconcile between locations or offers that may be associated with more than one event; every delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row in the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table will create both a new location resource and offer resource in addition to the event resource. If considered necessary, applications such as OpenRefine may be used to identify and reconcile duplicate location resources once the JSON output has been generated.
The delete: <a href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated table generated from parsing the tabular data file and associated metadata is shown below and provides the basis for the conversion to JSON.
Annotations for the resulting delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table T , with 10 delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns and 2 delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> rows , are shown below:
id | core annotations | ||
---|---|---|---|
url | columns | rows | |
T | http://example.org/events-listing.csv | C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 , C10 | R1 , R2 |
Annotations for the delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns , delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> rows and delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells in delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table T are shown in the tables below. below:
delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> Column annotations:
id | core annotations | ||||||
---|---|---|---|---|---|---|---|
table | number | source number | cells | name | titles | virtual | |
C1 | T | 1 | 1 | C1.1 , C2.1 | name | Name | |
C2 | T | 2 | 2 | C1.2 , C2.2 | start_date | Start Date | |
C3 | T | 3 | 3 | C1.3 , C2.3 | location_name | Location Name | |
C4 | T | 4 | 4 | C1.4 , C2.4 | location_address | Location Address | |
C5 | T | 5 | 5 | C1.5 , C2.5 | ticket_url | Ticket Url | |
C6 | T | 6 | 6 | C1.6 , C2.6 | type_event | true | |
C7 | T | 7 | 7 | C1.7 , C2.7 | type_place | true | |
C8 | T | 8 | 8 | C1.8 , C2.8 | type_offer | true | |
C9 | T | 9 | 9 | C1.9 , C2.9 | location | true | |
C10 | T | 10 | 10 | C1.10 , C2.10 | offers | true |
delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> Row annotations:
id | core annotations | |||
---|---|---|---|---|
table | number | source number | cells | |
R1 | T | 1 | 2 | C1.1 , C1.2 , C1.3 , C1.4 , C1.5 , C1.6 , C1.7 , C1.8 , C1.9 , C1.10 |
R2 | T | 2 | 3 | C2.1 , C2.2 , C2.3 , C2.4 , C2.5 , C2.6 , C2.7 , C2.8 , C2.9 , C2.10 |
delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> Cell annotations:
id | core annotations | |||||||
---|---|---|---|---|---|---|---|---|
table | column | row | string value | value | about URL | property URL | value URL | |
C1.1 | T | C1 | R1 | "B.B. King" | "B.B. King" | <http://example.org/events-listing.csv#event-1> | schema:name | |
C1.2 | T | C2 | R1 | "2014-04-12T19:30" | 2014-04-12T19:30:00 | <http://example.org/events-listing.csv#event-1> | schema:startDate | |
C1.3 | T | C3 | R1 | "Lupo’s Heartbreak Hotel" | "Lupo’s Heartbreak Hotel" | <http://example.org/events-listing.csv#place-1> | schema:name | |
C1.4 | T | C4 | R1 | "79 Washington St., Providence, RI" | "79 Washington St., Providence, RI" | <http://example.org/events-listing.csv#place-1> | schema:address | |
C1.5 | T | C5 | R1 | "https://www.etix.com/ticket/1771656" | <https://www.etix.com/ticket/1771656> | <http://example.org/events-listing.csv#offer-1> | schema:url | |
C1.6 | T | C6 | R1 | "" | null | <http://example.org/events-listing.csv#event-1> | rdf:type | schema:MusicEvent |
C1.7 | T | C7 | R1 | "" | null | <http://example.org/events-listing.csv#place-1> | rdf:type | schema:Place |
C1.8 | T | C8 | R1 | "" | null | <http://example.org/events-listing.csv#offer-1> | rdf:type | schema:Offer |
C1.9 | T | C9 | R1 | "" | null | <http://example.org/events-listing.csv#event-1> | schema:location | <http://example.org/events-listing.csv#place-1> |
C1.10 | T | C10 | R1 | "" | null | <http://example.org/events-listing.csv#event-1> | schema:offers | <http://example.org/events-listing.csv#offer-1> |
C2.1 | T | C1 | R2 | "B.B. King" | "B.B. King" | <http://example.org/events-listing.csv#event-2> | schema:name | |
C2.2 | T | C2 | R2 | "2014-04-13T20:00" | 2014-04-13T20:00:00 | <http://example.org/events-listing.csv#event-2> | schema:startDate | |
C2.3 | T | C3 | R2 | "Lynn Auditorium" | "Lynn Auditorium" | <http://example.org/events-listing.csv#place-2> | schema:name | |
C2.4 | T | C4 | R2 | "Lynn, MA, 01901" | "Lynn, MA, 01901" | <http://example.org/events-listing.csv#place-2> | schema:address | |
C2.5 | T | C5 | R2 | "http://frontgatetickets.com/venue.php?id=11766" | <http://frontgatetickets.com/venue.php?id=11766> | <http://example.org/events-listing.csv#offer-2> | schema:url | |
C2.6 | T | C6 | R2 | "" | null | <http://example.org/events-listing.csv#event-2> | rdf:type | schema:MusicEvent |
C2.7 | T | C7 | R2 | "" | null | <http://example.org/events-listing.csv#place-2> | rdf:type | schema:Place |
C2.8 | T | C8 | R2 | "" | null | <http://example.org/events-listing.csv#offer-2> | rdf:type | schema:Offer |
C2.9 | T | C9 | R2 | "" | null | <http://example.org/events-listing.csv#event-2> | schema:location | <http://example.org/events-listing.csv#place-2> |
C2.10 | T | C10 | R2 | "" | null | <http://example.org/events-listing.csv#event-2> | schema:offers | <http://example.org/events-listing.csv#offer-2> |
delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> Minimal mode output for this example is provided below:
[{ "@id" : "http://example.org/events-listing.csv#event-1" , "@type" : "schema:MusicEvent" , "schema:name" : "B.B. King" , "schema:startDate" : "2014-04-12T19:30:00" , "schema:location" : { "@id" : "http://example.org/events-listing.csv#place-1" , "@type" : "schema:Place" , "schema:name" : "Lupo’s Heartbreak Hotel" , "schema:address" : "79 Washington St., Providence, RI" }, "schema:offer" : { "@id" : "http://example.org/events-listing.csv#offer-1" , "@type" : "schema:Offer" , "schema:offer" : "https://www.etix.com/ticket/1771656" } }, { "@id" : "http://example.org/events-listing.csv#event-2" , "@type" : "schema:MusicEvent" , "schema:name" : "B.B. King" , "schema:startDate" : "2014-04-13T20:00:00" , "schema:location" : { "@id" : "http://example.org/events-listing.csv#place-2" , "@type" : "schema:Place" , "schema:name" : "Lynn Auditorium" , "schema:address" : "Lynn, MA, 01901" }, "schema:offer" : { "@id" : "http://example.org/events-listing.csv#offer-2" , "@type" : "schema:Offer" , "schema:offer" : "http://frontgatetickets.com/venue.php?id=11766" } }]
Three resources are defined for each row within the table; event, location and offer. Therefore three delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects are created for each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row .
Each delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column description explicitly defines both delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#cell-aboutUrl"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#cell-aboutUrl"> aboutUrl
and delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#cell-propertyUrl"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#cell-propertyUrl"> propertyUrl
properties which are used to create the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL and delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-property-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-property-url" class="externalDFN"> property URL annotations on the column's delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells .
delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> Columns C6 , C7 and C8 ( { "name": "type_event"}
, { "name": "type_place"}
and { "name": "type_offer"}
) define the semantic types of the resources described by each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row : schema:MusicEvent
, schema:Place
and schema:Offer
respectively—noting that the use of rdf:type
is converted to the delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name @type
(as used in [ json-ld ]) by this conversion application.
delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> Column C9 ( { "name": "location"}
) uses the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-property-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-property-url" class="externalDFN"> property URL and delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-url" class="externalDFN"> value URL to assert the relationship between the event and location resources.
delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> Column C10 ( { "name": "offer"}
) uses the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-property-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-property-url" class="externalDFN"> property URL and delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-url" class="externalDFN"> value URL to assert the relationship between the event and offer resources.
delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> Standard mode output for this example is provided below:
{ "tables" : [{ "url" : "http://example.org/events-listing.csv" , "row" : [{ "url" : "http://example.org/events-listing.csv#row=2" , "rownum" : 1 , "describes" : [{ "@id" : "http://example.org/events-listing.csv#event-1" , "@type" : "schema:MusicEvent" , "schema:name" : "B.B. King" , "schema:startDate" : "2014-04-12T19:30:00" , "schema:location" : { "@id" : "http://example.org/events-listing.csv#place-1" , "@type" : "schema:Place" , "schema:name" : "Lupo’s Heartbreak Hotel" , "schema:address" : "79 Washington St., Providence, RI" }, "schema:offers" : { "@id" : "http://example.org/events-listing.csv#offer-1" , "@type" : "schema:Offer" , "schema:url" : "https://www.etix.com/ticket/1771656" } }] }, { "url" : "http://example.org/events-listing.csv#row=3" , "rownum" : 2 , "describes" : [{ "@id" : "http://example.org/events-listing.csv#event-2" , "@type" : "schema:MusicEvent" , "schema:name" : "B.B. King" , "schema:startDate" : "2014-04-13T20:00:00" , "schema:location" : { "@id" : "http://example.org/events-listing.csv#place-2" , "@type" : "schema:Place" , "schema:name" : "Lynn Auditorium" , "schema:address" : "Lynn, MA, 01901" }, "schema:offers" : { "@id" : "http://example.org/events-listing.csv#offer-2" , "@type" : "schema:Offer" , "schema:url" : "http://frontgatetickets.com/venue.php?id=11766" } }] }] }] }
The resources described by each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row are explicitly defined using the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL annotation—in this case three resources per delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row (event, location, and offer). The delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects containing the name-values pairs associated with the delete: <a title="cell value" href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell values of a delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row are related to the delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object for each delete: <a href="#dfn-subject" class="internalDFN"> insert: <a href="#dfn-subject" class="internalDFN" data-link-type="dfn"> subject in that delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row using the name-value pair with delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name describes
.
This example is based on Use Case #4 - Publication of public sector roles and salaries and uses four delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> annotated tables published as a delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables . Information about senior roles and junior roles within a government department or organization are published in CSV format by each department. These are validated against a centrally published delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#dfn-schema" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#dfn-schema" class="externalDFN"> schema to ensure that all the data published by departments is consistent. Additionally, lists of organizations and professions are also published centrally, providing controlled vocabularies against which departmental submissions are validated.
Information published about junior and senior roles provides summary information for each post within the government department or organization. Whilst the junior role information is anonymous, providing only an indication of the number of full-time-equivalent (FTE) staff occupying a given post, the senior role information specifies the named individual occupying each post. As such, each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row from the tabular data file describing senior roles corresponds to two resources; the post and the person occupying that post.
This example is concerned only with converting the information provided by each government department or organization not rather than the centrally published information listing organizations and professions.
The input tabular data files and associated metadata descriptions are provided below:
Organization Unique Reference,Organization Name,Department Reference hefce.ac.uk,Higher Education Funding Council for England,bis.gov.uk bis.gov.uk,"Department for Business, Innovation and Skills",xx
Profession Finance Information Technology Operational Delivery Policy
Post Unique Reference,Name,Grade,Job Title,Reports to Senior Post,Profession,Organization Reference 90115,Steve Egan,SCS1A,Deputy Chief Executive,90334,Finance,hefce.ac.uk 90334,Sir Alan Langlands,SCS4,Chief Executive,xx,Policy,hefce.ac.uk
Reporting Senior Post,Grade,Payscale Minimum (£),Payscale Maximum (£),Generic Job Title,Number of Posts (FTE),Profession,Organization Reference 90115,4,17426,20002,Administrator,8.67,Operational Delivery,hefce.ac.uk 90115,5,19546,22478,Administrator,0.5,Operational Delivery,hefce.ac.uk
{ "@type" : "TableGroup" , "@context" : [ "http://www.w3.org/ns/csvw" , { "@language" : "en" }], "tables" : [{ "url" : "gov.uk/data/organizations.csv" , "tableSchema" : "gov.uk/schema/organizations.json" , "suppressOutput" : true }, { "url" : "gov.uk/data/professions.csv" , "tableSchema" : "gov.uk/schema/professions.json" , "suppressOutput" : true }, { "url" : "senior-roles.csv" , "tableSchema" : "gov.uk/schema/senior-roles.json" }, { "url" : "junior-roles.csv" , "tableSchema" : "gov.uk/schema/junior-roles.json" }] }
{ "@id" : "http://example.org/gov.uk/schema/organizations.json" , "@context" : "http://www.w3.org/ns/csvw" , "columns" : [{ "name" : "ref" , "titles" : "Organization Unique Reference" , "datatype" : "string" , "required" : true , "propertyUrl" : "dc:identifier" }, { "name" : "name" , "titles" : "Organization Name" , "datatype" : "string" , "propertyUrl" : "foaf:name" }, { "name" : "department" , "titles" : "Department Reference" , "datatype" : "string" , "null" : "xx" , "propertyUrl" : "org:subOrganizationOf" , "valueUrl" : "http://example.org/organization/{department}" }], "primaryKey" : "ref" , "aboutUrl" : "http://example.org/organization/{ref}" , "foreignKeys" : [{ "columnReference" : "department" , "reference" : { "schemaReference" : "http://example.org/gov.uk/schema/organizations.json" , "columnReference" : "ref" } }] }
{ "@id" : "http://example.org/gov.uk/schema/professions.json" , "@context" : "http://www.w3.org/ns/csvw" , "columns" : [{ "name" : "name" , "titles" : "Profession" , "datatype" : "string" , "required" : true }], "primaryKey" : "name" }
{ "@id" : "http://example.org/gov.uk/schema/senior-roles.json" , "@context" : "http://www.w3.org/ns/csvw" , "columns" : [{ "name" : "ref" , "titles" : "Post Unique Reference" , "datatype" : "string" , "required" : true , "propertyUrl" : "dc:identifier" }, { "name" : "name" , "titles" : "Name" , "datatype" : "string" , "aboutUrl" : "http://example.org/organization/{organizationRef}/person/{_row}" , "propertyUrl" : "foaf:name" }, { "name" : "grade" , "titles" : "Grade" , "datatype" : "string" , "propertyUrl" : "http://example.org/gov.uk/def/grade" }, { "name" : "job" , "titles" : "Job Title" , "datatype" : "string" , "propertyUrl" : "http://example.org/gov.uk/def/job" }, { "name" : "reportsTo" , "titles" : "Reports to Senior Post" , "datatype" : "string" , "null" : "xx" , "propertyUrl" : "org:reportsTo" , "valueUrl" : "http://example.org/organization/{organizationRef}/post/{reportsTo}" }, { "name" : "profession" , "titles" : "Profession" , "datatype" : "string" , "propertyUrl" : "http://example.org/gov.uk/def/profession" }, { "name" : "organizationRef" , "titles" : "Organization Reference" , "datatype" : "string" , "propertyUrl" : "org:postIn" , "valueUrl" : "http://example.org/organization/{organizationRef}" , "required" : true }, { "name" : "post_holder" , "virtual" : true , "propertyUrl" : "org:heldBy" , "valueUrl" : "http://example.org/organization/{organizationRef}/person/{_row}" }], "primaryKey" : "ref" , "aboutUrl" : "http://example.org/organization/{organizationRef}/post/{ref}" , "foreignKeys" : [{ "columnReference" : "reportsTo" , "reference" : { "schemaReference" : "http://example.org/gov.uk/schema/senior-roles.json" , "columnReference" : "ref" } }, { "columnReference" : "profession" , "reference" : { "schemaReference" : "http://example.org/gov.uk/schema/professions.json" , "columnReference" : "name" } }, { "columnReference" : "organizationRef" , "reference" : { "schemaReference" : "http://example.org/gov.uk/schema/organizations.json" , "columnReference" : "ref" } }] }
{ "@id" : "http://example.org/gov.uk/schema/junior-roles.json" , "@context" : "http://www.w3.org/ns/csvw" , "columns" : [{ "name" : "reportsToSenior" , "titles" : "Reporting Senior Post" , "datatype" : "string" , "propertyUrl" : "org:reportsTo" , "valueUrl" : "http://example.org/organization/{organizationRef}/post/{reportsToSenior}" , "required" : true }, { "name" : "grade" , "titles" : "Grade" , "datatype" : "string" , "propertyUrl" : "http://example.org/gov.uk/def/grade" }, { "name" : "min_pay" , "titles" : "Payscale Minimum (£)" , "datatype" : "integer" , "propertyUrl" : "http://example.org/gov.uk/def/min_pay" }, { "name" : "max_pay" , "titles" : "Payscale Maximum (£)" , "datatype" : "integer" , "propertyUrl" : "http://example.org/gov.uk/def/max_pay" }, { "name" : "job" , "titles" : "Generic Job Title" , "datatype" : "string" , "propertyUrl" : "http://example.org/gov.uk/def/job" }, { "name" : "number" , "titles" : "Number of Posts (FTE)" , "datatype" : "number" , "propertyUrl" : "http://example.org/gov.uk/def/number_of_posts" }, { "name" : "profession" , "titles" : "Profession" , "datatype" : "string" , "propertyUrl" : "http://example.org/gov.uk/def/profession" }, { "name" : "organizationRef" , "titles" : "Organization Reference" , "datatype" : "string" , "propertyUrl" : "org:postIn" , "valueUrl" : "http://example.org/organization/{organizationRef}" , "required" : true }], "foreignKeys" : [{ "columnReference" : "reportsToSenior" , "reference" : { "schemaReference" : "http://example.org/gov.uk/schema/senior-roles.json" , "columnReference" : "ref" } }, { "columnReference" : "profession" , "reference" : { "schemaReference" : "http://example.org/gov.uk/schema/professions.json" , "columns" : "name" } }, { "columnReference" : "organizationRef" , "reference" : { "schemaReference" : "http://example.org/gov.uk/schema/organizations.json" , "columns" : "ref" } }] }
This example makes extensive use of the example.org
domain. As described in [ RFC6761 ], this domain is used for illustrative examples within documentation. In reality, the resources described here with the URL path /gov.uk
would be centrally published by the UK Government at, say, the domain data.gov.uk
.
Given that these resources are centrally published with an aspiration for reuse, the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#dfn-schema-description" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#dfn-schema-description" class="externalDFN"> schema descriptions have been factored out into separate resources. As such, the top-level metadata description resource metadata.json
simply provides the list of delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table" class="externalDFN"> tables and binds each of them to the appropriate delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#dfn-schema" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#dfn-schema" class="externalDFN"> schema that is defined elsewhere.
Finally, note that because the centrally published metadata descriptions are intended to be reused across many government departments and organizations, extra consideration has been given to defining URIs for the person and post resources defined in each row of the senior roles tabular data and subsequently referenced from the junior roles tabular data. To ensure that naming clashes are avoided, the unique reference for the organization to which the person or post belongs has been included in a path segment of the identifier. For example, the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#dfn-uri-template-property"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#dfn-uri-template-properties"> URI template property delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#cell-aboutUrl"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#cell-aboutUrl"> aboutUrl
used to identify the senior post is specified as http://example.org/organization/{organizationRef}/post/{ref}
, thus yielding the URI http://example.org/organization/hefce.ac.uk/post/90115
for the post described in the first delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row of the senior roles tabular data.
The delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables generated from parsing the tabular data files and associated metadata is shown below and provides the basis for the conversion to JSON.
Annotations for the delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> group of tables G and the four delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> tables Ta , Tb , Tc , and Td are shown below. below:
delete: <a href="#dfn-group-of-tables" class="internalDFN"> insert: <a href="#dfn-group-of-tables" class="internalDFN" data-link-type="dfn"> Group of Tables annotations:
id | core annotations |
---|---|
tables | |
G | Ta , Tb , Tc , Td |
delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> Table annotations:
id | core annotations | ||||
---|---|---|---|---|---|
url | columns | rows | suppress output | foreign keys | |
Ta | http://example.org/gov.uk/data/organizations.csv | Ca1 , Ca2 , Ca3 | Ra1 , Ra2 | true | Fa1 |
Tb | http://example.org/gov.uk/professions.csv | Cb1 | Rb1 , Rb2 , Rb3 , Rb4 | true | |
Tc | http://example.org/senior-roles.csv | Cc1 , Cc2 , Cc3 , Cc4 , Cc5 , Cc6 | Rc1 , Rc2 | false | Fc1 , Fc2 , Fc3 |
Td | http://example.org/junior-roles.csv | Cd1 , Cd2 , Cd3 , Cd4 , Cd5 , Cd6 , Cd7 | Rd1 , Rd2 | false | Fd1 , Fd2 , Fd3 |
In this example, output for the centrally published lists of organizations and professions, tables Ta and Tb ( http://example.org/gov.uk/data/organizations.csv
and http://example.org/gov.uk/data/professions.csv
respectively), are not required; only information from the departmental submissions is to be translated to RDF. Note the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-suppress-output" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table-suppress-output" class="externalDFN"> suppress output annotation on this delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table .
The following foreign keys are defined:
id | columns in table | columns in referenced table |
---|---|---|
Fa1 | Ca3 | Ca1 |
Fc1 | Cc5 | Cc1 |
Fc2 | Cc6 | Cb1 |
Fc3 | Cc7 | Ca1 |
Fd1 | Cd1 | Cc1 |
Fd2 | Cd7 | Cb1 |
Fd3 | Cd8 | Ca1 |
Annotations for the delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns , delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> rows and delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells in delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table T are shown in the tables below. below:
delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> Column annotations:
id | core annotations | |||||||
---|---|---|---|---|---|---|---|---|
table | number | source number | cells | name | titles | required | virtual | |
Ca1 | Ta | 1 | 1 | Ca1.1 , Ca2.1 | ref | Organization Unique Reference | true | |
Ca2 | Ta | 1 | 1 | Ca1.2 , Ca2.2 | name | Organization Name | ||
Ca3 | Ta | 1 | 1 | Ca1.3 , Ca2.3 | department | Department Reference | ||
Cb1 | Tb | 1 | 1 | Cb1.1 , Cb2.1 , Cb3.1 , Cb4.1 | name | Profession | true | |
Cc1 | Tc | 1 | 1 | Cc1.1 , Cc2.1 | ref | Post Unique Reference | true | |
Cc2 | Tc | 2 | 2 | Cc1.2 , Cc2.2 | name | Name | ||
Cc3 | Tc | 3 | 3 | Cc1.3 , Cc2.3 | grade | Grade | ||
Cc4 | Tc | 4 | 4 | Cc1.4 , Cc2.4 | job | Job Title | ||
Cc5 | Tc | 5 | 5 | Cc1.5 , Cc2.5 | reportsTo | Reports to Senior Post | ||
Cc6 | Tc | 6 | 6 | Cc1.6 , Cc2.6 | profession | Profession | ||
Cc7 | Tc | 7 | 7 | Cc1.7 , Cc2.7 | organizationRef | Organization Reference | true | |
Cc8 | Tc | 8 | 8 | Cc1.8 , Cc2.8 | post_holder | true | ||
Cd1 | Td | 1 | 1 | Cd1.1 , Cd2.1 | reportsToSenior | Reporting Senior Post | true | |
Cd2 | Td | 2 | 2 | Cd1.2 , Cd2.2 | grade | Grade | ||
Cd3 | Td | 3 | 3 | Cd1.3 , Cd2.3 | min_pay | Payscale Minimum (£) | ||
Cd4 | Td | 4 | 4 | Cd1.4 , Cd2.4 | max_pay | Payscale Maximum (£) | ||
Cd5 | Td | 5 | 5 | Cd1.5 , Cd2.5 | job | Generic Job Title | ||
Cd6 | Td | 6 | 6 | Cd1.6 , Cd2.6 | number | Number of Posts (FTE) | ||
Cd7 | Td | 7 | 7 | Cd1.7 , Cd2.7 | profession | Profession | ||
Cd8 | Td | 8 | 8 | Cd1.8 , Cd2.8 | organizationRef | Organization Reference | true |
delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> Column Cc8 , with the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-metadata-20150716/#column-virtual"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-metadata-20151117/#column-virtual"> virtual
annotation specified as true
, is used to relate the person resource, whose name is provided in delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column Cc2 , to the associated post resource within the current delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row of delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table Tc ( { "url": "http://example.org/senior-roles.csv" }
).
delete: <a title="row" href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> Row annotations:
id | core annotations | |||
---|---|---|---|---|
table | number | source number | cells | |
Ra1 | Ta | 1 | 2 | Ca1.1 , Ca1.2 , Ca1.3 |
Ra2 | Ta | 2 | 3 | Ca2.1 , Ca2.2 , Ca2.3 |
Rb1 | Tb | 1 | 2 | Cb1.1 |
Rb2 | Tb | 2 | 3 | Cb2.1 |
Rb3 | Tb | 3 | 4 | Cb3.1 |
Rb4 | Tb | 4 | 5 | Cb4.1 |
Rc1 | Tc | 1 | 2 | Cc1.1 , Cc1.2 , Cc1.3 , Cc1.4 , Cc1.5 , Cc1.6 , Cc1.7 , Cc1.8 |
Rc2 | Tc | 2 | 3 | Cc2.1 , Cc2.2 , Cc2.3 , Cc2.4 , Cc2.5 , Cc2.6 , Cc2.7 , Cc2.8 |
Rd1 | Td | 1 | 2 | Cd1.1 , Cd1.2 , Cd1.3 , Cd1.4 , Cd1.5 , Cd1.6 , Cd1.7 , Cd1.8 |
Rd2 | Td | 2 | 3 | Cd2.1 , Cd2.2 , Cd2.3 , Cd2.4 , Cd2.5 , Cd2.6 , Cd2.7 , Cd2.8 |
delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> Cell annotations:
id | core annotations | |||||||
---|---|---|---|---|---|---|---|---|
table | column | row | string value | value | about URL | property URL | value URL | |
Ca1.1 | Ta | Ca1 | Ra1 | "hefce.ac.uk" | "hefce.ac.uk" | <http://example.org/organization/hefce.ac.uk> | dc:identifier | |
Ca1.2 | Ta | Ca2 | Ra1 | "Higher Education Funding Council for England" | "Higher Education Funding Council for England" | <http://example.org/organization/hefce.ac.uk> | foaf:name | |
Ca1.3 | Ta | Ca3 | Ra1 | "bis.gov.uk" | "bis.gov.uk" | <http://example.org/organization/hefce.ac.uk> | org:subOrganizationOf | <http://example.org/organization/bis.gov.uk> |
Ca2.1 | Ta | Ca1 | Ra2 | "bis.gov.uk" | "bis.gov.uk" | <http://example.org/organization/bis.gov.uk> | dc:identifier | |
Ca2.2 | Ta | Ca2 | Ra2 | "Department for Business, Innovation and Skills" | "Department for Business, Innovation and Skills" | <http://example.org/organization/bis.gov.uk> | foaf:name | |
Ca2.3 | Ta | Ca3 | Ra2 | "xx" | null | <http://example.org/organization/bis.gov.uk> | org:subOrganizationOf | |
Cb1.1 | Tb | Cb1 | Rb1 | "Finance" | "Finance" | |||
Cb2.1 | Tb | Cb1 | Rb2 | "Information Technology" | "Information Techology" | |||
Cb3.1 | Tb | Cb1 | Rb3 | "Operational Delivery" | "Operational Delivery" | |||
Cb4.1 | Tb | Cb1 | Rb4 | "Policy" | "Policy" | |||
Cc1.1 | Tc | Cc1 | Rc1 | "90115" | "90115" | <http://example.org/organization/hefce.ac.uk/post/90115> | dc:identifier | |
Cc1.2 | Tc | Cc2 | Rc1 | "Steve Egan" | "Steve Egan" | <http://example.org/organization/hefce.ac.uk/person/1> | foaf:name | |
Cc1.3 | Tc | Cc3 | Rc1 | "SCS1A" | "SCS1A" | <http://example.org/organization/hefce.ac.uk/post/90115> | <http://example.org/gov.uk/def/grade> | |
Cc1.4 | Tc | Cc4 | Rc1 | "Deputy Chief Executive" | "Deputy Chief Executive" | <http://example.org/organization/hefce.ac.uk/post/90115> | <http://example.org/gov.uk/def/job> | |
Cc1.5 | Tc | Cc5 | Rc1 | "90334" | "90334" | <http://example.org/organization/hefce.ac.uk/post/90115> | org:reportsTo | <http://example.org/organization/hefce.ac.uk/post/90334> |
Cc1.6 | Tc | Cc6 | Rc1 | "Finance" | "Finance" | <http://example.org/organization/hefce.ac.uk/post/90115> | <http://example.org/gov.uk/def/profession> | |
Cc1.7 | Tc | Cc7 | Rc1 | "hefce.ac.uk" | "hefce.ac.uk" | <http://example.org/organization/hefce.ac.uk/post/90115> | org:postIn | <http://example.org/organization/hefce.ac.uk> |
Cc1.8 | Tc | Cc8 | Rc1 | "" | null | <http://example.org/organization/hefce.ac.uk/post/90115> | org:heldBy | <http://example.org/organization/hefce.ac.uk/person/1> |
Cc2.1 | Tc | Cc1 | Rc2 | "90334" | "90334" | <http://example.org/organization/hefce.ac.uk/post/90334> | dc:identifier | |
Cc2.2 | Tc | Cc2 | Rc2 | "Sir Alan Langlands" | "Sir Alan Langlands" | <http://example.org/organization/hefce.ac.uk/person/2> | foaf:name | |
Cc2.3 | Tc | Cc3 | Rc2 | "SCS4" | "SCS4" | <http://example.org/organization/hefce.ac.uk/post/90334> | <http://example.org/gov.uk/def/grade> | |
Cc2.4 | Tc | Cc4 | Rc2 | "Chief Executive" | "Chief Executive" | <http://example.org/organization/hefce.ac.uk/post/90334> | <http://example.org/gov.uk/def/job> | |
Cc2.5 | Tc | Cc5 | Rc2 | "xx" | null | <http://example.org/organization/hefce.ac.uk/post/90334> | org:reportsTo | |
Cc2.6 | Tc | Cc6 | Rc2 | "Policy" | "Policy" | <http://example.org/organization/hefce.ac.uk/post/90334> | <http://example.org/gov.uk/def/profession> | |
Cc2.7 | Tc | Cc7 | Rc2 | "hefce.ac.uk" | "hefce.ac.uk" | <http://example.org/organization/hefce.ac.uk/post/90334> | org:postIn | <http://example.org/organization/hefce.ac.uk> |
Cc2.8 | Tc | Cc8 | Rc2 | "" | null | <http://example.org/organization/hefce.ac.uk/post/90334> | org:heldBy | <http://example.org/organization/hefce.ac.uk/person/2> |
Cd1.1 | Td | Cd1 | Rd1 | "90115" | "90115" | org:reportsTo | <http://example.org/organization/hefce.ac.uk/post/90115> | |
Cd1.2 | Td | Cd2 | Rd1 | "4" | "4" | <http://example.org/gov.uk/def/grade> | ||
Cd1.3 | Td | Cd3 | Rd1 | "17426" | 17426 | <http://example.org/gov.uk/def/min_pay> | ||
Cd1.4 | Td | Cd4 | Rd1 | "20002" | 20002 | <http://example.org/gov.uk/def/max_pay> | ||
Cd1.5 | Td | Cd5 | Rd1 | "Administrator" | "Administrator" | <http://example.org/gov.uk/def/job> | ||
Cd1.6 | Td | Cd6 | Rd1 | "8.67" | 8.67 | <http://example.org/gov.uk/def/number_of_posts> | ||
Cd1.7 | Td | Cd7 | Rd1 | "Operational Delivery" | "Operational Delivery" | <http://example.org/gov.uk/def/profession> | ||
Cd1.8 | Td | Cd8 | Rd1 | "hefce.ac.uk" | "hefce.ac.uk" | org:postIn | <http://example.org/organization/hefce.ac.uk> | |
Cd2.1 | Td | Cd1 | Rd2 | "90115" | "90115" | org:reportsTo | <http://example.org/organization/hefce.ac.uk/post/90115> | |
Cd2.2 | Td | Cd2 | Rd2 | "5" | "5" | <http://example.org/gov.uk/def/grade> | ||
Cd2.3 | Td | Cd3 | Rd2 | "19546" | 19546 | <http://example.org/gov.uk/def/min_pay> | ||
Cd2.4 | Td | Cd4 | Rd2 | "22478" | 22478 | <http://example.org/gov.uk/def/max_pay> | ||
Cd2.5 | Td | Cd5 | Rd2 | "Administrator" | "Administrator" | <http://example.org/gov.uk/def/job> | ||
Cd2.6 | Td | Cd6 | Rd2 | "0.5" | 0.5 | <http://example.org/gov.uk/def/number_of_posts> | ||
Cd2.7 | Td | Cd7 | Rd2 | "Operational Delivery" | "Operational Delivery" | <http://example.org/gov.uk/def/profession> | ||
Cd2.8 | Td | Cd8 | Rd2 | "hefce.ac.uk" | "hefce.ac.uk" | org:postIn | <http://example.org/organization/hefce.ac.uk> |
Notice that delete: <a href="#dfn-value-url" class="internalDFN"> insert: <a href="#dfn-value-url" class="internalDFN" data-link-type="dfn"> value URL is not specified for delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells Ca2.3 and Cc2.5 because in each case the delete: <a href="#dfn-cell-value" class="internalDFN"> insert: <a href="#dfn-cell-value" class="internalDFN" data-link-type="dfn"> cell value is null
and the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-column-virtual" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-virtual" class="externalDFN"> virtual annotation of delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column Cb5 is not defined.
delete: <a title="minimal mode" href="#dfn-minimal-mode" class="internalDFN"> insert: <a href="#dfn-minimal-mode" class="internalDFN" data-link-type="dfn"> Minimal mode output for this example is provided below:
[{ "@id" : "http://example.org/organization/hefce.ac.uk/post/90115" , "dc:identifier" : "90115" , "org:heldBy" : { "@id" : "http://example.org/organization/hefce.ac.uk/person/1" , "foaf:name" : "Steve Egan" }, "http://example.org/gov.uk/def/grade" : "SCS1A" , "http://example.org/gov.uk/def/job" : "Deputy Chief Executive" , "org:reportsTo" : "http://example.org/organization/hefce.ac.uk/post/90334" , "http://example.org/gov.uk/def/profession" : "Finance" , "org:postIn" : "http://example.org/organization/hefce.ac.uk" }, { "@id" : "http://example.org/organization/hefce.ac.uk/post/90334" , "dc:identifier" : "90334" , "org:heldBy" : { "@id" : "http://example.org/organization/hefce.ac.uk/person/2" , "foaf:name" : "Sir Alan Langlands" }, "http://example.org/gov.uk/def/grade" : "SCS4" , "http://example.org/gov.uk/def/job" : "Chief Executive" , "http://example.org/gov.uk/def/profession" : "Policy" , "org:postIn" : "http://example.org/organization/hefce.ac.uk" }, { "org:reportsTo" : "http://example.org/organization/hefce.ac.uk/post/90115" , "http://example.org/gov.uk/def/grade" : "4" , "http://example.org/gov.uk/def/min_pay" : 17426 , "http://example.org/gov.uk/def/max_pay" : 20002 , "http://example.org/gov.uk/def/job" : "Administrator" , "http://example.org/gov.uk/def/number_of_posts" : 8.67 , "http://example.org/gov.uk/def/profession" : "Operational Delivery" , "org:postIn" : "http://example.org/organization/hefce.ac.uk" }, { "org:reportsTo" : "http://example.org/organization/hefce.ac.uk/post/90115" , "http://example.org/gov.uk/def/grade" : "5" , "http://example.org/gov.uk/def/min_pay" : 19546 , "http://example.org/gov.uk/def/max_pay" : 22478 , "http://example.org/gov.uk/def/job" : "Administrator" , "http://example.org/gov.uk/def/number_of_posts" : 0.5 , "http://example.org/gov.uk/def/profession" : "Operational Delivery" , "org:postIn" : "http://example.org/organization/hefce.ac.uk" }]
Prefixes defined within the RDFa 1.1 Initial Context ([ rdfa-core ]) are not expanded; e.g. dc:
for <http://purl.org/dc/terms/>.
Output for delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> tables Ta and Tb ( { "url": "http://example.org/gov.uk/data/organizations.csv" }
and { "url": "http://example.org/gov.uk/data/professions.csv" }
) are not included as the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-table-suppress-output" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-table-suppress-output" class="externalDFN"> suppress output annotation has the value true
for each of the delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> tables .
The delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-property-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-property-url" class="externalDFN"> property URL is specified for all delete: <a title="cell" href="#dfn-cell" class="internalDFN"> insert: <a href="#dfn-cell" class="internalDFN" data-link-type="dfn"> cells in delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> tables Tc and Td .
delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> Columns Cc5 and Cd1 ( { "name": "reportsTo" }
and { "name": "reportsToSenior" }
) use the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-property-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-property-url" class="externalDFN"> property URL and delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-url" class="externalDFN"> value URL annotations to assert the relationship between the post described by a given post insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row insert: </a> and the senior post to which it reports to for the delete: <a title="cell" href="#dfn-cell" class="internalDFN"> cells delete: </a> therein. reports. However, since senior posts and junior posts are described in different tables it is not possible to create nested delete: <a title="object" href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> objects for this particular case.
Similarly, delete: <a title="column" href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> columns Cc7 and Cd8 (both with { "name": "organizationRef" }
) use the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-property-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-property-url" class="externalDFN"> property URL and delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-url" class="externalDFN"> value URL annotations to assert the relationship between the post described by a given post insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row insert: </a> and the organization to which it belongs for the delete: <a title="cell" href="#dfn-cell" class="internalDFN"> cells delete: </a> those delete: <a title="column" href="#dfn-column" class="internalDFN"> columns delete: </a> . belongs.
Finally, note that two resources are created for each delete: <a href="#dfn-row" class="internalDFN"> insert: <a href="#dfn-row" class="internalDFN" data-link-type="dfn"> row within delete: <a title="annotated table" href="#dfn-annotated-table" class="internalDFN"> insert: <a href="#dfn-annotated-table" class="internalDFN" data-link-type="dfn"> table Tc ( { "url": "http://example.org/senior-roles.csv" }
): the person and the post they occupy. The relationship between these resources is specified via virtual delete: <a href="#dfn-column" class="internalDFN"> insert: <a href="#dfn-column" class="internalDFN" data-link-type="dfn"> column Cc8 ( { "name": "post_holder" }
) using the delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-about-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-about-url" class="externalDFN"> about URL , delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-property-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-property-url" class="externalDFN"> property URL and delete: <a href="http://www.w3.org/TR/2015/CR-tabular-data-model-20150716/#dfn-cell-value-url" class="externalDFN"> insert: <a href="http://www.w3.org/TR/2015/PR-tabular-data-model-20151117/#dfn-cell-value-url" class="externalDFN"> value URL annotations. The person delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object provides the value of the name-value pair with corresponding delete: <a href="#dfn-name" class="internalDFN"> insert: <a href="#dfn-name" class="internalDFN" data-link-type="dfn"> name org:heldBy
, thus nesting the person delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object within the post delete: <a href="#dfn-object" class="internalDFN"> insert: <a href="#dfn-object" class="internalDFN" data-link-type="dfn"> object .
delete: <a title="standard mode" href="#dfn-standard-mode" class="internalDFN"> insert: <a href="#dfn-standard-mode" class="internalDFN" data-link-type="dfn"> Standard mode output for this example is provided below:
{ "tables" : [{ "url" : "http://example.org/senior-roles.csv" , "row" : [{ "url" : "http://example.org/senior-roles.csv#row=2" , "rownum" : 1 , "describes" : [{ "@id" : "http://example.org/organization/hefce.ac.uk/post/90115" , "dc:identifier" : "90115" , "org:heldBy" : { "@id" : "http://example.org/organization/hefce.ac.uk/person/1" , "foaf:name" : "Steve Egan" }, "http://example.org/gov.uk/def/grade" : "SCS1A" , "http://example.org/gov.uk/def/job" : "Deputy Chief Executive" , "org:reportsTo" : "http://example.org/organization/hefce.ac.uk/post/90334" , "http://example.org/gov.uk/def/profession" : "Finance" , "org:postIn" : "http://example.org/organization/hefce.ac.uk" }] }, { "url" : "http://example.org/senior-roles.csv#row=3" , "rownum" : 2 , "describes" : [{ "@id" : "http://example.org/organization/hefce.ac.uk/post/90334" , "dc:identifier" : "90334" , "org:heldBy" : { "@id" : "http://example.org/organization/hefce.ac.uk/person/2" , "foaf:name" : "Sir Alan Langlands" }, "http://example.org/gov.uk/def/grade" : "SCS4" , "http://example.org/gov.uk/def/job" : "Chief Executive" , "http://example.org/gov.uk/def/profession" : "Policy" , "org:postIn" : "http://example.org/organization/hefce.ac.uk" }] }] }, { "url" : "http://example.org/junior-roles.csv" , "row" : [{ "url" : "http://example.org/junior-roles.csv#row=2" , "rownum" : 1 , "describes" : [{ "org:reportsTo" : "http://example.org/organization/hefce.ac.uk/post/90115" , "http://example.org/gov.uk/def/grade" : "4" , "http://example.org/gov.uk/def/min_pay" : 17426 , "http://example.org/gov.uk/def/max_pay" : 20002 , "http://example.org/gov.uk/def/job" : "Administrator" , "http://example.org/gov.uk/def/number_of_posts" : 8.67 , "http://example.org/gov.uk/def/profession" : "Operational Delivery" , "org:postIn" : "http://example.org/organization/hefce.ac.uk" }] }, { "url" : "http://example.org/junior-roles.csv#row=3" , "rownum" : 2 , "describes" : [{ "org:reportsTo" : "http://example.org/organization/hefce.ac.uk/post/90115" , "http://example.org/gov.uk/def/grade" : "5" , "http://example.org/gov.uk/def/min_pay" : 19546 , "http://example.org/gov.uk/def/max_pay" : 22478 , "http://example.org/gov.uk/def/job" : "Administrator" , "http://example.org/gov.uk/def/number_of_posts" : 0.5 , "http://example.org/gov.uk/def/profession" : "Operational Delivery" , "org:postIn" : "http://example.org/organization/hefce.ac.uk" }] }] }] }
@id
annotation in the model is ignored for JSON. table
and title
properties have been changed to tables
and titles
, respectively, to be consistent in the usage of plural forms. The document has undergone substantial changes since the first public working draft . Below are some of the changes made: