Class Cardinality


  • public final class Cardinality
    extends java.lang.Object
    This class contains static methods to manipulate the cardinality property of a type. Cardinality of expressions is denoted by one of the values ONE_OR_MORE, ZERO_OR_MORE, ZERO_OR_ONE, EXACTLY_ONE, or EMPTY. These are combinations of the three bit-significant values ALLOWS_ZERO, ALLOWS_ONE, and ALLOWS_MANY.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static boolean allowsMany​(int cardinality)
      Determine whether multiple occurrences are allowed
      static boolean allowsZero​(int cardinality)
      Determine whether empty sequence is allowed
      static java.lang.String describe​(int cardinality)
      Display the cardinality as a string
      static boolean expectsMany​(Expression expression)
      Determine whether multiple occurrences are not only allowed, but likely.
      static int fromOccurrenceIndicator​(java.lang.String indicator)  
      static java.lang.String generateJavaScriptChecker​(int card)
      Generate Javascript code to check whether a number satisfies the cardinality property.
      static java.lang.String getOccurrenceIndicator​(int cardinality)
      Get the occurence indicator representing the cardinality
      static int multiply​(int c1, int c2)
      Multiply two cardinalities
      static boolean subsumes​(int c1, int c2)
      Test if one cardinality subsumes another.
      static int sum​(int c1, int c2)
      Add two cardinalities
      static int union​(int c1, int c2)
      Form the union of two cardinalities.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • allowsMany

        public static boolean allowsMany​(int cardinality)
        Determine whether multiple occurrences are allowed
        Parameters:
        cardinality - the cardinality of a sequence
        Returns:
        true if the cardinality allows the sequence to contain more than one item
      • expectsMany

        public static boolean expectsMany​(Expression expression)
        Determine whether multiple occurrences are not only allowed, but likely. This returns false for an expression that is the atomization of a singleton node, since in that case it's quite unusual for the typed value to be a non-singleton sequence.
        Parameters:
        expression - an expression
        Returns:
        true if multiple occurrences are not only allowed, but likely. Return false if multiple occurrences are unlikely, even though they might be allowed. This is typically the case for the atomized sequence that is obtained by atomizing a singleton node.
      • allowsZero

        public static boolean allowsZero​(int cardinality)
        Determine whether empty sequence is allowed
        Parameters:
        cardinality - the cardinality of a sequence
        Returns:
        true if the cardinality allows the sequence to be empty
      • union

        public static int union​(int c1,
                                int c2)
        Form the union of two cardinalities. The cardinality of the expression "if (c) then e1 else e2" is the union of the cardinalities of e1 and e2.
        Parameters:
        c1 - a cardinality
        c2 - another cardinality
        Returns:
        the cardinality that allows both c1 and c2
      • sum

        public static int sum​(int c1,
                              int c2)
        Add two cardinalities
        Parameters:
        c1 - the first cardinality
        c2 - the second cardinality
        Returns:
        the cardinality of a sequence formed by concatenating the sequences whose cardinalities are c1 and c2
      • subsumes

        public static boolean subsumes​(int c1,
                                       int c2)
        Test if one cardinality subsumes another. Cardinality c1 subsumes c2 if every option permitted by c2 is also permitted by c1.
        Parameters:
        c1 - a cardinality
        c2 - another cardinality
        Returns:
        true if if every option permitted by c2 is also permitted by c1.
      • multiply

        public static int multiply​(int c1,
                                   int c2)
        Multiply two cardinalities
        Parameters:
        c1 - the first cardinality
        c2 - the second cardinality
        Returns:
        the product of the cardinalities, that is, the cardinality of the sequence "for $x in S1 return S2", where c1 is the cardinality of S1 and c2 is the cardinality of S2
      • describe

        public static java.lang.String describe​(int cardinality)
        Display the cardinality as a string
        Parameters:
        cardinality - the cardinality value to be displayed
        Returns:
        the representation as a string, for example "zero or one", "zero or more"
      • getOccurrenceIndicator

        public static java.lang.String getOccurrenceIndicator​(int cardinality)
        Get the occurence indicator representing the cardinality
        Parameters:
        cardinality - the cardinality value
        Returns:
        the occurrence indicator, for example "*", "+", "?", "".
      • fromOccurrenceIndicator

        public static int fromOccurrenceIndicator​(java.lang.String indicator)
      • generateJavaScriptChecker

        public static java.lang.String generateJavaScriptChecker​(int card)
        Generate Javascript code to check whether a number satisfies the cardinality property.
        Parameters:
        card - the cardinality value
        Returns:
        a Javascript function which checks whether a number satisfies the cardinality property.