/* * wordnet1a.pl * * Author: Maarten Menken * Version: 2 June 2004 */ :- use_module(library('semweb/rdf_db')), use_module(library('semweb/rdfs')). dir(wn, '../src'). out_file('../rdf/wordnet1a.rdf'). rdf_db:ns(wn, 'http://www.cogsci.princeton.edu/~wn#'). load_wordnet_schema :- rdf_load('wordnet1a.rdfs'). load_wordnet_prolog_file(File) :- dir(wn, Dir), concat_atom([Dir, File], '/', Path), consult(Path). load_all_wordnet_prolog :- load_wordnet_prolog_file('wn_s.pl'), load_wordnet_prolog_file('wn_g.pl'), load_wordnet_prolog_file('wn_hyp.pl'), load_wordnet_prolog_file('wn_ent.pl'), load_wordnet_prolog_file('wn_sim.pl'), load_wordnet_prolog_file('wn_mm.pl'), load_wordnet_prolog_file('wn_ms.pl'), load_wordnet_prolog_file('wn_mp.pl'), load_wordnet_prolog_file('wn_der.pl'), load_wordnet_prolog_file('wn_cs.pl'), load_wordnet_prolog_file('wn_vgp.pl'), load_wordnet_prolog_file('wn_at.pl'), load_wordnet_prolog_file('wn_ant.pl'), load_wordnet_prolog_file('wn_sa.pl'), load_wordnet_prolog_file('wn_ppl.pl'), load_wordnet_prolog_file('wn_per.pl'). create_instances :- rdf_db:ns(wn, NS), ( s(SynSetId, _, _, Type, _, _), atom_concat(NS, SynSetId, Subject), ( Type = n, Class = 'Noun' ; Type = v, Class = 'Verb' ; Type = a, Class = 'Adjective' ; Type = s, Class = 'AdjectiveSatellite' ; Type = r, Class = 'Adverb' ), atom_concat(NS, Class, Object), rdf_assert(Subject, rdf:type, Object), fail ; true ). create_word_forms :- rdf_db:ns(wn, NS), ( s(SynSetId, _, Word, _, _, _), atom_concat(NS, SynSetId, Subject), rdf_assert(Subject, wn:wordForm, literal(Word)), fail ; true ). create_gloss_entries :- rdf_db:ns(wn, NS), ( g(SynSetId, Gloss), atom_concat(NS, SynSetId, Subject), rdf_assert(Subject, wn:g, literal(Gloss)), fail ; true ). create_hyp_relations :- rdf_db:ns(wn, NS), ( hyp(Hypo, Hyper), atom_concat(NS, Hypo, Subject), atom_concat(NS, Hyper, Object), rdf_assert(Subject, wn:hyp, Object), fail ; true ). create_ent_relations :- rdf_db:ns(wn, NS), ( ent(Verb1, Verb2), atom_concat(NS, Verb1, Subject), atom_concat(NS, Verb2, Object), rdf_assert(Subject, wn:ent, Object), fail ; true ). create_sim_relations :- rdf_db:ns(wn, NS), ( sim(Adjective, AdjectiveSatellite), atom_concat(NS, Adjective, Subject), atom_concat(NS, AdjectiveSatellite, Object), rdf_assert(Subject, wn:sim, Object), fail ; true ). create_mm_relations :- rdf_db:ns(wn, NS), ( mm(Holo, Mero), atom_concat(NS, Mero, Subject), atom_concat(NS, Holo, Object), rdf_assert(Subject, wn:mm, Object), fail ; true ). create_ms_relations :- rdf_db:ns(wn, NS), ( ms(Holo, Mero), atom_concat(NS, Mero, Subject), atom_concat(NS, Holo, Object), rdf_assert(Subject, wn:ms, Object), fail ; true ). create_mp_relations :- rdf_db:ns(wn, NS), ( mp(Holo, Mero), atom_concat(NS, Mero, Subject), atom_concat(NS, Holo, Object), rdf_assert(Subject, wn:mp, Object), fail ; true ). create_der_relations :- rdf_db:ns(wn, NS), atom_concat(NS, 'SynSetWord', SynSetWordUri), ( der(SynSetId1, WordNum1, SynSetId2, WordNum2), atom_concat(NS, SynSetId1, SynSetUri1), atom_concat(NS, SynSetId2, SynSetUri2), s(SynSetId1, WordNum1, Word1, _, _, _), s(SynSetId2, WordNum2, Word2, _, _, _), rdf_bnode(SynSetWordId1), rdf_bnode(SynSetWordId2), atom_concat(NS, SynSetWordId1, SynSetWordUri1), atom_concat(NS, SynSetWordId2, SynSetWordUri2), rdf_assert(SynSetWordUri1, rdf:type, SynSetWordUri), rdf_assert(SynSetWordUri1, wn:inSynSet, SynSetUri1), rdf_assert(SynSetWordUri1, wn:relevantWord, literal(Word1)), rdf_assert(SynSetWordUri1, wn:der, SynSetWordUri2), rdf_assert(SynSetWordUri2, rdf:type, SynSetWordUri), rdf_assert(SynSetWordUri2, wn:inSynSet, SynSetUri2), rdf_assert(SynSetWordUri2, wn:relevantWord, literal(Word2)), fail ; true ). create_cs_relations :- rdf_db:ns(wn, NS), ( cs(Result, Cause), atom_concat(NS, Result, Subject), atom_concat(NS, Cause, Object), rdf_assert(Subject, wn:cs, Object), fail ; true ). create_vgp_relations :- rdf_db:ns(wn, NS), ( vgp(Verb1, _, Verb2, _), atom_concat(NS, Verb1, Subject), atom_concat(NS, Verb2, Object), rdf_assert(Subject, wn:vgp, Object), fail ; true ). create_at_relations :- rdf_db:ns(wn, NS), ( at(Noun, Adjective), atom_concat(NS, Noun, Subject), atom_concat(NS, Adjective, Object), rdf_assert(Subject, wn:at, Object), fail ; true ). create_ant_relations :- rdf_db:ns(wn, NS), atom_concat(NS, 'SynSetWord', SynSetWordUri), ( ant(SynSetId1, WordNum1, SynSetId2, WordNum2), atom_concat(NS, SynSetId1, SynSetUri1), atom_concat(NS, SynSetId2, SynSetUri2), s(SynSetId1, WordNum1, Word1, _, _, _), s(SynSetId2, WordNum2, Word2, _, _, _), rdf_bnode(SynSetWordId1), rdf_bnode(SynSetWordId2), atom_concat(NS, SynSetWordId1, SynSetWordUri1), atom_concat(NS, SynSetWordId2, SynSetWordUri2), rdf_assert(SynSetWordUri1, rdf:type, SynSetWordUri), rdf_assert(SynSetWordUri1, wn:inSynSet, SynSetUri1), rdf_assert(SynSetWordUri1, wn:relevantWord, literal(Word1)), rdf_assert(SynSetWordUri1, wn:ant, SynSetWordUri2), rdf_assert(SynSetWordUri2, rdf:type, SynSetWordUri), rdf_assert(SynSetWordUri2, wn:inSynSet, SynSetUri2), rdf_assert(SynSetWordUri2, wn:relevantWord, literal(Word2)), fail ; true ). create_sa_relations :- rdf_db:ns(wn, NS), atom_concat(NS, 'SynSetWord', SynSetWordUri), ( sa(SynSetId1, WordNum1, SynSetId2, WordNum2), atom_concat(NS, SynSetId1, SynSetUri1), atom_concat(NS, SynSetId2, SynSetUri2), s(SynSetId1, WordNum1, Word1, _, _, _), s(SynSetId2, WordNum2, Word2, _, _, _), rdf_bnode(SynSetWordId1), rdf_bnode(SynSetWordId2), atom_concat(NS, SynSetWordId1, SynSetWordUri1), atom_concat(NS, SynSetWordId2, SynSetWordUri2), rdf_assert(SynSetWordUri1, rdf:type, SynSetWordUri), rdf_assert(SynSetWordUri1, wn:inSynSet, SynSetUri1), rdf_assert(SynSetWordUri1, wn:relevantWord, literal(Word1)), rdf_assert(SynSetWordUri1, wn:sa, SynSetWordUri2), rdf_assert(SynSetWordUri2, rdf:type, SynSetWordUri), rdf_assert(SynSetWordUri2, wn:inSynSet, SynSetUri2), rdf_assert(SynSetWordUri2, wn:relevantWord, literal(Word2)), fail ; true ). create_ppl_relations :- rdf_db:ns(wn, NS), atom_concat(NS, 'AdjectiveWord', AdjectiveWordUri), atom_concat(NS, 'VerbWord', VerbWordUri), ( ppl(SynSetId1, WordNum1, SynSetId2, WordNum2), atom_concat(NS, SynSetId1, SynSetUri1), atom_concat(NS, SynSetId2, SynSetUri2), s(SynSetId1, WordNum1, Word1, _, _, _), s(SynSetId2, WordNum2, Word2, _, _, _), rdf_bnode(AdjectiveWordId), rdf_bnode(VerbWordId), atom_concat(NS, AdjectiveWordId, ThisAdjectiveWordUri), atom_concat(NS, VerbWordId, ThisVerbWordUri), rdf_assert(ThisAdjectiveWordUri, rdf:type, AdjectiveWordUri), rdf_assert(ThisAdjectiveWordUri, wn:inSynSet, SynSetUri1), rdf_assert(ThisAdjectiveWordUri, wn:relevantWord, literal(Word1)), rdf_assert(ThisAdjectiveWordUri, wn:ppl, ThisVerbWordUri), rdf_assert(ThisVerbWordUri, rdf:type, VerbWordUri), rdf_assert(ThisVerbWordUri, wn:inSynSet, SynSetUri2), rdf_assert(ThisVerbWordUri, wn:relevantWord, literal(Word2)), fail ; true ). create_per_relations :- rdf_db:ns(wn, NS), atom_concat(NS, 'SynSetWord', SynSetWordUri), ( per(SynSetId1, WordNum1, SynSetId2, WordNum2), atom_concat(NS, SynSetId1, SynSetUri1), atom_concat(NS, SynSetId2, SynSetUri2), s(SynSetId1, WordNum1, Word1, _, _, _), s(SynSetId2, WordNum2, Word2, _, _, _), rdf_bnode(SynSetWordId1), rdf_bnode(SynSetWordId2), atom_concat(NS, SynSetWordId1, SynSetWordUri1), atom_concat(NS, SynSetWordId2, SynSetWordUri2), rdf_assert(SynSetWordUri1, rdf:type, SynSetWordUri), rdf_assert(SynSetWordUri1, wn:inSynSet, SynSetUri1), rdf_assert(SynSetWordUri1, wn:relevantWord, literal(Word1)), rdf_assert(SynSetWordUri1, wn:per, SynSetWordUri2), rdf_assert(SynSetWordUri2, rdf:type, SynSetWordUri), rdf_assert(SynSetWordUri2, wn:inSynSet, SynSetUri2), rdf_assert(SynSetWordUri2, wn:relevantWord, literal(Word2)), fail ; true ). go :- load_all_wordnet_prolog, create_instances, create_word_forms, create_gloss_entries, create_hyp_relations, create_ent_relations, create_sim_relations, create_mm_relations, create_ms_relations, create_mp_relations, create_der_relations, create_cs_relations, create_vgp_relations, create_at_relations, create_ant_relations, create_sa_relations, create_ppl_relations, create_per_relations, out_file(OutFile), rdf_save(OutFile). :- go.