请问如何通过代码生成嵌套属性?就像这样:
<geo:Departement rdf:about="DEP_05">
<geo:code_departement>05</geo:code_departement>
<geo:subdivision>
<geo:Arrondissement rdf:about="ARR_051">
<geo:code_arrondissement>051</geo:code_arrondissement>
<geo:nom xml:lang="fr">Briançon</geo:nom>
</geo:Arrondissement>
</geo:subdivision>
<geo:subdivision>
<geo:Arrondissement rdf:about="ARR_052">
<geo:code_arrondissement>052</geo:code_arrondissement>
<geo:nom xml:lang="fr">Gap</geo:nom>
</geo:Arrondissement>
</geo:subdivision>
</geo:Departement>我的所有属性(使用“createProperty”创建)都在同一级别。
发布于 2014-01-27 23:50:31
还不清楚你所说的子属性到底是什么意思。重要的是要认识到,RDF是一种基于图形的数据表示,它基于标记的、有向的、称为三元组的边:
主谓宾语
例如,您的数据包括三元组
DEP_05 rdf:type geo:Department
DEP_05 geo:code_department "05"
DEP_05 subdivision ARR_O51
ARR_051 rdf:type geo:Arrondissement
ARR_051 geo:code_arrondissement "051"RDF/XML提供了许多不同的方法来编写相同的图形。例如,写入数据的一种方式(我已经添加了适当的前缀)是:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:geo="https://stackoverflow.com/q/21383685/1281433/">
<geo:Departement rdf:about="https://stackoverflow.com/q/21383685/1281433/DEP_05">
<geo:code_departement>05</geo:code_departement>
<geo:subdivision>
<geo:Arrondissement rdf:about="https://stackoverflow.com/q/21383685/1281433/ARR_051">
<geo:code_arrondissement>051</geo:code_arrondissement>
<geo:nom xml:lang="fr">Briançon</geo:nom>
</geo:Arrondissement>
</geo:subdivision>
<geo:subdivision>
<geo:Arrondissement rdf:about="https://stackoverflow.com/q/21383685/1281433/ARR_052">
<geo:code_arrondissement>052</geo:code_arrondissement>
<geo:nom xml:lang="fr">Gap</geo:nom>
</geo:Arrondissement>
</geo:subdivision>
</geo:Departement>
</rdf:RDF>另一种方法碰巧较少使用RDF/XML允许的“快捷方式”,它是:
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:geo="https://stackoverflow.com/q/21383685/1281433/" >
<rdf:Description rdf:about="https://stackoverflow.com/q/21383685/1281433/ARR_052">
<rdf:type rdf:resource="https://stackoverflow.com/q/21383685/1281433/Arrondissement"/>
<geo:code_arrondissement>052</geo:code_arrondissement>
<geo:nom xml:lang="fr">Gap</geo:nom>
</rdf:Description>
<rdf:Description rdf:about="https://stackoverflow.com/q/21383685/1281433/ARR_051">
<rdf:type rdf:resource="https://stackoverflow.com/q/21383685/1281433/Arrondissement"/>
<geo:code_arrondissement>051</geo:code_arrondissement>
<geo:nom xml:lang="fr">Briançon</geo:nom>
</rdf:Description>
<rdf:Description rdf:about="https://stackoverflow.com/q/21383685/1281433/DEP_05">
<rdf:type rdf:resource="https://stackoverflow.com/q/21383685/1281433/Departement"/>
<geo:code_departement>05</geo:code_departement>
<geo:subdivision rdf:resource="https://stackoverflow.com/q/21383685/1281433/ARR_051"/>
<geo:subdivision rdf:resource="https://stackoverflow.com/q/21383685/1281433/ARR_052"/>
</rdf:Description>
</rdf:RDF>尽管它们是不同的XML文档,但它们是同一RDF图的序列化。也有非XML序列化。在Turtle序列化中,您的数据是:
@prefix geo: <https://stackoverflow.com/q/21383685/1281433/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
geo:ARR_051 a geo:Arrondissement ;
geo:code_arrondissement "051" ;
geo:nom "Briançon"@fr .
geo:DEP_05 a geo:Departement ;
geo:code_departement "05" ;
geo:subdivision geo:ARR_051 , geo:ARR_052 .
geo:ARR_052 a geo:Arrondissement ;
geo:code_arrondissement "052" ;
geo:nom "Gap"@fr .认识到这些都是同一张图是非常重要的。RDF处理工具并不关心您使用的是哪一个。也就是说,使用更易读的格式是很好的,所以我倾向于使用Turtle。如果您仍然需要使用RDF/XML,那么您可以使用"RDF/XML-ABBREV“语言来序列化模型。为此,将"RDF/XML-ABBREV"指定为Model.write(OutputStream out, String lang)的lang参数。在Javadoc中:
write
模型写入(OutputStream out,String lang)
用指定的语言编写此模型的序列化表示。
编写模型所使用的语言由lang参数指定。预定义的值是"RDF/XML“、"RDF/XML-ABBREV”、"N-TRIPLE“、"TURTLE”、(和"TTL")和"N3“。默认值是"RDF/XML“,用null表示。
参数:
的输出语言
返回:
相关问题
这里以前也出现过一些相关的问题,您可能会发现其中一些问题很有帮助。我很快就找到了以下几个:
https://stackoverflow.com/questions/21383685
复制相似问题