使用python将rdf转换为xml

2024-09-29 01:28:47 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有这个RDF输入,我想用python把它变成xml风格,现在我该怎么做

@prefix Person: <http://example.org/> .

Person:Sophie Person:gender "women" ;
    Person:likes Person:Peter .

Person:Frank Person:bornIn "1949" ;
    Person:gender "Men" ;
    Person:married Person:Susie .

Person:Peter Person:father Person:Frank ;
    Person:gender "Men" ;
    Person:likes Person:Sandra ;
    Person:mother Person:Susie .

Person:Sandra Person:bornIn "1980" ;
    Person:gender "women" .

Person:Susie Person:bornIn "1956" ;
    Person:gender "women" .




Tags: frankhttpprefix风格rdfxmlgenderpeter
1条回答
网友
1楼 · 发布于 2024-09-29 01:28:47

您可以安装rdflib包并使用它在RDF格式之间进行转换。在您的例子中,数据似乎是以“notation3”语法存储的。要解析这个,您需要在将图形读取为'n3'时指定格式

我使用StringIO代替下面的实际文件,但概念是一样的

import rdflib
from io import StringIO, BytesIO

str_in = StringIO('''@prefix Person: <http://example.org/> .

Person:Sophie Person:gender "women" ;
    Person:likes Person:Peter .

Person:Frank Person:bornIn "1949" ;
    Person:gender "Men" ;
    Person:married Person:Susie .

Person:Peter Person:father Person:Frank ;
    Person:gender "Men" ;
    Person:likes Person:Sandra ;
    Person:mother Person:Susie .

Person:Sandra Person:bornIn "1980" ;
    Person:gender "women" .

Person:Susie Person:bornIn "1956" ;
    Person:gender "women" .'''
)

g = rdflib.Graph()
g.parse(str_in, format='n3')

此时,数据被加载到图形中。如果您想将它写成一种新的格式,比如XML,您可以通过以下方法来实现。要写入文件,只需输入文件路径作为g.serialize()的第一个参数

g.serialize('path/to/file.xml', format='pretty-xml')

with open('path/to/file.xml') as fp:
    print(fp.read())
# prints:
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:Person="http://example.org/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about="http://example.org/Sophie">
    <Person:likes>
      <rdf:Description rdf:about="http://example.org/Peter">
        <Person:gender>Men</Person:gender>
        <Person:likes rdf:resource="http://example.org/Sandra"/>
        <Person:father rdf:resource="http://example.org/Frank"/>
        <Person:mother rdf:resource="http://example.org/Susie"/>
      </rdf:Description>
    </Person:likes>
    <Person:gender>women</Person:gender>
  </rdf:Description>
  <rdf:Description rdf:about="http://example.org/Susie">
    <Person:gender>women</Person:gender>
    <Person:bornIn>1956</Person:bornIn>
  </rdf:Description>
  <rdf:Description rdf:about="http://example.org/Frank">
    <Person:married rdf:resource="http://example.org/Susie"/>
    <Person:bornIn>1949</Person:bornIn>
    <Person:gender>Men</Person:gender>
  </rdf:Description>
  <rdf:Description rdf:about="http://example.org/Sandra">
    <Person:bornIn>1980</Person:bornIn>
    <Person:gender>women</Person:gender>
  </rdf:Description>
</rdf:RDF>

相关问题 更多 >