- From: Ig Ibert Bittencourt <ig.ibert@gmail.com>
- Date: Fri, 1 Apr 2016 06:10:59 -0300
- To: Rob Atkinson <rob@metalinkage.com.au>
- Cc: Linda van den Brink <l.vandenbrink@geonovum.nl>, "public-sdw-comments@w3.org" <public-sdw-comments@w3.org>, Phil Archer <phila@w3.org>
- Message-ID: <CAKNDvRVcsN+6e67YXxFaL_h6HNHLCGZHDQJsw4Mpq-Mnrt3F6Q@mail.gmail.com>
Hi Linda and Ron, Thanks for your comment. @Linda, I am going to change the BP based on your suggestions and make the statement "API documentation should describe the data(set) it exposes" explicit in the Implementation Section. @Ron, very nice example. I know that there were some academic experiments with Semantic SOA and Semantic Services, but not sure this evolved from 5 years ago. With regards SIRF experiment, please let me know if it is the second one from the merged BP I sent to this list. Best, Ig 2016-03-31 8:37 GMT-03:00 Rob Atkinson <rob@metalinkage.com.au>: > The other aspect that is not well handled in most SOA platforms is the > relationship between the content model and the service model - its not > enough to describe the content without being able to describe the domain > and range of parameters of APIs. In the SIRF experiment we showed this can > be handled by, for example the RDF-QB binding of domain and range of > dimension specifications, and then binding these to parameterised URL via > void:technicalFeature annotation. This is not the only possible way - but > the separation of concerns is important to allow each aspect to be usefully > expressed and the re-use of semantics where applicable across content and > service descriptions is the key. > > As a quick grounding example, in many countries a telephone book may not > be exposed via a search on address - (so bad folk cant turn up at a likely > looking place and find the phone number to call to check if it is > unoccupied).. This is a service interface restriction which is not easily > expressed from the content model and explanation of a result set. Other > examples include large datasets where only some dimensions are indexed or > queryable at all - maybe because of the way data is partitioned in the > storage layer. > > Obviously the service description needs to share elements, but is not > identical to the content description. I dont really feel this is well > articulated in most existing architectures - but is achievable with "best > practice" even if mishandled or ignored in "common practice" > > Rob Atkinson > > On Thu, 31 Mar 2016 at 19:05 Linda van den Brink < > l.vandenbrink@geonovum.nl> wrote: > >> Hi Ig, >> >> >> >> Yes, I agree you could shorten the Intended Outcome, for example like >> this: >> >> >> >> The whole set of information related to the API—set of values, how to >> use it, notices of recent changes, contact information, and so on—should be described, >> easily browsable on the Web, and accessible to humans and machines. >> >> >> >> And then move the rest of the contents to the Possible Approach. In that >> section you could also add the statement “API documentation should >> describe the data(set) it exposes” which is in your text already >> implicitly, but I thought it a good thing to have this explicit. >> >> >> >> Linda >> >> >> >> *Van:* Ig Ibert Bittencourt [mailto:ig.ibert@gmail.com] >> *Verzonden:* woensdag 30 maart 2016 19:36 >> *Aan:* Linda van den Brink >> *CC:* public-sdw-comments@w3.org; Phil Archer >> >> >> *Onderwerp:* Re: RE: [DWBP + SDW: API] Related Best Practice >> >> >> >> >> >> Hi Linda, >> >> >> >> I copied the proposition of the merge between the BPs below. All the >> merges are presented in yellow. One point I would like to mention is about >> the intended outcome. I think it could be simplified (for example, saying >> that it should be possible for humans and machines to access the complete >> documentation) and the more detailed information could be presented in the >> Possible Approach to Implementation section. >> >> >> >> Please, let me know what do you think. >> >> >> >> Best >> >> Ig >> >> >> >> >> >> >> >> *Best Practice 27: Provide complete documentation for your API* >> >> *Provide complete information on the web about your API. Be sure to >> update documentation as you add features or make changes.* >> >> >> >> *Why* >> >> Developers are the primary consumers of an API and the API documentation >> is the first clue about the quality and usefulness of the API. When API >> documentation is complete and easy to understand, developers are probably >> more willing to continue their journey implementing it. In order to >> develop against it, they will need to understand how to use it. Providing >> comprehensive documentation in one place allows developers to code >> efficiently. Highlighting changes enables your users to take advantage of >> new features and adapt their code if needed. >> >> *Intended Outcome* >> >> The whole set of information related to the API—set of values, how to >> use it, notices of recent changes, contact information, and so on—should be described >> and easily browsable on the Web. >> >> Developers should be able to obtain detailed information about each call >> to the API, including the parameters it takes and what it is expected to >> return. >> >> The API should be self-documenting as well, so that calls return helpful >> information about errors and usage. >> >> Recent changes to the API itself should be readily discoverable by users. >> >> API users should be able to contact the maintainers with questions, >> suggestions, or bug reports. >> >> It should be possible for machines to access the API docummentaion in >> order to help developers build API client software. >> >> *Possible Approach to Implementation* >> >> A typical API reference provides a comprehensive list of the calls >> the API can handle, describing the purpose of each one, detailing the >> parameters it allows and what it returns, and giving one or more examples >> of its use. One nice trend in API documentation is to provide a form in >> which developers can enter specific calls for testing, to see what >> the API returns for their use case. There are now tools available for >> quickly creating this type of documentation, such as Swagger >> <http://swagger.io/>, io-docs <https://www.mashery.com/api/io-docs>, >> OpenApis <https://openapis.org/>, and others. >> >> EXAMPLE 30 >> >> · OGC 'capabilities documents' provide an example of a >> standardized API description. EveryWFS >> <http://w3c.github.io/sdw/bp/#dfn-wfs> or WMS >> <http://w3c.github.io/sdw/bp/#dfn-wms> service, for example, understands >> the request 'getCapabilities', and then returns an XML document giving >> information about the service such as the Coordinate Reference system used, >> the data structure schema, available map layers, and so on. >> >> · Use of void:TechnicalFeature to describe the API for a (VoID) >> Dataset <http://www.w3.org/TR/void/#dataset> (or subset); providing a >> set of values, terms or entities for each API parameter (ref. CSIRO's Spatial >> Identifier Reference Framework <http://portal.sirf.net/about-sirf>). Use >> [RFC6570 <http://w3c.github.io/sdw/bp/#bib-RFC6570>] URI Templates to >> bind API parameters to RESTful URLs. A 'short-form' of the identifier may >> be required for usage in the API; this may be defined as a SKOS notation. >> >> · Use of Data Cube >> <http://www.w3.org/TR/vocab-data-cube/#data-cubes> with Dimensions (as >> specified in [vocab-data-cube >> <http://w3c.github.io/sdw/bp/#bib-vocab-data-cube>]) to define the data >> available from a predicably structured dataset - "what, where, when", and >> so on (ref. CSIRO'sSpatial Identifier Reference Framework >> <http://portal.sirf.net/about-sirf>); each Dimension of the Data Cube is >> bound to a parameter in the API method. The "where" Dimension of a Data >> Cube, if specified as aqb:CodedProperty, may bound to a set of >> SpatialThings (e.g. using the property qb:codeList). The URI Set (the >> set of all SpatialThings mentioned in the Data Cube) provides a 'controlled >> vocabulary' of locations for which 'observations' (data points) in the Data >> Cube are available (e.g. air quality data is available at these locations). >> >> · A versioned API: OpenStreetMap API >> <http://wiki.openstreetmap.org/wiki/API> >> >> · Use of HAL: 'JSON Hypertext Application Language', see IETF >> draft <https://tools.ietf.org/html/draft-kelly-json-hal-07>. >> >> · Use of Swagger <http://swagger.io/> and swaggerhub >> <https://swaggerhub.com/>; the Dutch Cadastre has published the WFS >> services in its national geo-portal, PDOK, as Swagger APIs on Swaggerhub, >> for example an API to get data about noise pollution near highways >> <https://swaggerhub.com/api/pdok/geluidskaarten/1.0>. Swagger also >> offers an example reference for a pet store API >> <http://petstore.swagger.io/#/>. >> >> · Packaging a coordinate transformation API for simple re-use. >> >> · Relating the API to its description using HTTP link headers. >> >> *How to Test* >> >> Check that every call enabled by your API is described in your >> documentation. Make sure you provide details of what parameters are >> required or optional and what each call returns. The quality of >> documentation is also related to usage and feedback from developers. Try to >> get constant feedback from your users about the documentation. >> >> Check the Time To First Successful Call >> <https://github.com/geo4web-testbed/topic3/wiki/Developer-Experience> >> (i.e. being capable of doing a successful request to the API within a few >> minutes will increase the chances that the developer will stick to your >> API). >> >> *Evidence* >> >> Relevant requirements: R-APIDocumented >> <http://www.w3.org/TR/dwbp-ucr/#R-APIDocumented> >> >> *Benefits* >> >> · [image: Reuse] >> >> · [image: Trust] >> >> >> >> 2016-03-30 11:07 GMT-03:00 Ig Ibert Bittencourt <ig.ibert@gmail.com>: >> >> Hi Linda, >> >> >> >> Thanks. >> >> >> >> It would be great if you could review. >> >> >> >> Best >> >> Ig >> >> >> >> 2016-03-30 10:49 GMT-03:00 Linda van den Brink <l.vandenbrink@geonovum.nl >> >: >> >> Dear Ig, >> >> >> >> Sounds very good. Let me know if you need me to review or whatever! >> >> >> >> Linda >> >> >> >> *Van:* Ig Ibert Bittencourt [mailto:ig.ibert@gmail.com] >> *Verzonden:* woensdag 30 maart 2016 15:43 >> *Aan:* Phil Archer >> *CC:* public-sdw-comments@w3.org >> *Onderwerp:* Re: RE: [DWBP + SDW: API] Related Best Practice >> >> >> >> Dear Linda, >> >> >> >> Thank you for your feedback. >> >> >> >> In think we could improve the description of the DWBP:BP 27 (yes, now it >> is BP 27 [1]) by adding the details you proposed in your e-mail and also by >> adding about "the time to first successful call". In the beginning of the >> documentation, this is very well presented [2] : >> >> >> >> - *API documentation is the first clue to your developer customer >> about the quality and usefulness of the API. When API documentation is >> complete and easy to understand, developers are probably more willing to >> continue their journey implementing it. One important aspect here is the >> Time To First Successful Call (TTFSC). Being capable of doing a successful >> request to the API within a few minutes will increase the chances that the >> developer will stick to your API.* >> >> I also lik the examples described in the SDWBP 29, which could be merged. >> >> >> >> >> >> @Phil - sorry about that. Now it is in the public-comments list. :-) >> >> >> >> >> >> [1] http://w3c.github.io/dwbp/bp.html#documentYourAPI >> >> [2] https://github.com/geo4web-testbed/topic3/wiki/Developer-Experience >> >> >> >> Best >> >> Ig >> >> >> >> 2016-03-29 5:55 GMT-03:00 Phil Archer <phila@w3.org>: >> >> For archive >> >> >> -------- Forwarded Message -------- >> Subject: RE: [DWBP + SDW: API] Related Best Practice >> Date: Tue, 29 Mar 2016 08:34:05 +0000 >> From: Linda van den Brink <l.vandenbrink@geonovum.nl> >> To: Ig Ibert Bittencourt <ig.ibert@gmail.com>, jeremy.tandy@gmail.com < >> jeremy.tandy@gmail.com>, p.barnaghi@surrey.ac.uk <p.barnaghi@surrey.ac.uk>, >> Bernadette Farias Loscio <bfl@cin.ufpe.br>, Caroline Burle <cburle@nic.br>, >> Newton Calegari <newton@nic.br>, Phil Archer <phila@w3.org> >> >> One link I forgot to supply with my answer, about API documentation and >> time to first successful call: >> https://github.com/geo4web-testbed/topic3/wiki/Developer-Experience >> >> Van: Linda van den Brink >> Verzonden: dinsdag 29 maart 2016 10:30 >> Aan: 'Ig Ibert Bittencourt'; jeremy.tandy@gmail.com; >> p.barnaghi@surrey.ac.uk; Bernadette Farias Loscio; Caroline Burle; >> Newton Calegari; Phil Archer >> Onderwerp: RE: [DWBP + SDW: API] Related Best Practice >> >> Dear all, >> >> I think that indeed DWBP 26 and SDWBP 29 could be merged. I reviewed DWBP >> 26 and compared it to SDWBP 29. I think that SDWBP 29 might even be >> completely removed from the SDWBP, as there are no special spatial aspects >> in it (some examples aside), and DWBP 26 describes the issue sufficiently. >> However in SDWBP 29, there is currently a little more detail you could >> consider adding to DWBP 26. What I’m missing is: >> >> - API documentation should describe the data(set) it exposes >> >> - We recommend providing machine readable API documentation that >> can be used by software development tools to help developers build API >> client software. (or is that what you mean by self-documenting?) >> >> - Where a parameter domain is bound to a set of values (e.g. >> value range, spatial or temporal extent, controlled vocabulary etc.), the >> API documentation or the API itself should indicate the set of values that >> may be used in order to help users request data that is actually available. >> >> An extra thing you could add, if you want, is a statement I learned from >> one of the participants of a testbed on data on the web we recently held. >> He said that a good measure for knowing if an API is well-documented is >> ‘the time to first successful call’. >> >> I hope this helps, my fellow SDW editors might also want to respond. >> >> Linda >> >> Van: Ig Ibert Bittencourt [mailto:ig.ibert@gmail.com] >> Verzonden: maandag 28 maart 2016 18:07 >> Aan: jeremy.tandy@gmail.com<mailto:jeremy.tandy@gmail.com>; >> p.barnaghi@surrey.ac.uk<mailto:p.barnaghi@surrey.ac.uk>; Linda van den >> Brink; Bernadette Farias Loscio; Caroline Burle; Newton Calegari; Phil >> Archer >> >> >> Onderwerp: [DWBP + SDW: API] Related Best Practice >> >> Dear Editors of the Spatial Data on the Web Best Practices Document, >> >> My name is Ig Bittencourt and I am a member of the W3C Data on the Web >> Working Group. Two weeks ago we had our final F2F meeting and we discussed >> about our BP Doc [1]. In one of the discussions, we realized that SDW:BP 29 >> [2] is very related to DWBP:BP 26. >> >> Both BPs are related to documenting APIs. However, in SDW:BP 29, there is >> a special atention on the self-description of APIs. However, if you look at >> the intended outcome of DWBP:BP 26, we discuss a little about it. >> >> For this reason, we started to wonder if these BPs could be merged. >> Please, let us know what do you think about this possibility. >> >> All the very best, >> >> [1] http://w3c.github.io/dwbp/bp.html >> [2] http://w3c.github.io/sdw/bp/#self-describing-apis >> [3] http://w3c.github.io/dwbp/bp.html#documentYourAPI >> >> >> Ig Ibert Bittencourt >> Professor Adjunto III - Instituto de Computação/Universidade Federal de >> Alagoas (UFAL) >> Vice-Coordenador da Comissão Especial de Informática na Educação >> Líder do Centro de Excelência em Tecnologias Sociais >> Co-fundador da Startup MeuTutor Soluções Educacionais LTDA. >> >> >> >> >> >> -- >> >> >> >> Ig Ibert Bittencourt >> >> Professor Adjunto III - Instituto de Computação/Universidade Federal de >> Alagoas (UFAL) >> >> Vice-Coordenador da Comissão Especial de Informática na Educação >> >> Líder do Centro de Excelência em Tecnologias Sociais >> >> Co-fundador da Startup MeuTutor Soluções Educacionais LTDA. >> >> >> >> >> >> -- >> >> >> >> Ig Ibert Bittencourt >> >> Professor Adjunto III - Instituto de Computação/Universidade Federal de >> Alagoas (UFAL) >> >> Vice-Coordenador da Comissão Especial de Informática na Educação >> >> Líder do Centro de Excelência em Tecnologias Sociais >> >> Co-fundador da Startup MeuTutor Soluções Educacionais LTDA. >> >> >> >> >> >> -- >> >> >> >> Ig Ibert Bittencourt >> >> Professor Adjunto III - Instituto de Computação/Universidade Federal de >> Alagoas (UFAL) >> >> Vice-Coordenador da Comissão Especial de Informática na Educação >> >> Líder do Centro de Excelência em Tecnologias Sociais >> >> Co-fundador da Startup MeuTutor Soluções Educacionais LTDA. >> > -- Ig Ibert Bittencourt Professor Adjunto III - Instituto de Computação/Universidade Federal de Alagoas (UFAL) Vice-Coordenador da Comissão Especial de Informática na Educação Líder do Centro de Excelência em Tecnologias Sociais Co-fundador da Startup MeuTutor Soluções Educacionais LTDA.
Received on Friday, 1 April 2016 09:11:48 UTC