LD4P / arm

BIBFRAME extension ontologies for modeling bibliographic metadata in the art and rare materials domains.
https://ld4p.github.io/arm/
16 stars 10 forks source link

Question about specifying object types in PropertyShapes #63

Closed rjyounes closed 6 years ago

rjyounes commented 6 years ago

In raremat_monograph_form.ttl, you specify the possible types of the arm:markedBy predicate in two ways, on the PropertyShape ItemForm_arm_markedBy:

raremat_monograph_form:ItemForm_arm_markedBy sh:path arm:markedBy ; sh:or (

     [
       sh:class arm:Marking ;
     ]
     [
       sh:class arm:Autograph ;
     ]
     [
       sh:class arm:BindersTicket ;
     ]
     [
       sh:class arm:Label ;
     ]
     [
       sh:class arm:Seal ;
     ]
     [
       sh:class arm:Stamp ;
     ]
     [
       sh:class arm:Watermark ;
     ]
    ) ;

and also on the values of the MarkingForm_rdf_type PropertyShape:

raremat_monograph_form:MarkingForm_rdf_type sh:path rdf:type ; sh:order "0"^^xsd:decimal ; sh:description "Marking type" ; sh:name "Marking type" ; sh:in ( arm:Marking arm:Autograph arm:BindersTicket arm:Label arm:Seal arm:Stamp arm:Watermark ) .

Are these specifications redundant, or do they mean different things? If redundant, which is preferred? If not redundant, what is the difference? I'd like to follow the right model in my PropertyShapes.

sfolsom commented 6 years ago

This is similar to matching a sh:targetClass in one form to a sh:class in a Nested form, but in this case we want a choice of typing in the nested form. Perhaps a better way would be to have sh:targetClass arm:Marking and sh:class arm:Marking asserted, but keep the rdf:type PropertyShape in the nested form. I don't believe we can just rely on subclass assertions for arm:Marking because there are cases (e.g. Notes) when we might not want all subclasses to appear as options.

rjyounes commented 6 years ago

Yes, I agree, we need to specify rdf:type options for specific forms.