我正在尝试制作一个属性形状,可以区分“真实”定义和定义的占位符作为 skos:definition 的值。我的输入倾向于在定义字段中包含诸如“”、“N/A”、“NA”、“None”等内容,这很好,除了我的 shacl 形状应该认识到这个定义是无效的。
:PlaceholderForDefinition
a sh:PropertyShape ;
sh:path skos:definition ;
sh:minLength 1 ;
sh:not [sh:in ([sh:pattern "^(?!\s*n\s*/?\s*a\s*$).*"] [sh:pattern "None"])
] ;
.
有没有办法使上述结构工作,还是我完全走错了路?我承认使用某种正则表达式黑名单并不是最佳选择,但它应该已经捕获了 90% 的情况,这目前已经足够好了,并且可以随着时间的推移而扩展。
提前感谢任何提示或想法!