diff --git a/tetras_extraction/result/macao_3/macao_content.ttl b/tetras_extraction/result/macao_3/macao_content.ttl index 2b54d6f3b4a7b1e5d490213a8a3742a6e0675a3b..a9c44e8d6ea78484ee8041a6658658460fe7d8b7 100644 --- a/tetras_extraction/result/macao_3/macao_content.ttl +++ b/tetras_extraction/result/macao_3/macao_content.ttl @@ -417,8 +417,8 @@ rdfs:subClassOf :pg1809 . :pg186_rep150 a :Reponse ; - :__protege_display_name "pg186_rep150 | V" ; - :correct true ; + :__protege_display_name "pg186_rep150 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep150" onmouseover="if(exo)exo.changerBouton('rep150',true)" onmouseout="if(exo)exo.changerBouton('rep150',false)" onclick="exo.action('rep150')"> <script type="text/javascript">ajDocW(PF_clipAV('clipAV95', 'mot11_1a.swf', '50', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script> </div>""" ; @@ -427,8 +427,8 @@ rdfs:subClassOf :pg186 . :pg186_rep211 a :Reponse ; - :__protege_display_name "pg186_rep211 | F" ; - :correct false ; + :__protege_display_name "pg186_rep211 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep211" onmouseover="if(exo)exo.changerBouton('rep211',true)" onmouseout="if(exo)exo.changerBouton('rep211',false)" onclick="exo.action('rep211')"> <p> <script type="text/javascript">ajDocW(PF_clipAV('clipAV37', 'mot11_1b.swf', '50', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script> @@ -439,8 +439,8 @@ rdfs:subClassOf :pg186 . :pg186_rep223 a :Reponse ; - :__protege_display_name "pg186_rep223 | V" ; - :correct true ; + :__protege_display_name "pg186_rep223 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep223" onmouseover="if(exo)exo.changerBouton('rep223',true)" onmouseout="if(exo)exo.changerBouton('rep223',false)" onclick="exo.action('rep223')"><b>He's studied</b></div>""" ; :id "rep223" ; @@ -448,8 +448,8 @@ rdfs:subClassOf :pg186 . :pg186_rep550 a :Reponse ; - :__protege_display_name "pg186_rep550 | V" ; - :correct true ; + :__protege_display_name "pg186_rep550 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep550" onmouseover="if(exo)exo.changerBouton('rep550',true)" onmouseout="if(exo)exo.changerBouton('rep550',false)" onclick="exo.action('rep550')"><b></b> </div>""" ; :id "rep550" ; @@ -457,8 +457,8 @@ rdfs:subClassOf :pg186 . :pg186_rep957 a :Reponse ; - :__protege_display_name "pg186_rep957 | F" ; - :correct false ; + :__protege_display_name "pg186_rep957 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep957" onmouseover="if(exo)exo.changerBouton('rep957',true)" onmouseout="if(exo)exo.changerBouton('rep957',false)" onclick="exo.action('rep957')"><b>He studied </b></div>""" ; :id "rep957" ; @@ -1233,8 +1233,8 @@ rdfs:subClassOf :pg3209 . :pg3531_rep150 a :Reponse ; - :__protege_display_name "pg3531_rep150 | F" ; - :correct false ; + :__protege_display_name "pg3531_rep150 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep150" onmouseover="if(exo)exo.changerBouton('rep150',true)" onmouseout="if(exo)exo.changerBouton('rep150',false)" onclick="exo.action('rep150')">have had </div>""" ; :id "rep150" ; @@ -1242,8 +1242,8 @@ rdfs:subClassOf :pg3531 . :pg3531_rep211 a :Reponse ; - :__protege_display_name "pg3531_rep211 | V" ; - :correct true ; + :__protege_display_name "pg3531_rep211 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep211" onmouseover="if(exo)exo.changerBouton('rep211',true)" onmouseout="if(exo)exo.changerBouton('rep211',false)" onclick="exo.action('rep211')">the invisibility cloak </div>""" ; :id "rep211" ; @@ -1251,8 +1251,8 @@ rdfs:subClassOf :pg3531 . :pg3531_rep49 a :Reponse ; - :__protege_display_name "pg3531_rep49 | V" ; - :correct true ; + :__protege_display_name "pg3531_rep49 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep49" onmouseover="if(exo)exo.changerBouton('rep49',true)" onmouseout="if(exo)exo.changerBouton('rep49',false)" onclick="exo.action('rep49')"> confiscated </div>""" ; @@ -1261,8 +1261,8 @@ rdfs:subClassOf :pg3531 . :pg3531_rep627 a :Reponse ; - :__protege_display_name "pg3531_rep627 | F" ; - :correct false ; + :__protege_display_name "pg3531_rep627 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep627" onmouseover="if(exo)exo.changerBouton('rep627',true)" onmouseout="if(exo)exo.changerBouton('rep627',false)" onclick="exo.action('rep627')">Ron and Harry </div>""" ; :id "rep627" ; @@ -1270,8 +1270,8 @@ rdfs:subClassOf :pg3531 . :pg3531_rep842 a :Reponse ; - :__protege_display_name "pg3531_rep842 | V" ; - :correct true ; + :__protege_display_name "pg3531_rep842 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep842" onmouseover="if(exo)exo.changerBouton('rep842',true)" onmouseout="if(exo)exo.changerBouton('rep842',false)" onclick="exo.action('rep842')">feeling disappointed </div>""" ; :id "rep842" ; @@ -1787,8 +1787,8 @@ rdfs:subClassOf :act56626 . :pg4031_rep150 a :Reponse ; - :__protege_display_name "pg4031_rep150 | V" ; - :correct true ; + :__protege_display_name "pg4031_rep150 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep150" onmouseover="if(exo)exo.changerBouton('rep150',true)" onmouseout="if(exo)exo.changerBouton('rep150',false)" onclick="exo.action('rep150')">(2) </div>""" ; :id "rep150" ; @@ -1796,8 +1796,8 @@ rdfs:subClassOf :pg4031 . :pg4031_rep211 a :Reponse ; - :__protege_display_name "pg4031_rep211 | V" ; - :correct true ; + :__protege_display_name "pg4031_rep211 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep211" onmouseover="if(exo)exo.changerBouton('rep211',true)" onmouseout="if(exo)exo.changerBouton('rep211',false)" onclick="exo.action('rep211')">(3) </div>""" ; :id "rep211" ; @@ -1805,8 +1805,8 @@ rdfs:subClassOf :pg4031 . :pg4031_rep49 a :Reponse ; - :__protege_display_name "pg4031_rep49 | F" ; - :correct false ; + :__protege_display_name "pg4031_rep49 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep49" onmouseover="if(exo)exo.changerBouton('rep49',true)" onmouseout="if(exo)exo.changerBouton('rep49',false)" onclick="exo.action('rep49')">(4) </div>""" ; :id "rep49" ; @@ -1814,8 +1814,8 @@ rdfs:subClassOf :pg4031 . :pg4031_rep627 a :Reponse ; - :__protege_display_name "pg4031_rep627 | V" ; - :correct true ; + :__protege_display_name "pg4031_rep627 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep627" onmouseover="if(exo)exo.changerBouton('rep627',true)" onmouseout="if(exo)exo.changerBouton('rep627',false)" onclick="exo.action('rep627')">(1) </div>""" ; :id "rep627" ; @@ -1823,8 +1823,8 @@ rdfs:subClassOf :pg4031 . :pg4031_rep842 a :Reponse ; - :__protege_display_name "pg4031_rep842 | V" ; - :correct true ; + :__protege_display_name "pg4031_rep842 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep842" onmouseover="if(exo)exo.changerBouton('rep842',true)" onmouseout="if(exo)exo.changerBouton('rep842',false)" onclick="exo.action('rep842')">(5) </div>""" ; :id "rep842" ; @@ -1921,8 +1921,8 @@ rdfs:subClassOf :pg4192 . :pg422_rep150 a :Reponse ; - :__protege_display_name "pg422_rep150 | V" ; - :correct true ; + :__protege_display_name "pg422_rep150 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep150" onmouseover="if(exo)exo.changerBouton('rep150',true)" onmouseout="if(exo)exo.changerBouton('rep150',false)" onclick="exo.action('rep150')">much </div>""" ; :id "rep150" ; @@ -1930,8 +1930,8 @@ rdfs:subClassOf :pg422 . :pg422_rep211 a :Reponse ; - :__protege_display_name "pg422_rep211 | V" ; - :correct true ; + :__protege_display_name "pg422_rep211 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep211" onmouseover="if(exo)exo.changerBouton('rep211',true)" onmouseout="if(exo)exo.changerBouton('rep211',false)" onclick="exo.action('rep211')">advertised </div>""" ; :id "rep211" ; @@ -1939,8 +1939,8 @@ rdfs:subClassOf :pg422 . :pg422_rep627 a :Reponse ; - :__protege_display_name "pg422_rep627 | F" ; - :correct false ; + :__protege_display_name "pg422_rep627 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep627" onmouseover="if(exo)exo.changerBouton('rep627',true)" onmouseout="if(exo)exo.changerBouton('rep627',false)" onclick="exo.action('rep627')">was </div>""" ; :id "rep627" ; @@ -1977,8 +1977,8 @@ rdfs:subClassOf :act765533 . :pg4396_rep150 a :Reponse ; - :__protege_display_name "pg4396_rep150 | F" ; - :correct false ; + :__protege_display_name "pg4396_rep150 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep150" onmouseover="if(exo)exo.changerBouton('rep150',true)" onmouseout="if(exo)exo.changerBouton('rep150',false)" onclick="exo.action('rep150')">his </div>""" ; :id "rep150" ; @@ -1986,8 +1986,8 @@ rdfs:subClassOf :pg4396 . :pg4396_rep211 a :Reponse ; - :__protege_display_name "pg4396_rep211 | V" ; - :correct true ; + :__protege_display_name "pg4396_rep211 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep211" onmouseover="if(exo)exo.changerBouton('rep211',true)" onmouseout="if(exo)exo.changerBouton('rep211',false)" onclick="exo.action('rep211')">paddock </div>""" ; :id "rep211" ; @@ -1995,8 +1995,8 @@ rdfs:subClassOf :pg4396 . :pg4396_rep36 a :Reponse ; - :__protege_display_name "pg4396_rep36 | V" ; - :correct true ; + :__protege_display_name "pg4396_rep36 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep36" onmouseover="if(exo)exo.changerBouton('rep36',true)" onmouseout="if(exo)exo.changerBouton('rep36',false)" onclick="exo.action('rep36')"> could win </div>""" ; @@ -2005,8 +2005,8 @@ rdfs:subClassOf :pg4396 . :pg4396_rep49 a :Reponse ; - :__protege_display_name "pg4396_rep49 | V" ; - :correct true ; + :__protege_display_name "pg4396_rep49 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep49" onmouseover="if(exo)exo.changerBouton('rep49',true)" onmouseout="if(exo)exo.changerBouton('rep49',false)" onclick="exo.action('rep49')"> if only </div>""" ; @@ -2015,8 +2015,8 @@ rdfs:subClassOf :pg4396 . :pg4396_rep50 a :Reponse ; - :__protege_display_name "pg4396_rep50 | V" ; - :correct true ; + :__protege_display_name "pg4396_rep50 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep50" onmouseover="if(exo)exo.changerBouton('rep50',true)" onmouseout="if(exo)exo.changerBouton('rep50',false)" onclick="exo.action('rep50')"> the race </div>""" ; @@ -2025,8 +2025,8 @@ rdfs:subClassOf :pg4396 . :pg4396_rep627 a :Reponse ; - :__protege_display_name "pg4396_rep627 | V" ; - :correct true ; + :__protege_display_name "pg4396_rep627 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep627" onmouseover="if(exo)exo.changerBouton('rep627',true)" onmouseout="if(exo)exo.changerBouton('rep627',false)" onclick="exo.action('rep627')">from </div>""" ; :id "rep627" ; @@ -2034,8 +2034,8 @@ rdfs:subClassOf :pg4396 . :pg4396_rep842 a :Reponse ; - :__protege_display_name "pg4396_rep842 | F" ; - :correct false ; + :__protege_display_name "pg4396_rep842 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep842" onmouseover="if(exo)exo.changerBouton('rep842',true)" onmouseout="if(exo)exo.changerBouton('rep842',false)" onclick="exo.action('rep842')">he </div>""" ; :id "rep842" ; @@ -2586,8 +2586,8 @@ rdfs:subClassOf :act838137 . :pg5836_rep150 a :Reponse ; - :__protege_display_name "pg5836_rep150 | V" ; - :correct true ; + :__protege_display_name "pg5836_rep150 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep150" onmouseover="if(exo)exo.changerBouton('rep150',true)" onmouseout="if(exo)exo.changerBouton('rep150',false)" onclick="exo.action('rep150')">la prononciation est la même ; </div>""" ; @@ -2596,8 +2596,8 @@ rdfs:subClassOf :pg5836 . :pg5836_rep306 a :Reponse ; - :__protege_display_name "pg5836_rep306 | V" ; - :correct true ; + :__protege_display_name "pg5836_rep306 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep306" onmouseover="if(exo)exo.changerBouton('rep306',true)" onmouseout="if(exo)exo.changerBouton('rep306',false)" onclick="exo.action('rep306')">la prononciation est nettement différente. </div>""" ; @@ -2606,8 +2606,8 @@ rdfs:subClassOf :pg5836 . :pg5836_rep627 a :Reponse ; - :__protege_display_name "pg5836_rep627 | F" ; - :correct false ; + :__protege_display_name "pg5836_rep627 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep627" onmouseover="if(exo)exo.changerBouton('rep627',true)" onmouseout="if(exo)exo.changerBouton('rep627',false)" onclick="exo.action('rep627')">il est difficile d'établir une différence ; </div>""" ; @@ -3464,8 +3464,8 @@ rdfs:subClassOf :act704962 . :pg8601_rep150 a :Reponse ; - :__protege_display_name "pg8601_rep150 | F" ; - :correct false ; + :__protege_display_name "pg8601_rep150 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep150" onmouseover="if(exo)exo.changerBouton('rep150',true)" onmouseout="if(exo)exo.changerBouton('rep150',false)" onclick="exo.action('rep150')">could </div>""" ; :id "rep150" ; @@ -3473,8 +3473,8 @@ rdfs:subClassOf :pg8601 . :pg8601_rep29 a :Reponse ; - :__protege_display_name "pg8601_rep29 | V" ; - :correct true ; + :__protege_display_name "pg8601_rep29 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep29" onmouseover="if(exo)exo.changerBouton('rep29',true)" onmouseout="if(exo)exo.changerBouton('rep29',false)" onclick="exo.action('rep29')">medical </div>""" ; :id "rep29" ; @@ -3482,8 +3482,8 @@ rdfs:subClassOf :pg8601 . :pg8601_rep319 a :Reponse ; - :__protege_display_name "pg8601_rep319 | V" ; - :correct true ; + :__protege_display_name "pg8601_rep319 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep319" onmouseover="if(exo)exo.changerBouton('rep319',true)" onmouseout="if(exo)exo.changerBouton('rep319',false)" onclick="exo.action('rep319')">start </div>""" ; :id "rep319" ; @@ -3491,8 +3491,8 @@ rdfs:subClassOf :pg8601 . :pg8601_rep326 a :Reponse ; - :__protege_display_name "pg8601_rep326 | V" ; - :correct true ; + :__protege_display_name "pg8601_rep326 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep326" onmouseover="if(exo)exo.changerBouton('rep326',true)" onmouseout="if(exo)exo.changerBouton('rep326',false)" onclick="exo.action('rep326')">studies </div>""" ; :id "rep326" ; @@ -3500,8 +3500,8 @@ rdfs:subClassOf :pg8601 . :pg8601_rep437 a :Reponse ; - :__protege_display_name "pg8601_rep437 | V" ; - :correct true ; + :__protege_display_name "pg8601_rep437 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep437" onmouseover="if(exo)exo.changerBouton('rep437',true)" onmouseout="if(exo)exo.changerBouton('rep437',false)" onclick="exo.action('rep437')">I </div>""" ; :id "rep437" ; @@ -3509,8 +3509,8 @@ rdfs:subClassOf :pg8601 . :pg8601_rep621 a :Reponse ; - :__protege_display_name "pg8601_rep621 | F" ; - :correct false ; + :__protege_display_name "pg8601_rep621 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep621" onmouseover="if(exo)exo.changerBouton('rep621',true)" onmouseout="if(exo)exo.changerBouton('rep621',false)" onclick="exo.action('rep621')">if </div>""" ; :id "rep621" ; @@ -3518,8 +3518,8 @@ rdfs:subClassOf :pg8601 . :pg8601_rep627 a :Reponse ; - :__protege_display_name "pg8601_rep627 | V" ; - :correct true ; + :__protege_display_name "pg8601_rep627 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep627" onmouseover="if(exo)exo.changerBouton('rep627',true)" onmouseout="if(exo)exo.changerBouton('rep627',false)" onclick="exo.action('rep627')">again </div>""" ; :id "rep627" ; @@ -3738,8 +3738,8 @@ rdfs:subClassOf :act56626 . :pg9264_rep378 a :Reponse ; - :__protege_display_name "pg9264_rep378 | V" ; - :correct true ; + :__protege_display_name "pg9264_rep378 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep378" onmouseover="if(exo)exo.changerBouton('rep378',true)" onmouseout="if(exo)exo.changerBouton('rep378',false)" onclick="exo.action('rep378')">for his doctorate on Sydney's urban life </div>""" ; @@ -3748,8 +3748,8 @@ rdfs:subClassOf :pg9264 . :pg9264_rep511 a :Reponse ; - :__protege_display_name "pg9264_rep511 | F" ; - :correct false ; + :__protege_display_name "pg9264_rep511 | V" ; + :correct true ; :html """<div class="STY_reponseQC" id="lienrep511" onmouseover="if(exo)exo.changerBouton('rep511',true)" onmouseout="if(exo)exo.changerBouton('rep511',false)" onclick="exo.action('rep511')">Ron is now studying in Australia </div>""" ; @@ -3758,8 +3758,8 @@ rdfs:subClassOf :pg9264 . :pg9264_rep894 a :Reponse ; - :__protege_display_name "pg9264_rep894 | V" ; - :correct true ; + :__protege_display_name "pg9264_rep894 | F" ; + :correct false ; :html """<div class="STY_reponseQC" id="lienrep894" onmouseover="if(exo)exo.changerBouton('rep894',true)" onmouseout="if(exo)exo.changerBouton('rep894',false)" onclick="exo.action('rep894')">a scholarship </div>""" ; diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py index f149cba607033f4c3996898e1f07143314ff74c5..a06280a591c0f9e3b65c6500e69e3be96549cdc1 100644 --- a/tetras_extraction/script/src/extract_page.py +++ b/tetras_extraction/script/src/extract_page.py @@ -341,8 +341,6 @@ class RegexParser(JSParser): exo.set_correct(choice_id, True) else: - score = self._parse_score(code) - # tinker with this regex : https://regex101.com/r/qAkdDD/2 answers_regex = re.compile( r""" @@ -357,19 +355,29 @@ class RegexParser(JSParser): [ ]\"\",[ ]\"\",[ ]\"\"\); # empty params""", re.VERBOSE, ) - for match in answers_regex.finditer(code): + answers = list(answers_regex.finditer(code)) + # Yet another layer of obfuscation: correct/incorrect are inverted + # depending on the total score and number of answers + # (see ClasseExerciceQC.js:86) + score = self._parse_score(code) + is_inverted = ((len(answers) + score) % 2) == 1 + for match in answers: + # Answer ID is obfuscated by changing some digits choice_id = decode_answer_id(match.group("id")) choice = exo._get_or_create(choice_id) - choice.is_correct = match.group("correct") == "1" - print(choice) - pass + choice.is_correct = (match.group("correct") == "1") != is_inverted def _parse_score(self, code: str): - m = re.match(r"exo\.scoreTotal ?= ?(\d+);", code) - if m is not None: - return int(m.group(1)) - else: - return None + """Parse the activity's 'total score' variable""" + exception = ParseError("Failed to parse total score for this activity") + m = re.search(r"exo\.scoreTotal ?= ?(\d+);", code) + try: + if m is not None: + return int(m.group(1)) + else: + raise exception + except ValueError as e: + raise exception from e class XpathParser(JSParser):