我正在用Python开发一个Thing Description Directory(物联网),我需要验证注册到该目录的Thing Descriptions,它们是JSON-LD文档,我必须检查它们是否符合模式(https://www.w3.org/2022/wot/td/v1.1)。
我尝试使用jsonschema库中的validate函数,但它似乎可以正确验证根据模式不应该正确的Thing Descriptions。我怀疑它不能正确执行此操作,因为在模式上下文中,需要使用其他模式来验证json-ld(在这些模式中依此类推)。有没有一种方法可以考虑嵌套的模式来验证json-ld?它也不能正确检查json-ld中的布尔值,但我认为这是因为json.loads()完成了到python对象的转换。
为了正确检查事物描述是否根据架构有效,我使用这个网站https://eclipse.github.io/editdor/。
Here is the piece of code i use to get the schema and validate the json-ld
1条答案
按热度按时间bq8i3lrv1#
您的代码逻辑是正确的,但您混合了两种类型的验证。
1.如果你正在进行基于JSON Schema的验证,你应该首先使用JSON Schema。TD的官方JSON Schema在https://raw.githubusercontent.com/w3c/wot-thing-description/main/validation/td-json-schema-validation.json上可用,所以你应该获取它而不是JSON-LD上下文。
1.如果要尝试进行语义验证,则应使用https://github.com/w3c/wot-thing-description/blob/main/validation/td-validation.ttl上提供的SHACL形状,然后选择像https://github.com/RDFLib/pySHACL这样的SHACL库