#!/usr/bin/env python """ tabulate.py - Convert N-Triples to XHTML Table Author: Sean B. Palmer, inamidst.com Requires: http://inamidst.com/proj/rdf/ntriples.py """ import ntriples class Sink(object): def __init__(self): self.triples = {} def triple(self, s, p, o): if self.triples.has_key(s): if self.triples[s].has_key(p): self.triples[s][p].append(o) else: self.triples[s][p] = [o] else: self.triples[s] = {p: [o]} def escape(text): text = text.replace('&', '&') return text.replace('<', '<') def uri(value): return escape('<' + value + '>') def bnode(value): return escape('_:' + value) def literal(value, lang, dtype): if lang: append = '@' + lang elif dtype: append = '^^' + dtype else: append = '' return escape('"' + value + '"' + append) def main(): import sys ntriples.URI = uri ntriples.bNode = bnode ntriples.Literal = literal parser = ntriples.NTriplesParser(Sink()) f = open(sys.argv[1]) sink = parser.parse(f) f.close() print '' print '
' print s print ' | ' for b, p in enumerate(sorted(sink.triples[s].keys())): if b > 0: print '||
' print ' | ' print p print ' | ' for c, o in enumerate(sorted(sink.triples[s][p])): if c > 0: print '|
' print ' | ' print o print ' | ' print '