[poe] Setting a value related to the leftOperand of a constraint

nitmws has just created a new issue for https://github.com/w3c/poe:

== Setting a value related to the leftOperand of a constraint ==
@riannella brought this issue up in https://github.com/w3c/poe/issues/226#issuecomment-326155378 - as this issue is outside the scope of 2.6.8 Rule Active State Processing this new issue is created.

Sorry, but I have a different view on the Datetime LeftOperand - http://w3c.github.io/poe/vocab/#term-dateTime:
* It is defined as "The date (and optional time and timezone) to be compared. " No word defines this is date (and ...) is the date (and time) of Now. My understanding is: this Left Operand defines that a date (with optional time) value set by the usage context is compared with a value defined as rightOperand. And if no leftOperand-value is set the default value is the date (and time) of Now.
* Its Note tells "The Rule may be exercised before (with operator lt/lteq) or after (with operator gt/gteq) the date(time) defined by the Right operand." - and I conclude: you can take any date and time before or after the rightOperand value and match it against the rightOperand value - the Not-/Satisfied outcome is returned. 
* If the strict rule is that only the date&time of Now can be compared and having an operator of odrl:gteq and a right operand of "2018-01-01" the ODRL processor has to check from now on permanently this constraint with the current date&time to find on the 1 January 2018 a second after midnight that constraint is fulfilled now. Is this really intended, I can't believe that.
* An issue might be: how to express a date&time other than Now. I think setting (or pre-setting) the status property of this constraint would be a good solution. 
This requires only a minor change of the definition of this property in 2.5.1 of the IM
and I suggest: "A Constraint may have none or one status property value for **a** value generated from the leftOperand action **or for a value related to the leftOperand set as reference for the comparison.**"
And this could be the expression

```
:policy102 a odrl:Set ;
    ### active on 24 December 2000  ###
    odrl:permission [ 
        odrl:action odrl:print ;
        odrl:constraint [ 
            odrl:leftOperand odrl:dateTime ;
            odrl:status "2000-12-24T00:00:00Z" ; ### inserted for this specific evaluation ###
            odrl:operator odrl:lt ;
            odrl:rightOperand "2000-12-31" ;
        ]
    ] .
```

We have to be aware constraints are very dynamic black-boxes. 
If e.g. the LeftOperand is the Relative Asset Size (http://w3c.github.io/poe/vocab/#term-relativeSize) with odrl:lteq and rightOperand "200%" evaluating this constraint urgently needs a real value to be compared against the "200%", it cannot be generated from the left operand Relative Asset Size. E.g.
```
:policy901 a odrl:Set ; 
    odrl:permission [ 
        odrl:action odrl:derive ;
        odrl:constraint [ ### constraint is Satisfied ###
            odrl:leftOperand odrl:relativeSize ;
            odrl:status "158%" ; ### inserted for this specific evaluation ###
            odrl:operator odrl:lteq ;
            odrl:rightOperand "200%" ;
        ]
    ] .

:policy901 a odrl:Set ;
    odrl:permission [ 
        odrl:action odrl:derive ;
        odrl:constraint [ ### constraint is Not-Satisfied ###
            odrl:leftOperand odrl:relativeSize ;
            odrl:status "213%" ; ### inserted for this specific evaluation ###
            odrl:operator odrl:lteq ;
            odrl:rightOperand "200%" ;
        ]
    ] .
```


Please view or discuss this issue at https://github.com/w3c/poe/issues/227 using your GitHub account

Received on Thursday, 31 August 2017 08:06:05 UTC