Re: Declarations of Property Min/Max Cardinality

On 2/5/2015 6:58, Karen Coyle wrote:
> Is there a related requirement that would assert min/max cardinality 
> on subjects of a type, or within a targeted graph? - e.g. only one 
> subject of type foaf:person per graph. This is a common requirement 
> that we have in the DCMI work.

This sounds like a global constraint to me, e.g.

ex:AllowOnlyOnePerson
     a ldom:GlobalConstraint ;
     ldom:message "Only one instance of foaf:Person expected." ;
     ldom:sparql """
         ASK {
             {
                 SELECT (COUNT(?person) AS ?count)
                 WHERE {
                     ?person a foaf:Person .
                 }
             }
             FILTER (?count > 1)  # flag an error if more than 1 
instance exists
         } """ .

If this is a recurring pattern, a template could be defined that would 
be used as

ex:AllowOnlyOnePerson
     a ldomx:AllowOnlyOneInstance ;
     ldomx:type foaf:Person .

So the requirement is implicitly already written down by a combination 
of other requirements:

https://www.w3.org/2014/data-shapes/wiki/Requirements#Global_Constraints
https://www.w3.org/2014/data-shapes/wiki/Requirements#Expressivity:_Aggregations
https://www.w3.org/2014/data-shapes/wiki/Requirements#Expressivity:_Literal_Value_Comparison
https://www.w3.org/2014/data-shapes/wiki/Requirements#Expressivity:_Basic_Graph_Patterns

I cannot tell whether this combination is sufficiently clear, but all 
the lego pieces are there - assuming they all get implemented by the 
standard.

Regards,
Holger

Received on Wednesday, 4 February 2015 23:07:13 UTC