#!/usr/bin/env python
import argparse
import csv
import semanticnet as sn
import sys
sys.path.append('C:\Python34')
def add_edge_ifn(graph, src, dst):
# get the edges between src and dst
edges = graph.get_edges_between(src, dst)
# if there are no edges, add one and return it
if not edges:
return graph.add_edge(src, dst)
# if there is, return the first edge's ID
return edges.items()[0][0]
if __name__ == "__main__":
parser = argparse.ArgumentParser("ssv.py")
parser.add_argument("input_filename", type=str)
parser.add_argument("output_filename", type=str)
args = parser.parse_args()
g = sn.DiGraph()
with open(args.input_filename, "dataSmall") as infile:
reader = csv.reader(infile, delimiter=',')
for row in reader:
previous = None
for elem in row:
current = g.get_or_add_node(elem, {"label": elem})
if previous != None:
add_edge_ifn(g, previous['id'], current['id'])
previous = current
g.save_json(args.output_filename)
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgppbXBvcnQgYXJncGFyc2UKaW1wb3J0IGNzdgppbXBvcnQgc2VtYW50aWNuZXQgYXMgc24KaW1wb3J0IHN5cwpzeXMucGF0aC5hcHBlbmQoJ0M6XFB5dGhvbjM0JykKCmRlZiBhZGRfZWRnZV9pZm4oZ3JhcGgsIHNyYywgZHN0KToKICAgICMgZ2V0IHRoZSBlZGdlcyBiZXR3ZWVuIHNyYyBhbmQgZHN0CiAgICBlZGdlcyA9IGdyYXBoLmdldF9lZGdlc19iZXR3ZWVuKHNyYywgZHN0KQogICAgIyBpZiB0aGVyZSBhcmUgbm8gZWRnZXMsIGFkZCBvbmUgYW5kIHJldHVybiBpdAogICAgaWYgbm90IGVkZ2VzOgogICAgICAgIHJldHVybiBncmFwaC5hZGRfZWRnZShzcmMsIGRzdCkKICAgICMgaWYgdGhlcmUgaXMsIHJldHVybiB0aGUgZmlyc3QgZWRnZSdzIElECiAgICByZXR1cm4gZWRnZXMuaXRlbXMoKVswXVswXQoKaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCJzc3YucHkiKQogICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiaW5wdXRfZmlsZW5hbWUiLCB0eXBlPXN0cikKICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIm91dHB1dF9maWxlbmFtZSIsIHR5cGU9c3RyKQogICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKCiAgICBnID0gc24uRGlHcmFwaCgpCiAgICB3aXRoIG9wZW4oYXJncy5pbnB1dF9maWxlbmFtZSwgImRhdGFTbWFsbCIpIGFzIGluZmlsZToKICAgICAgICByZWFkZXIgPSBjc3YucmVhZGVyKGluZmlsZSwgZGVsaW1pdGVyPScsJykKICAgICAgICBmb3Igcm93IGluIHJlYWRlcjoKICAgICAgICAgICAgcHJldmlvdXMgPSBOb25lCiAgICAgICAgICAgIGZvciBlbGVtIGluIHJvdzoKICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBnLmdldF9vcl9hZGRfbm9kZShlbGVtLCB7ImxhYmVsIjogZWxlbX0pCiAgICAgICAgICAgICAgICBpZiBwcmV2aW91cyAhPSBOb25lOgogICAgICAgICAgICAgICAgICAgIGFkZF9lZGdlX2lmbihnLCBwcmV2aW91c1snaWQnXSwgY3VycmVudFsnaWQnXSkKICAgICAgICAgICAgICAgIHByZXZpb3VzID0gY3VycmVudAoKICAgIGcuc2F2ZV9qc29uKGFyZ3Mub3V0cHV0X2ZpbGVuYW1lKQ==