Re: New Hydra API generator: feedback needed

Hi Dietrich,

Thank you very much for your explanations. It's clearer now.

In order to reduce the size and complexity of responses when using the API
"the old way" (with a custom client not supporting Hydra vocab at all), do
you know if there is a way to map the current to-many structure in the
context like it's currently done for the to-one:

{
>     "@context": {
>         "organization": {
>             "@id": "#Book/organization",
>             "@type": "@id"
>         },
>         "authors": {
>             "@id": "#Book/authors",
>             "@type": "@id"
>         }
>     },
>     // It works and is valid
>     "organization": "/organizations/22",
>     // It doesn't work, is there a way to map a similar structure in the
> context?
>     "authors": ["/authors/1", "/authors/22"],
>     // It works, but is more complex client-side
>     "authors": [{"@id": "/authors/1"}, {"@id": "/authors/22"}]
> }



Best regards,

2015-03-19 18:38 GMT+01:00 Dietrich Schulten <ds@escalon.de>:

> Hi Kévin,
>
> You can embed the two authors on the :authors property, but you have to
> use two json objects with  "@id":"/people/1",  "@id":"/people/2" properties
> on each object, instead of plain strings. The plain strings are not
> recognized as identifiers in your example.
>
> As I see it, you need no hydra:Collection if you just want to embed a set
> of two items and if you have no requirement to identify the set as an
> entity in its own right.
>
> Otoh, if you want to make the authors a remote collection, you might need
> hydra:collection with :manages block. Please tell us a bit more about your
> use case, if you think you need that. For example, does your :author
> property have an rdfs:range?
>
> HTH,
> Dietrich
>
> Via Boxer senden
> Am 18.03.2015 23:41 schrieb Kévin Dunglas <dunglas@gmail.com>:
>
> Thanks for the link Dietrich. Do you think the new design is ready to be
> implemented or should we keep the current published spec for now?
>
> I'm very interested in feedbacks about JsonLdApiBundle, especially about
> the validity of the generated Hydra and the two issues I posted in my first
> mail (where to put filter definition and how to handle many-to-many
> relations). Can anyone take it a look?
>
> Thank you :)
>
>
>
> 2015-03-11 17:28 GMT+01:00 Dietrich Schulten <ds@escalon.de>:
>
>>   Hi Kévin,
>>
>> the wiki description of the collection design is at
>>
>> http://www.w3.org/community/hydra/wiki/Collection_Design
>>
>> The issues are #41 and #42.
>>
>> Best regards,
>> Dietrich
>>
>> On March 9, 2015 9:58:09 PM Kévin Dunglas <dunglas@gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I've published a new tool to create hypermedia REST API with the Symfony
>>> framework.
>>> It supports JSON-LD and Hydra and leverages Symfony to make it really
>>> easy to the average web developper to create that kind of API. Even if they
>>> don't share any code, this bundle has been inspirited by Markus's
>>> HydraBundle and can be considered as a HydraBundle on steroid.
>>>
>>> It uses Doctrine, Symfony Serializer (2.7) and Symfony Validator
>>> metadata to generate the Hydra documentation (no need for special
>>> annotations - except for external IRIs -, a typical Doctrine entity class
>>> will works great without any extra work) ; it supports out of the box
>>> serialization and deserialization groups, pagination, filters, errors and
>>> is highly extensible (event system, pluggabbles normalizers).
>>> The code source and the full list of features is available on GitHub:
>>> https://github.com/dunglas/DunglasJsonLdApiBundle
>>>
>>> I've also built a demo API (a bookstore). The source code is also
>>> available on GitHub: https://github.com/dunglas/api-platform
>>> A public endpoint is available here: http://bookstore-api.dunglas.fr
>>> HydraConsole:
>>> http://www.markus-lanthaler.com/hydra/console/?url=http://bookstore-api.dunglas.fr
>>>
>>> It works great with the Hydra console. However, there is two features
>>> not well described in the generated Hydra documentation and I don't know
>>> how to handle that correctly:
>>>
>>>    - Filters (ex:
>>>    http://bookstore-api.dunglas.fr/organizations?name=another) are not
>>>    described in the Hydra documentation. I've read about hydra:search in the
>>>    spec but I don't know where is the preferred way to add those definitions.
>>>    In hydra:supportedOperation? Do you have an example of an API using
>>>    hydra:search available?
>>>    - Many-To-Many relations such as the author property in this
>>>    document: http://bookstore-api.dunglas.fr/books/2 An hydra
>>>    documentation is generated but should be invalid because the collection of
>>>    is not recognized by Hydra console. Any hint on how to fix that?
>>>
>>> Any feedback, both on the JSON-LD / Hydra support and on the ease of use
>>> as a web developer is welcome.
>>>
>>> P.S.: I've read on the list about a new Collection format but wasn't
>>> able to find the mail or the issue where it is described, can you send me a
>>> pointer to this new format?
>>>
>>> Best regards,
>>>
>>>
>>> --
>>> Kévin Dunglas
>>>
>>> http://dunglas.fr
>>>
>>>
>
>
> --
> Kévin Dunglas
>
> http://dunglas.fr
>
>


-- 
Kévin Dunglas
Consultant et développeur freelance

http://dunglas.fr

Received on Monday, 6 April 2015 07:50:12 UTC