import sys
import unittest
from pyrudof import Rudof, RudofConfig, ShaclValidationMode, ShapesGraphSource
class TestShacl(unittest.TestCase):
def test_ok(self) -> None:
rudof = Rudof(RudofConfig())
data = """
prefix :
prefix sh:
prefix xsd:
:Person a sh:NodeShape; sh:targetNode :ok ;
sh:property [
sh:path :name ;
sh:minCount 1;
sh:maxCount 1;
sh:datatype xsd:string ;
] .
:ok :name "alice" .
"""
rudof.read_data_str(data)
result = rudof.validate_shacl(ShaclValidationMode(), ShapesGraphSource())
print(result.show())
self.assertTrue(result.conforms())
def test_ko(self) -> None:
rudof = Rudof(RudofConfig())
data = """
prefix :
prefix sh:
prefix xsd:
:Person a sh:NodeShape; sh:targetNode :ko ;
sh:property [
sh:path :name ;
sh:minCount 1;
sh:maxCount 1;
sh:datatype xsd:string ;
] .
:ok :name 23 .
"""
rudof.read_data_str(data)
result = rudof.validate_shacl(ShaclValidationMode(), ShapesGraphSource())
print(result.show())
self.assertFalse(result.conforms())
if __name__ == "__main__":
unittest.main()