#!/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) """