Datalink v1.0 Proposed Recommendation: Request for CommentsPublic discussion page for the IVOA Datalink Proposed Recommendation. Latest version of the IVOA Datalink can be found at:Reference Interoperable Implementations(Indicate here the links to at least two Reference Interoperable Implementations)CADC ImplementationThe CADC implementation of DataLink provides one or more downloads per input ID an provides links to prototype AccessData services for most science data. Example invocation: http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/caom2ops/datalink?ID=caom:IRIS/f212h000/IRAS-25um The DataLink service descriptor resource is included in VOTables from DataLink, TAP, and SIA services whenever an appropriate identifier column is included in the output. In the output from example above, there is a service descriptor for the prototype AccessData services (currently custom, so there is no standardID). Update: The CADC DataLink service has been updated to the post-RFC period PR: uses the core vocabulary in the semantics field and never returns an access_url and service_def in the same row. For SIA and TAP requests, the service descriptor tells the caller how to invoke the associated DataLink service itself. Example invocation of SIAv2 query: http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/sia/v2query?MAXREC=1&POS=Circle+180+5+0.2 The service descriptor is the second resource in the VOTable.DaCHSGAVO's server package DaCHS contains an implementation of Datalink both in auxiliary resources for SSAP and SIAP and standalone. The Datalink cores section of the reference manual discusses how operators define datalink behaviour (this includes the definition of data processing services and hence is longer than it would need for datalink proper).. At the Heidelberg data center, several services use these facilities, among them ivo://org.gavo.dc/califa/q2/s, ivo://org.gavo.dc/feros/q/ssa, ivo://org.gavo.dc/mlqso/q/s, and ivo://org.gavo.dc/theossa/q/ssa. There are also pointers to datalink documents in the obscore table (try something likeselect * from ivoa.obscore where access_format like '%datalink%' on ivo://org.gavo.dc/tap).
SPLATRecent versions of SPLAT, a spectral analysis tool, uses datalink to discover how to do server-side manipulations of spectra it retrieves. You can try this over SSAP on, e.g., the TheoSSA, califa ssa, and Flash/Heros services. Or also get the access information to download a spectrum from a Datalink table, which can be tested on the ObsCore results from the CADC service. -- MargaridaCastroNeves - 2014-11-17Implementations Validators(If any, indicate here the links to Implementations Validators) A validator is being developed by VO Paris.RFC Review Period: 2014-07-04 - 2014-09-01<-- REMOVE comment-out for TCG Review Period Comments from the IVOA Community during RFC period: 2014-07-04 - 2014-09-01NOTE: I will use bullets and italics for the official responses (from the editor, pending agreement of the authors so some might change in the next few days)
> Page 16. http://www.ivoa.net/rdf/datalink does not exist. 404 -> Author Response(2014 July 17th) by MarkusDemleitner In this case, a 404 is almost fine, as the URL really only defines a name space, and in this role there's not requirement it resolves to anything at all. In our case, though, we promise there's an RDF file there that would let people figure out semantic relationships between the various terms that are there (e.g., a "flatfield" is some kind of "file used in data reduction"). Things still work with the 404, but it'd suck if it were there at REC time. So, is anyone actively working on getting the vocabulary in? Can we discuss it a bit, too?
> Response (2014 July 27th) by FrancoisBonnarel I am convinced that putting the two "linking" mechanisms described at exactly the same level is not clarifying the whole thing. Clarifying this requires some changes in the introduction. Norman also pointed this before interop and I supported the idea to change the introduction at that time. The introduction should start by invocating the {links} resource. A few exemples of usage should be given. The dataLink name should be restricted to this resource. And service descriptor is ..... "Service descriptor". The service descriptor should be introduced historically like Pat did, in his response on the list, starting from the need of declaring the DataLink service in a DAL query response. A few other examples could be given for service descriptor to illustrate where they are usefull. > 2) Technical questions: Concerning the second method (with the PARAM definitions by GROUP): The possibilities opened by this method is very promising. At the first view, it seems simple and flexible, and very useful to build on the fly associated user forms. a) However, I do not see how to describe REST links, or any URL for which the prefix depends of the parameter values. May be I'm wrong, but it seems that this method can only build URL on this template : http://static_url_prefix?param1=val1¶m2=val2... However, it is quite common that some servers provide their collections on this basis URL template : http://host/variable_path/datasetID (VOSpace links ?). It would be great if basis URLs could be also described by this datalink method. -> Group member Response (2014 July 18th ) by MarcoMolinaro I think this is a good point, and maybe it doesn't affect only Datalink, query interfaces from most of the protocols work in the HTTP-GET way. I don't see how this can be answered now, but maybe we can take it into account for future revisions at a higher level than the simple protocol. -> -> Author Response(2014 July 21st) by MarkusDemleitner Hm. I'm not wild about this -- much as I appreciate good-looking URLs, I think allowing this is not going to make a better standard. In particular, I'd claim that even if people actually ran such services already, they'd have to write wrapper code anyway in order to make it datalink compliant. That wrapper code would have to do the conversion from IVOID (which should be what's passed in through ID) to their local datasetID, and then going from HTTP parameter to URL part should be straightforward (i.e., of the order of two lines of code). I don't think a complication of the standard is warrented there. -> --> Answer (2014 July 21st) by PierreFernique I have to say that I'm not a very keen supporter of the REST paradigm, but as the document seems to follow this recommendation (introduction page 5), and as VOSpace is RESTfull, it is surprising that the links to the REST servers will be not supported "natively" by the protocol. And in any case, a wrapper is generally a "last resort" solution, rarely implement directly on the server side, and very badly maintained in the long term (my experience). More generally, as I partially said, the GROUP mechanism does not take into account any variable URL prefix (before the '?'), nor HTTP parameters without any value (flags) or combination of values in the same parameter. It will be a potential issue. A few existing URLs possibly used in a datalink response for which the GROUP mechanism won't work (red fields)... 1) any VOSpace URLs 2) Dedicated "static" HTTP trees http://www.cadc.hia.nrc.gc.ca/data/pub/HSTCA/u21x0102t_prev.jpg Note: The above URL is to a custom CADC service for archive data delivery, which has nice pretty URLs. In our DataLink prototype you would see this URL as an access_url value in the links table and would not have to construct it. -- PatrickDowler - 2014-09-22 http://alasky.u-strasbg.fr/SDSS/DR9/color/Moc.fits 3) A lots of cone search servers : http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/sia/CFHT/query?POS=83.633083,22.0145&SIZE=0.2333&FORMAT=image/fits&VERB=2 http://wfaudata.roe.ac.uk/ukidssdr9-siap/?POS=83.633083,22.0145&SIZE=0.233&FORMAT=image/fits http://vo.imcce.fr/webservices/skybot/skybotconesearch_query.php?&-ra=83.633083&-dec=22.0145&-size=28.0,28.0&-mime=votable&-out=basic&-loc=500&-search=Asteroids+and+Planets&-filter=120+arcsec 4) Dedicated services: http://alasky.u-strasbg.fr/footprints/cats/vizier/B/DENIS?product=MOC&nside=512 5) TAP services : http://geadev.esac.esa.int/tap-dev/tap/run/tap/sync?REQUEST=doQuery&LANG=ADQL-2.0&QUERY=SELECT+TOP+1000+*+FROM+gums.mw+WHERE+1%3DCONTAINS%28POINT%28%27ICRS%27%2C+alpha%2C+delta%29%2C+CIRCLE%28%27ICRS%27%2C+80.89417%2C+-69.75611%2C+0.2333+%29%29
> Author response (2014 July 27th) by FrancoisBonnarel service descriptors and RESTFULL services : Pierre is right that the current version of the description doesn't allow to describe all sort of services, for example REStfull interfaces. Including in the service descriptor metadata to describe template roots or pathes in Restfull URL is probably out of the scope of the first version. (But maybe not of the second one as Pat said in his response) However right now in the descriptor we should at least add a "URL type" PARAMETER in the descriptor, beside . I see at least three possible values for this param: HTTP GET, RestFull, Mixed. Current version of the draft only details the "HTTP GET" case with the "InputParams" GROUP.
> b) Also, I did not find any thing concerning HTTP encoding requirements. May be a short paragraph could avoid some stupid future bugs (param=val must be correctly HTTP encoded..., the & character must be used as parameter separator) Group member Response (2014 July 18th) by MarcoMolinaro I'd limit it to recommending proper HTTP encoding, that should be sufficient for HTTP GET requests ('&' is not the only possible separator, ';' can also be used for nested GET...I don't see where we can use this latter case, but...)
<INFO name="SERVICE_PROTOCOL" value="1.0">datalink</INFO>(This is fashioned after SSAP) What does everyone think? Should something like this get into VOSI? The "dispatch according to content"-thing appears to be something quite frequent, and offering a general, non-heuristic method to do it sounds like good sense to me.
<INFO name="SERVICE_PROTOCOL">ivo://ivoa.net/std/DataLink#links-1.0</INFO>That enables us to use the same mechanism to refer to new types of services we haven't invented yet. <INFO name="SERVICE_PROTOCOL">http://wiki.ivoa.net/twiki/bin/view/IVOA/NotInventedYet20140926</INFO>Question (2014 July 21st) by JoseEnriqueRuiz If "empty value" means "ALL values", one question rises here: How to make a query to gather those datasets with param=empty/NULL/blank ? I do not know if there are use cases for this :-/
* September 10th 2014: a compilation of Discussion among authors on top of FrancoisBonnarel remarks (July 27th) > 2 ) service descriptors and RESTFULL services : Pierre is right that > the current version of the description doesn't allow to describe all > sort of services, for example REStfull interfaces. Including in the Answer by MarkusDemleitner Well -- that's for the service descriptor, and this is obviously only relevant when a descriptor is embedded in DAL resoponses. In datalink responses you're free to pass whatever URLs you fancy. For DAL responses, the things described are in all likelihood post-processing services (e.g., cutout, recalibration), and I doubt many services exist that do these kinds of things with a URL schema violating what the service descriptor can do. On the other hand, you're explicitely free to describe a datalink service itself in your service descriptor -- if your data structure is sufficiently complex, that's what I'd say you should do; that's what datalink is for: decoupling the service interface from the actual representation. Which is to say: I don't believe we should make things more "flexible" here. Flexibility is a liability for implementations, and a liability for interoperability. I think we should have a much stronger case before adding features, much less just announcing them. Answer to MarkusDemleitner by LaurentMichel I agree that it is not the right time to start a discussion about a general mechanism building URL templates, but the draft cannot ignore the existence of the RESTfull encoding. The strong reason for that is that REST is used by 2 VO standards likely to be involved in datalink responses at least : VOSpace and UWS. This point could be mentioned either by adding a URLType as FB proposed (see above July 27th) or by making the standardID mandatory even for free services. I prefer this second solution since *it avoids possible inconsistencies with URLType. > 3 ) Jose Enrique pointed a difficulty with the "service_def" paragraph. > The potential inconsistence (or redondancy) between the acces_url in > the {links} resource response table and the accessURL in the service > descriptor. > The accessURL in the service descriptor should be generic. Answer by MarkusDemleitner I'm not sure I understand what you're saying here -- I believe we essentially have three options: (1) force access_url (table)==accessURL (param) (2) accessURL given, access_url NULL (3) access_url given, acesssURL not in the service descriptor within a datalink response. Although it sucks to have the same information in two places, (1) from my implementation experience is the most straightforward, and I believe we should simply mandate that. (2) and (3) I could live with. What I'm firmly against implying that there may be situations in which access_url!=accessURL -- that way lies madness. > By the way, as a kind of shortcut, the "service descriptor resource" Answer by MarkusDemleitner Hm -- I don't like the "By the way" here, even in the introduction. I agree, though, that saying there are two distinct but related data-linking mechanism probably is confusing. >However right now in the descriptor we should at least add a "URL type" PARAMETER in the descriptor, beside . I see at least three* possible* >values for this param: HTTP GET, RestFull, Mixed. Current version of the draft only details the "HTTP GET" case with the "InputParams" *GROUP. Answer by MarkusDemleitner As I said, I'm against over-generalising the protocol, and in particular, building in things that appear to claim we support something that might come in a future standard -- or might, as so often in VO standards, not. -> Discussion LaurentMichel / MarkusDemleitner Laurent: I'm still not thinking that supporting RESTfull URLs can be considered as an over-generalisation. Markus: Hm -- its URL templating, something we've never really tried in the VO as far as I'm aware, and something that has quite a few opportunities to mess up. After all, there are many, many URL schemes, and most I've seen are fairly funky... Laurent: I insist a little bit just to keep open the possibility to quickly address VOSpace records with Datalink. Finally replacing http://server/service?ID=paramValue&action=download with something like http://server/service/$ID/download where $ID is replaced with paramValue does not look so much complex. I've no ambition about templating any sort of URLs but just GET-HTTP en REST. Markus: Hm -- the devil usually lies in the details --for instance, how is $ID-pathcomp to be interpreted? $ID_pathcomp? Should the value of the ID param still be passed as an HTTP parameter? What's to happen if a parameter referenced in the URL is not a string? Are there any special rules for quoting these things? And so forth. Laurent: You are right, that is why the URL building mode must be specified somewhere else. This point could be tricky and that cannot be sorted out for this document. That is why I suggest (with françois) to reserve a field specifying how the URL must be constructed and to work in GETHTTP mode until a proper way to build REST URLs is specified. * Markus*: Meaning: If we write this into a standard (and I admit there seems to be a use case), we should have implementations first to see what can go wrong. Laurent: A datalink pointing onto a VOSpace, I can do that. Laurent: The document must have a little room for this possibility even if the way to do the URL encoding is not achieved in the first version. Markus: Could you live with the language on telling clients to ignore services with an empty accessURL? Laurent: In a general way, I'm suspicious about the idea or triggering a client action from an absence of a parameter. Markus :...but I'd say in this case there's not much that can go wrong -- implementors just need to be aware that empty access URLs may turn up in the future. Given that they are in no risk of erroneously operating a service they have no access URL for, at least there won't be silent failures either way. Laurent: right Markus: That way, we can later use that as a sentinel that more complex URL building mechanics will be required, and nothing will break. Laurent: I definitely prefer to say somewhere that the URL is HTTP-GET, REST or something else. From an implementer point of view, the right place to state that is the standardID. It is already used to know how to build URLs for VO services and its scope can be extended for non VO URLs. If we agree with that, we can postpone the definition of the new supported standardIDs and DATALINK will work as it is defined yet by the 1.0 standard. Markus : I wouldn't have a problem with that, either. But someone would have to write some prose urging client authors to check the standard id (case-insensitively, and possibly ignoring minor versions if they don't care). Laurent: AS far as I know, there is no standard ID referring to an external URL (e.g. ivo://ivoa.net/nostd/url) I've no idea about what is legal to do here. As I said, the first version of the protocol would just have to mention the role of the extended standardID and state the GETHTTP is taken by default . Meanwhile I'll have a look at a possible formalism for non standard standardID -> Back to initial MarkusDemleitner answer to FrancoisBonnarel for URLType proposal If we believe there's an actual place for URL templating, then we should say (provided we go for access_url==accessURL above) or If accessURL is NULL or missing, clients must ignore the service definition. This is an extension mechanism that might, for instance be used for more complex ways of URL generation in future standards. If we really went for URL templating later, we could then say something along the lines of "for your crazy URL scheme, define accessURL-template and make accessURL null. Then do $FOO in your template yadda...". But while we're talking: I have a really bad feeling about passing this on without more client prototypes, as least. We have something in SPLAT that we'll need to review against the current spec, in particular as regards telling datalink from data processing services (I seem to remember Margarida had an issue there, but she's on vacation right now). Who else has clients running? Non-trivial ones, even? If nobody has, how can we make them happen? [Disclosure: Shortly before Madrid, I've started a bit of javascript that would provide a SAMP-enabled datalink+data processing client in the Browser; but when it didn't finish for Madrid for this reason and that, I let it slip again. If someone felt like this is a good idea, I'd gladly pull it out again]. _*Answer by PatrickDowler to the whole discussion* -- 1. parameterised URLs are not going to help you use VOSpace -- there is a lot more to RESTful service invocation than URL templates. -- 2. the more important thing we are missing is any way to describe authentication requirements as auth pretty much always means different URLs (usually different scheme and/or path). These two points are related as they both come up when one is trying to deal with RESTful web services: it is with restful services that the access_url in the table will usually contain something different (longer) than the accessURL in the service descriptor. One solution would be to have the {links} table contain either an access_url or a service_def but not both; in the latter case, the client would have to use the service_def to find a descriptor resource and construct the URL. This would get rid of a redundancy that leads to the conflict in #3 below, and that is one that comes up with REST services like VOSpace. As for REST services, this is quite a complex issue and I think we can't do much better than give the descriptor with standardID and accessURL (for that capability) and rely on the client knowing all that the stadardID entails. Even then, it isn't so simple... For vospace, one would have to convey the standardID and accessURL for the {nodes} resource and the standardID and accessURL for the {transfers} resource. These have different semantics and the client needs both in principle. So, in this case maybe the right way to use "datalink" is to put two rows in the {links} table, each with the same vos URI, and with service_def values to indicate the two capabilities being described. One could only describe the normal VOSpace params (eg for {nodes] that is limit, uri, detail, and view, iirc). There is no feasible way to convey the calling semantics. Now, to actually describe a REST service, one needs something fancier, eg WADL or things like that as discussed in GWS. The problem with those, and with PDL, is that we cannot embed them inside VOTables. We could/should discuss (soon) whether VOTable needs to allow a kind of resource that can embed such descriptors, or such things need to be designed to be embeddable in VOTable in a formal way... but that is not something for DataLink-1.0 ... for now, we should give advice and improve the vospace example. It would be nice to be able to describe multiple capabilities in a single service_def. One thing that is missing from everywhere except VOSI capabilities is a way to describe the authentication requirements of an interface. In VODataService, I recall that the cardinality is: 1 service ... N capability (standardID) ... M interface (accessURL) whereas our service descriptor only supports: 1 service ... 1 capability (standardID) ... 1 accessURL and our accessURL doesn't have any additional metadata; the biggest thing missing for practical use is info about authentication, but we'll have to live with that until 1.1 An addendum regarding URL templating: the point of templating is (generally) to let clients construct a URL which they know will go direct to a resource. For that you need things like WADL, which aren't necessarily pretty, and which introduce yet another document and yet another technology. However you don't necessarily need templating, if your single/starting {link} URL produces a document which points to the other ones. If a {link} document says "_here_ is the image, here is the background, ..." then you don't need templates -- the client just needs to 'follow its nose', in exactly the same way that a human does on an HTML page. This is the 'Linked Data' idea, and is easy. -- NormanGray, 2014-10-21 Comments from TCG member during the TCG Review Period: 2014-10-01 - 2014-10-29WG chairs or vice chairs must read the Document, provide comments if any and formally indicate if they approve or not the Standard. IG chairs or vice chairs are also encouraged to do the same, althought their inputs are not compulsory.TCG Chair & Vice Chair ( _Séverin Gaudet, Matthew Graham )Requires a second reference implementation and any implementation validators to be described above. Otherwise approved. -- SeverinGaudet - 2014-10-02Applications Working Group ( _Pierre Fernique, Tom Donaldson )The document is reasonably clear and readable. I do have a few concerns that I'd like to discuss before approval, recognizing with apologies that some of these would have been more constructive earlier in the process. Reference Implementations Creating reference implementations help ensure that a spec is unambiguous, complete, practical and interoperable. With those benefits in mind, I'd love to see some enhancements to the reference implementations and/or the descriptions of them with respect to this spec.
Response: Efficient Access to ProductsThe link from a record in the response to a preview can be conveyed to clients using a service descriptor. 1. set and ID attribute on a field with an identifier, e.g.: <FIELD ID="IDVALUE" ... />2. include a service descriptor for a custom "service" that returns the preview in the discovery response, e.g.: <RESOURCE type="meta" utype="adhoc:service" ID="previews"> <PARAM name="accessURL" value="http://example.com/previews" /> <GROUP name="inputParams"> <PARAM name="IDENT" datatype="char" arraysize="*" value="" ref="IDVALUE" /> <PARAM name="SIZE" > <VALUES> <OPTION value="small" /> <OPTION value="medium" /> <OPTION value="large" /> </VALUES> </PARAM> </GROUP> </RESOURCE>3. This tells the client they can create URLs of the form: http://example.com/previews?ID=<value from te IDVALUE column>&SIZE=<small|medium|large> It does not tell then what this service "means". That's hard (maybe in a future version). You can add UCDs to the input params to help say what they mean... The values for SIZE are arbitrary; here I chose words, but one could have made that param datatype="integer", or something else. Once a few places actually do that and if we can agree on what the SIZE parameter should be, then that service could be a standard and thus get a standardID to describe it... For a custom service, you probably want to adorn that service descriptor with some additional descriptive text (INFO element?) as allowed by VOTable. The less efficient way to do this is to use the links response and tag the link's semantics value as #preview. It is more explicit, it allows for static URLs or service descriptors, it allows for a text description clients could display, but it is an extra call. You can send multiple ID values to the links resource in one call, so it isn't 1 extra call per discovered dataset, but it is work to implement and more things have to happen while (I assume) trying to display results. -- PatrickDowler - 2014-11-28 Data Access Layer Working Group ( François Bonnarel, Marco Molinaro )Data Model Working Group ( _Jesus Salgado, Omar Laurino )Nice standard. Just a couple of very small comments. | ||||||||
Changed: | ||||||||
< < |
| |||||||
> > |
| |||||||
Grid & Web Services Working Group ( André Schaaff, Brian Major )Approved -- AndreSchaaff - 2015-01-12Registry Working Group ( _Markus Demleitner, Pierre Le Sidaner )* Sect. 1: "The current version provides no way to describe the output of a service, but this may be added in a future (minor) revision of this specification." -- this is potentially of major importance in the use of the standard. Is there no way to have some mechanism already in v1.0? Even a information on mime type and type (image, spectrum, catalog) for the client to be able to plot the output or send it by sampResponse:
Wouldn't it be more understandable to have an enumeration as in: The following resources must be provided by a datalink service (and can be discovered at the capability endpoint): * <base-url>/<name> -- one or more endpoints with operator-defined names returning datalink documents. <name> must not contain slashes * <base-url>/availability -- VOSI availability endpoint * <base-url>/capabilities -- VOSI capabilities endpoint Defining that <name> must not have slashes would also provide a means to find out the VOSI URLs from a links URL, which otherwise seems to be impossible using the mechanisms defined in the current document. Response:
Response:
http://example.com/datalink/links -- anonymous access http://example.com/datalink/links/auth -- basic authentication http://example.com/datalink/links/auth/x509 -- that redirect to https x509 authentication http://example.com/datalink/links/auth/shiboleth -- that redirect to https shiboleth identity federation authentication Response:
refer to [1] => http://www.ivoa.net/DALI/ give a 404 should be http://www.ivoa.net/documents/DALI if the form should be http://foo.bar/datalink?ID=ivo://example.org/data? put an example in the text Response:
section 2. Is it actually necessary to repeat it here? Response:
In the example in section 2.3. vod: is being used as the prefix for http://www.ivoa.net/xml/VODataService/v1.1. The spec shouldn't do that, as the recommended canonical prefix for VODataService 1 is vs:. So, it should be xmlns:vs= "http://www.ivoa.net/xml/VODataService/v1.1" and further down xsi:type="vs:ParamHTTP" Response:
content_length why don't you use access_estsize from obscore ? content_type why don't you use access_format ? Response:
Do the authors forsee a necessity to discover in the Registry whether an Obscore or DAL service has a datalink service? Should we maybe recommend (or require?) that such services should have the datalink capability as part of their registry record? Response:
concerns. Based on this trust, we approve the document. Markus & Pierre Thanks. -- PatrickDowler - 2014-11-28 Semantics Working Group ( _Norman Gray, Mireille Louys )The document looks good -- the right length, and clear. I've just looked at the DataLink PR document with a particular REST-shaped question in mind. I found that I couldn't get a satisfactory answer from the document. I wanted to ask: would it be possible for a client to ask for the links response in a format other than VOTable, via an Accept header, and would it be permissible for a service to provide it in a different format? In my mind, obviously, is allowing a service to provide a Linked Data style response, meaning that the response is in one or other RDF syntax. (DataLink is a poster-child Linked Data application -- note, I'm not suggesting that it's a priority to do this, but I would hope that the spec would make it permissible for an intern to implement it one afternoon in future) 1. A REST-style GET of this URL would imply that the client could make its GET request with an Accept header. If that's 'application/x-votable+xml', that's fine, but it should be at least permissible to give a different Accept header (such as text/turtle, for example). If the service can't supply that, it's supposed to reply '406 Not Acceptable'. I can see that it would be permissible to request a links resource with ?RESPONSEFORMAT=text/turtle, and permissible for a service to reply with such content (so the answer to my original question is 'partly yes'). Is it permitted, however, for a service to respect the Accept header? (this would probably be a more normal pattern in a Linked Data context). My reading of Sect. 3.3 "Unless the incoming request included a RESPONSEFORMAT parameter requesting a different format, the content-type header of the response MUST be application/x-votable+xml" is that the answer is no. The discussion above includes suggestions that implementers should be aware of, and respect, well-known HTTP semantics, which I take to mean allowing the full range of HTTP interactions, including Accept-based retrievals (pace this discussion, it might be worth a remark in the document to remind server- and client-side implementors that there's this slightly different style possible). The cross-reference to DALI (specifically its Sect 4.2) implies I think that the 406 error would be permitted (as being a normal HTTP error code).Response:
http://example.org/foo/links , should I get a 406 response, rather than a 200 VOTable? (I think the answer is 'yes'; and as noted above this would be permissible).
3. I will ritually remark that the x-* media subtype is deprecated, and that the process for registering new subtypes (such as application/votable) is intended to be streamlined compared to what it was before.
Response:
Response:
Education Interest Group ( _Massimo Ramella, Sudhanshu Barway )Time Domain Interest Group ( _John Swinbank, Mike Fitzpatrick )Data Curation & Preservation Interest Group ( Françoise Genova )Knowledge Discovery in Databases Interest Group ( George Djorgovski )Theory Interest Group ( _Franck Le Petit, Rick Wagner )Standards and Processes Committee ( Françoise Genova)--><--
|