#!/usr/bin/env python

# generates a nodebox file for visualizing syndetic 
# links between subjects when skos rdf/xml fed on stdin 

from rdflib.Graph import Graph
from rdflib import Namespace
from sys import stdin

g = Graph()
g.parse(stdin)
SKOS = Namespace('http://www.w3.org/2004/02/skos/core#')

print """
graph = ximport('graph')

g = graph.create(iterations=500, distance=1.0, layout='spring', depth=True)
"""

for pref_label in g.objects(predicate=SKOS['prefLabel']):
    print "g.add_node('%s')" % pref_label

for s, o in g.subject_objects(SKOS["broader"]):
    s_label = g.value(subject=s, predicate=SKOS["prefLabel"])
    o_label = g.value(subject=o, predicate=SKOS["prefLabel"])
    if o_label is not None:
        print "g.add_edge('%s', '%s', label='BT')" % (s_label, o_label)

for s, o in g.subject_objects(SKOS["related"]):
    s_label = g.value(subject=s, predicate=SKOS["prefLabel"])
    o_label = g.value(subject=o, predicate=SKOS["prefLabel"])
    if o_label is not None:
        print "g.add_edge('%s', '%s', label='RT')" % (s_label, o_label)


print """
g.solve()
g.draw(directed=True)
"""
