Mercurial > repos > stevecassidy > alveoimport
annotate austalk-select-hVd-words.py @ 13:be3fd14899a1 draft
planemo upload commit e5d2a8ba1fcf33758cdc07e0a14e86427752c968-dirty
author | stevecassidy |
---|---|
date | Wed, 01 Feb 2017 22:34:24 -0500 |
parents | c99e7f09ce12 |
children | a38315ecf593 |
rev | line source |
---|---|
4
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
1 from __future__ import print_function |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
2 import argparse |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
3 import pyalveo |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
4 import sys |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
5 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
6 API_URL = 'https://app.alveo.edu.au/' |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
7 PREFIXES = """ |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
8 PREFIX dc:<http://purl.org/dc/terms/> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
9 PREFIX austalk:<http://ns.austalk.edu.au/> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
10 PREFIX olac:<http://www.language-archives.org/OLAC/1.1/> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
11 PREFIX ausnc:<http://ns.ausnc.org.au/schemas/ausnc_md_model/> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
12 PREFIX foaf:<http://xmlns.com/foaf/0.1/> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
13 PREFIX dbpedia:<http://dbpedia.org/ontology/> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
14 PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
15 PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
16 PREFIX geo:<http://www.w3.org/2003/01/geo/wgs84_pos#> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
17 PREFIX iso639schema:<http://downlode.org/rdf/iso-639/schema#> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
18 PREFIX austalkid:<http://id.austalk.edu.au/> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
19 PREFIX iso639:<http://downlode.org/rdf/iso-639/languages#> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
20 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
21 PREFIX is: <http://purl.org/ontology/is/core#> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
22 PREFIX iso: <http://purl.org/iso25964/skos-thes#> |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
23 PREFIX dada: <http://purl.org/dada/schema/0.2#>""" |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
24 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
25 def parser(): |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
26 parser = argparse.ArgumentParser(description="Retrieves Alveo Item Lists") |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
27 parser.add_argument('--api_key', required=True, action="store", type=str, help="Alveo API key") |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
28 parser.add_argument('--speaker', required=True, action="store", type=str, help="Speaker identifier") |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
29 parser.add_argument('--words', required=False, default='all', action="store", type=str, help="Word group (all, monopthongs, dipthongs)") |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
30 parser.add_argument('--output', required=True, action="store", type=str, help="output file name") |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
31 return parser.parse_args() |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
32 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
33 def find_hVd_words(api_key, speakerid, output, words='all'): |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
34 """Find words in the Austalk corpus |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
35 """ |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
36 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
37 client = pyalveo.Client(api_key, API_URL, use_cache=False) |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
38 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
39 query = PREFIXES + """ |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
40 SELECT distinct ?item ?prompt ?compname |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
41 WHERE { |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
42 ?item a ausnc:AusNCObject . |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
43 ?item olac:speaker ?speaker . |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
44 ?speaker austalk:id "%s" . |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
45 ?item austalk:prompt ?prompt . |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
46 ?item austalk:componentName ?compname . |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
47 """ % speakerid |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
48 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
49 hVdWords = { |
12
c99e7f09ce12
planemo upload commit e5d2a8ba1fcf33758cdc07e0a14e86427752c968-dirty
stevecassidy
parents:
11
diff
changeset
|
50 'monopthongs': ['head', 'had', 'hud', 'heed', 'hid', 'hood', 'hod', 'whod', 'herd', 'haired', 'hard', 'horde'], |
c99e7f09ce12
planemo upload commit e5d2a8ba1fcf33758cdc07e0a14e86427752c968-dirty
stevecassidy
parents:
11
diff
changeset
|
51 'dipthongs': ['howd', 'hoyd', 'hide', 'hode', 'hade', 'heared'] |
4
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
52 } |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
53 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
54 if words == 'all': |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
55 words = hVdWords['monopthongs'] + hVdWords['dipthongs'] |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
56 else: |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
57 words = hVdWords[words] |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
58 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
59 filterclause = 'FILTER regex(?prompt, "^' |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
60 filterclause += '$|^'.join(words) |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
61 filterclause += '$", "i")\n' |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
62 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
63 query += filterclause + "}" |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
64 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
65 result = client.sparql_query('austalk', query) |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
66 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
67 items = [] |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
68 for b in result['results']['bindings']: |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
69 items.append((b['prompt']['value'], b['item']['value'])) |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
70 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
71 with open(output, 'w') as out: |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
72 out.write("Speaker\tPrompt\tItemURL\n") |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
73 for item in items: |
11
4d575b4b28d2
planemo upload commit 2acf1e5f5efe0ee3ef51a611a3f7c94ce73d3b89-dirty
stevecassidy
parents:
4
diff
changeset
|
74 # TODO: fix this once the RDF data is fixed in alveo |
4d575b4b28d2
planemo upload commit 2acf1e5f5efe0ee3ef51a611a3f7c94ce73d3b89-dirty
stevecassidy
parents:
4
diff
changeset
|
75 # need to modify the item URL |
4d575b4b28d2
planemo upload commit 2acf1e5f5efe0ee3ef51a611a3f7c94ce73d3b89-dirty
stevecassidy
parents:
4
diff
changeset
|
76 itemurl = item[1].replace('http://id.austalk.edu.au/item/', 'https://app.alveo.edu.au/catalog/austalk/') |
12
c99e7f09ce12
planemo upload commit e5d2a8ba1fcf33758cdc07e0a14e86427752c968-dirty
stevecassidy
parents:
11
diff
changeset
|
77 |
11
4d575b4b28d2
planemo upload commit 2acf1e5f5efe0ee3ef51a611a3f7c94ce73d3b89-dirty
stevecassidy
parents:
4
diff
changeset
|
78 out.write(speakerid + "\t" + item[0] + "\t" + itemurl + "\n") |
4
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
79 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
80 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
81 def main(): |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
82 args = parser() |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
83 try: |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
84 api_key = open(args.api_key, 'r').read().strip() |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
85 find_hVd_words(api_key, args.speaker, args.output, args.words) |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
86 except Exception as e: |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
87 print("ERROR: " + str(e), file=sys.stderr) |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
88 sys.exit(1) |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
89 |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
90 if __name__ == '__main__': |
3a9f20428cff
planemo upload commit f36456464c692ed9d39a9cf654d09fe793113cce-dirty
stevecassidy
parents:
diff
changeset
|
91 main() |