@@ -150,6 +150,40 @@ All notable changes to Open Ontologies are documented here.
150150 and it no longer claims that the ceiling "cannot" fire, since that was
151151 arithmetic about the tableaux and not about the run.
152152
153+ - ** The store gives a literal back as it was written** (#335 ; the store fix
154+ is oxigraph/oxigraph #2010 by Fabio Rovai, backported onto the pinned fork
155+ as rev 6409fa1c). Oxigraph 0.5.9 stored every literal of an XSD datatype it
156+ could value-encode by value and gave it back in canonical form:
157+ ` "4.0"^^xsd:decimal ` came back as ` "4" ` , ` "1"^^xsd:boolean ` as ` "true" ` ,
158+ ` "5"^^xsd:int ` as ` "5"^^xsd:integer ` , and ` "4.0" ` and ` "4" ` loaded as one
159+ triple. The pinned store value-encodes a literal only when decoding gives it
160+ back as written. So ` sh:value ` and a literal focus node now carry the term as
161+ written (W3C ` core/node/maxExclusive-001 ` and ` minExclusive-001 ` match their
162+ expected reports: report match 49 to 51 of 56; gated column 61 and full-tuple
163+ column 53 unchanged, baseline byte-identical), a load-then-serialise round
164+ trip no longer rewrites literals, and ` asserted.tsv ` carries literals as
165+ written. NOT fixed, because the SPARQL evaluator (` spareval ` ) is unpatched:
166+ inside a query ` STR("4.0"^^xsd:decimal) ` is still ` "4" ` and
167+ ` DATATYPE("5"^^xsd:int) ` still ` xsd:integer ` , so ` sh:pattern "\.0$" ` still
168+ reports ` "4.0"^^xsd:decimal ` , and ` sh:datatype ` naming one of the twelve
169+ integer-derived types or ` xsd:dateTimeStamp ` is still recorded as not
170+ evaluated (measured over every XSD datatype; pinned in
171+ ` tests/datatype_preservation_test.rs ` and
172+ ` inside_a_query_a_known_datatype_literal_is_still_read_by_value ` ).
173+
174+ - ** A projection-entailment goal written with a literal is asked as written**
175+ (consequence of #335 ). Goals are still round-tripped through a store, but the
176+ store no longer respells ` "01"^^xsd:integer ` as ` "1" ` , so a goal ` "01" ` asked
177+ of a source that says ` "1" ` is ` ungrounded_in_source ` , where it used to come
178+ back ` preserved_asserted ` . One value, two terms, which is what the checker
179+ has always done.
180+
181+ - ** A ` sh:datatype ` skipped for an integer-derived type or ` xsd:dateTimeStamp `
182+ names the real cause.** The skip reason said the store does not preserve the
183+ datatype; since #335 it does, and what cannot report it is ` DATATYPE() ` in the
184+ SPARQL evaluator. The reason now says so (`... so DATATYPE() cannot tell a
185+ value carrying it from one carrying that type ...`). The set of datatypes and
186+ every verdict are unchanged, by measurement on the new pin.
153187- ** A datatype the store cannot tell apart is refused inside ` sh:or ` ,
154188 ` sh:not ` and ` sh:qualifiedValueShape ` , as it already was on its own.** The
155189 store widens xsd: int , xsd: nonNegativeInteger and the other integer-derived
0 commit comments