我怎样才能通过代码嵌套属性生成?像那样:
<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”创建)都处于同一级别。
答案 0 :(得分:3)
目前尚不清楚子属性的确切含义。重要的是要认识到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
Model write(OutputStream out, String lang)
以指定语言编写此模型的序列化表示。
编写模型的语言由lang指定 论点。预定义值为“RDF / XML”,“RDF / XML-ABBREV”, “N-TRIPLE”,“TURTLE”,(和“TTL”)和“N3”。默认值, 由null表示,是“RDF / XML”。
<强>参数:强>
- out - 写入RDF的输出流
- lang - 输出语言
<强>返回:强>
- 此型号
以前出现过一些相关的问题,你可能会发现其中一些有用。我很快找到的是: