json 在RDF中验证类型化文字

dffbzjpn  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(121)

在这个RDF中:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix ex: <http://example.com/>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.

ex:bob ex:has '{"name": robert"}'^^rdf:JSON .
ex:bob ex:at "204453"^^xsd:dateTime .

RDF引擎(例如Apache Jena)可以验证一些类型化文字(例如,xsd:dateTime):

$ ~/Downloads/apache-jena-4.7.0/bin/riot --validate file.ttl 
11:48:47 WARN  riot            :: [line: 6, col: 14] Lexical form '204453' not valid for datatype XSD dateTime

RDF引擎会验证rdf:JSON类型的文字吗?
注意JSON不是格式良好的。

lo8azlld

lo8azlld1#

您可以在ARQ中使用JavaScript SPARQL Functions来实现一个简单的自定义函数,该函数将告诉您是否可以将文字解析为JSON。
这个要点演示了如何做到这一点:https://gist.github.com/jaw111/3955e6fb9aa48c7d627cec685a9d5cca

ibrsph3r

ibrsph3r2#

我喜欢John步行者的解决方案,但我们也发现,如果您尝试使用Apache Jena将RDF(带有格式错误的JSON文字)序列化为jsonld,它将验证JSON文字:

$ apache-jena-4.7.0/bin/riot --formatted=jsonld file.ttl

org.apache.jena.shared.JenaException: Exception while writing JSON-LD 1.1
...
Caused by: JsonLdError[code=An invalid JSON literal was detected [code=INVALID_JSON_LITERAL]., message=An invalid JSON literal was detected [code=INVALID_JSON_LITERAL].]

相关问题