Hi all, According to RDFS 1.1 (https://www.w3.org/TR/rdf-schema/#ch_range), when you use `rdfs:range` this inference is expected:
``` gist:containedText rdfs:range xsd:string . :thing0 gist:containedText "this is my text"^^xsd:string . ``` providing those triples to riot (with the --rdfs option) yields the following: ``` "this is my text" rdf:type xsd:string . ``` That is what RDFS 1.1 specifies. Notice however the RDF isn't well-formed (we have a literal in the subject position). If you do `riot --validate` on the output you'll see the error. BUT it turns out OWL (re)defined `rdfs:range` ( https://www.w3.org/TR/owl-ref/#range-def) to allow the thing in the object position to be a datatype (that a literal can be): "rdfs:range is a built-in property that links a property (some instance of the class rdf:Property) to to either a class description *or a data range*. An rdfs:range axiom asserts that the values of this property must belong to the class extension of the class description *or to data values in the specified data range*." So it appears riot is using the RDFS 1.1 interpretation of `rdfs:range`. Is that intended (even though it can produce malformed triples)? On stackoverflow people are saying "Don't be misled by Jena's confusing behavior." https://stackoverflow.com/questions/78245972/rdf-when-a-property-is-used-the-thing-in-the-object-position-is-a-literal-of-da Maybe riot should have a note on the `--rdfs` option that says it is using RDFS 1.1 strictly (not OWL). I think that would clear up this confusion perhaps. A little more discussion is here: https://github.com/semanticarts/gist/issues/1069 Thanks, Justin
