Closed ubbc closed 4 years ago
I believe this is not an issue with Hermit it is actually the older reasoners that are in error.
The literals "2020-01-07T12:32:00Z"^^xsd:dateTime
and "2020-01-07T12:32:00+00:00"^^xsd:dateTime
represent the same instants in the same time zone. "2020-01-07T11:32:00-01:00"^^xsd:dateTime
represents the same instant in a different time zone and is considered an equal but not identical literal. (see Structural Spec 4.7).
DataOneOf treats "2020-01-07T12:32:00+00:00"^^xsd:dateTime
as a different literal and :test4
is not inferred as class :D
.
To build a GCA that compares time instant values a restriction with two facets can be combined for value equality:
DatatypeRestriction(xsd:dateTime xsd:minInclusive "2020-01-07T12:32:00Z"^^xsd:dateTime xsd:maxInclusive "2020-01-07T12:32:00Z"^^xsd:dateTime))
I love the fact that the example in the specs uses dates of birth, which in many countries do not necessarily include a time component at all. In UK, for example, the time is recorded only for twins. The hospital keeps a record of the time but it does not make it onto registrar documents otherwise.
:) and then one may need to take into account the +/- 14hrs....
I don't think either Pellet or Fact++ are still maintained, so I guess can be closed off? Thanks for checking in on it.
They are, far as I'm aware - or their forks are. Not by this team, though. I'll see if it's wort putting this on their trackers.
There's a w3c Reasoner test for 1^^xsd:int and 01^^xsd:int being treated the same, and it's basically the same issue, non-equal literals being semantically equivalent. Not sure if there's one for dates - certainly timezones are a pain point worldwide, so worth keeping in mind.
Ok many thanks.
Hi, I think that HermitT 1.4.3 is not taking into account timezones in xsd:dateTime when computing DataOneOf. In the example below the times:
"2020-01-07T12:32:00Z"^^xsd:dateTime
(in :test)"2020-01-07T11:32:00-01:00"^^xsd:dateTime
(in :test4)"2020-01-07T12:32:00+00:00"^^xsd:dateTime
(in the GCA) should correspond to the same point on the timeline. HermiT correctly infers :test as class :D but not :test4 Whereas, Pellet and Fact++ infer both. Kind regards Graham--- Example ontology ---