Re: ISSUE-23: A specific proposal

On 4/24/2015 10:37, Michel Dumontier wrote:
> Holger,
>   You misunderstand, I do not want two parallel specialization 
> hierarchies - I want one.

Glad to hear that!

> Consider this alternative formulation that uses rdfs:subClassOf to 
> invoke the class specialization:
>
> ex:Issue
>   a rdfs:Class;
>   rdfs:label "An issue is a topic for discussion" .
>
> ex:IssueShape
>   rdfs:subClassOf ex:Issue;
>   sh:property [
> sh:predicate ex:assignedTo ;
> rdfs:label "assigned to" ;
> rdfs:comment "The assigned of an issue must be a person." ;
> sh:maxCount 1 ;
> sh:valueType schema:Person ;
> ] ;
> sh:property [
> sh:predicate ex:submittedBy ;
> rdfs:label "submitted by" ;
> rdfs:comment "The submitter of an issue must be a person who also has 
> an email address." ;
> sh:minCount 1 ;
> sh:maxCount 1 ;
> sh:valueType ex:SubmitterShape ;
> ] .
>
> ex:SubmitterShape
> rdfs:subClassOf schema:Person;
> rdfs:comment "A submitter is a person that has at least one email 
> address." ;
> sh:property [
> sh:predicate schema:email ;
> sh:minCount 1 ;
> ] .
>
> to me, this is simple, modular, and uses standard terminological 
> specialization. It also lets me define other shapes on ex:Issue *or* 
> on ex:IssueShape.

This is possible in principle (assuming ex:IssueShape rdf:type 
rdfs:Class), but the question then becomes what rdf:type do the 
instances have? In the example they are just instances of ex:Issue, so 
the constraints at IssueShape would not apply to them by default, unless 
you also add sh:nodeShape triples to link the Issues with the IssueShape 
(or have some external mechanism to map this).

I may have misunderstood what you try to get across? If you want to 
group together some constraints, or separate class and shape 
definitions, you could have it the other way around: ex:Issue 
rdfs:subClassOf ex:IssueShape, and have ex:IssueShape as an "abstract" 
class.

Holger

Received on Friday, 24 April 2015 00:57:11 UTC