- From: Karol Szczepański <karol.szczepanski@gmail.com>
- Date: Mon, 9 Nov 2015 21:50:32 +0100
- To: <public-hydra@w3.org>, "Thomas Hoppe" <thomas.hoppe@n-fuse.de>
Hi Thomas
Thank you for your feedback.
>> - class description in general uses OWL restrictions on properties - not
>> very convinient
>I hope that SHACL can be used for this in the future.
I hope so. I'm just wondering how to have Hydra + SHACL working together
without confusing the client (hydra:Class, hydra:SupportedProperty,
rdf:Property, schacl:Shape, etc.)
>> - operations returns or expects anonymous sub classes of their respective
>> classes to provide additional contextual details, like how a given class
>> functions as an expected instance
>> - custom predicate is introduced to denote that a single value is
>> expected/returned; if not set multiple instances are assumed
>Also cardinality should be covered by SHACL.
Actually I didn't find any suitable construct. Indeed SHACL addresses
cardinality when it comes to classe's property restriction, but here we tell
the client on how many instances an operation returns.
>> - I'm using owl:InverseFunctionalProperty to mark classe's property as a
>> primary key one; it's not elegant as for datatypes this moves whole RDF
>> to OWL Full, but for the time beeing let it be that way
>Why do you need to tell the client?
It happens that users would like to have that i.e. in the entities grid or
somewhere else.
>> 1. API Documentation model gives a lot of freedom. I think it's too much
>> of it. I already had that conversation with Ruben that sticking to
>> RDFS/OWL we put a lot of burdain on the clients. This is indeed the case.
>> Example: in order to express that an operation returns single instance of
>> a given type I used Markus' suggestion to use a subclass of that type
>> with few extension predicates to denote cardinality details. Hydra
>> doesn't give any way of expressing that (or no obvious way), and as an
>> alternative to what I've used would be using a hydra:Collection as a
>> returns but we'd loose information on what type of the members are.
>With the new collection design [1] you would not loose semantic fidelity.
Latest spec doesn't have anything to bind the member type with neither
collection nor it's view - this would be required in order to use a
hydra:Collection as a returned type.
>> - currently, all properties are literals; if having properties with
>> relations to other resources, question araises of how to tell the client
>> on where to get the values from; if no explicit pointer is set client may
>> search the API documentation for a given supported class and try to find
>> a suitable method, but something explicitely defined may disambiguate it
>> (i.e. custom search-as-you-type operation accepting an user input that
>> will be use as a free text query). Something like OWLs allValuesFrom but
>> pointing to an operation might come in handy.
>I solve this by the context. If a value is a relation, I just do:
>creator:{
>@type:"@id",
>@id:"dct:creator"
>}
>vs.
>creator:"dct:creator"
>if its just a literal.
I'm not sure how does it fit to the improvement suggested. Type coertion
says the client that a value should be expanded into an IRI, but it's just
an JSON-LD feature.
I would like to bind a custom operation to be used by client when obtaining
possible values for an object relation (in OWL). I was thinking about using
hydra:operations of a hydra:Resource (of which type is
hydra:SupportedProperty), but it wouldn't be contextual.
Best
Karol
Received on Monday, 9 November 2015 20:50:58 UTC