【发布时间】:2019-07-25 17:00:12
【问题描述】:
编辑:我改变了主意。我会找到一种方法来生成 Java 类并将 JSON 作为该类的对象加载。
我刚刚发现存在JSON 的一个变体,称为JSON-LD。
在我看来,定义 JSON 的一种更结构化的方式,让我想起 XML 和关联的架构,例如 XSD。
我可以从JSON-LD 创建一个Java 类,在运行时加载它并使用它将JSON-LD 转换为该类的实例化吗?
我阅读了这两种实现的文档,但我一无所获。也许我读错了?
【问题讨论】:
-
这个问题过于宽泛,措辞不佳。 Java 中的一切要么是原始的,要么是对象。所以快速回答:是的。 JSON-LD 是用于表示 RDF 的格式。 RDF 在 Java 中表示为 RDF Graph 或 RDF Model,它包装了一个 Graph。所有这些东西 - 用你的话来说都是 json-ld 的实例,而且,很明显,它们是 java 对象的。所以,请澄清一下 - 为什么你不能使用 RDF?
-
@ssz 我认为“使用 jsonld-java 或 Apache Jena”使其非常具体......
-
@ssz:此外 JSON-LD 不代表 RDF。 JSON-LD 可以是trasnformed to an RDF model。而且 RDF 模型根本不是 Java 对象,它们必须被转换。好吧,您建议将 JSON-LD 转换为 RDF,然后将 RDF 转换为 Java 对象。这是正确的吗?有没有直接从 JSON-LD 转换为 Java 对象的库?
-
“JSON-LD 是一种具体的 RDF 语法”:https://www.w3.org/TR/json-ld 这意味着任何 json-ld 文档都可以表示为 RDF 图(可能是一般意义上的)。 RDF - 根本不是一种格式,可以从其他格式转换。但它是 RDF 形式的表示数据。有一个强大的 API 可以使用它 - Apache Jena,它使用
com.github.jsonld-java:json-ldAPI 作为解析器。如果您不想使用任何 RDF API,只使用解析器,那么您可能必须编写自己的模型 API。 -
承认,JSON-LD 比 RDF 宽一点,但通常它仅用于 RDF 序列化(数据集或图形)。因此,如果没有空白谓词,它可以加载为图形或数据集,它们是 java
Objects,如果使用的 API 是用 Java 编写的。顺便说一句,Graph 可能由三元存储支持,因此可能不会完全存在于内存中。