def is_right_model(instance, attribute, value):
    """Must include at least the ``source`` and ``license`` keys, but
    not a ``rightsOf`` key (``source`` indicates that the Right is
    derived from and allowed by a source Right; it cannot contain the
    full rights to a Creation).
    """

    for key in ['source', 'license']:
        key_value = value.get(key)
        if not isinstance(key_value, str):
            instance_name = instance.__class__.__name__
            raise ModelDataError(("'{key}' must be given as a string in "
                                  "the '{attr}' parameter of a '{cls}'. Given "
                                  "'{value}'").format(key=key,
                                                      attr=attribute.name,
                                                      cls=instance_name,
                                                      value=key_value))