- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Tue, 8 Apr 2014 22:41:32 +0200
- To: 'Josue Alexander Baquiax Batén' <alexander_ges@galileo.edu>, <public-hydra@w3.org>
Hi Josue, First of all, sorry for the delay. I have first been traveling and had then to defend my PhD. Still catching up with all the mails... On Monday, March 31, 2014 10:11 PM, Josue Alexander Baquiax Batén wrote: > I'm working with Hydra Core and I have a question. > > In RDF:subClassOf the class A that inherit from B, inherit all > properties of B. It work of the same way with hydra:subClass? That's not true. In RDF properties are only loosely bound to classes. Generally, you can use any property with any class. If a property has a specific domain set, that means that the resource will also become an instance of that class. So if you have (pseudo-code) propertyA domain ClassA propertyB domain ClassB ClassB subClassOf ClassA propertyC domain ClassC and you have a resource /something @type ClassB it means neither that /something has propertyB nor propertyC. On the other hand, /something propertyB "Value of propertyB" means (infers) that /something is an instance of both ClassA and ClassB. I know, this is quite confusing if you come from an object-oriented programming world. So, if the explanation above is unclear, please don't hesitate to ask more questions. I'm more than happy to explain this in more detail. > I trying do some same as: > { > ... > { > "@id":"mm:User", > "@type":"hydra:Class", > "comment":"User representation", > "label":"user", > "status":"testing" > }, > { > "@id":"mm:userId", > "@type":"rdf:Property", > "label":"user-id", > "comment":"User identifier", > "domain":{ > "@id":"mmUser" > }, > "range":{ > "@id":"xsd:integer" > } > }, > { > "@id":"mm:userEmail", > "@type":"rdf:Property", > "label":"user-email", > "comment":"User email", > "domain":{ > "@id":"mm:User" > }, > "range":{ > "@id":"xsd:string" > > } > }, > ... > } > ... > { > "@id":"vocab:User", > "@type":"hydra:Class", > "rdfs:subClassOf":{ > "@id":"mm:User" > }, > "label":"User", > "description":"A Mindmeister user.", > "supportedOperations":[ > { > "@id":"_:retrievesUser", > "method":"GET", > "label":"Retrieve a User entity", > "description":"", > "expects":null, > "returns":"vocab:User", > "statusCodes":[ > { > "code":404, > "description":"The user not exists." > } > ] > } > ], > ... > > Is posible do it? Yes, that's completely valid, but ... > Basically I need define a class with its properties, and make a > subclass of this, that inherit its (first Class mentioned) properties; It doesn't inherit properties because you haven't defined any (from a Hydra perspectice). You just defined some whose domain happens to be mm:User... > so that in this example "supportedProperties" will be emtpy. ... so you need to reference them from supportedProperties as follows: "@id":"vocab:User", "supportedProperty": [ { "property": "mm:userId" } ... ] You can of course describe each property further by adding things like "required": true to the SupportedProperty definitions. Please also note that a while ago we changed all plural property names to singular to make the vocabulary more consistent (and we changed the namespace from purl.org/... to http://www.w3.org/ns/hydra/core#). The latest spec can be found at: http://www.hydra-cg.com/spec/latest/core/ > I'm not expert in this topic. therefore I need your comments. I hope this helps. I know it is quite confusing at least initially as RDF follows a quite different model than most object-oriented programming languages. So, again, please don't hesitate to ask more questions if something is unclear. Cheers, Markus -- Markus Lanthaler @markuslanthaler
Received on Tuesday, 8 April 2014 20:42:08 UTC