Jena、RDF、数据立方体词汇

Sre*_*cko 0 rdf jena

我知道我做错了什么,但我不知道是什么......我正在尝试使用数据立方体词汇生成 RDF 文件。

问题是,输出应该如下所示:

<qb:DataSet rdf:about="about...">
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">label.</rdfs:label>
<dcterms:subject rdf:resource="http://purl.org/linked-data/sdmx/2009/subject#2.2"/>
Run Code Online (Sandbox Code Playgroud)

...

但是,我得到的只是:

<qb:DataSet rdf:about="about...">
    <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">.</rdfs:label>
    <dcterms:subject>
         <rdf:Thing rdf:about="http://purl.org/linked-data/sdmx/2009/subject#2.2"/>
    </dcterms:subject>
Run Code Online (Sandbox Code Playgroud)

我可以提供代码示例,但这可能就足够了......问题不应该那么难。我需要资源和另一个资源...

最好的,斯雷科

Ian*_*son 5

RDF 的两种形式基本上是等效的。第二种形式包含一些附加信息,即额外的三元组:

<http://purl.org/linked-data/sdmx/2009/subject#2.2> rdf:type rdf:Thing .
Run Code Online (Sandbox Code Playgroud)

这不会有什么坏处,尽管Thing这不是 RDF 名称空间中的标准术语 - 您可能指的是owl:Thing. RDF 的一般经验法则是不必担心输出的确切语法形式,因为给定的 RDF 模型可能有许多不同的序列化,它们都解析为完全相同的三元组集合,因此在语义上具有相同的含义。对于 XML 序列化尤其如此。除非您出于某种原因确实需要 XML(例如使用工具链的另一部分进行处理),否则我建议使用 Turtle 输出序列化。它更加紧凑且易于阅读。

如果您需要有关正在生成的模型的更多具体建议,发布代码将会有所帮助。

顺便说一句,如果您确实需要 XML 以便可以使用其他 XML 工具处理它,那么您可能希望自己生成输出而不是依赖Model.write(). 这是因为模型内容的微小变化可能会导致write. 这会使编写 XSLT 样式表等变得非常痛苦。最好生成您自己的序列化,因为这样您就可以使用您对特定域模型的了解来更好地控制输出。