Skip to content

Instantly share code, notes, and snippets.

@melpomene
Last active December 15, 2015 03:58
Show Gist options
  • Save melpomene/5197775 to your computer and use it in GitHub Desktop.
Save melpomene/5197775 to your computer and use it in GitHub Desktop.
From tabseperated list to RDF tripples.
import codecs
class Card:
def __init__(self, data):
self.idnr= data[0].strip("\n")
self.category = data[1].strip("\n")
self.star = data[2].strip("\n")
self.name = data[3].strip("\n")
self.questions = list()
self.addQuestion(data[4].strip("\n"), data[5].strip("\n"), data[6].strip("\n"))
def addQuestion(self,value, text, answer):
value = value.strip()
if value== "250": nr = 1
elif value == "500": nr = 2
elif value == "1000": nr = 3
elif value == "2000": nr = 4
elif value == "5000": nr = 5
elif value == "10000": nr = 6
else: raise Exception("Parse error")
self.questions.append([nr, value.strip("\n"), text.strip("\n"), answer.strip("\n")])
def __str__(self):
s = u"kvitt:card{0} rdf:type kvitt:Card;\n"
s += u"\tkvitt:header [\n"
s += u"\t\tkvitt:id\t{0};\n"
s += u'\t\tkvitt:category\t"{1}";\n'
s += u'\t\tkvitt:star\t"{2}";\n'
s += u'\t\tkvitt:name\t"{3}";\n'
s += u'\t\tkvitt:questions \n'
for q in self.questions:
if q[0] == 6:
last = u"]."
else:
last = u","
s += u'\t\t\t\t[kvitt:line\t{0}; kvitt:value\t{1}; kvitt:text\t"{2}"; kvitt:answer\t"{3}"]{4}\n'.format(q[0],q[1],q[2].replace('"', '\\"'),q[3].replace('"', '\\"'),last)
return s.format(self.idnr, self.category, self.star, self.name)
if __name__ == "__main__":
src = codecs.open('fragor.txt', 'r', "utf-8-sig")
dst = codecs.open('output.rdf', 'w', "utf-8-sig")
dst.write(u'@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.\n')
dst.write(u'@prefix kvitt: <http://cs.lth.se/ontologies/kvitt.owl#>.\n\n')
cards = dict()
for line in src:
data = line.split('\t')
if data[0] in cards:
cards[data[0]].addQuestion(data[4],data[5],data[6])
else:
cards[data[0]] = Card(data)
for card in cards: dst.write(unicode(cards[card]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment