我正在将 Jena riot CLI 工具推断出的 RDF 馈送到 shacl cli 工具中。
我的架构定义包含类似这样的内容:
lob:account_number
rdfs:domain lob:Account;
rdfs:range xsd:string .
数据包含以下内容:
:cbaEverydayOffset a :BankAccount;
rdfs:label "Everyday Offset Account";
:bsb "063-791"^^xsd:string;
:account_number "1234567".
然后我像这样通过骚乱运行它:
riot --rdfs=tbox.ttl --strict --formatted=ttl abox.ttl > inferred.ttl
然后我尝试使用 shacl 进行验证,但它崩溃了,因为我的文件
inferred.ttl
包含如下断言:
"1234567" rdf:type xsd:string .
我认为这是无效的 RDF。这是否与 RDF* 存在某种不兼容性?我该怎么办?
是 - RDF 无效。它与 RDF 星无关。
规则扩展由规则 rdfs3 给出 https://www.w3.org/TR/rdf11-mt/#patterns-of-rdfs-entailment-informative
riot
--rdfs=
的应用是 RDFS 蕴含规则的直接应用。
类是正在建模的域中的资源集。 文字值的类别是 rdfs:Literal - 值,而不是词汇形式和数据类型对的表示形式。
带有文字的 rdfs3 的结果不能用 RDF 编写,只是因为“无文字作为主题”规则(历史特征)。
接近的是:
_:a rdf:type xsd:string .
_:a rdf:value "1234567" .