Skip to content

rdflib.Literals need a well-formed / ill-formed status flag #848

@ashleysommer

Description

@ashleysommer

I encountered this issue while working on pySHACL.
Specifically, this bug is causing a failure in several of the tests in the standard data-shapes-test-suite here or-datatypes-001.ttl and datatype-ill-formed.ttl
This test relies on the assertion that literals such as "none"^^xsd:boolean and "300"^^xsd:byte should be considered by the validator to be ill-formed literals, so that when checking rules such as sh:datatype, if validating that this property value is a well-formed Literal of type xsd:boolean or xsd:byte (respectively) this should Fail.

Currently, "none"^^xsd:boolean is parsed to a Literal with value=False, datatype=xsd:boolean and "300"^^xsd:byte is parsed to a Literal with value=int(300) and datatype=xsd:byte, so the validation checks which should fail actually pass.

An ideal solution would be at Literal-creation time before converting the lexical value to a Python value, check if it is ill-formed first, store that as an ill_formed flag on the Literal itself, then do the conversion as normal.

Metadata

Metadata

Assignees

No one assigned

    Labels

    duplicateThis issue or pull request already exists

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions