@@ -267,7 +267,7 @@ \subsection{Synchronous Execution: DALI-sync}
267
267
A concrete DAL service specification will specify zero or more synchronous job
268
268
submission resources and whether they are mandatory or optional. It may mandate
269
269
a specific resource name to support simple client use, or it can allow the
270
- resource name to be described in the service capability metadata
270
+ resource name to be described in the service capability metadata
271
271
(Section~\ref {sec:vosi-capabilities }).
272
272
273
273
\subsection {DALI-examples }
@@ -289,7 +289,7 @@ \subsection{DALI-examples}
289
289
$$
290
290
291
291
DAL services may implement the /examples resource and include it in the
292
- capabilities described by the VOSI-capabilities resource
292
+ capabilities described by the VOSI-capabilities resource
293
293
(Section~\ref {sec:vosi-capabilities }); if they
294
294
do not, retrieving its URL must yield a 404 HTTP error code.
295
295
@@ -588,12 +588,18 @@ \section{Data Types and Literal Values}
588
588
\emph {point }, \emph {circle }, \emph {range }, \emph {polygon }, \emph {moc },
589
589
\emph {multipolygon }, \emph {shape }, \emph {uri }, and \emph {uuid } (see below).
590
590
591
- In the following, where we say \verb |datatype="char" | we also allow the VOTable
592
- \verb |datatype="unicodeChar" |. Where we say \verb |arraysize="*" | we also allow
593
- providers to be more explicit by using a fixed size (e.g. \verb |20 |) or fixed
591
+ A special case is the \emph {json } xtype: It allows publishers to, in
592
+ effect, embed complex, structured data in VOTables. Publishers
593
+ intending to use it are encouraged to carefully review whether
594
+ interoperable and metadata-rich VOTable constructs can be employed
595
+ instead.
596
+
597
+ In the following, where we say \verb |datatype="char" | we also allow the VOTable
598
+ \verb |datatype="unicodeChar" |. Where we say \verb |arraysize="*" | we also allow
599
+ providers to be more explicit by using a fixed size (e.g. \verb |20 |) or fixed
594
600
with a limit (e.g. \verb |20* |) when applicable.
595
601
596
- In the following, where we say "VOTable type metadata" , we mean either VOTable
602
+ In the following, where we say "VOTable type metadata" , we mean either VOTable
597
603
\xmlel {FIELD} or \xmlel {PARAM} elements.
598
604
599
605
Services may use non-standard \xmlel {xtype} values for non-standard datatypes, but if they
@@ -613,7 +619,7 @@ \subsection{Boolean}
613
619
values in service parameters, the serialization for \xmlel {TABLEDATA} must be used.
614
620
615
621
\subsection {Timestamp }
616
- Timestamp values serialised in VOTable or described in service parameters must have
622
+ Timestamp values serialised in VOTable or described in service parameters must have
617
623
the following VOTable type metadata:
618
624
619
625
\begin {verbatim }
@@ -680,15 +686,15 @@ \subsection{Intervals}
680
686
intervals have one or both bounding values that are infinite. Intervals with two identical values
681
687
are equivalent to a scalar value but must still be serialised as a pair of values.
682
688
683
- Floating point interval values serialised in VOTable or described in service parameters must have
689
+ Floating point interval values serialised in VOTable or described in service parameters must have
684
690
the following VOTable type metadata:
685
691
686
692
\begin {verbatim }
687
693
datatype="double" arraysize="2" xtype="interval"
688
694
\end {verbatim }
689
695
\noindent where \verb |float | is also permitted.
690
696
691
- Integer interval values serialised in VOTable or described in service parameters must have the
697
+ Integer interval values serialised in VOTable or described in service parameters must have the
692
698
following VOTable type metadata:
693
699
694
700
\begin {verbatim }
@@ -724,7 +730,7 @@ \subsection{Intervals}
724
730
upper bound of interval(s) respectively.
725
731
726
732
\subsection {Sexagesimal Coordinates }
727
- Coordinate values expressed in sexagesimal form can be described using the
733
+ Coordinate values expressed in sexagesimal form can be described using the
728
734
following VOTable type metadata. For right ascension:
729
735
730
736
\begin {verbatim }
@@ -741,25 +747,25 @@ \subsection{Sexagesimal Coordinates}
741
747
values and seconds is a real value. All hours must fall within [0,24], degrees
742
748
(latitude) must fall within [-90,90], minutes must fall within [0,60), and seconds
743
749
must fall within [0,60). Leading zeros are permitted so that values of minutes and the integer
744
- part of seconds can be expressed as 2-digit numbers. Valid values for \verb |xtype="hms" | are
750
+ part of seconds can be expressed as 2-digit numbers. Valid values for \verb |xtype="hms" | are
745
751
from 00:00:00 to 24:00:00.
746
752
Valid values for \verb |xtype="dms" | are from -90:00:00 to 90:00:00; an optional + sign at
747
- the start is allowed (e.g. +10:20:30) but not required. The upper bound on minutes
748
- and seconds is not part of the valid range; for example 12:34:60 is not allowed and must
753
+ the start is allowed (e.g. +10:20:30) but not required. The upper bound on minutes
754
+ and seconds is not part of the valid range; for example 12:34:60 is not allowed and must
749
755
be expressed as 12:35:00 instead.
750
756
751
757
\subsection {Point }
752
758
Geometry values are two-dimensional; although they are usually longitude and
753
759
latitude values in spherical coordinates this is specified in the coordinate
754
760
metadata and not in the values.
755
761
756
- Point values serialised in VOTable or described in service parameters must have following
762
+ Point values serialised in VOTable or described in service parameters must have following
757
763
VOTable type metadata:
758
764
759
765
\begin {verbatim }
760
766
datatype="double" arraysize="2" xtype="point"
761
767
\end {verbatim }
762
- \noindent where \verb |float | is also allowed.
768
+ \noindent where \verb |float | is also allowed.
763
769
764
770
For points in a spherical coordinate system, the values are ordered as: longitude latitude. For example:
765
771
@@ -769,7 +775,7 @@ \subsection{Point}
769
775
770
776
Coordinate values are not limited to fall within a defined valid range; this is a change from
771
777
DALI 1.1 where equatorial coordinates were explicitly limited. Software may have
772
- to perform range reduction in some coordinate systems (for example, spherical coordinates) in
778
+ to perform range reduction in some coordinate systems (for example, spherical coordinates) in
773
779
order to correctly interpret or use the coordinate values. Coordinate values are more likely to
774
780
work as expected if they are expressed in the simplest form and do not require range reduction.
775
781
For example, in spherical coordinates, \verb |362.0 2.0 | is equivalent to \verb |2.0 2.0 |, but the
@@ -783,7 +789,7 @@ \subsection{Circle}
783
789
\begin {verbatim }
784
790
datatype="double" arraysize="3" xtype="circle"
785
791
\end {verbatim }
786
- \noindent where \verb |float | is also allowed.
792
+ \noindent where \verb |float | is also allowed.
787
793
788
794
The values are ordered as a point followed by a radius. For example:
789
795
@@ -808,11 +814,11 @@ \subsection{Circle}
808
814
more limited context.
809
815
810
816
\subsection {Range }
811
- Range values serialised in VOTable or described in service parameters must have the following VOTable type metadata:
817
+ Range values serialised in VOTable or described in service parameters must have the following VOTable type metadata:
812
818
\begin {verbatim }
813
819
datatype="double" arraysize="4" xtype="range"
814
820
\end {verbatim }
815
- \noindent where \verb |float | is also allowed.
821
+ \noindent where \verb |float | is also allowed.
816
822
817
823
A range is a coordinate bounding box specified
818
824
as two pairs of coordinate values: min-coordinate1 max-coordinate1 min-coordinate2 max-coordinate2.
@@ -825,11 +831,11 @@ \subsection{Range}
825
831
\noindent
826
832
includes values from 10 to 11 (coordinate1) and from 20 to 21 (coordinate2).
827
833
828
- Valid coordinate value limits are specified by \verb |xtype="point" | above.
829
- This range form is used as part of the value of the POS parameter in
830
- \citep {2015ivoa.spec.1223D } and \citep {2017ivoa.spec.0517B } (see also "shape" below).
834
+ Valid coordinate value limits are specified by \verb |xtype="point" | above.
835
+ This range form is used as part of the value of the POS parameter in
836
+ \citep {2015ivoa.spec.1223D } and \citep {2017ivoa.spec.0517B } (see also "shape" below).
831
837
For example, a range can span the meridian (longitude 0): 359 1 -1 1 is interpreted
832
- as the small (2x2 degree) coordinate range from 359 across the meridian to 1 degree
838
+ as the small (2x2 degree) coordinate range from 359 across the meridian to 1 degree
833
839
longitude.
834
840
835
841
Range-valued service parameters may include additional metadata like minimum and
@@ -845,13 +851,13 @@ \subsection{Range}
845
851
more limited context.
846
852
847
853
\subsection {Polygon }
848
- Polygon values serialised in VOTable or described in service parameters must have the
854
+ Polygon values serialised in VOTable or described in service parameters must have the
849
855
following VOTable type metadata:
850
856
851
857
\begin {verbatim }
852
858
datatype="double" arraysize="*" xtype="polygon"
853
859
\end {verbatim }
854
- \noindent where \verb |float | is also allowed.
860
+ \noindent where \verb |float | is also allowed.
855
861
856
862
The array holds a sequence of vertices (points) (e.g. longitude latitude longitude
857
863
latitude ...) with an even number of values and at least three (3) points (six
@@ -864,7 +870,7 @@ \subsection{Polygon}
864
870
10.0 10.0 10.2 10.0 10.2 10.2 10.0 10.2
865
871
\end {verbatim }
866
872
867
- Valid coordinate value limits are specified by \verb |xtype="point" | above.
873
+ Valid coordinate value limits are specified by \verb |xtype="point" | above.
868
874
Vertices must be ordered such that the polygon
869
875
winding direction is counter-clockwise (when viewed from the origin toward the
870
876
sky) as described in \citep {2007ivoa.spec.1030R }.
@@ -946,7 +952,7 @@ \subsection{Shape}
946
952
polygon 10.0 10.0 10.2 10.0 10.2 10.2 10.0 10.2
947
953
\end {verbatim }
948
954
949
- The interpretation and constraints on the coordinate values are as specified
955
+ The interpretation and constraints on the coordinate values are as specified
950
956
for the individual xtypes above.
951
957
952
958
The shape xtype provides a compatible description of the POS parameter in
@@ -988,44 +994,59 @@ \subsection{Shape}
988
994
more limited context.
989
995
990
996
\subsection {URI }
991
- URI values \citep {std:RFC3986 } serialised in VOTable or described in service parameters
992
- should have the following VOTable type metadata:
997
+ URI values \citep {std:RFC3986 } serialised in VOTable or described in service parameters
998
+ should have the type following metadata:
993
999
994
1000
\begin {verbatim }
995
1001
datatype="char" arraysize="*" xtype="uri"
996
1002
\end {verbatim }
997
1003
998
1004
\subsection {UUID }
999
- Universal Unique Identifier (UUID) values serialised in VOTable or described in service parameters
1005
+ Universal Unique Identifier (UUID) values serialised in VOTable or described in service parameters
1000
1006
should have the following VOTable type metadata:
1001
1007
1002
1008
\begin {verbatim }
1003
1009
datatype="char" arraysize="*" xtype="uuid"
1004
1010
\end {verbatim }
1005
1011
1006
- UUID values \citep {std:RFC4122 } are serialised using the canonical ascii (hex)
1012
+ UUID values \citep {std:RFC4122 } are serialised using the canonical ascii (hex)
1007
1013
representation, for example: e0b895ca-2ee4-4f0f-b595-cbd83be40b04.
1008
1014
1015
+ \subsection {JSON }
1016
+
1017
+ For complex data blobs that are not intended to be queriable, publishers
1018
+ may choose to store them as serialised JSON \citep {std:JSON } strings in
1019
+ VOTables. Note that in general, an appropriate VOTable serialisation
1020
+ (e.g., as a \xmlel {GROUP} for a \xmlel {PARAM} or as unrolled
1021
+ \xmlel {FIELD}\/ s or a separate table for table cells) is preferred.
1022
+
1023
+ JSON values serialised in VOTable or described in service parameters should have
1024
+ the following VOTable type metadata:
1025
+
1026
+ \begin {verbatim }
1027
+ datatype="char" arraysize="*" xtype="json"
1028
+ \end {verbatim }
1029
+
1009
1030
\subsection {Unsupported Types }
1010
1031
1011
1032
Support for any specific \xmlel {xtype} in implementations (client or service) is specified in
1012
1033
the service standard document. However, support for a specific \xmlel {xtype} as input (params
1013
- and uploaded content) should generally be considered optional. Implementations should
1014
- be able to read and write the underlying data type without knowing the semantics added
1015
- by the \xmlel {xtype}. In cases where understanding the meaning of an \xmlel {xtype} is required (for
1016
- example, the POS param in SODA) and a service does not support the serialized value,
1017
- the service should issue an error message that starts with the following text with the
1034
+ and uploaded content) should generally be considered optional. Implementations should
1035
+ be able to read and write the underlying data type without knowing the semantics added
1036
+ by the \xmlel {xtype}. In cases where understanding the meaning of an \xmlel {xtype} is required (for
1037
+ example, the POS param in SODA) and a service does not support the serialized value,
1038
+ the service should issue an error message that starts with the following text with the
1018
1039
most specific \xmlel {xtype} noted:
1019
1040
\begin {verbatim }
1020
1041
unsupported-xtype: {xtype} [optional detail here]
1021
1042
\end {verbatim }
1022
1043
and may include additional detail where noted. For example, the value of the SODA POS parameter
1023
- is a \verb |xtype="shape" |, but if the implementation does not support the "range" construct, it
1044
+ is a \verb |xtype="shape" |, but if the implementation does not support the "range" construct, it
1024
1045
would respond (minimally) with:
1025
1046
\begin {verbatim }
1026
1047
unsupported-xtype: range
1027
1048
\end {verbatim }
1028
- This behaviour will allow for new \xmlel {xtype}s to be introduced and for \verb |xtype="shape" |
1049
+ This behaviour will allow for new \xmlel {xtype}s to be introduced and for \verb |xtype="shape" |
1029
1050
to be extended to include additional subtypes in the future.
1030
1051
1031
1052
\section {Parameters }
@@ -1128,7 +1149,7 @@ \subsubsection{RESPONSEFORMAT}
1128
1149
In some cases, the specification for a specific format may be parameterised
1129
1150
(e.g., the media type may include optional semi-colon and additional key-value
1130
1151
parameters). A DAL service must accept a RESPONSEFORMAT parameter indicating a
1131
- format that the service supports and should fail (Section~\ref {sec:response-error })
1152
+ format that the service supports and should fail (Section~\ref {sec:response-error })
1132
1153
where the RESPONSEFORMAT parameter specifies a format not supported by the service
1133
1154
implementation.
1134
1155
@@ -1561,7 +1582,8 @@ \subsection{PR-DALI-1.2}
1561
1582
\begin {itemize }
1562
1583
\item clarified that truncation indicated by OVERFLOW can occur independent of
1563
1584
MAXREC
1564
- \item added new xtypes: hms, dms, moc, multipolygon, range, shape, uri, uuid
1585
+ \item added new xtypes: hms, dms, moc, multipolygon, range, shape, uri,
1586
+ uuid, json
1565
1587
\item changed VOSI-availability to optional
1566
1588
\item changed VOSI-capability so it is only required for registered services
1567
1589
\item clarified use of VOTable serialisation for numbers and boolean
0 commit comments