我知道我做错了什么,但我不知道是什么...... 我正在尝试使用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>
我可以提供代码示例,但这可能就够了......问题不应该那么难。我需要资源与另一个资源......
最佳, Srecko
答案 0 :(得分: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
生成的XML发生重大变化。这可能使编写XSLT样式表等成为一个主要的痛苦。最好生成自己的序列化,因为您可以使用您对特定域模型的了解更多地控制输出。