- From: Thomas Hoppe <thomas.hoppe@n-fuse.de>
- Date: Tue, 10 Nov 2015 17:33:49 +0100
- To: Karol Szczepański <karol.szczepanski@gmail.com>, public-hydra@w3.org
Hi Karol,
Am 09.11.2015 um 21:50 schrieb Karol Szczepański:
> 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.
Mhh, I never had this requirement, the client should just take what it
gets and react accordingly I think.
>
>>> - 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.
Same for this. I always use the IRI (or the local part of it) as primary
key from client all the way down to the database.
I think that makes life easier and is consistent.
>
>>> 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.
I hope we will solve this issue [1] next.
>
>>> - 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.
It's a JSON-LD feature yes, i just tried to translate it into other
serializations and it's indeed not possible.
I don't quite understand this. You want to point the client to an
operation it can call to obtain possible values as far as I understand?
>
> Best
>
> Karol
[1] https://github.com/HydraCG/Specifications/issues/41
Received on Tuesday, 10 November 2015 16:34:28 UTC