18 |
# MA 02111-1307 USA |
# MA 02111-1307 USA |
19 |
# |
# |
20 |
|
|
21 |
|
from __future__ import nested_scopes |
22 |
|
|
23 |
""" |
""" |
24 |
An RDF/XML writer for Swamp ConstGraphs. |
An RDF/XML writer for Swamp ConstGraphs. |
50 |
Write a ConstGraph to a file, given the filename. |
Write a ConstGraph to a file, given the filename. |
51 |
""" |
""" |
52 |
|
|
53 |
out = "" |
out = [] |
54 |
|
def w(s): |
55 |
|
"""Add a string to the output. |
56 |
|
""" |
57 |
|
out.append(s) |
58 |
|
|
59 |
(triples, namespace_uris) = readTriples(graph) |
(triples, namespace_uris) = readTriples(graph) |
60 |
|
|
62 |
prefixes = uriByPrefix.keys() |
prefixes = uriByPrefix.keys() |
63 |
prefixes.sort() |
prefixes.sort() |
64 |
|
|
65 |
out = out + ("<rdf:RDF\n") |
w("<rdf:RDF\n") |
66 |
for prefix in prefixes: |
for prefix in prefixes: |
67 |
out = out + (" xmlns:%s='%s'\n" % (prefix, escape(uriByPrefix[prefix]))) |
w(" xmlns:%s='%s'\n" % (prefix, escape(uriByPrefix[prefix]))) |
68 |
out = out + (">\n\n") |
w(">\n\n") |
69 |
|
|
70 |
subjects = triples.keys(); subjects.sort() |
subjects = triples.keys(); subjects.sort() |
71 |
for subject in subjects: |
for subject in subjects: |
72 |
out = out + (" <rdf:Description rdf:about='%s'>\n" % escape(subject)) |
w(" <rdf:Description rdf:about='%s'>\n" % escape(subject)) |
73 |
properties = triples[subject].keys(); properties.sort() |
properties = triples[subject].keys(); properties.sort() |
74 |
for property in properties: |
for property in properties: |
75 |
(namespace_uri, local_name) = property |
(namespace_uri, local_name) = property |
77 |
objects = triples[subject][property]; objects.sort() |
objects = triples[subject][property]; objects.sort() |
78 |
for (object_type, object_str) in objects: |
for (object_type, object_str) in objects: |
79 |
if object_type == URI: |
if object_type == URI: |
80 |
out = out + (" <%s rdf:resource='%s'/>\n" % |
w(" <%s rdf:resource='%s'/>\n" % |
81 |
(prop_tag, escape(object_str))) |
(prop_tag, escape(object_str))) |
82 |
else: |
else: |
83 |
out = out + (" <%s>%s</%s>\n" % |
w(" <%s>%s</%s>\n" % |
84 |
(prop_tag, escape(object_str), prop_tag)) |
(prop_tag, escape(object_str), prop_tag)) |
85 |
|
|
86 |
out = out + (" </rdf:Description>\n\n") |
w(" </rdf:Description>\n\n") |
87 |
|
|
88 |
|
|
89 |
out = out + ("</rdf:RDF>\n") |
w("</rdf:RDF>\n") |
90 |
file = open(filename, 'w') |
file = open(filename, 'w') |
91 |
file.write(out) |
for str in out: |
92 |
|
file.write(str) |
93 |
file.close() |
file.close() |
94 |
|
|
95 |
|
|