我想要制作一系列文本到N3格式,这样我最终可以将它们更改为RDF。文本文件的每一行都有一个如下条目:
09827177 18 n 03 aristocrat 0 blue_blood 0 patrician 0 013 @ 09646208 n 0000 #m 08404938 n 0000 + 01594891 a 0306 + 01594891 a 0102~09860027 n 0000~09892248 n 0000~10103592 n 0000~10194721 n 0000 ~10304832 n 0000~10492384 n 0000~10493649 n 0000~10525325 n 0000~10526235 n 0000 |贵族成员
我试图从上面的陈述中制作三元组,因此它们看起来像下表。
Subject Predicate Object
(synset_offset)
09807754 lex_filenum 18
09807754 ss_type n
09807754 lexical_entry aristocrat
09807754 lexical_entry blue_blood
09807754 lexical_entry patrician
09807754 has_pointer 09623038
09623038 ss_type n
09623038 source_target 0000
09807754 description a member of aristocracy
我能够使用以下方法从文本的每一行读取大部分变量:
f = open("wordnetSample.txt", "r")
for line in f:
L = line.split()
L2 = line.split('|')
synset_offset = L[0]
lex_filenum = L[1]
ss_type = L[2]
word = (L[4:4 + 2 * int(L[3]):2])
gloss = (L2[1].split('\n')[0])
我遇到的问题是我不知道要使用哪些命名空间或类似的东西。我是这种格式化的新手,也是一般的python。我一直在研究,觉得它应该是这样的:
'''<http://example.org/#'''+synset_offset+'''> <http://xmlns.com/foaf/0.1/lex_filenum> '''+lex_filenum+''' .
我也被告知海龟符号可能是更好的选择,但我无法理解它。
答案 0 :(得分:1)
在RDF中,资源和属性由IRI识别。选择资源和属性IRI的选择取决于您。如果您拥有域名,则可以选择使用基于此的IRI。如果您从其他地方提取数据,并且基于此使用名称是有意义的,您可以选择使用基于此的IRI。如果IRI已经在某处确定了某些资源或属性,那么尝试重用这些资源或属性总是好的,但找到它们并不总是那么容易。
在您的情况下,数据来自WordNet,您应该对W3C工作草案RDF/OWL Representation of WordNet非常感兴趣。我不知道其中的方法和命名空间是否被广泛采用,但这种方法肯定是你可以从中学到的东西。例如
Synset,WordSense和Word的每个实例都有自己的URI。 URI有一种模式,以便(a)很容易从URI确定实例所属的类; (b)URI提供有关其所代表实体含义的一些信息。例如,以下URI
http://www.w3.org/2006/03/wn/wn20/instances/synset-bank-noun-2
是NounSynset。这个NounSynset包含一个WordSense,这是第一个意思是“银行”。 Synset实例的模式是:wn20instances:+ synset- +%lexform% - +%type% - +%sensenr%。 %lexform%是Synset的第一个WordSense的词汇形式(普林斯顿源中的第一个WordSense,由其“wordnumber”表示,请参阅WordNet Prolog发行版概述)。 %type%是名词,动词,形容词,形容词卫星和副词之一。 %sensenr%是synset中包含的WordSense的编号。此模式生成唯一的URI,因为WordSense唯一标识了synset(WordSense只属于一个Synset)。
架构还定义了WordNet架构的许多属性。您应该尽可能重复使用这些IRI。