0

我知道我做错了什么,但我不知道是什么...我正在尝试使用 Data Cube 词汇生成 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"/>

...

但是,我得到的是:

<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>

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

最好的,斯雷科

4

1 回答 1

4

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

<http://purl.org/linked-data/sdmx/2009/subject#2.2> rdf:type rdf:Thing .

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

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

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

于 2012-10-05T07:51:19.223 回答