From 2d8e8fbc0bd30c3e1b9c41a8fea78452f01fece4 Mon Sep 17 00:00:00 2001
From: eliott <eliott.sammier@tetras-libre.fr>
Date: Thu, 1 Aug 2024 15:26:41 +0200
Subject: [PATCH 01/22] Parse TAT text and gaps

---
 tetras_extraction/script/src/extract_page.py | 45 +++++++++++++++++++-
 1 file changed, 43 insertions(+), 2 deletions(-)

diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index 1a3e908..a449e9c 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -183,6 +183,14 @@ class ChoiceGroup:
         self.items: list[Choice]
 
 
+class Gap:
+    """A gap in a gap-fill text exercise"""
+
+    def __init__(self, id: str):
+        self.id = id
+        self.choices: list[Choice] = []
+
+
 class ExerciceQC(Exercice):
     def __init__(self, is_qcm: bool = False) -> None:
         super().__init__()
@@ -275,8 +283,41 @@ class ExerciceQM(Exercice):
 class ExerciceTAT(Exercice):
     def __init__(self):
         super().__init__()
-        self.text: str  # can be HTML
-        self.gaps: list[ChoiceGroup]
+        self.segments: list[str | Gap] = []
+
+    @override
+    def parse_html(self, root: HtmlElement):
+        super().parse_html(root)
+        # Find the text container
+        try:
+            container = root.find_class("STY_texteTAT")[0]
+        except IndexError as e:
+            raise ParseError("ExerciceTAT: text container not found") from e
+
+        # Text buffer accumulates the text found
+        text_segment_buf = container.text or ""
+        for elem in container:
+            if elem.tag == "select" and "STY_selectTAT" in elem.classes:
+                # It's a gap
+                # Time to "close" the text segment and add it
+                self.segments.append(text_segment_buf)
+                # Add the gap
+                gap_id = elem.attrib["id"].replace("champTrou", "")
+                self.segments.append(Gap(gap_id))
+                # New text segment starts with the tail text of this element
+                text_segment_buf = elem.tail or ""
+            else:
+                text_segment_buf += to_html(elem)
+
+        self.segments.append(text_segment_buf)
+
+        nb_total_gaps = len(container.find_class("STY_selectTAT"))
+        nb_found_gaps = len([e for e in self.segments if isinstance(e, Gap)])
+        if nb_found_gaps != nb_total_gaps:
+            log.warning(
+                f"{self.id}: Text has {nb_total_gaps} gaps in total, but found {nb_found_gaps} gap elements, some might be missing"
+            )
+        pass
 
 
 class ExerciceGD(Exercice):
-- 
GitLab


From 692947d999cf8db8d9582995c7f947cd73aeb9cc Mon Sep 17 00:00:00 2001
From: eliott <eliott.sammier@tetras-libre.fr>
Date: Thu, 1 Aug 2024 15:27:04 +0200
Subject: [PATCH 02/22] Minor logging enhancements

---
 tetras_extraction/script/src/extract_page.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index a449e9c..d224daf 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -102,10 +102,10 @@ class Activity:
                         self.comment_consigne = comment
                     case alpha, num:
                         log.warning(
-                            f"No match for comment {alpha}[{num}] ('{comment.id}')"
+                            f"{self.id}: No match for comment {alpha}[{num}] ('{comment.id}')"
                         )
                     case something:
-                        log.warning(f"No match for comment '{something}'")
+                        log.warning(f"{self.id}: No match for comment '{something}'")
 
     def get_name(self) -> str:
         return type(self).__name__
@@ -228,7 +228,7 @@ class ExerciceQC(Exercice):
                     choice.comment = self.comments_sugg.pop(choice.comment.id)
                 except KeyError:
                     log.warning(
-                        f"Choice '{choice.id}' requested comment '{choice.comment.id}', which was not found in HTML."
+                        f"{self.id}: Choice '{choice.id}' requested comment '{choice.comment.id}', which was not found in HTML."
                     )
 
     @override
-- 
GitLab


From 229bc46aaa94e7cf7bf45b341da4387b5bc27d1d Mon Sep 17 00:00:00 2001
From: eliott <eliott.sammier@tetras-libre.fr>
Date: Fri, 2 Aug 2024 10:55:59 +0200
Subject: [PATCH 03/22] Use dataclasses for readability & auto-boilerplate

---
 tetras_extraction/script/src/extract_page.py | 161 ++++++++-----------
 1 file changed, 71 insertions(+), 90 deletions(-)

diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index d224daf..691d033 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -1,10 +1,8 @@
 import re
 from abc import abstractmethod
-from dataclasses import dataclass
-from typing import Any
+from dataclasses import dataclass, field
 
 from lxml import html
-from lxml.etree import _Element
 from lxml.html import HtmlElement
 from rdflib import RDF, Graph, Literal
 from typing_extensions import override
@@ -15,62 +13,68 @@ from common import *
 log = get_logger("extract_page")
 
 
-class Comment:
-    def __init__(self, id: str = ""):
-        self.id = id
-        self.num: int
-        self.text: str
-        self.html: Any
-        self.elem: _Element
+class Base:
+    """A default base class to implement convenience methods"""
 
     @override
-    def __repr__(self):
-        return str(self.__dict__)
+    def __repr__(self) -> str:
+        return str(type(self).__name__) + str(self.__dict__)
+
+
+@dataclass
+class Comment:
+    id: str
+    """The comment's identifier, unique in its parent activity"""
+    num: int = -1
+    """The comment's index in the activity, its order"""
+    html: str = ""
+    """The comment as raw HTML"""
+    text: str = ""
+    """The comment as plain text, with formatting stripped """
 
 
+@dataclass
 class Activity:
-    def __init__(self):
-        self.id: str = ""
-        """The ID of the page this activity is in (`pg###`)"""
-        self.title: str = ""
-        """Human-readable title of the activity"""
-        self.description: str | None = None
-        """Description of the activity's body (HTML),
-        e.g. the instructions for an exercise activity"""
-        self.comment_consigne: Comment | None = None
-        """Another form of activity description but in a comment. May or may not
-        coexist with a regular description"""
-        self.comment_success: Comment | None = None
-        """Comment displayed on success, if applicable"""
-        self.comments_sugg: dict[str, Comment] = {}
-        """Help comments displayed on failure, if applicable (keyed by ID)"""
-        self.comments_misc: list[Comment] = []
-        """Any other comments, if present"""
-        self.ref: URIRef
+    id: str = ""
+    """The ID of the page this activity is in (`pg###`)"""
+    title: str = ""
+    """Human-readable title of the activity"""
+    description: str | None = None
+    """Description of the activity's body (HTML),
+    e.g. the instructions for an exercise activity"""
+    comment_consigne: Comment | None = None
+    """Another form of activity description but in a comment. May or may not
+    coexist with a regular description"""
+    comment_success: Comment | None = None
+    """Comment displayed on success, if applicable"""
+    comments_sugg: dict[str, Comment] = field(default_factory=dict)
+    """Help comments displayed on failure, if applicable (keyed by ID)"""
+    comments_misc: list[Comment] = field(default_factory=list)
+    """Any other comments, if present"""
 
     def save(self, graph: Graph):
         """Save activity data to the graph. Subclasses may override this method
         to save their specific data."""
-        self.ref = NS[self.id]
+        ref: URIRef = NS[self.id]
         # => Type
-        graph.add((self.ref, RDF.type, NS[self.get_name()]))
+        graph.add((ref, RDF.type, NS[self.get_name()]))
         # => Title
-        set_title(graph, self.ref, self.title)
+        set_title(graph, ref, self.title)
         # => Description
         description = self.description or ""
         if self.comment_consigne is not None:
             description += self.comment_consigne.html
         if description != "":
-            graph.add((self.ref, NS["description"], Literal(description)))
+            graph.add((ref, NS["description"], Literal(description)))
         # => Comments
         if self.comment_success is not None:
             graph.add(
-                (self.ref, NS["commentaireSucces"], Literal(self.comment_success.html))
+                (ref, NS["commentaireSucces"], Literal(self.comment_success.html))
             )
         for comment in self.comments_sugg.values():
-            graph.add((self.ref, NS["commentaireSugg"], Literal(comment.html)))
+            graph.add((ref, NS["commentaireSugg"], Literal(comment.html)))
         for comment in self.comments_misc:
-            graph.add((self.ref, NS["commentaireInfo"], Literal(comment.html)))
+            graph.add((ref, NS["commentaireInfo"], Literal(comment.html)))
 
     def parse_html(self, root: HtmlElement):
         """From a `lxml.html` parsing tree, extract all data relevant to this class.
@@ -81,11 +85,9 @@ class Activity:
         # => Comments
         zi = root.get_element_by_id("zoneInvisible")
         for cmt_div in zi:
-            comment = Comment()
+            comment = Comment(cmt_div.get("id") or "")
             comment.text = cmt_div.text_content()
             comment.html = to_html(cmt_div)
-            comment.elem = cmt_div
-            comment.id = cmt_div.get("id") or ""
             # Split id in two parts (non-digits and digits), then match on these parts
             m = regex_comment.match(comment.id)
             if m is not None:
@@ -127,10 +129,6 @@ class Activity:
             case _:
                 raise NameError(name=name)
 
-    @override
-    def __repr__(self):
-        return self.get_name() + str(self.__dict__)
-
 
 class Cours(Activity):
     @override
@@ -154,48 +152,35 @@ class Exercice(Activity):
 class Choice:
     """A possible answer for a question, correct or not"""
 
-    def __init__(
-        self,
-        id: str = "",
-        index: int = -1,
-        is_correct: bool = False,
-        html: str = "",
-        comment: Comment | None = None,
-    ):
-        self.id = id
-        """A string identifier for the choice"""
-        self.index = index
-        """The order the choice appears in"""
-        self.is_correct = is_correct
-        self.html = html
-        self.comment = comment
-        """A `Comment` associated with this choice, displayed when the exercise
-        is incorrect and this choice is selected"""
-
-    @override
-    def __str__(self) -> str:
-        return f"Choice(id='{self.id}', index={self.index}, is_correct={self.is_correct}, html='{self.html[0::10]}')"
+    id: str = ""
+    """A string identifier for the choice"""
+    index: int = -1
+    """The order the choice appears in"""
+    is_correct: bool = False
+    html: str = ""
+    comment: Comment | None = None
+    """A `Comment` associated with this choice, displayed when the exercise
+    is incorrect and this choice is selected"""
 
 
+@dataclass
 class ChoiceGroup:
-    def __init__(self):
-        self.label: str
-        self.items: list[Choice]
+    label: str
+    items: list[Choice] = field(default_factory=list)
 
 
+@dataclass
 class Gap:
     """A gap in a gap-fill text exercise"""
 
-    def __init__(self, id: str):
-        self.id = id
-        self.choices: list[Choice] = []
+    id: str
+    choices: list[Choice] = field(default_factory=list)
 
 
+@dataclass
 class ExerciceQC(Exercice):
-    def __init__(self, is_qcm: bool = False) -> None:
-        super().__init__()
-        self.is_qcm = is_qcm
-        self.choices: dict[str, Choice] = {}
+    is_qcm: bool = False
+    choices: dict[str, Choice] = field(default_factory=dict)
 
     @override
     def get_name(self) -> str:
@@ -274,16 +259,15 @@ class ExerciceQC(Exercice):
         return self.choices[id]
 
 
+@dataclass
 class ExerciceQM(Exercice):
-    def __init__(self):
-        super().__init__()
-        self.questions: list[ChoiceGroup]
+    questions: list[ChoiceGroup] = field(default_factory=list)
 
 
+@dataclass
 class ExerciceTAT(Exercice):
-    def __init__(self):
-        super().__init__()
-        self.segments: list[str | Gap] = []
+    segments: list[str | Gap] = field(default_factory=list)
+    """The segments (text or gap) that make up the exercise text, in order"""
 
     @override
     def parse_html(self, root: HtmlElement):
@@ -319,15 +303,13 @@ class ExerciceTAT(Exercice):
             )
         pass
 
-
+@dataclass
 class ExerciceGD(Exercice):
-    def __init__(self):
-        super().__init__()
-        self.targets: list[str]
-        self.draggables: list[list[Choice]]
+    targets: list[str] = field(default_factory=list)
+    draggables: list[list[Choice]] = field(default_factory=list)
 
 
-class JSParser:
+class JSParser(Base):
     @abstractmethod
     def parse(self, js: str) -> Activity:
         """Parse a string of JavaScript code and returns an instance of the
@@ -341,8 +323,7 @@ class JSParser:
 
 
 class RegexParser(JSParser):
-    def __init__(self, graph: Graph, act_id: str) -> None:
-        self.graph = graph
+    def __init__(self, act_id: str) -> None:
         self.act_id = act_id
 
     @override
@@ -517,7 +498,7 @@ def parse_page(graph: Graph, filepath: str, id: str):
     js = "\n".join((s.text_content() for s in scripts))
 
     activity = Activity()
-    parser = RegexParser(graph, id)
+    parser = RegexParser(id)
     try:
         activity: Activity = parser.parse(js)
     except ParseError as e:
-- 
GitLab


From 90495a980c7351c743ff1974b71f9ff13bf53ac5 Mon Sep 17 00:00:00 2001
From: eliott <eliott.sammier@tetras-libre.fr>
Date: Fri, 2 Aug 2024 13:58:41 +0200
Subject: [PATCH 04/22] Parse & decode TAT choices for macao3

---
 tetras_extraction/script/src/extract_page.py | 77 ++++++++++++++++++--
 1 file changed, 70 insertions(+), 7 deletions(-)

diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index 691d033..a94d71b 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -84,12 +84,13 @@ class Activity:
         self.title = root.xpath("/html/head/title")[0].text
         # => Comments
         zi = root.get_element_by_id("zoneInvisible")
+        # Regex to separate non-digits and digits
         for cmt_div in zi:
             comment = Comment(cmt_div.get("id") or "")
             comment.text = cmt_div.text_content()
             comment.html = to_html(cmt_div)
             # Split id in two parts (non-digits and digits), then match on these parts
-            m = regex_comment.match(comment.id)
+            m = re.match(r"(\D*)(\d*)", comment.id)
             if m is not None:
                 match m.groups():
                     case ["divCmt", num]:
@@ -268,6 +269,8 @@ class ExerciceQM(Exercice):
 class ExerciceTAT(Exercice):
     segments: list[str | Gap] = field(default_factory=list)
     """The segments (text or gap) that make up the exercise text, in order"""
+    gaps: dict[str, Gap] = field(default_factory=dict)
+    """Only the gaps, keyed by ID, useful during parsing"""
 
     @override
     def parse_html(self, root: HtmlElement):
@@ -287,7 +290,7 @@ class ExerciceTAT(Exercice):
                 self.segments.append(text_segment_buf)
                 # Add the gap
                 gap_id = elem.attrib["id"].replace("champTrou", "")
-                self.segments.append(Gap(gap_id))
+                self.segments.append(self.get_or_create_gap(gap_id))
                 # New text segment starts with the tail text of this element
                 text_segment_buf = elem.tail or ""
             else:
@@ -303,6 +306,13 @@ class ExerciceTAT(Exercice):
             )
         pass
 
+    def get_or_create_gap(self, gap_id: str) -> Gap:
+        """Find a gap by ID, creating it if needed"""
+        if gap_id not in self.gaps:
+            self.gaps[gap_id] = Gap(gap_id)
+        return self.gaps[gap_id]
+
+
 @dataclass
 class ExerciceGD(Exercice):
     targets: list[str] = field(default_factory=list)
@@ -335,9 +345,14 @@ class RegexParser(JSParser):
         body = func_split[1]
 
         activity, _ = self._parse_activity_constructor(body)
-        if isinstance(activity, ExerciceQC):
-            # Parse correct answers
-            self._parse_qc_answers(body, activity)
+        match activity:
+            case ExerciceQC():
+                # Parse correct answers
+                self._parse_qc_answers(body, activity)
+            case ExerciceTAT():
+                self._parse_tat_choices(body, activity)
+            case _:
+                pass
 
         return activity
 
@@ -448,6 +463,42 @@ class RegexParser(JSParser):
         except ValueError as e:
             raise exception from e
 
+    def _parse_tat_choices(self, code: str, exo: ExerciceTAT) -> None:
+        choices_regex = re.compile(
+            r"""
+            exo\.ajouterReponse\(
+            '(?P<choice_id>\w+)'
+            ,\s'(?P<gap_id>\d+)'
+            ,\s'(?P<correct_code>\d+)'
+            ,\s\"(?P<text>.+)\"
+            \);""",
+            re.VERBOSE,
+        )
+        choices = list(choices_regex.finditer(code))
+        # Correctness obfuscation
+        # Each choice is correct if correct_code == 2*gap_num + (nb_gaps + score) % 2
+        # (see the wiki for more info)
+        nb_gaps = max(
+            [int(match.group("gap_id")) for match in choices_regex.finditer(code)],
+            default=0,
+        )
+        score = self._parse_score(code)
+        correction_offset = (nb_gaps + score) % 2
+
+        # Process matches
+        for match in choices:
+            gap = exo.get_or_create_gap(match.group("gap_id"))
+            choice = Choice(match.group("choice_id"))
+            correct_code = int(match.group("correct_code"))
+            choice.is_correct = (2 * int(gap.id) + correction_offset) == correct_code
+            # Decode obfuscated text
+            text = match.group("text")
+            choice.html = decode_answer_text(text)
+            # Add choice
+            gap.choices.append(choice)
+            pass
+        pass
+
 
 def decode_answer_id(id: str):
     """
@@ -476,8 +527,20 @@ def decode_answer_id(id: str):
     return res
 
 
-# Regex to separate non-digits and digits
-regex_comment = re.compile(r"(\D*)(\d*)")
+def decode_answer_text(text: str):
+    """
+    Decode an obfuscated answer text, just like the `decodeX()` function
+    in `ClasseExerciceTAT.js`.
+    """
+    # The two chars at the end move to the beginning
+    if len(text) > 2:
+        text = text[-2:] + text[0:-2]
+    # Then it's a simple 1-to-1 character substitution
+    table = str.maketrans(
+        "bHOi4ph5sWlr1c2nI7LBuzgaUNv0FDXtm8SodePVqRfwGKkJMxAQjTC",
+        "ABCDFGHJKLNOPQTUVWXabcdfghjklnopqtuvwx0124578ierRImMsSz",
+    )
+    return text.translate(table)
 
 
 def parse_page(graph: Graph, filepath: str, id: str):
-- 
GitLab


From 5daa557748b162c2e530bcd5d5855be4ac2a2e56 Mon Sep 17 00:00:00 2001
From: eliott <eliott.sammier@tetras-libre.fr>
Date: Fri, 2 Aug 2024 15:10:57 +0200
Subject: [PATCH 05/22] Save TAT exercises to RDF, update ontology

---
 tetras_extraction/macao_schema.ttl            |  16 +
 .../result/macao_12/macao_content.ttl         | 385 ++++++++++
 .../result/macao_3/macao_content.ttl          | 659 ++++++++++++++++++
 tetras_extraction/script/src/extract_page.py  |  70 +-
 4 files changed, 1109 insertions(+), 21 deletions(-)

diff --git a/tetras_extraction/macao_schema.ttl b/tetras_extraction/macao_schema.ttl
index dd1d3d8..bb728d4 100644
--- a/tetras_extraction/macao_schema.ttl
+++ b/tetras_extraction/macao_schema.ttl
@@ -31,6 +31,12 @@
                     rdfs:range :Reponse .
 
 
+###  http://www.semanticweb.org/eliott/ontologies/2024/4/macao/aReponseIncorrecte
+:aSegment rdf:type owl:ObjectProperty ;
+          rdfs:domain :ExerciceTAT ;
+          rdfs:range :Segment .
+
+
 ###  http://www.semanticweb.org/eliott/ontologies/2024/4/macao/contenuDans
 :contenuDans rdf:type owl:ObjectProperty ;
              owl:inverseOf :contient .
@@ -213,11 +219,21 @@
       rdfs:subClassOf :MacaoContenu .
 
 
+###  http://www.semanticweb.org/eliott/ontologies/2024/4/macao/Reponse
+:Champ rdf:type owl:Class ;
+         rdfs:subClassOf :MacaoContenu .
+
+
 ###  http://www.semanticweb.org/eliott/ontologies/2024/4/macao/Reponse
 :Reponse rdf:type owl:Class ;
          rdfs:subClassOf :MacaoContenu .
 
 
+###  http://www.semanticweb.org/eliott/ontologies/2024/4/macao/Reponse
+:Segment rdf:type owl:Class ;
+         rdfs:subClassOf :MacaoContenu .
+
+
 ###  http://www.semanticweb.org/eliott/ontologies/2024/4/macao/SimpleFlash
 :SimpleFlash rdf:type owl:Class ;
              rdfs:subClassOf :FlashObject .
diff --git a/tetras_extraction/result/macao_12/macao_content.ttl b/tetras_extraction/result/macao_12/macao_content.ttl
index 9b8c3c9..c1290fe 100644
--- a/tetras_extraction/result/macao_12/macao_content.ttl
+++ b/tetras_extraction/result/macao_12/macao_content.ttl
@@ -334,6 +334,15 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (2)" ;
     :__protege_display_name "02 | pg20 | Ecoutez et complétez (2)" ;
+    :aSegment :pg20_seg0,
+        :pg20_seg1,
+        :pg20_seg2,
+        :pg20_seg3,
+        :pg20_seg4,
+        :pg20_seg5,
+        :pg20_seg6,
+        :pg20_seg7,
+        :pg20_seg8 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien. Complétez maintenant la
         suite du texte.</p>
         <p align=""> </p></div>
@@ -385,6 +394,55 @@
     :index 1 ;
     rdfs:subClassOf :pg205 .
 
+:pg20_seg0 a :Segment ;
+    :index 0 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV45', 'e29_macao1_2c3_0228.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+        So, """ .
+
+:pg20_seg1 a :Champ,
+        :Segment ;
+    :index 1 .
+
+:pg20_seg2 a :Segment ;
+    :index 2 ;
+    :text """ told us  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV11', 'e29_macao1_2c3_0229.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         we were not to pick """ .
+
+:pg20_seg3 a :Champ,
+        :Segment ;
+    :index 3 .
+
+:pg20_seg4 a :Segment ;
+    :index 4 ;
+    :text """.  <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV89', 'e29_macao1_2c3_0230.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         My mother said, 'It’s naughty to pick the apples   
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV82', 'e29_macao1_2c3_023311.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         when they are growing upon<br><br>""" .
+
+:pg20_seg5 a :Champ,
+        :Segment ;
+    :index 5 .
+
+:pg20_seg6 a :Segment ;
+    :index 6 ;
+    :text """,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV27', 'e29_macao1_2c3_0232.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         because we want them to go on growing until they are ripe and rosy,   <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV46', 'e29_macao1_2c3_0233.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and then we shall pick them and put them quite away """ .
+
+:pg20_seg7 a :Champ,
+        :Segment ;
+    :index 7 .
+
+:pg20_seg8 a :Segment ;
+    :index 8 ;
+    :text """ winter-time'.
+    """ .
+
 :pg217_1 a :Reponse ;
     :__protege_display_name "pg217_1 | V" ;
     :correct true ;
@@ -729,6 +787,7 @@
         owl:NamedIndividual ;
     rdfs:label "Mémento : longueur de la voyelle" ;
     :__protege_display_name "21 | pg299 | Mémento : longueur de la voyelle" ;
+    :aSegment :pg299_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align="">Contrairement aux idées reçues,
@@ -808,6 +867,12 @@
     :titre "Voyelle réduite" ;
     rdfs:subClassOf :MosEtp555 .
 
+:pg299_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29anj_s4lc_p115.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg301 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -1279,6 +1344,7 @@
         owl:NamedIndividual ;
     rdfs:label "Longueur de la voyelle" ;
     :__protege_display_name "00 | pg397 | Longueur de la voyelle" ;
+    :aSegment :pg397_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align="">Contrairement aux idées reçues,
@@ -1343,6 +1409,12 @@
     :titre "Longueur de la voyelle" ;
     rdfs:subClassOf :MosEtp690 .
 
+:pg397_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29anj_s4lc_p115.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg400_1 a :Reponse ;
     :__protege_display_name "pg400_1 | F" ;
     :correct false ;
@@ -1515,6 +1587,7 @@
         owl:NamedIndividual ;
     rdfs:label "Mémento : voyelles lâches et voyelles tendues" ;
     :__protege_display_name "18 | pg44 | Mémento : voyelles lâches et voyelles tendues" ;
+    :aSegment :pg44_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align=""><br><br><font color="#a60a69">Contrairement
@@ -1537,6 +1610,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (5)" ;
     :__protege_display_name "08 | pg444 | Reconnaître le mot commun (5)" ;
+    :aSegment :pg444_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">FOR est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -1552,6 +1626,33 @@
     :titre "Reconnaître le mot commun (5)" ;
     rdfs:subClassOf :MosEtp335 .
 
+:pg444_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV84', 'e29_macao1_2b91.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV41', 'e29_macao1_2b101.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg448 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -1604,6 +1705,12 @@
     :titre "Placer les accents primaire et secondaire (2)" ;
     rdfs:subClassOf :MosEtp746 .
 
+:pg44_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV13', 'e29anj_s4lc_p114.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg455 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -1675,6 +1782,17 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (3)" ;
     :__protege_display_name "03 | pg503 | Ecoutez et complétez (3)" ;
+    :aSegment :pg503_seg0,
+        :pg503_seg1,
+        :pg503_seg10,
+        :pg503_seg2,
+        :pg503_seg3,
+        :pg503_seg4,
+        :pg503_seg5,
+        :pg503_seg6,
+        :pg503_seg7,
+        :pg503_seg8,
+        :pg503_seg9 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien ! </p></div>
     """ ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p align="">Une ou plusieurs réponses ne
@@ -1692,6 +1810,66 @@
     :titre "Ecoutez et complétez (3)" ;
     rdfs:subClassOf :MosEtp558 .
 
+:pg503_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV66', 'e29_macao1_2c4_0234.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         'If you """ .
+
+:pg503_seg1 a :Champ,
+        :Segment ;
+    :index 1 .
+
+:pg503_seg10 a :Segment ;
+    :index 10 ;
+    :text """ on the grass <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV36', 'e29_macao1_2c4_0241.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and she took it in for my mother to wash.<br><br>""" .
+
+:pg503_seg2 a :Segment ;
+    :index 2 ;
+    :text """"  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV69', 'e29_macao1_2c4_0235.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         , my mother said,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV24', 'e29_macao1_2c4_0236.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         'you must pick up a windfall <br><br>and bring it to me, and I shall wash it for you.' 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV58', 'e29_macao1_2c4_0237.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         As you know, 'windfalls' <br><br>are apples that fall off """ .
+
+:pg503_seg3 a :Champ,
+        :Segment ;
+    :index 3 .
+
+:pg503_seg4 a :Segment ;
+    :index 4 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV17', 'e29_macao1_2c4_0238.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          on to """ .
+
+:pg503_seg5 a :Champ,
+        :Segment ;
+    :index 5 .
+
+:pg503_seg6 a :Segment ;
+    :index 6 ;
+    :text """,   
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29_macao1_2c4_0239.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         so, one day, my little <br><br>sister looked """ .
+
+:pg503_seg7 a :Champ,
+        :Segment ;
+    :index 7 .
+
+:pg503_seg8 a :Segment ;
+    :index 8 ;
+    :text """  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV93', 'e29_macao1_2c4_0240.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          and found  """ .
+
+:pg503_seg9 a :Champ,
+        :Segment ;
+    :index 9 .
+
 :pg512 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -1879,6 +2057,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (3)" ;
     :__protege_display_name "04 | pg52 | Reconnaître le mot commun (3)" ;
+    :aSegment :pg52_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">TO est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -1914,6 +2093,33 @@
     :titre "Les symboles phonétiques (8)" ;
     rdfs:subClassOf :MosEtp171 .
 
+:pg52_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV2', 'e29_macao1_2b51.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>   Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV48', 'e29_macao1_2b61.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>   Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg531_1 a :Reponse ;
     :__protege_display_name "pg531_1 | F" ;
     :correct false ;
@@ -2024,6 +2230,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (2)" ;
     :__protege_display_name "02 | pg558 | Reconnaître le mot commun (2)" ;
+    :aSegment :pg558_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">AT est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -2039,6 +2246,33 @@
     :titre "Reconnaître le mot commun (2)" ;
     rdfs:subClassOf :MosEtp335 .
 
+:pg558_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top"> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV85', 'e29_macao1_2b31.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV76', 'e29_macao1_2b41.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg561_1 a :Reponse ;
     :__protege_display_name "pg561_1 | F" ;
     :correct false ;
@@ -2282,6 +2516,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (1)" ;
     :__protege_display_name "00 | pg624 | Reconnaître le mot commun (1)" ;
+    :aSegment :pg624_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">OF est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -2302,6 +2537,21 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (1)" ;
     :__protege_display_name "01 | pg6241 | Ecoutez et complétez (1)" ;
+    :aSegment :pg6241_seg0,
+        :pg6241_seg1,
+        :pg6241_seg10,
+        :pg6241_seg11,
+        :pg6241_seg12,
+        :pg6241_seg13,
+        :pg6241_seg14,
+        :pg6241_seg2,
+        :pg6241_seg3,
+        :pg6241_seg4,
+        :pg6241_seg5,
+        :pg6241_seg6,
+        :pg6241_seg7,
+        :pg6241_seg8,
+        :pg6241_seg9 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien. Complétez maintenant la
         suite du texte.</p>
         <p align=""> </p></div>
@@ -2321,6 +2571,106 @@
     :titre "Ecoutez et complétez (1)" ;
     rdfs:subClassOf :MosEtp558 .
 
+:pg6241_seg0 a :Segment ;
+    :index 0 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV29', 'e29_macao1_2c2.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         When I """ .
+
+:pg6241_seg1 a :Champ,
+        :Segment ;
+    :index 1 .
+
+:pg6241_seg10 a :Segment ;
+    :index 10 ;
+    :text """ and eat them.  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV87', 'e29_macao1_2c2_02261.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         It  """ .
+
+:pg6241_seg11 a :Champ,
+        :Segment ;
+    :index 11 .
+
+:pg6241_seg12 a :Segment ;
+    :index 12 ;
+    :text """ very easy thing to <br><br>do  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV43', 'e29_macao1_2c2_0227.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          because  """ .
+
+:pg6241_seg13 a :Champ,
+        :Segment ;
+    :index 13 .
+
+:pg6241_seg14 a :Segment ;
+    :index 14 ;
+    :text """ were so low.
+    """ .
+
+:pg6241_seg2 a :Segment ;
+    :index 2 ;
+    :text """ little girl,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV55', 'e29_macao1_2c2_02233.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and my naughty little sister <br><br>""" .
+
+:pg6241_seg3 a :Champ,
+        :Segment ;
+    :index 3 .
+
+:pg6241_seg4 a :Segment ;
+    :index 4 ;
+    :text """ little girl,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV79', 'e29_macao1_2c2_02241.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         we used to  have """ .
+
+:pg6241_seg5 a :Champ,
+        :Segment ;
+    :index 5 .
+
+:pg6241_seg6 a :Segment ;
+    :index 6 ;
+    :text " tree " .
+
+:pg6241_seg7 a :Champ,
+        :Segment ;
+    :index 7 .
+
+:pg6241_seg8 a :Segment ;
+    :index 8 ;
+    :text """<br><br> garden,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV77', 'e29_macao1_2c2_02251.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and sometimes my naughty little sister used to pick<br><br> """ .
+
+:pg6241_seg9 a :Champ,
+        :Segment ;
+    :index 9 .
+
+:pg624_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV36', 'e29_macao1_2b11.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV95', 'e29_macao1_2b21.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg636 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -3854,6 +4204,7 @@
         owl:NamedIndividual ;
     rdfs:label "Voyelles lâches et voyelles tendues" ;
     :__protege_display_name "00 | pg888 | Voyelles lâches et voyelles tendues" ;
+    :aSegment :pg888_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align=""><br><br><font color="#a60a69">Contrairement
@@ -3871,6 +4222,12 @@
     :titre "Voyelles lâches et voyelles tendues" ;
     rdfs:subClassOf :MosEtp940 .
 
+:pg888_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV13', 'e29anj_s4lc_p114.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg890_1 a :Reponse ;
     :__protege_display_name "pg890_1 | F" ;
     :correct false ;
@@ -4101,6 +4458,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (4)" ;
     :__protege_display_name "06 | pg948 | Reconnaître le mot commun (4)" ;
+    :aSegment :pg948_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">IN est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -4116,6 +4474,33 @@
     :titre "Reconnaître le mot commun (4)" ;
     rdfs:subClassOf :MosEtp335 .
 
+:pg948_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV75', 'e29_macao1_2b71.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV18', 'e29_macao1_2b81.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg965_1 a :Reponse ;
     :__protege_display_name "pg965_1 | V" ;
     :correct true ;
diff --git a/tetras_extraction/result/macao_3/macao_content.ttl b/tetras_extraction/result/macao_3/macao_content.ttl
index 917ff67..c85f31c 100644
--- a/tetras_extraction/result/macao_3/macao_content.ttl
+++ b/tetras_extraction/result/macao_3/macao_content.ttl
@@ -37,6 +37,9 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg1023 | Première tâche" ;
+    :aSegment :pg1023_seg0,
+        :pg1023_seg1,
+        :pg1023_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -77,6 +80,36 @@
     :titre "Première tâche" ;
     rdfs:subClassOf :act759984 .
 
+:pg1023_seg0 a :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les deux formes proposées : <br><br>Now that the Prime
+        Minister has  """ .
+
+:pg1023_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg1023_seg1_rep24,
+        :pg1023_seg1_rep429 ;
+    :index 1 .
+
+:pg1023_seg1_rep24 a :Reponse ;
+    :__protege_display_name "pg1023_seg1_rep24 | V" ;
+    :correct true ;
+    :html "shaken" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg1023_seg1_rep429 a :Reponse ;
+    :__protege_display_name "pg1023_seg1_rep429 | F" ;
+    :correct false ;
+    :html "shaking" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg1023_seg2 a :Segment ;
+    :index 2 ;
+    :text """ the President's hand, she is going back to her car.
+    """ .
+
 :pg1027 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -593,6 +626,7 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "02 | pg1888 | Deuxième tâche" ;
+    :aSegment :pg1888_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -633,6 +667,30 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act153876 .
 
+:pg1888_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <p><i><b>
+            <table width="70%" bgcolor="#00c0c0" cellpadding="3" cellspacing="0" valign="top" border="0">
+                <tr>
+                    <td style="BACKGROUND: #b5f0c7; WIDTH: 20%" width="40%" valign="middle"><img align="center" border="0" src="../media/ecouteur_macao.png" id="MosImg32"></td>
+                    <td style="BACKGROUND: #b5f0c7" valign="middle">
+                        <script type="text/javascript">ajDocW(PF_clipAV('clipAV2861', 'ecran191.swf', '30', '25', 'false', 'Flash', '', '', 'quality:high;wmode:transparent', '', ''));</script>
+                    </td>
+                </tr>
+            </table>
+        </b></i></p>
+        <p><i><b></b></i><i><b><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1"> </b></i>Zurich?<br><b><i> </i></b>
+        </p><table width="70%" bgcolor="#00c0c0" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="BACKGROUND: #b5f0c7; WIDTH: 20%" width="40%" valign="middle"><img align="center" border="0" src="../media/ecouteur_macao.png" id="MosImg320"></td>
+                <td style="BACKGROUND: #b5f0c7" valign="middle">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV2769', 'ecran192.swf', '30', '25', 'false', 'Flash', '', '', 'quality:high;wmode:transparent', '', ''));</script>
+                </td>
+            </tr>
+        </table>
+        <br><i><b><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou2"> </b></i>Zorba?""" .
+
 :pg1894_rep36 a :Reponse ;
     :__protege_display_name "pg1894_rep36 | F" ;
     :commentaireSugg """<div id="divSugg3" onclick="SPE_clicDansBulle(event,'divSugg3')"><p> </p>
@@ -774,6 +832,7 @@
         owl:NamedIndividual ;
     rdfs:label "Septième tâche" ;
     :__protege_display_name "07 | pg1919 | Septième tâche" ;
+    :aSegment :pg1919_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -877,6 +936,30 @@
     :titre "Septième tâche" ;
     rdfs:subClassOf :act957420 .
 
+:pg1919_seg0 a :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He drank half the bottle of water.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He drank half a bottle of water.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
 :pg191_rep150 a :Reponse ;
     :__protege_display_name "pg191_rep150 | V" ;
     :correct true ;
@@ -1001,6 +1084,9 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche" ;
     :__protege_display_name "09 | pg2429 | Sixième tâche" ;
+    :aSegment :pg2429_seg0,
+        :pg2429_seg1,
+        :pg2429_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1042,11 +1128,42 @@
     :titre "Sixième tâche" ;
     rdfs:subClassOf :act153876 .
 
+:pg2429_seg0 a :Segment ;
+    :index 0 ;
+    :text """<br>You don't find many independent companies in the cinema
+        industries.<br>Most of the time, """ .
+
+:pg2429_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg2429_seg1_rep247,
+        :pg2429_seg1_rep471 ;
+    :index 1 .
+
+:pg2429_seg1_rep247 a :Reponse ;
+    :__protege_display_name "pg2429_seg1_rep247 | F" ;
+    :correct false ;
+    :html "there are" ;
+    :id "rep247" ;
+    :index -1 .
+
+:pg2429_seg1_rep471 a :Reponse ;
+    :__protege_display_name "pg2429_seg1_rep471 | V" ;
+    :correct true ;
+    :html "they are" ;
+    :id "rep471" ;
+    :index -1 .
+
+:pg2429_seg2 a :Segment ;
+    :index 2 ;
+    :text """ confronted by financial difficulties.
+    """ .
+
 :pg2493 a :Activite,
         :ExerciceTAT,
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche (2)" ;
     :__protege_display_name "06 | pg2493 | Sixième tâche (2)" ;
+    :aSegment :pg2493_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1147,6 +1264,30 @@
     :titre "Sixième tâche (2)" ;
     rdfs:subClassOf :act957420 .
 
+:pg2493_seg0 a :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Here's a road.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Here's the road.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
 :pg2538 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -1211,6 +1352,11 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg2759 | Première tâche" ;
+    :aSegment :pg2759_seg0,
+        :pg2759_seg1,
+        :pg2759_seg2,
+        :pg2759_seg3,
+        :pg2759_seg4 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1282,6 +1428,59 @@
     :titre "Première tâche" ;
     rdfs:subClassOf :act56672 .
 
+:pg2759_seg0 a :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg2759_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg2759_seg1_rep269,
+        :pg2759_seg1_rep430 ;
+    :index 1 .
+
+:pg2759_seg1_rep269 a :Reponse ;
+    :__protege_display_name "pg2759_seg1_rep269 | F" ;
+    :correct false ;
+    :html "He has decided" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg2759_seg1_rep430 a :Reponse ;
+    :__protege_display_name "pg2759_seg1_rep430 | V" ;
+    :correct true ;
+    :html "He is decided" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg2759_seg2 a :Segment ;
+    :index 2 ;
+    :text " in his ways.<br><br><br>" .
+
+:pg2759_seg3 a :Champ,
+        :Segment ;
+    :aReponse :pg2759_seg3_rep231,
+        :pg2759_seg3_rep655 ;
+    :index 3 .
+
+:pg2759_seg3_rep231 a :Reponse ;
+    :__protege_display_name "pg2759_seg3_rep231 | V" ;
+    :correct true ;
+    :html "He has decided" ;
+    :id "rep231" ;
+    :index -1 .
+
+:pg2759_seg3_rep655 a :Reponse ;
+    :__protege_display_name "pg2759_seg3_rep655 | F" ;
+    :correct false ;
+    :html "He is decided" ;
+    :id "rep655" ;
+    :index -1 .
+
+:pg2759_seg4 a :Segment ;
+    :index 4 ;
+    :text """ not to come tomorrow.
+    """ .
+
 :pg2883 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -1341,6 +1540,7 @@
         owl:NamedIndividual ;
     rdfs:label "Cinquième tâche" ;
     :__protege_display_name "04 | pg3092 | Cinquième tâche" ;
+    :aSegment :pg3092_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1397,6 +1597,12 @@
     :titre "Cinquième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg3092_seg0 a :Segment ;
+    :index 0 ;
+    :text """What <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 82px; HEIGHT: 17px"> cooking?
+        It smells so nice!
+    """ .
+
 :pg3209_rep150 a :Reponse ;
     :__protege_display_name "pg3209_rep150 | F" ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p><br> </p>
@@ -1506,6 +1712,7 @@
         owl:NamedIndividual ;
     rdfs:label "Huitième tâche" ;
     :__protege_display_name "08 | pg3579 | Huitième tâche" ;
+    :aSegment :pg3579_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1608,11 +1815,36 @@
     :titre "Huitième tâche" ;
     rdfs:subClassOf :act957420 .
 
+:pg3579_seg0 a :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He needs a pen.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He needs the pen.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
 :pg3600 a :Activite,
         :ExerciceTAT,
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche" ;
     :__protege_display_name "05 | pg3600 | Sixième tâche" ;
+    :aSegment :pg3600_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1669,6 +1901,12 @@
     :titre "Sixième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg3600_seg0 a :Segment ;
+    :index 0 ;
+    :text """<input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 62px; HEIGHT: 17px"> two people
+        waiting outside.
+    """ .
+
 :pg3602 a :Activite,
         :ExerciceGD,
         owl:NamedIndividual ;
@@ -1713,6 +1951,7 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg3628 | Deuxième tâche" ;
+    :aSegment :pg3628_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux dialogues
         reconstitués que vous pouvez écouter. <br><br>1 Tell us what you have found about the suspect. <br>A She has
         been seen several times with a rat. <br><br>Dans <i>She has been seen</i>, on a un <i><a class="STY_lienDansZoneComt" href="javascript:parent.SCO_ouvrirDoc('doc28886','htm')">present
@@ -1777,6 +2016,51 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act828642 .
 
+:pg3628_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV4748', 'ecran421.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Tell us what you have found about the suspect.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV1221', 'ecran422.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Where is the suspect?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>A</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV3044', 'ecran423.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV87', 'mot42_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     several times with a rat.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV7913', 'ecran424.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                      
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV46', 'mot42_4.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     by the judge.
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux dialogues plausibles, associez chaque question à une réponse en
+            sélectionnant A ou B dans les listes déroulantes.<br><br>Tell us what you have found about the
+            suspect.<br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>Where is the suspect?<br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg3746_rep150 a :Reponse ;
     :__protege_display_name "pg3746_rep150 | F" ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p> </p>
@@ -1842,6 +2126,7 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg3862 | Troisième tâche" ;
+    :aSegment :pg3862_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1910,6 +2195,12 @@
     :titre "Troisième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg3862_seg0 a :Segment ;
+    :index 0 ;
+    :text """Now he <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 62px; HEIGHT: 17px"> he
+        doesn't want to come, it's too late!
+    """ .
+
 :pg3870_rep150 a :Reponse ;
     :__protege_display_name "pg3870_rep150 | V" ;
     :correct true ;
@@ -2137,6 +2428,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg4141 | Troisième tâche" ;
+    :aSegment :pg4141_seg0,
+        :pg4141_seg1,
+        :pg4141_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2183,6 +2477,43 @@
     :titre "Troisième tâche" ;
     rdfs:subClassOf :act56672 .
 
+:pg4141_seg0 a :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg4141_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg4141_seg1_rep269,
+        :pg4141_seg1_rep430,
+        :pg4141_seg1_rep527 ;
+    :index 1 .
+
+:pg4141_seg1_rep269 a :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep269 | F" ;
+    :correct false ;
+    :html "The player's a" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg4141_seg1_rep430 a :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep430 | F" ;
+    :correct false ;
+    :html "The players a" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg4141_seg1_rep527 a :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep527 | V" ;
+    :correct true ;
+    :html "The players are" ;
+    :id "rep527" ;
+    :index -1 .
+
+:pg4141_seg2 a :Segment ;
+    :index 2 ;
+    :text """ talking with the referee.
+    """ .
+
 :pg4192_rep150 a :Reponse ;
     :__protege_display_name "pg4192_rep150 | F" ;
     :commentaireSugg """<div id="divSugg2" onclick="SPE_clicDansBulle(event,'divSugg2')"><p> </p>
@@ -2502,6 +2833,7 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg4487 | Première tâche" ;
+    :aSegment :pg4487_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2606,6 +2938,12 @@
     :titre "Première tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg4487_seg0 a :Segment ;
+    :index 0 ;
+    :text """Peter and Mary have moved to Scotland. Their furniture has been carried
+        to Glasgow by road, and now they <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 93px; HEIGHT: 17px">
+        putting everything in its place.<br>""" .
+
 :pg4797_rep150 a :Reponse ;
     :__protege_display_name "pg4797_rep150 | F" ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p> </p>
@@ -2784,6 +3122,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg5132 | Troisième tâche" ;
+    :aSegment :pg5132_seg0,
+        :pg5132_seg1,
+        :pg5132_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2832,6 +3173,44 @@
     :titre "Troisième tâche" ;
     rdfs:subClassOf :act759984 .
 
+:pg5132_seg0 a :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les formes proposées : <br><br>If the school refuses to
+        take more children, the governors could be """ .
+
+:pg5132_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg5132_seg1_rep24,
+        :pg5132_seg1_rep429,
+        :pg5132_seg1_rep91 ;
+    :index 1 .
+
+:pg5132_seg1_rep24 a :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep24 | V" ;
+    :correct true ;
+    :html "taken" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg5132_seg1_rep429 a :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep429 | F" ;
+    :correct false ;
+    :html "taking" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg5132_seg1_rep91 a :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep91 | F" ;
+    :correct false ;
+    :html "take" ;
+    :id "rep91" ;
+    :index -1 .
+
+:pg5132_seg2 a :Segment ;
+    :index 2 ;
+    :text """ to Court.
+    """ .
+
 :pg5136_rep150 a :Reponse ;
     :__protege_display_name "pg5136_rep150 | F" ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p><br> </p>
@@ -3100,6 +3479,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg6180 | Deuxième tâche" ;
+    :aSegment :pg6180_seg0,
+        :pg6180_seg1,
+        :pg6180_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3136,6 +3518,35 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act56672 .
 
+:pg6180_seg0 a :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg6180_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg6180_seg1_rep269,
+        :pg6180_seg1_rep430 ;
+    :index 1 .
+
+:pg6180_seg1_rep269 a :Reponse ;
+    :__protege_display_name "pg6180_seg1_rep269 | F" ;
+    :correct false ;
+    :html "These games " ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg6180_seg1_rep430 a :Reponse ;
+    :__protege_display_name "pg6180_seg1_rep430 | V" ;
+    :correct true ;
+    :html "This game is" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg6180_seg2 a :Segment ;
+    :index 2 ;
+    :text """ easy.
+    """ .
+
 :pg6329_rep150 a :Reponse ;
     :__protege_display_name "pg6329_rep150 | V" ;
     :correct true ;
@@ -3276,6 +3687,7 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (4)" ;
     :__protege_display_name "07 | pg6866 | Quatrième tâche (4)" ;
+    :aSegment :pg6866_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3331,6 +3743,11 @@
     :titre "Quatrième tâche (4)" ;
     rdfs:subClassOf :act153876 .
 
+:pg6866_seg0 a :Segment ;
+    :index 0 ;
+    :text """<i><b><br></b></i>I<i><b></b></i><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1"><i><b> </b></i>medical
+        studies if I could start again.<br>""" .
+
 :pg6917 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -3478,6 +3895,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg7429 | Deuxième tâche" ;
+    :aSegment :pg7429_seg0,
+        :pg7429_seg1,
+        :pg7429_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p>Bravo !<br>Vous avez en effet entendu : <br><br><i>John's been given a guitar for his birthday. He's been
@@ -3520,6 +3940,37 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act759984 .
 
+:pg7429_seg0 a :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les deux formes proposées : <br><br>John has
+        been """ .
+
+:pg7429_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg7429_seg1_rep24,
+        :pg7429_seg1_rep429 ;
+    :index 1 .
+
+:pg7429_seg1_rep24 a :Reponse ;
+    :__protege_display_name "pg7429_seg1_rep24 | V" ;
+    :correct true ;
+    :html "given" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg7429_seg1_rep429 a :Reponse ;
+    :__protege_display_name "pg7429_seg1_rep429 | F" ;
+    :correct false ;
+    :html "giving" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg7429_seg2 a :Segment ;
+    :index 2 ;
+    :text """ a guitar for his birthday. He's been practising with Jim for more than a week and they've finally
+        learnt to play a tune.
+    """ .
+
 :pg7434_rep150 a :Reponse ;
     :__protege_display_name "pg7434_rep150 | F" ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p> </p>
@@ -3552,6 +4003,7 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg7576 | Troisième tâche" ;
+    :aSegment :pg7576_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux paires
         reconstituées que vous pouvez écouter. <br><br>1 It' s Paul's birthday. <br>B He is given a lot of presents.<br><br>Dans
         <i>He is given</i>, on a un présent à la voix passive (voix passive : BE + V au participe passé). Le sujet
@@ -3604,6 +4056,50 @@
     :titre "Troisième tâche" ;
     rdfs:subClassOf :act828642 .
 
+:pg7576_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV546', 'ecran431.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     It' s Paul's birthday.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV439', 'ecran432.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     The teacher has put on his Father Christmas suit. 
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>A</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV5393', 'ecran433.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV15', 'mot43_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     a lot of presents.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV7781', 'ecran434.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV59', 'mot43_4.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     a lot of presents. 
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux paires plausibles, associez les énoncés, en sélectionnant A ou B dans les
+            listes déroulantes.<br><br>It' s Paul's birthday. <br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>The teacher has put on his Father Christmas suit. <br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg7628 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -3696,6 +4192,7 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche" ;
     :__protege_display_name "03 | pg7682 | Quatrième tâche" ;
+    :aSegment :pg7682_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3756,6 +4253,12 @@
     :titre "Quatrième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg7682_seg0 a :Segment ;
+    :index 0 ;
+    :text """I'm so thirsty, I  <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 82px; HEIGHT: 17px"> a
+        whole bottle of fresh water if I could.
+    """ .
+
 :pg7973_rep150 a :Reponse ;
     :__protege_display_name "pg7973_rep150 | V" ;
     :correct true ;
@@ -3899,6 +4402,7 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg8027 | Première tâche" ;
+    :aSegment :pg8027_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux dialogues
         reconstitués que vous pouvez réécouter.<br><br>1 Why does Lucy have so many pills to take? <br>B She has been
         seen by the doctor for her allergy.<br><br>Dans <i>She has been seen</i>, on a un <a class="STY_lienDansZoneComt" href="javascript:parent.SCO_ouvrirDoc('doc28886','htm')"><i>present
@@ -3961,11 +4465,57 @@
     :titre "Première tâche" ;
     rdfs:subClassOf :act828642 .
 
+:pg8027_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV6364', 'ecran411.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Why does Lucy have so many pills to take?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV1264', 'ecran412.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Why isn't Ella with you?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle"><b>A
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV364', 'ecran413.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                </b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV532', 'mot41_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     by the doctor for her allergy.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV0', 'ecran414.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                </b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV53', 'mot41_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                    by the doctor for her allergy.
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux dialogues plausibles, associez chaque question à une réponse en
+            sélectionnant A ou B dans les listes déroulantes.<br><br>Why does Lucy have so many pills to
+            take?<br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>Why isn't Ella with you?<br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg8400 a :Activite,
         :ExerciceTAT,
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg8400 | Deuxième tâche" ;
+    :aSegment :pg8400_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4026,6 +4576,11 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg8400_seg0 a :Segment ;
+    :index 0 ;
+    :text """You must phone Mr Williams if you have a problem. He's <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 43px; HEIGHT: 17px"> boss.
+    """ .
+
 :pg8601_rep150 a :Reponse ;
     :__protege_display_name "pg8601_rep150 | V" ;
     :commentaireSugg """<div id="divSugg2" onclick="SPE_clicDansBulle(event,'divSugg2')">Oui, <b><i>could </i></b>indique que celui qui
@@ -4275,6 +4830,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (2)" ;
     :__protege_display_name "04 | pg910 | Quatrième tâche (2)" ;
+    :aSegment :pg910_seg0,
+        :pg910_seg1,
+        :pg910_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4314,6 +4872,35 @@
     :titre "Quatrième tâche (2)" ;
     rdfs:subClassOf :act759984 .
 
+:pg910_seg0 a :Segment ;
+    :index 0 ;
+    :text "Choisissez entre les deux formes proposées : <br><br>What " .
+
+:pg910_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg910_seg1_rep24,
+        :pg910_seg1_rep429 ;
+    :index 1 .
+
+:pg910_seg1_rep24 a :Reponse ;
+    :__protege_display_name "pg910_seg1_rep24 | F" ;
+    :correct false ;
+    :html "if" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg910_seg1_rep429 a :Reponse ;
+    :__protege_display_name "pg910_seg1_rep429 | V" ;
+    :correct true ;
+    :html "have" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg910_seg2 a :Segment ;
+    :index 2 ;
+    :text """ the suspects proven, their innocence or their guilt?
+    """ .
+
 :pg9152_rep511 a :Reponse ;
     :__protege_display_name "pg9152_rep511 | F" ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p> </p>
@@ -4460,6 +5047,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (3)" ;
     :__protege_display_name "05 | pg9414 | Quatrième tâche (3)" ;
+    :aSegment :pg9414_seg0,
+        :pg9414_seg1,
+        :pg9414_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4500,6 +5090,35 @@
     :titre "Quatrième tâche (3)" ;
     rdfs:subClassOf :act759984 .
 
+:pg9414_seg0 a :Segment ;
+    :index 0 ;
+    :text "Choisissez entre les deux formes proposées : <br><br>What " .
+
+:pg9414_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg9414_seg1_rep566,
+        :pg9414_seg1_rep762 ;
+    :index 1 .
+
+:pg9414_seg1_rep566 a :Reponse ;
+    :__protege_display_name "pg9414_seg1_rep566 | F" ;
+    :correct false ;
+    :html "have" ;
+    :id "rep566" ;
+    :index -1 .
+
+:pg9414_seg1_rep762 a :Reponse ;
+    :__protege_display_name "pg9414_seg1_rep762 | F" ;
+    :correct false ;
+    :html "if" ;
+    :id "rep762" ;
+    :index -1 .
+
+:pg9414_seg2 a :Segment ;
+    :index 2 ;
+    :text """ the suspect is proven innocent? Do we have other possibilities?
+    """ .
+
 :pg9439 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -4548,6 +5167,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche" ;
     :__protege_display_name "03 | pg9615 | Quatrième tâche" ;
+    :aSegment :pg9615_seg0,
+        :pg9615_seg1,
+        :pg9615_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4595,6 +5217,43 @@
     :titre "Quatrième tâche" ;
     rdfs:subClassOf :act56672 .
 
+:pg9615_seg0 a :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg9615_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg9615_seg1_rep269,
+        :pg9615_seg1_rep430,
+        :pg9615_seg1_rep527 ;
+    :index 1 .
+
+:pg9615_seg1_rep269 a :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep269 | V" ;
+    :correct true ;
+    :html "My mother's a" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg9615_seg1_rep430 a :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep430 | F" ;
+    :correct false ;
+    :html "My mothers are" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg9615_seg1_rep527 a :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep527 | F" ;
+    :correct false ;
+    :html "My mothers a " ;
+    :id "rep527" ;
+    :index -1 .
+
+:pg9615_seg2 a :Segment ;
+    :index 2 ;
+    :text """ a good cook.
+    """ .
+
 :pg9719 a :Activite,
         :ExerciceQM,
         owl:NamedIndividual ;
diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index a94d71b..947d47c 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -163,6 +163,27 @@ class Choice:
     """A `Comment` associated with this choice, displayed when the exercise
     is incorrect and this choice is selected"""
 
+    def save(self, graph: Graph, rdf_name: str) -> URIRef:
+        """Save this choice to the RDF graph"""
+        display_name = rdf_name + " | " + ("V" if self.is_correct else "F")
+        choice_node = NS[rdf_name]
+        graph.add((choice_node, RDF.type, NS["Reponse"]))
+        graph.add((choice_node, NS["id"], Literal(self.id)))
+        graph.add((choice_node, NS["index"], Literal(self.index)))
+        graph.add((choice_node, NS["correct"], Literal(self.is_correct)))
+        graph.add((choice_node, NS["html"], Literal(self.html)))
+        # Save optional comment
+        if self.comment is not None:
+            graph.add((choice_node, NS["commentaireSugg"], Literal(self.comment.html)))
+        graph.add(
+            (
+                choice_node,
+                NS["__protege_display_name"],
+                Literal(display_name),
+            )
+        )
+        return choice_node
+
 
 @dataclass
 class ChoiceGroup:
@@ -177,6 +198,13 @@ class Gap:
     id: str
     choices: list[Choice] = field(default_factory=list)
 
+    def save(self, graph: Graph, rdf_name: str):
+        """Save this gap to the RDF graph"""
+        for choice in self.choices:
+            choice_uri = choice.save(graph, f"{rdf_name}_{choice.id}")
+            graph.add((NS[rdf_name], NS["aReponse"], choice_uri))
+        pass
+
 
 @dataclass
 class ExerciceQC(Exercice):
@@ -221,26 +249,7 @@ class ExerciceQC(Exercice):
     def save(self, graph: Graph):
         super().save(graph)
         for choice in self.choices.values():
-            rdf_name = f"{self.id}_{choice.id}"  # ex: pg157_2, pg173_rep21
-            display_name = rdf_name + " | " + ("V" if choice.is_correct else "F")
-            choice_node = NS[rdf_name]
-            graph.add((choice_node, RDF.type, NS["Reponse"]))
-            graph.add((choice_node, NS["id"], Literal(choice.id)))
-            graph.add((choice_node, NS["index"], Literal(choice.index)))
-            graph.add((choice_node, NS["correct"], Literal(choice.is_correct)))
-            graph.add((choice_node, NS["html"], Literal(choice.html)))
-            # Save optional comment
-            if choice.comment is not None:
-                graph.add(
-                    (choice_node, NS["commentaireSugg"], Literal(choice.comment.html))
-                )
-            graph.add(
-                (
-                    choice_node,
-                    NS["__protege_display_name"],
-                    Literal(display_name),
-                )
-            )
+            choice_node = choice.save(graph, f"{self.id}_{choice.id}")
             graph.add((NS[self.id], NS["aReponse"], choice_node))
             # Our fake "class hierarchy" just for easier visualization
             graph.add((choice_node, RDFS.subClassOf, NS[self.id]))
@@ -296,7 +305,9 @@ class ExerciceTAT(Exercice):
             else:
                 text_segment_buf += to_html(elem)
 
-        self.segments.append(text_segment_buf)
+        if text_segment_buf != "":
+            # Avoid adding an empty segment if there are none
+            self.segments.append(text_segment_buf)
 
         nb_total_gaps = len(container.find_class("STY_selectTAT"))
         nb_found_gaps = len([e for e in self.segments if isinstance(e, Gap)])
@@ -306,6 +317,23 @@ class ExerciceTAT(Exercice):
             )
         pass
 
+    @override
+    def save(self, graph: Graph):
+        super().save(graph)
+        for index, segment in enumerate(self.segments):
+            rdf_name = f"{self.id}_seg{index}"
+            segment_uri = NS[rdf_name]
+            # The Segment has to be an object, even text segments, because
+            # we also need an `index` property since RDF is unordered.$
+            graph.add((NS[self.id], NS["aSegment"], segment_uri))
+            graph.add((segment_uri, RDF.type, NS["Segment"]))
+            graph.add((segment_uri, NS["index"], Literal(index)))
+            if isinstance(segment, str):
+                graph.add((segment_uri, NS["text"], Literal(segment)))
+            else:
+                graph.add((segment_uri, RDF.type, NS["Champ"]))
+                segment.save(graph, rdf_name)
+
     def get_or_create_gap(self, gap_id: str) -> Gap:
         """Find a gap by ID, creating it if needed"""
         if gap_id not in self.gaps:
-- 
GitLab


From 6bd6badc3236e5d301a245f53276cb94be0f3842 Mon Sep 17 00:00:00 2001
From: eliott <eliott.sammier@tetras-libre.fr>
Date: Fri, 2 Aug 2024 16:33:12 +0200
Subject: [PATCH 06/22] Add difference between selection gaps and free gaps

---
 .../result/macao_12/macao_content.ttl         |  48 ++-
 .../result/macao_3/macao_content.ttl          | 378 ++++++++++++++++--
 tetras_extraction/script/src/extract_page.py  |  14 +-
 3 files changed, 395 insertions(+), 45 deletions(-)

diff --git a/tetras_extraction/result/macao_12/macao_content.ttl b/tetras_extraction/result/macao_12/macao_content.ttl
index c1290fe..78891ea 100644
--- a/tetras_extraction/result/macao_12/macao_content.ttl
+++ b/tetras_extraction/result/macao_12/macao_content.ttl
@@ -402,7 +402,8 @@
 
 :pg20_seg1 a :Champ,
         :Segment ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg20_seg2 a :Segment ;
     :index 2 ;
@@ -412,7 +413,8 @@
 
 :pg20_seg3 a :Champ,
         :Segment ;
-    :index 3 .
+    :index 3 ;
+    :selection true .
 
 :pg20_seg4 a :Segment ;
     :index 4 ;
@@ -424,7 +426,8 @@
 
 :pg20_seg5 a :Champ,
         :Segment ;
-    :index 5 .
+    :index 5 ;
+    :selection true .
 
 :pg20_seg6 a :Segment ;
     :index 6 ;
@@ -436,7 +439,8 @@
 
 :pg20_seg7 a :Champ,
         :Segment ;
-    :index 7 .
+    :index 7 ;
+    :selection true .
 
 :pg20_seg8 a :Segment ;
     :index 8 ;
@@ -1818,7 +1822,8 @@
 
 :pg503_seg1 a :Champ,
         :Segment ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg503_seg10 a :Segment ;
     :index 10 ;
@@ -1838,7 +1843,8 @@
 
 :pg503_seg3 a :Champ,
         :Segment ;
-    :index 3 .
+    :index 3 ;
+    :selection true .
 
 :pg503_seg4 a :Segment ;
     :index 4 ;
@@ -1848,7 +1854,8 @@
 
 :pg503_seg5 a :Champ,
         :Segment ;
-    :index 5 .
+    :index 5 ;
+    :selection true .
 
 :pg503_seg6 a :Segment ;
     :index 6 ;
@@ -1858,7 +1865,8 @@
 
 :pg503_seg7 a :Champ,
         :Segment ;
-    :index 7 .
+    :index 7 ;
+    :selection true .
 
 :pg503_seg8 a :Segment ;
     :index 8 ;
@@ -1868,7 +1876,8 @@
 
 :pg503_seg9 a :Champ,
         :Segment ;
-    :index 9 .
+    :index 9 ;
+    :selection true .
 
 :pg512 a :Activite,
         :Cours,
@@ -2579,7 +2588,8 @@
 
 :pg6241_seg1 a :Champ,
         :Segment ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg6241_seg10 a :Segment ;
     :index 10 ;
@@ -2589,7 +2599,8 @@
 
 :pg6241_seg11 a :Champ,
         :Segment ;
-    :index 11 .
+    :index 11 ;
+    :selection true .
 
 :pg6241_seg12 a :Segment ;
     :index 12 ;
@@ -2599,7 +2610,8 @@
 
 :pg6241_seg13 a :Champ,
         :Segment ;
-    :index 13 .
+    :index 13 ;
+    :selection true .
 
 :pg6241_seg14 a :Segment ;
     :index 14 ;
@@ -2614,7 +2626,8 @@
 
 :pg6241_seg3 a :Champ,
         :Segment ;
-    :index 3 .
+    :index 3 ;
+    :selection true .
 
 :pg6241_seg4 a :Segment ;
     :index 4 ;
@@ -2624,7 +2637,8 @@
 
 :pg6241_seg5 a :Champ,
         :Segment ;
-    :index 5 .
+    :index 5 ;
+    :selection true .
 
 :pg6241_seg6 a :Segment ;
     :index 6 ;
@@ -2632,7 +2646,8 @@
 
 :pg6241_seg7 a :Champ,
         :Segment ;
-    :index 7 .
+    :index 7 ;
+    :selection true .
 
 :pg6241_seg8 a :Segment ;
     :index 8 ;
@@ -2642,7 +2657,8 @@
 
 :pg6241_seg9 a :Champ,
         :Segment ;
-    :index 9 .
+    :index 9 ;
+    :selection true .
 
 :pg624_seg0 a :Segment ;
     :index 0 ;
diff --git a/tetras_extraction/result/macao_3/macao_content.ttl b/tetras_extraction/result/macao_3/macao_content.ttl
index c85f31c..7514a5a 100644
--- a/tetras_extraction/result/macao_3/macao_content.ttl
+++ b/tetras_extraction/result/macao_3/macao_content.ttl
@@ -89,7 +89,8 @@
         :Segment ;
     :aReponse :pg1023_seg1_rep24,
         :pg1023_seg1_rep429 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg1023_seg1_rep24 a :Reponse ;
     :__protege_display_name "pg1023_seg1_rep24 | V" ;
@@ -1137,7 +1138,8 @@
         :Segment ;
     :aReponse :pg2429_seg1_rep247,
         :pg2429_seg1_rep471 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg2429_seg1_rep247 a :Reponse ;
     :__protege_display_name "pg2429_seg1_rep247 | F" ;
@@ -1436,7 +1438,8 @@
         :Segment ;
     :aReponse :pg2759_seg1_rep269,
         :pg2759_seg1_rep430 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg2759_seg1_rep269 a :Reponse ;
     :__protege_display_name "pg2759_seg1_rep269 | F" ;
@@ -1460,7 +1463,8 @@
         :Segment ;
     :aReponse :pg2759_seg3_rep231,
         :pg2759_seg3_rep655 ;
-    :index 3 .
+    :index 3 ;
+    :selection true .
 
 :pg2759_seg3_rep231 a :Reponse ;
     :__protege_display_name "pg2759_seg3_rep231 | V" ;
@@ -1540,7 +1544,9 @@
         owl:NamedIndividual ;
     rdfs:label "Cinquième tâche" ;
     :__protege_display_name "04 | pg3092 | Cinquième tâche" ;
-    :aSegment :pg3092_seg0 ;
+    :aSegment :pg3092_seg0,
+        :pg3092_seg1,
+        :pg3092_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1599,7 +1605,80 @@
 
 :pg3092_seg0 a :Segment ;
     :index 0 ;
-    :text """What <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 82px; HEIGHT: 17px"> cooking?
+    :text "What " .
+
+:pg3092_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg3092_seg1_rep101,
+        :pg3092_seg1_rep117,
+        :pg3092_seg1_rep135,
+        :pg3092_seg1_rep444,
+        :pg3092_seg1_rep469,
+        :pg3092_seg1_rep483,
+        :pg3092_seg1_rep831,
+        :pg3092_seg1_rep843 ;
+    :index 1 ;
+    :selection false .
+
+:pg3092_seg1_rep101 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep101 | V" ;
+    :correct true ;
+    :html "is Sarah" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3092_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'s Sarah" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3092_seg1_rep135 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep135 | V" ;
+    :correct true ;
+    :html " is Sarah" ;
+    :id "rep135" ;
+    :index -1 .
+
+:pg3092_seg1_rep444 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep444 | V" ;
+    :correct true ;
+    :html " 's Sarah" ;
+    :id "rep444" ;
+    :index -1 .
+
+:pg3092_seg1_rep469 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep469 | V" ;
+    :correct true ;
+    :html " is Sara" ;
+    :id "rep469" ;
+    :index -1 .
+
+:pg3092_seg1_rep483 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep483 | V" ;
+    :correct true ;
+    :html " 's Sara" ;
+    :id "rep483" ;
+    :index -1 .
+
+:pg3092_seg1_rep831 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep831 | V" ;
+    :correct true ;
+    :html "'s Sara" ;
+    :id "rep831" ;
+    :index -1 .
+
+:pg3092_seg1_rep843 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep843 | V" ;
+    :correct true ;
+    :html "is Sara" ;
+    :id "rep843" ;
+    :index -1 .
+
+:pg3092_seg2 a :Segment ;
+    :index 2 ;
+    :text """ cooking?
         It smells so nice!
     """ .
 
@@ -1844,7 +1923,9 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche" ;
     :__protege_display_name "05 | pg3600 | Sixième tâche" ;
-    :aSegment :pg3600_seg0 ;
+    :aSegment :pg3600_seg0,
+        :pg3600_seg1,
+        :pg3600_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1903,7 +1984,32 @@
 
 :pg3600_seg0 a :Segment ;
     :index 0 ;
-    :text """<input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 62px; HEIGHT: 17px"> two people
+    :text "" .
+
+:pg3600_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg3600_seg1_rep101,
+        :pg3600_seg1_rep117 ;
+    :index 1 ;
+    :selection false .
+
+:pg3600_seg1_rep101 a :Reponse ;
+    :__protege_display_name "pg3600_seg1_rep101 | V" ;
+    :correct true ;
+    :html "There are" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3600_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg3600_seg1_rep117 | V" ;
+    :correct true ;
+    :html "there are" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3600_seg2 a :Segment ;
+    :index 2 ;
+    :text """ two people
         waiting outside.
     """ .
 
@@ -2126,7 +2232,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg3862 | Troisième tâche" ;
-    :aSegment :pg3862_seg0 ;
+    :aSegment :pg3862_seg0,
+        :pg3862_seg1,
+        :pg3862_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2197,7 +2305,48 @@
 
 :pg3862_seg0 a :Segment ;
     :index 0 ;
-    :text """Now he <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 62px; HEIGHT: 17px"> he
+    :text "Now he " .
+
+:pg3862_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg3862_seg1_rep101,
+        :pg3862_seg1_rep117,
+        :pg3862_seg1_rep227,
+        :pg3862_seg1_rep309 ;
+    :index 1 ;
+    :selection false .
+
+:pg3862_seg1_rep101 a :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep101 | V" ;
+    :correct true ;
+    :html "has said" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3862_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'s said" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3862_seg1_rep227 a :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep227 | V" ;
+    :correct true ;
+    :html " 's said" ;
+    :id "rep227" ;
+    :index -1 .
+
+:pg3862_seg1_rep309 a :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep309 | V" ;
+    :correct true ;
+    :html " has said" ;
+    :id "rep309" ;
+    :index -1 .
+
+:pg3862_seg2 a :Segment ;
+    :index 2 ;
+    :text """ he
         doesn't want to come, it's too late!
     """ .
 
@@ -2486,7 +2635,8 @@
     :aReponse :pg4141_seg1_rep269,
         :pg4141_seg1_rep430,
         :pg4141_seg1_rep527 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg4141_seg1_rep269 a :Reponse ;
     :__protege_display_name "pg4141_seg1_rep269 | F" ;
@@ -2833,7 +2983,9 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg4487 | Première tâche" ;
-    :aSegment :pg4487_seg0 ;
+    :aSegment :pg4487_seg0,
+        :pg4487_seg1,
+        :pg4487_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2941,7 +3093,48 @@
 :pg4487_seg0 a :Segment ;
     :index 0 ;
     :text """Peter and Mary have moved to Scotland. Their furniture has been carried
-        to Glasgow by road, and now they <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 93px; HEIGHT: 17px">
+        to Glasgow by road, and now they """ .
+
+:pg4487_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg4487_seg1_rep117,
+        :pg4487_seg1_rep577,
+        :pg4487_seg1_rep749,
+        :pg4487_seg1_rep982 ;
+    :index 1 ;
+    :selection false .
+
+:pg4487_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'ve finished" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg4487_seg1_rep577 a :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep577 | V" ;
+    :correct true ;
+    :html "have finished" ;
+    :id "rep577" ;
+    :index -1 .
+
+:pg4487_seg1_rep749 a :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep749 | V" ;
+    :correct true ;
+    :html " have finished" ;
+    :id "rep749" ;
+    :index -1 .
+
+:pg4487_seg1_rep982 a :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep982 | V" ;
+    :correct true ;
+    :html " 've finished" ;
+    :id "rep982" ;
+    :index -1 .
+
+:pg4487_seg2 a :Segment ;
+    :index 2 ;
+    :text """
         putting everything in its place.<br>""" .
 
 :pg4797_rep150 a :Reponse ;
@@ -3183,7 +3376,8 @@
     :aReponse :pg5132_seg1_rep24,
         :pg5132_seg1_rep429,
         :pg5132_seg1_rep91 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg5132_seg1_rep24 a :Reponse ;
     :__protege_display_name "pg5132_seg1_rep24 | V" ;
@@ -3526,7 +3720,8 @@
         :Segment ;
     :aReponse :pg6180_seg1_rep269,
         :pg6180_seg1_rep430 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg6180_seg1_rep269 a :Reponse ;
     :__protege_display_name "pg6180_seg1_rep269 | F" ;
@@ -3687,7 +3882,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (4)" ;
     :__protege_display_name "07 | pg6866 | Quatrième tâche (4)" ;
-    :aSegment :pg6866_seg0 ;
+    :aSegment :pg6866_seg0,
+        :pg6866_seg1,
+        :pg6866_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3745,7 +3942,64 @@
 
 :pg6866_seg0 a :Segment ;
     :index 0 ;
-    :text """<i><b><br></b></i>I<i><b></b></i><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1"><i><b> </b></i>medical
+    :text "<i><b><br></b></i>I<i><b></b></i>" .
+
+:pg6866_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg6866_seg1_rep117,
+        :pg6866_seg1_rep312,
+        :pg6866_seg1_rep356,
+        :pg6866_seg1_rep577,
+        :pg6866_seg1_rep891,
+        :pg6866_seg1_rep935 ;
+    :index 1 ;
+    :selection false .
+
+:pg6866_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep117 | V" ;
+    :correct true ;
+    :html "Would do" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg6866_seg1_rep312 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep312 | V" ;
+    :correct true ;
+    :html " 'd do" ;
+    :id "rep312" ;
+    :index -1 .
+
+:pg6866_seg1_rep356 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep356 | V" ;
+    :correct true ;
+    :html " Would do" ;
+    :id "rep356" ;
+    :index -1 .
+
+:pg6866_seg1_rep577 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep577 | V" ;
+    :correct true ;
+    :html "would do" ;
+    :id "rep577" ;
+    :index -1 .
+
+:pg6866_seg1_rep891 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep891 | V" ;
+    :correct true ;
+    :html " would do" ;
+    :id "rep891" ;
+    :index -1 .
+
+:pg6866_seg1_rep935 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep935 | V" ;
+    :correct true ;
+    :html "'d do" ;
+    :id "rep935" ;
+    :index -1 .
+
+:pg6866_seg2 a :Segment ;
+    :index 2 ;
+    :text """<i><b> </b></i>medical
         studies if I could start again.<br>""" .
 
 :pg6917 a :Activite,
@@ -3949,7 +4203,8 @@
         :Segment ;
     :aReponse :pg7429_seg1_rep24,
         :pg7429_seg1_rep429 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg7429_seg1_rep24 a :Reponse ;
     :__protege_display_name "pg7429_seg1_rep24 | V" ;
@@ -4192,7 +4447,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche" ;
     :__protege_display_name "03 | pg7682 | Quatrième tâche" ;
-    :aSegment :pg7682_seg0 ;
+    :aSegment :pg7682_seg0,
+        :pg7682_seg1,
+        :pg7682_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4255,7 +4512,48 @@
 
 :pg7682_seg0 a :Segment ;
     :index 0 ;
-    :text """I'm so thirsty, I  <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 82px; HEIGHT: 17px"> a
+    :text "I'm so thirsty, I  " .
+
+:pg7682_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg7682_seg1_rep101,
+        :pg7682_seg1_rep113,
+        :pg7682_seg1_rep117,
+        :pg7682_seg1_rep239 ;
+    :index 1 ;
+    :selection false .
+
+:pg7682_seg1_rep101 a :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep101 | V" ;
+    :correct true ;
+    :html "would drink" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg7682_seg1_rep113 a :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep113 | V" ;
+    :correct true ;
+    :html " would drink" ;
+    :id "rep113" ;
+    :index -1 .
+
+:pg7682_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'d drink" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg7682_seg1_rep239 a :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep239 | V" ;
+    :correct true ;
+    :html " 'd drink" ;
+    :id "rep239" ;
+    :index -1 .
+
+:pg7682_seg2 a :Segment ;
+    :index 2 ;
+    :text """ a
         whole bottle of fresh water if I could.
     """ .
 
@@ -4515,7 +4813,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg8400 | Deuxième tâche" ;
-    :aSegment :pg8400_seg0 ;
+    :aSegment :pg8400_seg0,
+        :pg8400_seg1,
+        :pg8400_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4578,7 +4878,32 @@
 
 :pg8400_seg0 a :Segment ;
     :index 0 ;
-    :text """You must phone Mr Williams if you have a problem. He's <input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1" style="FONT-SIZE: 10px; WIDTH: 43px; HEIGHT: 17px"> boss.
+    :text "You must phone Mr Williams if you have a problem. He's " .
+
+:pg8400_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg8400_seg1_rep117,
+        :pg8400_seg1_rep5 ;
+    :index 1 ;
+    :selection false .
+
+:pg8400_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg8400_seg1_rep117 | V" ;
+    :correct true ;
+    :html "the" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg8400_seg1_rep5 a :Reponse ;
+    :__protege_display_name "pg8400_seg1_rep5 | V" ;
+    :correct true ;
+    :html " the" ;
+    :id "rep5" ;
+    :index -1 .
+
+:pg8400_seg2 a :Segment ;
+    :index 2 ;
+    :text """ boss.
     """ .
 
 :pg8601_rep150 a :Reponse ;
@@ -4880,7 +5205,8 @@
         :Segment ;
     :aReponse :pg910_seg1_rep24,
         :pg910_seg1_rep429 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg910_seg1_rep24 a :Reponse ;
     :__protege_display_name "pg910_seg1_rep24 | F" ;
@@ -5098,7 +5424,8 @@
         :Segment ;
     :aReponse :pg9414_seg1_rep566,
         :pg9414_seg1_rep762 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg9414_seg1_rep566 a :Reponse ;
     :__protege_display_name "pg9414_seg1_rep566 | F" ;
@@ -5226,7 +5553,8 @@
     :aReponse :pg9615_seg1_rep269,
         :pg9615_seg1_rep430,
         :pg9615_seg1_rep527 ;
-    :index 1 .
+    :index 1 ;
+    :selection true .
 
 :pg9615_seg1_rep269 a :Reponse ;
     :__protege_display_name "pg9615_seg1_rep269 | V" ;
diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index 947d47c..a45a637 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -197,9 +197,12 @@ class Gap:
 
     id: str
     choices: list[Choice] = field(default_factory=list)
+    select: bool = False
+    """Whether the gap offers a selection between its choices, or a free text input"""
 
     def save(self, graph: Graph, rdf_name: str):
         """Save this gap to the RDF graph"""
+        graph.add((NS[rdf_name], NS["selection"], Literal(self.select)))
         for choice in self.choices:
             choice_uri = choice.save(graph, f"{rdf_name}_{choice.id}")
             graph.add((NS[rdf_name], NS["aReponse"], choice_uri))
@@ -293,15 +296,18 @@ class ExerciceTAT(Exercice):
         # Text buffer accumulates the text found
         text_segment_buf = container.text or ""
         for elem in container:
-            if elem.tag == "select" and "STY_selectTAT" in elem.classes:
+            if "STY_selectTAT" in elem.classes or "STY_champTAT" in elem.classes:
                 # It's a gap
                 # Time to "close" the text segment and add it
                 self.segments.append(text_segment_buf)
-                # Add the gap
-                gap_id = elem.attrib["id"].replace("champTrou", "")
-                self.segments.append(self.get_or_create_gap(gap_id))
                 # New text segment starts with the tail text of this element
                 text_segment_buf = elem.tail or ""
+                # Add the gap
+                gap_id = elem.attrib["id"].replace("champTrou", "")
+                gap = self.get_or_create_gap(gap_id)
+                self.segments.append(gap)
+                if "STY_selectTAT" in elem.classes:
+                    gap.select = True
             else:
                 text_segment_buf += to_html(elem)
 
-- 
GitLab


From 6522912bf26bc88e97ae5bd3924d82bc9ab346c1 Mon Sep 17 00:00:00 2001
From: eliott <eliott.sammier@tetras-libre.fr>
Date: Fri, 2 Aug 2024 17:52:16 +0200
Subject: [PATCH 07/22] Parse TAT choices for macao_12

---
 .../result/macao_12/macao_content.ttl         | 384 ++++++++++++++++++
 tetras_extraction/script/src/extract_page.py  | 114 ++++--
 2 files changed, 464 insertions(+), 34 deletions(-)

diff --git a/tetras_extraction/result/macao_12/macao_content.ttl b/tetras_extraction/result/macao_12/macao_content.ttl
index 78891ea..aa31d55 100644
--- a/tetras_extraction/result/macao_12/macao_content.ttl
+++ b/tetras_extraction/result/macao_12/macao_content.ttl
@@ -402,9 +402,33 @@
 
 :pg20_seg1 a :Champ,
         :Segment ;
+    :aReponse :pg20_seg1_rep0,
+        :pg20_seg1_rep1,
+        :pg20_seg1_rep2 ;
     :index 1 ;
     :selection true .
 
+:pg20_seg1_rep0 a :Reponse ;
+    :__protege_display_name "pg20_seg1_rep0 | F" ;
+    :correct false ;
+    :html "mother" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg1_rep1 a :Reponse ;
+    :__protege_display_name "pg20_seg1_rep1 | V" ;
+    :correct true ;
+    :html "my mother" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg1_rep2 a :Reponse ;
+    :__protege_display_name "pg20_seg1_rep2 | F" ;
+    :correct false ;
+    :html "our mother" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg20_seg2 a :Segment ;
     :index 2 ;
     :text """ told us  
@@ -413,9 +437,33 @@
 
 :pg20_seg3 a :Champ,
         :Segment ;
+    :aReponse :pg20_seg3_rep0,
+        :pg20_seg3_rep1,
+        :pg20_seg3_rep2 ;
     :index 3 ;
     :selection true .
 
+:pg20_seg3_rep0 a :Reponse ;
+    :__protege_display_name "pg20_seg3_rep0 | V" ;
+    :correct true ;
+    :html "the apples" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg3_rep1 a :Reponse ;
+    :__protege_display_name "pg20_seg3_rep1 | F" ;
+    :correct false ;
+    :html "apples" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg3_rep2 a :Reponse ;
+    :__protege_display_name "pg20_seg3_rep2 | F" ;
+    :correct false ;
+    :html "an apple" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg20_seg4 a :Segment ;
     :index 4 ;
     :text """.  <br><br>
@@ -426,9 +474,33 @@
 
 :pg20_seg5 a :Champ,
         :Segment ;
+    :aReponse :pg20_seg5_rep0,
+        :pg20_seg5_rep1,
+        :pg20_seg5_rep2 ;
     :index 5 ;
     :selection true .
 
+:pg20_seg5_rep0 a :Reponse ;
+    :__protege_display_name "pg20_seg5_rep0 | F" ;
+    :correct false ;
+    :html "a tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg5_rep1 a :Reponse ;
+    :__protege_display_name "pg20_seg5_rep1 | V" ;
+    :correct true ;
+    :html "the tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg5_rep2 a :Reponse ;
+    :__protege_display_name "pg20_seg5_rep2 | F" ;
+    :correct false ;
+    :html "tree" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg20_seg6 a :Segment ;
     :index 6 ;
     :text """,  
@@ -439,9 +511,33 @@
 
 :pg20_seg7 a :Champ,
         :Segment ;
+    :aReponse :pg20_seg7_rep0,
+        :pg20_seg7_rep1,
+        :pg20_seg7_rep2 ;
     :index 7 ;
     :selection true .
 
+:pg20_seg7_rep0 a :Reponse ;
+    :__protege_display_name "pg20_seg7_rep0 | F" ;
+    :correct false ;
+    :html "for" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg7_rep1 a :Reponse ;
+    :__protege_display_name "pg20_seg7_rep1 | F" ;
+    :correct false ;
+    :html "for a" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg7_rep2 a :Reponse ;
+    :__protege_display_name "pg20_seg7_rep2 | V" ;
+    :correct true ;
+    :html "for the" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg20_seg8 a :Segment ;
     :index 8 ;
     :text """ winter-time'.
@@ -1822,6 +1918,9 @@
 
 :pg503_seg1 a :Champ,
         :Segment ;
+    :aReponse :pg503_seg1_rep0,
+        :pg503_seg1_rep1,
+        :pg503_seg1_rep2 ;
     :index 1 ;
     :selection true .
 
@@ -1831,6 +1930,27 @@
         <script type="text/javascript">ajDocW(PF_clipAV('clipAV36', 'e29_macao1_2c4_0241.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
          and she took it in for my mother to wash.<br><br>""" .
 
+:pg503_seg1_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg1_rep0 | F" ;
+    :correct false ;
+    :html "want the apple" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg1_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg1_rep1 | V" ;
+    :correct true ;
+    :html "want an apple" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg1_rep2 a :Reponse ;
+    :__protege_display_name "pg503_seg1_rep2 | F" ;
+    :correct false ;
+    :html "want our apple" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg503_seg2 a :Segment ;
     :index 2 ;
     :text """"  
@@ -1843,9 +1963,33 @@
 
 :pg503_seg3 a :Champ,
         :Segment ;
+    :aReponse :pg503_seg3_rep0,
+        :pg503_seg3_rep1,
+        :pg503_seg3_rep2 ;
     :index 3 ;
     :selection true .
 
+:pg503_seg3_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg3_rep0 | V" ;
+    :correct true ;
+    :html "the tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg3_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg3_rep1 | F" ;
+    :correct false ;
+    :html "a tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg3_rep2 a :Reponse ;
+    :__protege_display_name "pg503_seg3_rep2 | F" ;
+    :correct false ;
+    :html "tree" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg503_seg4 a :Segment ;
     :index 4 ;
     :text """ 
@@ -1854,9 +1998,33 @@
 
 :pg503_seg5 a :Champ,
         :Segment ;
+    :aReponse :pg503_seg5_rep0,
+        :pg503_seg5_rep1,
+        :pg503_seg5_rep2 ;
     :index 5 ;
     :selection true .
 
+:pg503_seg5_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg5_rep0 | F" ;
+    :correct false ;
+    :html "a grass " ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg5_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg5_rep1 | F" ;
+    :correct false ;
+    :html "grass " ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg5_rep2 a :Reponse ;
+    :__protege_display_name "pg503_seg5_rep2 | V" ;
+    :correct true ;
+    :html "the grass " ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg503_seg6 a :Segment ;
     :index 6 ;
     :text """,   
@@ -1865,9 +2033,25 @@
 
 :pg503_seg7 a :Champ,
         :Segment ;
+    :aReponse :pg503_seg7_rep0,
+        :pg503_seg7_rep1 ;
     :index 7 ;
     :selection true .
 
+:pg503_seg7_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg7_rep0 | F" ;
+    :correct false ;
+    :html "under a tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg7_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg7_rep1 | V" ;
+    :correct true ;
+    :html "under the tree" ;
+    :id "rep1" ;
+    :index 1 .
+
 :pg503_seg8 a :Segment ;
     :index 8 ;
     :text """  
@@ -1876,9 +2060,33 @@
 
 :pg503_seg9 a :Champ,
         :Segment ;
+    :aReponse :pg503_seg9_rep0,
+        :pg503_seg9_rep1,
+        :pg503_seg9_rep2 ;
     :index 9 ;
     :selection true .
 
+:pg503_seg9_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg9_rep0 | F" ;
+    :correct false ;
+    :html "nice big windfall" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg9_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg9_rep1 | F" ;
+    :correct false ;
+    :html "the nice big windfall" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg9_rep2 a :Reponse ;
+    :__protege_display_name "pg503_seg9_rep2 | V" ;
+    :correct true ;
+    :html "a nice big windfall" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg512 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -2588,6 +2796,9 @@
 
 :pg6241_seg1 a :Champ,
         :Segment ;
+    :aReponse :pg6241_seg1_rep0,
+        :pg6241_seg1_rep1,
+        :pg6241_seg1_rep2 ;
     :index 1 ;
     :selection true .
 
@@ -2599,9 +2810,33 @@
 
 :pg6241_seg11 a :Champ,
         :Segment ;
+    :aReponse :pg6241_seg11_rep0,
+        :pg6241_seg11_rep1,
+        :pg6241_seg11_rep2 ;
     :index 11 ;
     :selection true .
 
+:pg6241_seg11_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg11_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg11_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg6241_seg12 a :Segment ;
     :index 12 ;
     :text """ very easy thing to <br><br>do  
@@ -2610,14 +2845,59 @@
 
 :pg6241_seg13 a :Champ,
         :Segment ;
+    :aReponse :pg6241_seg13_rep0,
+        :pg6241_seg13_rep1,
+        :pg6241_seg13_rep2 ;
     :index 13 ;
     :selection true .
 
+:pg6241_seg13_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep0 | V" ;
+    :correct true ;
+    :html "the branches" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg13_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep1 | F" ;
+    :correct false ;
+    :html "branches" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg13_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep2 | F" ;
+    :correct false ;
+    :html "some branches" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg6241_seg14 a :Segment ;
     :index 14 ;
     :text """ were so low.
     """ .
 
+:pg6241_seg1_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg1_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg1_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg6241_seg2 a :Segment ;
     :index 2 ;
     :text """ little girl,  
@@ -2626,9 +2906,33 @@
 
 :pg6241_seg3 a :Champ,
         :Segment ;
+    :aReponse :pg6241_seg3_rep0,
+        :pg6241_seg3_rep1,
+        :pg6241_seg3_rep2 ;
     :index 3 ;
     :selection true .
 
+:pg6241_seg3_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg3_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg3_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg6241_seg4 a :Segment ;
     :index 4 ;
     :text """ little girl,  
@@ -2637,18 +2941,74 @@
 
 :pg6241_seg5 a :Champ,
         :Segment ;
+    :aReponse :pg6241_seg5_rep0,
+        :pg6241_seg5_rep1,
+        :pg6241_seg5_rep2,
+        :pg6241_seg5_rep3 ;
     :index 5 ;
     :selection true .
 
+:pg6241_seg5_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep0 | V" ;
+    :correct true ;
+    :html "an apple" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg5_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep1 | F" ;
+    :correct false ;
+    :html "our apple" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg5_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep2 | F" ;
+    :correct false ;
+    :html "the apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg5_rep3 a :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep3 | F" ;
+    :correct false ;
+    :html "apple" ;
+    :id "rep3" ;
+    :index 3 .
+
 :pg6241_seg6 a :Segment ;
     :index 6 ;
     :text " tree " .
 
 :pg6241_seg7 a :Champ,
         :Segment ;
+    :aReponse :pg6241_seg7_rep0,
+        :pg6241_seg7_rep1,
+        :pg6241_seg7_rep2 ;
     :index 7 ;
     :selection true .
 
+:pg6241_seg7_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep0 | F" ;
+    :correct false ;
+    :html "in a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg7_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep1 | F" ;
+    :correct false ;
+    :html "in the" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg7_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep2 | V" ;
+    :correct true ;
+    :html "in our" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg6241_seg8 a :Segment ;
     :index 8 ;
     :text """<br><br> garden,  
@@ -2657,9 +3017,33 @@
 
 :pg6241_seg9 a :Champ,
         :Segment ;
+    :aReponse :pg6241_seg9_rep0,
+        :pg6241_seg9_rep1,
+        :pg6241_seg9_rep2 ;
     :index 9 ;
     :selection true .
 
+:pg6241_seg9_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep0 | F" ;
+    :correct false ;
+    :html "the apples" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg9_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep1 | V" ;
+    :correct true ;
+    :html "some apples" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg9_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep2 | F" ;
+    :correct false ;
+    :html "apples" ;
+    :id "rep2" ;
+    :index 2 .
+
 :pg624_seg0 a :Segment ;
     :index 0 ;
     :text """<p align="">
diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index a45a637..6de2033 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -498,40 +498,65 @@ class RegexParser(JSParser):
             raise exception from e
 
     def _parse_tat_choices(self, code: str, exo: ExerciceTAT) -> None:
-        choices_regex = re.compile(
-            r"""
-            exo\.ajouterReponse\(
-            '(?P<choice_id>\w+)'
-            ,\s'(?P<gap_id>\d+)'
-            ,\s'(?P<correct_code>\d+)'
-            ,\s\"(?P<text>.+)\"
-            \);""",
-            re.VERBOSE,
-        )
-        choices = list(choices_regex.finditer(code))
-        # Correctness obfuscation
-        # Each choice is correct if correct_code == 2*gap_num + (nb_gaps + score) % 2
-        # (see the wiki for more info)
-        nb_gaps = max(
-            [int(match.group("gap_id")) for match in choices_regex.finditer(code)],
-            default=0,
-        )
-        score = self._parse_score(code)
-        correction_offset = (nb_gaps + score) % 2
-
-        # Process matches
-        for match in choices:
-            gap = exo.get_or_create_gap(match.group("gap_id"))
-            choice = Choice(match.group("choice_id"))
-            correct_code = int(match.group("correct_code"))
-            choice.is_correct = (2 * int(gap.id) + correction_offset) == correct_code
-            # Decode obfuscated text
-            text = match.group("text")
-            choice.html = decode_answer_text(text)
-            # Add choice
-            gap.choices.append(choice)
-            pass
-        pass
+        if Context.version == "macao_12":
+            # tinker with this regex: https://regex101.com/r/OYF6La/1
+            choices_regex = re.compile(
+                r"""
+                exo\.ajouterReponse\(
+                '(?P<gap_id>\d+)'
+                ,\s'(?P<correct_code>\w+)'
+                ,\s\"(?P<text>.+)\"
+                \);""",
+                re.VERBOSE,
+            )
+            for match in choices_regex.finditer(code):
+                gap = exo.get_or_create_gap(match.group("gap_id"))
+                choice = Choice()
+                choice.index = len(gap.choices)
+                choice.id = "rep" + str(choice.index)
+                choice.is_correct = match.group("correct_code") == "nw"
+                # Decode obfuscated text
+                text = match.group("text")
+                choice.html = decode_answer_text_macao12(text)
+                # Add choice
+                gap.choices.append(choice)
+
+        else:
+            # tinker with this regex: https://regex101.com/r/UFxxj3/1
+            choices_regex = re.compile(
+                r"""
+                exo\.ajouterReponse\(
+                '(?P<choice_id>\w+)'
+                ,\s'(?P<gap_id>\d+)'
+                ,\s'(?P<correct_code>\d+)'
+                ,\s\"(?P<text>.+)\"
+                \);""",
+                re.VERBOSE,
+            )
+            choices = list(choices_regex.finditer(code))
+            # Correctness obfuscation
+            # Each choice is correct if correct_code == 2*gap_num + (nb_gaps + score) % 2
+            # (see the wiki for more info)
+            nb_gaps = max(
+                [int(match.group("gap_id")) for match in choices_regex.finditer(code)],
+                default=0,
+            )
+            score = self._parse_score(code)
+            correction_offset = (nb_gaps + score) % 2
+
+            # Process matches
+            for match in choices:
+                gap = exo.get_or_create_gap(match.group("gap_id"))
+                choice = Choice(match.group("choice_id"))
+                correct_code = int(match.group("correct_code"))
+                choice.is_correct = (
+                    2 * int(gap.id) + correction_offset
+                ) == correct_code
+                # Decode obfuscated text
+                text = match.group("text")
+                choice.html = decode_answer_text(text)
+                # Add choice
+                gap.choices.append(choice)
 
 
 def decode_answer_id(id: str):
@@ -577,6 +602,27 @@ def decode_answer_text(text: str):
     return text.translate(table)
 
 
+def decode_answer_text_macao12(text: str):
+    """Decode an obfuscated answer text, just like the function
+    `exo_ajouterReponse()` in macao_12 `ClasseExerciceTAT.js`."""
+    if text.startswith("#k"):
+        # Only some answers are encoded, indicated by a special marker
+        text = text[2:]  # trim the marker
+        # First 4 chars move to the end, for some reason
+        if len(text) > 5:
+            text = text[4:] + text[0:4]
+        # Split the string in groups of 3 chars (numbers), and
+        # use these groups as UTF-16 code units
+        return "".join(
+            [
+                int(text[i : i + 3]).to_bytes(2).decode("utf-16-be")
+                for i in range(0, len(text), 3)
+            ]
+        )
+    else:
+        return text
+
+
 def parse_page(graph: Graph, filepath: str, id: str):
     # Activity data is spread across HTML and JS code, which are parsed
     # differently. Additionally, some pieces of data are specific to the
-- 
GitLab


From 0bf11af0ea9189978f14b545503ecfa5e4e9a1b1 Mon Sep 17 00:00:00 2001
From: eliott <eliott.sammier@tetras-libre.fr>
Date: Mon, 5 Aug 2024 10:21:29 +0200
Subject: [PATCH 08/22] Fix incorrect gap counting caused by missing CSS class

---
 tetras_extraction/script/src/extract_page.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index 6de2033..16f652d 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -315,7 +315,7 @@ class ExerciceTAT(Exercice):
             # Avoid adding an empty segment if there are none
             self.segments.append(text_segment_buf)
 
-        nb_total_gaps = len(container.find_class("STY_selectTAT"))
+        nb_total_gaps = len(container.cssselect(".STY_selectTAT, .STY_champTAT"))
         nb_found_gaps = len([e for e in self.segments if isinstance(e, Gap)])
         if nb_found_gaps != nb_total_gaps:
             log.warning(
-- 
GitLab


From a6d710f1430a04a6b76f0d9b9e6103f1d6dc0e13 Mon Sep 17 00:00:00 2001
From: eliott <eliott.sammier@tetras-libre.fr>
Date: Tue, 6 Aug 2024 09:51:29 +0200
Subject: [PATCH 09/22] Count Segments and Champs

---
 .../result/full/macao_content.ttl             | 1830 +++++++++++++-
 tetras_extraction/result/full/macao_full.ttl  | 2252 ++++++++++++++++-
 .../result/macao_12/macao_full.ttl            |  981 +++++++
 .../result/macao_3/macao_full.ttl             | 1229 +++++++++
 tetras_extraction/script/src/test.py          |   27 +-
 5 files changed, 6262 insertions(+), 57 deletions(-)

diff --git a/tetras_extraction/result/full/macao_content.ttl b/tetras_extraction/result/full/macao_content.ttl
index 6324931..cde571f 100644
--- a/tetras_extraction/result/full/macao_content.ttl
+++ b/tetras_extraction/result/full/macao_content.ttl
@@ -85,6 +85,9 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg1023 | Première tâche" ;
+    :aSegment :pg1023_seg0,
+        :pg1023_seg1,
+        :pg1023_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -125,6 +128,37 @@
     :titre "Première tâche" ;
     rdfs:subClassOf :act759984 .
 
+:pg1023_seg0 a :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les deux formes proposées : <br><br>Now that the Prime
+        Minister has  """ .
+
+:pg1023_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg1023_seg1_rep24,
+        :pg1023_seg1_rep429 ;
+    :index 1 ;
+    :selection true .
+
+:pg1023_seg1_rep24 a :Reponse ;
+    :__protege_display_name "pg1023_seg1_rep24 | V" ;
+    :correct true ;
+    :html "shaken" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg1023_seg1_rep429 a :Reponse ;
+    :__protege_display_name "pg1023_seg1_rep429 | F" ;
+    :correct false ;
+    :html "shaking" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg1023_seg2 a :Segment ;
+    :index 2 ;
+    :text """ the President's hand, she is going back to her car.
+    """ .
+
 :pg1027 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -898,6 +932,7 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "02 | pg1888 | Deuxième tâche" ;
+    :aSegment :pg1888_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -938,6 +973,30 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act153876 .
 
+:pg1888_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <p><i><b>
+            <table width="70%" bgcolor="#00c0c0" cellpadding="3" cellspacing="0" valign="top" border="0">
+                <tr>
+                    <td style="BACKGROUND: #b5f0c7; WIDTH: 20%" width="40%" valign="middle"><img align="center" border="0" src="../media/ecouteur_macao.png" id="MosImg32"></td>
+                    <td style="BACKGROUND: #b5f0c7" valign="middle">
+                        <script type="text/javascript">ajDocW(PF_clipAV('clipAV2861', 'ecran191.swf', '30', '25', 'false', 'Flash', '', '', 'quality:high;wmode:transparent', '', ''));</script>
+                    </td>
+                </tr>
+            </table>
+        </b></i></p>
+        <p><i><b></b></i><i><b><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1"> </b></i>Zurich?<br><b><i> </i></b>
+        </p><table width="70%" bgcolor="#00c0c0" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="BACKGROUND: #b5f0c7; WIDTH: 20%" width="40%" valign="middle"><img align="center" border="0" src="../media/ecouteur_macao.png" id="MosImg320"></td>
+                <td style="BACKGROUND: #b5f0c7" valign="middle">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV2769', 'ecran192.swf', '30', '25', 'false', 'Flash', '', '', 'quality:high;wmode:transparent', '', ''));</script>
+                </td>
+            </tr>
+        </table>
+        <br><i><b><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou2"> </b></i>Zorba?""" .
+
 :pg1894_rep36 a :Reponse ;
     :__protege_display_name "pg1894_rep36 | F" ;
     :commentaireSugg """<div id="divSugg3" onclick="SPE_clicDansBulle(event,'divSugg3')"><p> </p>
@@ -1079,6 +1138,7 @@
         owl:NamedIndividual ;
     rdfs:label "Septième tâche" ;
     :__protege_display_name "07 | pg1919 | Septième tâche" ;
+    :aSegment :pg1919_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1182,6 +1242,30 @@
     :titre "Septième tâche" ;
     rdfs:subClassOf :act957420 .
 
+:pg1919_seg0 a :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He drank half the bottle of water.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He drank half a bottle of water.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
 :pg191_rep150 a :Reponse ;
     :__protege_display_name "pg191_rep150 | V" ;
     :correct true ;
@@ -1214,6 +1298,15 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (2)" ;
     :__protege_display_name "02 | pg20 | Ecoutez et complétez (2)" ;
+    :aSegment :pg20_seg0,
+        :pg20_seg1,
+        :pg20_seg2,
+        :pg20_seg3,
+        :pg20_seg4,
+        :pg20_seg5,
+        :pg20_seg6,
+        :pg20_seg7,
+        :pg20_seg8 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien. Complétez maintenant la
         suite du texte.</p>
         <p align=""> </p></div>
@@ -1265,6 +1358,155 @@
     :index 1 ;
     rdfs:subClassOf :pg205 .
 
+:pg20_seg0 a :Segment ;
+    :index 0 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV45', 'e29_macao1_2c3_0228.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+        So, """ .
+
+:pg20_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg20_seg1_rep0,
+        :pg20_seg1_rep1,
+        :pg20_seg1_rep2 ;
+    :index 1 ;
+    :selection true .
+
+:pg20_seg1_rep0 a :Reponse ;
+    :__protege_display_name "pg20_seg1_rep0 | F" ;
+    :correct false ;
+    :html "mother" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg1_rep1 a :Reponse ;
+    :__protege_display_name "pg20_seg1_rep1 | V" ;
+    :correct true ;
+    :html "my mother" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg1_rep2 a :Reponse ;
+    :__protege_display_name "pg20_seg1_rep2 | F" ;
+    :correct false ;
+    :html "our mother" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg2 a :Segment ;
+    :index 2 ;
+    :text """ told us  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV11', 'e29_macao1_2c3_0229.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         we were not to pick """ .
+
+:pg20_seg3 a :Champ,
+        :Segment ;
+    :aReponse :pg20_seg3_rep0,
+        :pg20_seg3_rep1,
+        :pg20_seg3_rep2 ;
+    :index 3 ;
+    :selection true .
+
+:pg20_seg3_rep0 a :Reponse ;
+    :__protege_display_name "pg20_seg3_rep0 | V" ;
+    :correct true ;
+    :html "the apples" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg3_rep1 a :Reponse ;
+    :__protege_display_name "pg20_seg3_rep1 | F" ;
+    :correct false ;
+    :html "apples" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg3_rep2 a :Reponse ;
+    :__protege_display_name "pg20_seg3_rep2 | F" ;
+    :correct false ;
+    :html "an apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg4 a :Segment ;
+    :index 4 ;
+    :text """.  <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV89', 'e29_macao1_2c3_0230.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         My mother said, 'It’s naughty to pick the apples   
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV82', 'e29_macao1_2c3_023311.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         when they are growing upon<br><br>""" .
+
+:pg20_seg5 a :Champ,
+        :Segment ;
+    :aReponse :pg20_seg5_rep0,
+        :pg20_seg5_rep1,
+        :pg20_seg5_rep2 ;
+    :index 5 ;
+    :selection true .
+
+:pg20_seg5_rep0 a :Reponse ;
+    :__protege_display_name "pg20_seg5_rep0 | F" ;
+    :correct false ;
+    :html "a tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg5_rep1 a :Reponse ;
+    :__protege_display_name "pg20_seg5_rep1 | V" ;
+    :correct true ;
+    :html "the tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg5_rep2 a :Reponse ;
+    :__protege_display_name "pg20_seg5_rep2 | F" ;
+    :correct false ;
+    :html "tree" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg6 a :Segment ;
+    :index 6 ;
+    :text """,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV27', 'e29_macao1_2c3_0232.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         because we want them to go on growing until they are ripe and rosy,   <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV46', 'e29_macao1_2c3_0233.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and then we shall pick them and put them quite away """ .
+
+:pg20_seg7 a :Champ,
+        :Segment ;
+    :aReponse :pg20_seg7_rep0,
+        :pg20_seg7_rep1,
+        :pg20_seg7_rep2 ;
+    :index 7 ;
+    :selection true .
+
+:pg20_seg7_rep0 a :Reponse ;
+    :__protege_display_name "pg20_seg7_rep0 | F" ;
+    :correct false ;
+    :html "for" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg7_rep1 a :Reponse ;
+    :__protege_display_name "pg20_seg7_rep1 | F" ;
+    :correct false ;
+    :html "for a" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg7_rep2 a :Reponse ;
+    :__protege_display_name "pg20_seg7_rep2 | V" ;
+    :correct true ;
+    :html "for the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg8 a :Segment ;
+    :index 8 ;
+    :text """ winter-time'.
+    """ .
+
 :pg217_1 a :Reponse ;
     :__protege_display_name "pg217_1 | V" ;
     :correct true ;
@@ -1514,6 +1756,9 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche" ;
     :__protege_display_name "09 | pg2429 | Sixième tâche" ;
+    :aSegment :pg2429_seg0,
+        :pg2429_seg1,
+        :pg2429_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1555,11 +1800,43 @@
     :titre "Sixième tâche" ;
     rdfs:subClassOf :act153876 .
 
+:pg2429_seg0 a :Segment ;
+    :index 0 ;
+    :text """<br>You don't find many independent companies in the cinema
+        industries.<br>Most of the time, """ .
+
+:pg2429_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg2429_seg1_rep247,
+        :pg2429_seg1_rep471 ;
+    :index 1 ;
+    :selection true .
+
+:pg2429_seg1_rep247 a :Reponse ;
+    :__protege_display_name "pg2429_seg1_rep247 | F" ;
+    :correct false ;
+    :html "there are" ;
+    :id "rep247" ;
+    :index -1 .
+
+:pg2429_seg1_rep471 a :Reponse ;
+    :__protege_display_name "pg2429_seg1_rep471 | V" ;
+    :correct true ;
+    :html "they are" ;
+    :id "rep471" ;
+    :index -1 .
+
+:pg2429_seg2 a :Segment ;
+    :index 2 ;
+    :text """ confronted by financial difficulties.
+    """ .
+
 :pg2493 a :Activite,
         :ExerciceTAT,
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche (2)" ;
     :__protege_display_name "06 | pg2493 | Sixième tâche (2)" ;
+    :aSegment :pg2493_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1660,6 +1937,30 @@
     :titre "Sixième tâche (2)" ;
     rdfs:subClassOf :act957420 .
 
+:pg2493_seg0 a :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Here's a road.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Here's the road.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
 :pg2538 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -1755,6 +2056,11 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg2759 | Première tâche" ;
+    :aSegment :pg2759_seg0,
+        :pg2759_seg1,
+        :pg2759_seg2,
+        :pg2759_seg3,
+        :pg2759_seg4 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -1826,6 +2132,61 @@
     :titre "Première tâche" ;
     rdfs:subClassOf :act56672 .
 
+:pg2759_seg0 a :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg2759_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg2759_seg1_rep269,
+        :pg2759_seg1_rep430 ;
+    :index 1 ;
+    :selection true .
+
+:pg2759_seg1_rep269 a :Reponse ;
+    :__protege_display_name "pg2759_seg1_rep269 | F" ;
+    :correct false ;
+    :html "He has decided" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg2759_seg1_rep430 a :Reponse ;
+    :__protege_display_name "pg2759_seg1_rep430 | V" ;
+    :correct true ;
+    :html "He is decided" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg2759_seg2 a :Segment ;
+    :index 2 ;
+    :text " in his ways.<br><br><br>" .
+
+:pg2759_seg3 a :Champ,
+        :Segment ;
+    :aReponse :pg2759_seg3_rep231,
+        :pg2759_seg3_rep655 ;
+    :index 3 ;
+    :selection true .
+
+:pg2759_seg3_rep231 a :Reponse ;
+    :__protege_display_name "pg2759_seg3_rep231 | V" ;
+    :correct true ;
+    :html "He has decided" ;
+    :id "rep231" ;
+    :index -1 .
+
+:pg2759_seg3_rep655 a :Reponse ;
+    :__protege_display_name "pg2759_seg3_rep655 | F" ;
+    :correct false ;
+    :html "He is decided" ;
+    :id "rep655" ;
+    :index -1 .
+
+:pg2759_seg4 a :Segment ;
+    :index 4 ;
+    :text """ not to come tomorrow.
+    """ .
+
 :pg278 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -2041,6 +2402,7 @@
         owl:NamedIndividual ;
     rdfs:label "Mémento : longueur de la voyelle" ;
     :__protege_display_name "21 | pg299 | Mémento : longueur de la voyelle" ;
+    :aSegment :pg299_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align="">Contrairement aux idées reçues,
@@ -2120,6 +2482,12 @@
     :titre "Voyelle réduite" ;
     rdfs:subClassOf :MosEtp555 .
 
+:pg299_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29anj_s4lc_p115.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg301 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -2138,6 +2506,9 @@
         owl:NamedIndividual ;
     rdfs:label "Cinquième tâche" ;
     :__protege_display_name "04 | pg3092 | Cinquième tâche" ;
+    :aSegment :pg3092_seg0,
+        :pg3092_seg1,
+        :pg3092_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2194,6 +2565,85 @@
     :titre "Cinquième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg3092_seg0 a :Segment ;
+    :index 0 ;
+    :text "What " .
+
+:pg3092_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg3092_seg1_rep101,
+        :pg3092_seg1_rep117,
+        :pg3092_seg1_rep135,
+        :pg3092_seg1_rep444,
+        :pg3092_seg1_rep469,
+        :pg3092_seg1_rep483,
+        :pg3092_seg1_rep831,
+        :pg3092_seg1_rep843 ;
+    :index 1 ;
+    :selection false .
+
+:pg3092_seg1_rep101 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep101 | V" ;
+    :correct true ;
+    :html "is Sarah" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3092_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'s Sarah" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3092_seg1_rep135 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep135 | V" ;
+    :correct true ;
+    :html " is Sarah" ;
+    :id "rep135" ;
+    :index -1 .
+
+:pg3092_seg1_rep444 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep444 | V" ;
+    :correct true ;
+    :html " 's Sarah" ;
+    :id "rep444" ;
+    :index -1 .
+
+:pg3092_seg1_rep469 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep469 | V" ;
+    :correct true ;
+    :html " is Sara" ;
+    :id "rep469" ;
+    :index -1 .
+
+:pg3092_seg1_rep483 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep483 | V" ;
+    :correct true ;
+    :html " 's Sara" ;
+    :id "rep483" ;
+    :index -1 .
+
+:pg3092_seg1_rep831 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep831 | V" ;
+    :correct true ;
+    :html "'s Sara" ;
+    :id "rep831" ;
+    :index -1 .
+
+:pg3092_seg1_rep843 a :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep843 | V" ;
+    :correct true ;
+    :html "is Sara" ;
+    :id "rep843" ;
+    :index -1 .
+
+:pg3092_seg2 a :Segment ;
+    :index 2 ;
+    :text """ cooking?
+        It smells so nice!
+    """ .
+
 :pg310 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -2505,6 +2955,7 @@
         owl:NamedIndividual ;
     rdfs:label "Huitième tâche" ;
     :__protege_display_name "08 | pg3579 | Huitième tâche" ;
+    :aSegment :pg3579_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2607,6 +3058,30 @@
     :titre "Huitième tâche" ;
     rdfs:subClassOf :act957420 .
 
+:pg3579_seg0 a :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He needs a pen.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He needs the pen.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
 :pg359 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -2628,6 +3103,9 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche" ;
     :__protege_display_name "05 | pg3600 | Sixième tâche" ;
+    :aSegment :pg3600_seg0,
+        :pg3600_seg1,
+        :pg3600_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2684,6 +3162,37 @@
     :titre "Sixième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg3600_seg0 a :Segment ;
+    :index 0 ;
+    :text "" .
+
+:pg3600_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg3600_seg1_rep101,
+        :pg3600_seg1_rep117 ;
+    :index 1 ;
+    :selection false .
+
+:pg3600_seg1_rep101 a :Reponse ;
+    :__protege_display_name "pg3600_seg1_rep101 | V" ;
+    :correct true ;
+    :html "There are" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3600_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg3600_seg1_rep117 | V" ;
+    :correct true ;
+    :html "there are" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3600_seg2 a :Segment ;
+    :index 2 ;
+    :text """ two people
+        waiting outside.
+    """ .
+
 :pg3602 a :Activite,
         :ExerciceGD,
         owl:NamedIndividual ;
@@ -2728,6 +3237,7 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg3628 | Deuxième tâche" ;
+    :aSegment :pg3628_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux dialogues
         reconstitués que vous pouvez écouter. <br><br>1 Tell us what you have found about the suspect. <br>A She has
         been seen several times with a rat. <br><br>Dans <i>She has been seen</i>, on a un <i><a class="STY_lienDansZoneComt" href="javascript:parent.SCO_ouvrirDoc('doc28886','htm')">present
@@ -2792,6 +3302,51 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act828642 .
 
+:pg3628_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV4748', 'ecran421.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Tell us what you have found about the suspect.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV1221', 'ecran422.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Where is the suspect?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>A</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV3044', 'ecran423.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV87', 'mot42_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     several times with a rat.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV7913', 'ecran424.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                      
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV46', 'mot42_4.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     by the judge.
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux dialogues plausibles, associez chaque question à une réponse en
+            sélectionnant A ou B dans les listes déroulantes.<br><br>Tell us what you have found about the
+            suspect.<br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>Where is the suspect?<br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg368 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -3039,6 +3594,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg3862 | Troisième tâche" ;
+    :aSegment :pg3862_seg0,
+        :pg3862_seg1,
+        :pg3862_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3107,6 +3665,53 @@
     :titre "Troisième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg3862_seg0 a :Segment ;
+    :index 0 ;
+    :text "Now he " .
+
+:pg3862_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg3862_seg1_rep101,
+        :pg3862_seg1_rep117,
+        :pg3862_seg1_rep227,
+        :pg3862_seg1_rep309 ;
+    :index 1 ;
+    :selection false .
+
+:pg3862_seg1_rep101 a :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep101 | V" ;
+    :correct true ;
+    :html "has said" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3862_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'s said" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3862_seg1_rep227 a :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep227 | V" ;
+    :correct true ;
+    :html " 's said" ;
+    :id "rep227" ;
+    :index -1 .
+
+:pg3862_seg1_rep309 a :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep309 | V" ;
+    :correct true ;
+    :html " has said" ;
+    :id "rep309" ;
+    :index -1 .
+
+:pg3862_seg2 a :Segment ;
+    :index 2 ;
+    :text """ he
+        doesn't want to come, it's too late!
+    """ .
+
 :pg386_1 a :Reponse ;
     :__protege_display_name "pg386_1 | F" ;
     :correct false ;
@@ -3193,6 +3798,7 @@
         owl:NamedIndividual ;
     rdfs:label "Longueur de la voyelle" ;
     :__protege_display_name "00 | pg397 | Longueur de la voyelle" ;
+    :aSegment :pg397_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align="">Contrairement aux idées reçues,
@@ -3288,6 +3894,12 @@
     :titre "Première tâche (1)" ;
     rdfs:subClassOf :act765533 .
 
+:pg397_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29anj_s4lc_p115.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg3981 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -3507,6 +4119,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg4141 | Troisième tâche" ;
+    :aSegment :pg4141_seg0,
+        :pg4141_seg1,
+        :pg4141_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3553,6 +4168,44 @@
     :titre "Troisième tâche" ;
     rdfs:subClassOf :act56672 .
 
+:pg4141_seg0 a :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg4141_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg4141_seg1_rep269,
+        :pg4141_seg1_rep430,
+        :pg4141_seg1_rep527 ;
+    :index 1 ;
+    :selection true .
+
+:pg4141_seg1_rep269 a :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep269 | F" ;
+    :correct false ;
+    :html "The player's a" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg4141_seg1_rep430 a :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep430 | F" ;
+    :correct false ;
+    :html "The players a" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg4141_seg1_rep527 a :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep527 | V" ;
+    :correct true ;
+    :html "The players are" ;
+    :id "rep527" ;
+    :index -1 .
+
+:pg4141_seg2 a :Segment ;
+    :index 2 ;
+    :text """ talking with the referee.
+    """ .
+
 :pg4192_rep150 a :Reponse ;
     :__protege_display_name "pg4192_rep150 | F" ;
     :commentaireSugg """<div id="divSugg2" onclick="SPE_clicDansBulle(event,'divSugg2')"><p> </p>
@@ -3924,6 +4577,7 @@
         owl:NamedIndividual ;
     rdfs:label "Mémento : voyelles lâches et voyelles tendues" ;
     :__protege_display_name "18 | pg44 | Mémento : voyelles lâches et voyelles tendues" ;
+    :aSegment :pg44_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align=""><br><br><font color="#a60a69">Contrairement
@@ -3946,6 +4600,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (5)" ;
     :__protege_display_name "08 | pg444 | Reconnaître le mot commun (5)" ;
+    :aSegment :pg444_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">FOR est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -3961,6 +4616,33 @@
     :titre "Reconnaître le mot commun (5)" ;
     rdfs:subClassOf :MosEtp335 .
 
+:pg444_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV84', 'e29_macao1_2b91.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV41', 'e29_macao1_2b101.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg4477 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -4028,6 +4710,9 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg4487 | Première tâche" ;
+    :aSegment :pg4487_seg0,
+        :pg4487_seg1,
+        :pg4487_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4132,6 +4817,53 @@
     :titre "Première tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg4487_seg0 a :Segment ;
+    :index 0 ;
+    :text """Peter and Mary have moved to Scotland. Their furniture has been carried
+        to Glasgow by road, and now they """ .
+
+:pg4487_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg4487_seg1_rep117,
+        :pg4487_seg1_rep577,
+        :pg4487_seg1_rep749,
+        :pg4487_seg1_rep982 ;
+    :index 1 ;
+    :selection false .
+
+:pg4487_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'ve finished" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg4487_seg1_rep577 a :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep577 | V" ;
+    :correct true ;
+    :html "have finished" ;
+    :id "rep577" ;
+    :index -1 .
+
+:pg4487_seg1_rep749 a :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep749 | V" ;
+    :correct true ;
+    :html " have finished" ;
+    :id "rep749" ;
+    :index -1 .
+
+:pg4487_seg1_rep982 a :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep982 | V" ;
+    :correct true ;
+    :html " 've finished" ;
+    :id "rep982" ;
+    :index -1 .
+
+:pg4487_seg2 a :Segment ;
+    :index 2 ;
+    :text """
+        putting everything in its place.<br>""" .
+
 :pg449 a :Activite,
         :ExerciceGD,
         owl:NamedIndividual ;
@@ -4168,6 +4900,12 @@
     :titre "Placer les accents primaire et secondaire (2)" ;
     rdfs:subClassOf :MosEtp746 .
 
+:pg44_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV13', 'e29anj_s4lc_p114.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg455 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -4412,6 +5150,17 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (3)" ;
     :__protege_display_name "03 | pg503 | Ecoutez et complétez (3)" ;
+    :aSegment :pg503_seg0,
+        :pg503_seg1,
+        :pg503_seg10,
+        :pg503_seg2,
+        :pg503_seg3,
+        :pg503_seg4,
+        :pg503_seg5,
+        :pg503_seg6,
+        :pg503_seg7,
+        :pg503_seg8,
+        :pg503_seg9 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien ! </p></div>
     """ ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p align="">Une ou plusieurs réponses ne
@@ -4429,35 +5178,212 @@
     :titre "Ecoutez et complétez (3)" ;
     rdfs:subClassOf :MosEtp558 .
 
-:pg512 a :Activite,
-        :Cours,
-        owl:NamedIndividual ;
-    rdfs:label "La prononciation des prépositions : mémento" ;
-    :__protege_display_name "10 | pg512 | La prononciation des prépositions : mémento" ;
-    :description """<div id="STY_texteCours" class="STY_texteCours" style="  "><p align=""><font color="#a60a69"><font color="#000000"><font color="#a60a69"></font></font></font> </p>
-        <table class="STY_tableau" width="500" cellpadding="3" cellspacing="0" valign="top" border="0">
-            <tr>
-                <td valign="top"><p align=""><font color="#a60a69">Certaines prépositions formées d’une seule syllabe
-                    présentent des variantes de prononciation en fonction de leur environnement immédiat. C’est le cas
-                    de <i>at, for, from, of, on, to</i>. D’autres prépositions ne présentent pas de différences notables
-                    à la prononciation : <i>in, off, up, with.<br></i><br>Les variantes inaccentuées s’entendent peu. On
-                    n’entend parfois que la <b><a class="STY_lienComt" href="javascript:parent.SCO_ouvrirDoc('consonne','htm')">consonne</a></b>,
-                    ce qui peut être une source de difficulté de compréhension ; cette difficulté est plus grande encore
-                    si le mot qui suit la préposition comporte la même <b><a class="STY_lienComt" href="javascript:parent.SCO_ouvrirDoc('consonne','htm')">consonne</a></b>.
-                    Regardez et écoutez chaque énoncé en cliquant sur la flèche :<br></font></p></td>
-            </tr>
-        </table>
-        <p align="">
-        </p><table class="STY_tableau" width="500" cellpadding="3" cellspacing="0" valign="top" border="0">
-            <tr>
-                <td valign="top"></td>
-                <td valign="top">
-                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV28', 'e29_macao1_3c11.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
-                </td>
-                <td valign="top"><br>I'm looking <i>at</i> <i>T</i>om.<br></td>
-            </tr>
-            <tr>
-                <td width="100" valign="top"> </td>
+:pg503_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV66', 'e29_macao1_2c4_0234.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         'If you """ .
+
+:pg503_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg503_seg1_rep0,
+        :pg503_seg1_rep1,
+        :pg503_seg1_rep2 ;
+    :index 1 ;
+    :selection true .
+
+:pg503_seg10 a :Segment ;
+    :index 10 ;
+    :text """ on the grass <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV36', 'e29_macao1_2c4_0241.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and she took it in for my mother to wash.<br><br>""" .
+
+:pg503_seg1_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg1_rep0 | F" ;
+    :correct false ;
+    :html "want the apple" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg1_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg1_rep1 | V" ;
+    :correct true ;
+    :html "want an apple" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg1_rep2 a :Reponse ;
+    :__protege_display_name "pg503_seg1_rep2 | F" ;
+    :correct false ;
+    :html "want our apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg503_seg2 a :Segment ;
+    :index 2 ;
+    :text """"  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV69', 'e29_macao1_2c4_0235.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         , my mother said,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV24', 'e29_macao1_2c4_0236.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         'you must pick up a windfall <br><br>and bring it to me, and I shall wash it for you.' 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV58', 'e29_macao1_2c4_0237.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         As you know, 'windfalls' <br><br>are apples that fall off """ .
+
+:pg503_seg3 a :Champ,
+        :Segment ;
+    :aReponse :pg503_seg3_rep0,
+        :pg503_seg3_rep1,
+        :pg503_seg3_rep2 ;
+    :index 3 ;
+    :selection true .
+
+:pg503_seg3_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg3_rep0 | V" ;
+    :correct true ;
+    :html "the tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg3_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg3_rep1 | F" ;
+    :correct false ;
+    :html "a tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg3_rep2 a :Reponse ;
+    :__protege_display_name "pg503_seg3_rep2 | F" ;
+    :correct false ;
+    :html "tree" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg503_seg4 a :Segment ;
+    :index 4 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV17', 'e29_macao1_2c4_0238.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          on to """ .
+
+:pg503_seg5 a :Champ,
+        :Segment ;
+    :aReponse :pg503_seg5_rep0,
+        :pg503_seg5_rep1,
+        :pg503_seg5_rep2 ;
+    :index 5 ;
+    :selection true .
+
+:pg503_seg5_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg5_rep0 | F" ;
+    :correct false ;
+    :html "a grass " ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg5_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg5_rep1 | F" ;
+    :correct false ;
+    :html "grass " ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg5_rep2 a :Reponse ;
+    :__protege_display_name "pg503_seg5_rep2 | V" ;
+    :correct true ;
+    :html "the grass " ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg503_seg6 a :Segment ;
+    :index 6 ;
+    :text """,   
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29_macao1_2c4_0239.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         so, one day, my little <br><br>sister looked """ .
+
+:pg503_seg7 a :Champ,
+        :Segment ;
+    :aReponse :pg503_seg7_rep0,
+        :pg503_seg7_rep1 ;
+    :index 7 ;
+    :selection true .
+
+:pg503_seg7_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg7_rep0 | F" ;
+    :correct false ;
+    :html "under a tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg7_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg7_rep1 | V" ;
+    :correct true ;
+    :html "under the tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg8 a :Segment ;
+    :index 8 ;
+    :text """  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV93', 'e29_macao1_2c4_0240.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          and found  """ .
+
+:pg503_seg9 a :Champ,
+        :Segment ;
+    :aReponse :pg503_seg9_rep0,
+        :pg503_seg9_rep1,
+        :pg503_seg9_rep2 ;
+    :index 9 ;
+    :selection true .
+
+:pg503_seg9_rep0 a :Reponse ;
+    :__protege_display_name "pg503_seg9_rep0 | F" ;
+    :correct false ;
+    :html "nice big windfall" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg9_rep1 a :Reponse ;
+    :__protege_display_name "pg503_seg9_rep1 | F" ;
+    :correct false ;
+    :html "the nice big windfall" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg9_rep2 a :Reponse ;
+    :__protege_display_name "pg503_seg9_rep2 | V" ;
+    :correct true ;
+    :html "a nice big windfall" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg512 a :Activite,
+        :Cours,
+        owl:NamedIndividual ;
+    rdfs:label "La prononciation des prépositions : mémento" ;
+    :__protege_display_name "10 | pg512 | La prononciation des prépositions : mémento" ;
+    :description """<div id="STY_texteCours" class="STY_texteCours" style="  "><p align=""><font color="#a60a69"><font color="#000000"><font color="#a60a69"></font></font></font> </p>
+        <table class="STY_tableau" width="500" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td valign="top"><p align=""><font color="#a60a69">Certaines prépositions formées d’une seule syllabe
+                    présentent des variantes de prononciation en fonction de leur environnement immédiat. C’est le cas
+                    de <i>at, for, from, of, on, to</i>. D’autres prépositions ne présentent pas de différences notables
+                    à la prononciation : <i>in, off, up, with.<br></i><br>Les variantes inaccentuées s’entendent peu. On
+                    n’entend parfois que la <b><a class="STY_lienComt" href="javascript:parent.SCO_ouvrirDoc('consonne','htm')">consonne</a></b>,
+                    ce qui peut être une source de difficulté de compréhension ; cette difficulté est plus grande encore
+                    si le mot qui suit la préposition comporte la même <b><a class="STY_lienComt" href="javascript:parent.SCO_ouvrirDoc('consonne','htm')">consonne</a></b>.
+                    Regardez et écoutez chaque énoncé en cliquant sur la flèche :<br></font></p></td>
+            </tr>
+        </table>
+        <p align="">
+        </p><table class="STY_tableau" width="500" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td valign="top"></td>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV28', 'e29_macao1_3c11.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                </td>
+                <td valign="top"><br>I'm looking <i>at</i> <i>T</i>om.<br></td>
+            </tr>
+            <tr>
+                <td width="100" valign="top"> </td>
                 <td valign="top"><br>
                     <script type="text/javascript">ajDocW(PF_clipAV('clipAV56', 'e29_macao1_3c21.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
                 </td>
@@ -4572,6 +5498,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg5132 | Troisième tâche" ;
+    :aSegment :pg5132_seg0,
+        :pg5132_seg1,
+        :pg5132_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4620,6 +5549,45 @@
     :titre "Troisième tâche" ;
     rdfs:subClassOf :act759984 .
 
+:pg5132_seg0 a :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les formes proposées : <br><br>If the school refuses to
+        take more children, the governors could be """ .
+
+:pg5132_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg5132_seg1_rep24,
+        :pg5132_seg1_rep429,
+        :pg5132_seg1_rep91 ;
+    :index 1 ;
+    :selection true .
+
+:pg5132_seg1_rep24 a :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep24 | V" ;
+    :correct true ;
+    :html "taken" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg5132_seg1_rep429 a :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep429 | F" ;
+    :correct false ;
+    :html "taking" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg5132_seg1_rep91 a :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep91 | F" ;
+    :correct false ;
+    :html "take" ;
+    :id "rep91" ;
+    :index -1 .
+
+:pg5132_seg2 a :Segment ;
+    :index 2 ;
+    :text """ to Court.
+    """ .
+
 :pg5136_rep150 a :Reponse ;
     :__protege_display_name "pg5136_rep150 | F" ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p><br> </p>
@@ -4699,6 +5667,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (3)" ;
     :__protege_display_name "04 | pg52 | Reconnaître le mot commun (3)" ;
+    :aSegment :pg52_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">TO est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -4839,6 +5808,33 @@
     :titre "Des sons aux formes (2)" ;
     rdfs:subClassOf :act56626 .
 
+:pg52_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV2', 'e29_macao1_2b51.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>   Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV48', 'e29_macao1_2b61.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>   Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg531_1 a :Reponse ;
     :__protege_display_name "pg531_1 | F" ;
     :correct false ;
@@ -4949,6 +5945,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (2)" ;
     :__protege_display_name "02 | pg558 | Reconnaître le mot commun (2)" ;
+    :aSegment :pg558_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">AT est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -4964,6 +5961,33 @@
     :titre "Reconnaître le mot commun (2)" ;
     rdfs:subClassOf :MosEtp335 .
 
+:pg558_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top"> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV85', 'e29_macao1_2b31.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV76', 'e29_macao1_2b41.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg561_1 a :Reponse ;
     :__protege_display_name "pg561_1 | F" ;
     :correct false ;
@@ -5335,6 +6359,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg6180 | Deuxième tâche" ;
+    :aSegment :pg6180_seg0,
+        :pg6180_seg1,
+        :pg6180_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -5371,11 +6398,42 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act56672 .
 
+:pg6180_seg0 a :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg6180_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg6180_seg1_rep269,
+        :pg6180_seg1_rep430 ;
+    :index 1 ;
+    :selection true .
+
+:pg6180_seg1_rep269 a :Reponse ;
+    :__protege_display_name "pg6180_seg1_rep269 | F" ;
+    :correct false ;
+    :html "These games " ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg6180_seg1_rep430 a :Reponse ;
+    :__protege_display_name "pg6180_seg1_rep430 | V" ;
+    :correct true ;
+    :html "This game is" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg6180_seg2 a :Segment ;
+    :index 2 ;
+    :text """ easy.
+    """ .
+
 :pg624 a :Activite,
         :ExerciceTAT,
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (1)" ;
     :__protege_display_name "00 | pg624 | Reconnaître le mot commun (1)" ;
+    :aSegment :pg624_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">OF est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -5396,6 +6454,21 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (1)" ;
     :__protege_display_name "01 | pg6241 | Ecoutez et complétez (1)" ;
+    :aSegment :pg6241_seg0,
+        :pg6241_seg1,
+        :pg6241_seg10,
+        :pg6241_seg11,
+        :pg6241_seg12,
+        :pg6241_seg13,
+        :pg6241_seg14,
+        :pg6241_seg2,
+        :pg6241_seg3,
+        :pg6241_seg4,
+        :pg6241_seg5,
+        :pg6241_seg6,
+        :pg6241_seg7,
+        :pg6241_seg8,
+        :pg6241_seg9 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien. Complétez maintenant la
         suite du texte.</p>
         <p align=""> </p></div>
@@ -5415,6 +6488,289 @@
     :titre "Ecoutez et complétez (1)" ;
     rdfs:subClassOf :MosEtp558 .
 
+:pg6241_seg0 a :Segment ;
+    :index 0 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV29', 'e29_macao1_2c2.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         When I """ .
+
+:pg6241_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg6241_seg1_rep0,
+        :pg6241_seg1_rep1,
+        :pg6241_seg1_rep2 ;
+    :index 1 ;
+    :selection true .
+
+:pg6241_seg10 a :Segment ;
+    :index 10 ;
+    :text """ and eat them.  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV87', 'e29_macao1_2c2_02261.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         It  """ .
+
+:pg6241_seg11 a :Champ,
+        :Segment ;
+    :aReponse :pg6241_seg11_rep0,
+        :pg6241_seg11_rep1,
+        :pg6241_seg11_rep2 ;
+    :index 11 ;
+    :selection true .
+
+:pg6241_seg11_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg11_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg11_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg12 a :Segment ;
+    :index 12 ;
+    :text """ very easy thing to <br><br>do  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV43', 'e29_macao1_2c2_0227.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          because  """ .
+
+:pg6241_seg13 a :Champ,
+        :Segment ;
+    :aReponse :pg6241_seg13_rep0,
+        :pg6241_seg13_rep1,
+        :pg6241_seg13_rep2 ;
+    :index 13 ;
+    :selection true .
+
+:pg6241_seg13_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep0 | V" ;
+    :correct true ;
+    :html "the branches" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg13_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep1 | F" ;
+    :correct false ;
+    :html "branches" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg13_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep2 | F" ;
+    :correct false ;
+    :html "some branches" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg14 a :Segment ;
+    :index 14 ;
+    :text """ were so low.
+    """ .
+
+:pg6241_seg1_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg1_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg1_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg2 a :Segment ;
+    :index 2 ;
+    :text """ little girl,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV55', 'e29_macao1_2c2_02233.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and my naughty little sister <br><br>""" .
+
+:pg6241_seg3 a :Champ,
+        :Segment ;
+    :aReponse :pg6241_seg3_rep0,
+        :pg6241_seg3_rep1,
+        :pg6241_seg3_rep2 ;
+    :index 3 ;
+    :selection true .
+
+:pg6241_seg3_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg3_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg3_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg4 a :Segment ;
+    :index 4 ;
+    :text """ little girl,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV79', 'e29_macao1_2c2_02241.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         we used to  have """ .
+
+:pg6241_seg5 a :Champ,
+        :Segment ;
+    :aReponse :pg6241_seg5_rep0,
+        :pg6241_seg5_rep1,
+        :pg6241_seg5_rep2,
+        :pg6241_seg5_rep3 ;
+    :index 5 ;
+    :selection true .
+
+:pg6241_seg5_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep0 | V" ;
+    :correct true ;
+    :html "an apple" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg5_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep1 | F" ;
+    :correct false ;
+    :html "our apple" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg5_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep2 | F" ;
+    :correct false ;
+    :html "the apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg5_rep3 a :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep3 | F" ;
+    :correct false ;
+    :html "apple" ;
+    :id "rep3" ;
+    :index 3 .
+
+:pg6241_seg6 a :Segment ;
+    :index 6 ;
+    :text " tree " .
+
+:pg6241_seg7 a :Champ,
+        :Segment ;
+    :aReponse :pg6241_seg7_rep0,
+        :pg6241_seg7_rep1,
+        :pg6241_seg7_rep2 ;
+    :index 7 ;
+    :selection true .
+
+:pg6241_seg7_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep0 | F" ;
+    :correct false ;
+    :html "in a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg7_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep1 | F" ;
+    :correct false ;
+    :html "in the" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg7_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep2 | V" ;
+    :correct true ;
+    :html "in our" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg8 a :Segment ;
+    :index 8 ;
+    :text """<br><br> garden,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV77', 'e29_macao1_2c2_02251.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and sometimes my naughty little sister used to pick<br><br> """ .
+
+:pg6241_seg9 a :Champ,
+        :Segment ;
+    :aReponse :pg6241_seg9_rep0,
+        :pg6241_seg9_rep1,
+        :pg6241_seg9_rep2 ;
+    :index 9 ;
+    :selection true .
+
+:pg6241_seg9_rep0 a :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep0 | F" ;
+    :correct false ;
+    :html "the apples" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg9_rep1 a :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep1 | V" ;
+    :correct true ;
+    :html "some apples" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg9_rep2 a :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep2 | F" ;
+    :correct false ;
+    :html "apples" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg624_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV36', 'e29_macao1_2b11.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV95', 'e29_macao1_2b21.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg6329_rep150 a :Reponse ;
     :__protege_display_name "pg6329_rep150 | V" ;
     :correct true ;
@@ -5998,6 +7354,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (4)" ;
     :__protege_display_name "07 | pg6866 | Quatrième tâche (4)" ;
+    :aSegment :pg6866_seg0,
+        :pg6866_seg1,
+        :pg6866_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -6053,6 +7412,68 @@
     :titre "Quatrième tâche (4)" ;
     rdfs:subClassOf :act153876 .
 
+:pg6866_seg0 a :Segment ;
+    :index 0 ;
+    :text "<i><b><br></b></i>I<i><b></b></i>" .
+
+:pg6866_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg6866_seg1_rep117,
+        :pg6866_seg1_rep312,
+        :pg6866_seg1_rep356,
+        :pg6866_seg1_rep577,
+        :pg6866_seg1_rep891,
+        :pg6866_seg1_rep935 ;
+    :index 1 ;
+    :selection false .
+
+:pg6866_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep117 | V" ;
+    :correct true ;
+    :html "Would do" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg6866_seg1_rep312 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep312 | V" ;
+    :correct true ;
+    :html " 'd do" ;
+    :id "rep312" ;
+    :index -1 .
+
+:pg6866_seg1_rep356 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep356 | V" ;
+    :correct true ;
+    :html " Would do" ;
+    :id "rep356" ;
+    :index -1 .
+
+:pg6866_seg1_rep577 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep577 | V" ;
+    :correct true ;
+    :html "would do" ;
+    :id "rep577" ;
+    :index -1 .
+
+:pg6866_seg1_rep891 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep891 | V" ;
+    :correct true ;
+    :html " would do" ;
+    :id "rep891" ;
+    :index -1 .
+
+:pg6866_seg1_rep935 a :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep935 | V" ;
+    :correct true ;
+    :html "'d do" ;
+    :id "rep935" ;
+    :index -1 .
+
+:pg6866_seg2 a :Segment ;
+    :index 2 ;
+    :text """<i><b> </b></i>medical
+        studies if I could start again.<br>""" .
+
 :pg6917 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -6426,6 +7847,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg7429 | Deuxième tâche" ;
+    :aSegment :pg7429_seg0,
+        :pg7429_seg1,
+        :pg7429_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p>Bravo !<br>Vous avez en effet entendu : <br><br><i>John's been given a guitar for his birthday. He's been
@@ -6468,6 +7892,38 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act759984 .
 
+:pg7429_seg0 a :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les deux formes proposées : <br><br>John has
+        been """ .
+
+:pg7429_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg7429_seg1_rep24,
+        :pg7429_seg1_rep429 ;
+    :index 1 ;
+    :selection true .
+
+:pg7429_seg1_rep24 a :Reponse ;
+    :__protege_display_name "pg7429_seg1_rep24 | V" ;
+    :correct true ;
+    :html "given" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg7429_seg1_rep429 a :Reponse ;
+    :__protege_display_name "pg7429_seg1_rep429 | F" ;
+    :correct false ;
+    :html "giving" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg7429_seg2 a :Segment ;
+    :index 2 ;
+    :text """ a guitar for his birthday. He's been practising with Jim for more than a week and they've finally
+        learnt to play a tune.
+    """ .
+
 :pg7434_rep150 a :Reponse ;
     :__protege_display_name "pg7434_rep150 | F" ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p> </p>
@@ -6500,6 +7956,7 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg7576 | Troisième tâche" ;
+    :aSegment :pg7576_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux paires
         reconstituées que vous pouvez écouter. <br><br>1 It' s Paul's birthday. <br>B He is given a lot of presents.<br><br>Dans
         <i>He is given</i>, on a un présent à la voix passive (voix passive : BE + V au participe passé). Le sujet
@@ -6552,6 +8009,50 @@
     :titre "Troisième tâche" ;
     rdfs:subClassOf :act828642 .
 
+:pg7576_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV546', 'ecran431.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     It' s Paul's birthday.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV439', 'ecran432.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     The teacher has put on his Father Christmas suit. 
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>A</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV5393', 'ecran433.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV15', 'mot43_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     a lot of presents.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV7781', 'ecran434.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV59', 'mot43_4.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     a lot of presents. 
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux paires plausibles, associez les énoncés, en sélectionnant A ou B dans les
+            listes déroulantes.<br><br>It' s Paul's birthday. <br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>The teacher has put on his Father Christmas suit. <br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg758_1 a :Reponse ;
     :__protege_display_name "pg758_1 | F" ;
     :correct false ;
@@ -6691,6 +8192,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche" ;
     :__protege_display_name "03 | pg7682 | Quatrième tâche" ;
+    :aSegment :pg7682_seg0,
+        :pg7682_seg1,
+        :pg7682_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -6751,6 +8255,53 @@
     :titre "Quatrième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg7682_seg0 a :Segment ;
+    :index 0 ;
+    :text "I'm so thirsty, I  " .
+
+:pg7682_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg7682_seg1_rep101,
+        :pg7682_seg1_rep113,
+        :pg7682_seg1_rep117,
+        :pg7682_seg1_rep239 ;
+    :index 1 ;
+    :selection false .
+
+:pg7682_seg1_rep101 a :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep101 | V" ;
+    :correct true ;
+    :html "would drink" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg7682_seg1_rep113 a :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep113 | V" ;
+    :correct true ;
+    :html " would drink" ;
+    :id "rep113" ;
+    :index -1 .
+
+:pg7682_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'d drink" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg7682_seg1_rep239 a :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep239 | V" ;
+    :correct true ;
+    :html " 'd drink" ;
+    :id "rep239" ;
+    :index -1 .
+
+:pg7682_seg2 a :Segment ;
+    :index 2 ;
+    :text """ a
+        whole bottle of fresh water if I could.
+    """ .
+
 :pg7691_1 a :Reponse ;
     :__protege_display_name "pg7691_1 | V" ;
     :correct true ;
@@ -7043,6 +8594,7 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg8027 | Première tâche" ;
+    :aSegment :pg8027_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux dialogues
         reconstitués que vous pouvez réécouter.<br><br>1 Why does Lucy have so many pills to take? <br>B She has been
         seen by the doctor for her allergy.<br><br>Dans <i>She has been seen</i>, on a un <a class="STY_lienDansZoneComt" href="javascript:parent.SCO_ouvrirDoc('doc28886','htm')"><i>present
@@ -7105,6 +8657,51 @@
     :titre "Première tâche" ;
     rdfs:subClassOf :act828642 .
 
+:pg8027_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV6364', 'ecran411.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Why does Lucy have so many pills to take?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV1264', 'ecran412.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Why isn't Ella with you?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle"><b>A
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV364', 'ecran413.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                </b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV532', 'mot41_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     by the doctor for her allergy.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV0', 'ecran414.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                </b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV53', 'mot41_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                    by the doctor for her allergy.
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux dialogues plausibles, associez chaque question à une réponse en
+            sélectionnant A ou B dans les listes déroulantes.<br><br>Why does Lucy have so many pills to
+            take?<br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>Why isn't Ella with you?<br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg81 a :Activite,
         :ExerciceGD,
         owl:NamedIndividual ;
@@ -7232,6 +8829,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg8400 | Deuxième tâche" ;
+    :aSegment :pg8400_seg0,
+        :pg8400_seg1,
+        :pg8400_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -7292,6 +8892,36 @@
     :titre "Deuxième tâche" ;
     rdfs:subClassOf :act704962 .
 
+:pg8400_seg0 a :Segment ;
+    :index 0 ;
+    :text "You must phone Mr Williams if you have a problem. He's " .
+
+:pg8400_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg8400_seg1_rep117,
+        :pg8400_seg1_rep5 ;
+    :index 1 ;
+    :selection false .
+
+:pg8400_seg1_rep117 a :Reponse ;
+    :__protege_display_name "pg8400_seg1_rep117 | V" ;
+    :correct true ;
+    :html "the" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg8400_seg1_rep5 a :Reponse ;
+    :__protege_display_name "pg8400_seg1_rep5 | V" ;
+    :correct true ;
+    :html " the" ;
+    :id "rep5" ;
+    :index -1 .
+
+:pg8400_seg2 a :Segment ;
+    :index 2 ;
+    :text """ boss.
+    """ .
+
 :pg841 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -8082,6 +9712,7 @@
         owl:NamedIndividual ;
     rdfs:label "Voyelles lâches et voyelles tendues" ;
     :__protege_display_name "00 | pg888 | Voyelles lâches et voyelles tendues" ;
+    :aSegment :pg888_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align=""><br><br><font color="#a60a69">Contrairement
@@ -8099,6 +9730,12 @@
     :titre "Voyelles lâches et voyelles tendues" ;
     rdfs:subClassOf :MosEtp940 .
 
+:pg888_seg0 a :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV13', 'e29anj_s4lc_p114.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg890_1 a :Reponse ;
     :__protege_display_name "pg890_1 | F" ;
     :correct false ;
@@ -8216,6 +9853,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (2)" ;
     :__protege_display_name "04 | pg910 | Quatrième tâche (2)" ;
+    :aSegment :pg910_seg0,
+        :pg910_seg1,
+        :pg910_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -8255,6 +9895,36 @@
     :titre "Quatrième tâche (2)" ;
     rdfs:subClassOf :act759984 .
 
+:pg910_seg0 a :Segment ;
+    :index 0 ;
+    :text "Choisissez entre les deux formes proposées : <br><br>What " .
+
+:pg910_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg910_seg1_rep24,
+        :pg910_seg1_rep429 ;
+    :index 1 ;
+    :selection true .
+
+:pg910_seg1_rep24 a :Reponse ;
+    :__protege_display_name "pg910_seg1_rep24 | F" ;
+    :correct false ;
+    :html "if" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg910_seg1_rep429 a :Reponse ;
+    :__protege_display_name "pg910_seg1_rep429 | V" ;
+    :correct true ;
+    :html "have" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg910_seg2 a :Segment ;
+    :index 2 ;
+    :text """ the suspects proven, their innocence or their guilt?
+    """ .
+
 :pg9152_rep511 a :Reponse ;
     :__protege_display_name "pg9152_rep511 | F" ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p> </p>
@@ -8514,6 +10184,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (3)" ;
     :__protege_display_name "05 | pg9414 | Quatrième tâche (3)" ;
+    :aSegment :pg9414_seg0,
+        :pg9414_seg1,
+        :pg9414_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -8554,6 +10227,36 @@
     :titre "Quatrième tâche (3)" ;
     rdfs:subClassOf :act759984 .
 
+:pg9414_seg0 a :Segment ;
+    :index 0 ;
+    :text "Choisissez entre les deux formes proposées : <br><br>What " .
+
+:pg9414_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg9414_seg1_rep566,
+        :pg9414_seg1_rep762 ;
+    :index 1 ;
+    :selection true .
+
+:pg9414_seg1_rep566 a :Reponse ;
+    :__protege_display_name "pg9414_seg1_rep566 | F" ;
+    :correct false ;
+    :html "have" ;
+    :id "rep566" ;
+    :index -1 .
+
+:pg9414_seg1_rep762 a :Reponse ;
+    :__protege_display_name "pg9414_seg1_rep762 | F" ;
+    :correct false ;
+    :html "if" ;
+    :id "rep762" ;
+    :index -1 .
+
+:pg9414_seg2 a :Segment ;
+    :index 2 ;
+    :text """ the suspect is proven innocent? Do we have other possibilities?
+    """ .
+
 :pg9439 a :Activite,
         :Cours,
         owl:NamedIndividual ;
@@ -8602,6 +10305,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (4)" ;
     :__protege_display_name "06 | pg948 | Reconnaître le mot commun (4)" ;
+    :aSegment :pg948_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">IN est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -8617,11 +10321,41 @@
     :titre "Reconnaître le mot commun (4)" ;
     rdfs:subClassOf :MosEtp335 .
 
+:pg948_seg0 a :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV75', 'e29_macao1_2b71.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV18', 'e29_macao1_2b81.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg9615 a :Activite,
         :ExerciceTAT,
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche" ;
     :__protege_display_name "03 | pg9615 | Quatrième tâche" ;
+    :aSegment :pg9615_seg0,
+        :pg9615_seg1,
+        :pg9615_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -8669,6 +10403,44 @@
     :titre "Quatrième tâche" ;
     rdfs:subClassOf :act56672 .
 
+:pg9615_seg0 a :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg9615_seg1 a :Champ,
+        :Segment ;
+    :aReponse :pg9615_seg1_rep269,
+        :pg9615_seg1_rep430,
+        :pg9615_seg1_rep527 ;
+    :index 1 ;
+    :selection true .
+
+:pg9615_seg1_rep269 a :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep269 | V" ;
+    :correct true ;
+    :html "My mother's a" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg9615_seg1_rep430 a :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep430 | F" ;
+    :correct false ;
+    :html "My mothers are" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg9615_seg1_rep527 a :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep527 | F" ;
+    :correct false ;
+    :html "My mothers a " ;
+    :id "rep527" ;
+    :index -1 .
+
+:pg9615_seg2 a :Segment ;
+    :index 2 ;
+    :text """ a good cook.
+    """ .
+
 :pg965_1 a :Reponse ;
     :__protege_display_name "pg965_1 | V" ;
     :correct true ;
diff --git a/tetras_extraction/result/full/macao_full.ttl b/tetras_extraction/result/full/macao_full.ttl
index d212b8c..7d9923f 100644
--- a/tetras_extraction/result/full/macao_full.ttl
+++ b/tetras_extraction/result/full/macao_full.ttl
@@ -27,6 +27,10 @@
     rdfs:domain :Exercice ;
     rdfs:range :Reponse .
 
+:aSegment a owl:ObjectProperty ;
+    rdfs:domain :ExerciceTAT ;
+    rdfs:range :Segment .
+
 :cheminFichier a owl:DatatypeProperty ;
     rdfs:domain :MacaoRessource ;
     rdfs:range xsd:anyURI .
@@ -137,6 +141,47 @@
     :index 1 ;
     rdfs:subClassOf :pg1000 .
 
+:pg1023_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les deux formes proposées : <br><br>Now that the Prime
+        Minister has  """ .
+
+:pg1023_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg1023_seg1_rep24,
+        :pg1023_seg1_rep429 ;
+    :index 1 ;
+    :selection true .
+
+:pg1023_seg1_rep24 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg1023_seg1_rep24 | V" ;
+    :correct true ;
+    :html "shaken" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg1023_seg1_rep429 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg1023_seg1_rep429 | F" ;
+    :correct false ;
+    :html "shaking" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg1023_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ the President's hand, she is going back to her car.
+    """ .
+
 :pg108_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -597,6 +642,32 @@
     :index 3 ;
     rdfs:subClassOf :pg186 .
 
+:pg1888_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <p><i><b>
+            <table width="70%" bgcolor="#00c0c0" cellpadding="3" cellspacing="0" valign="top" border="0">
+                <tr>
+                    <td style="BACKGROUND: #b5f0c7; WIDTH: 20%" width="40%" valign="middle"><img align="center" border="0" src="../media/ecouteur_macao.png" id="MosImg32"></td>
+                    <td style="BACKGROUND: #b5f0c7" valign="middle">
+                        <script type="text/javascript">ajDocW(PF_clipAV('clipAV2861', 'ecran191.swf', '30', '25', 'false', 'Flash', '', '', 'quality:high;wmode:transparent', '', ''));</script>
+                    </td>
+                </tr>
+            </table>
+        </b></i></p>
+        <p><i><b></b></i><i><b><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1"> </b></i>Zurich?<br><b><i> </i></b>
+        </p><table width="70%" bgcolor="#00c0c0" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="BACKGROUND: #b5f0c7; WIDTH: 20%" width="40%" valign="middle"><img align="center" border="0" src="../media/ecouteur_macao.png" id="MosImg320"></td>
+                <td style="BACKGROUND: #b5f0c7" valign="middle">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV2769', 'ecran192.swf', '30', '25', 'false', 'Flash', '', '', 'quality:high;wmode:transparent', '', ''));</script>
+                </td>
+            </tr>
+        </table>
+        <br><i><b><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou2"> </b></i>Zorba?""" .
+
 :pg1894_rep36 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -718,6 +789,32 @@
     :index 1 ;
     rdfs:subClassOf :pg1894 .
 
+:pg1919_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He drank half the bottle of water.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He drank half a bottle of water.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
 :pg191_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -789,6 +886,197 @@
     :index 1 ;
     rdfs:subClassOf :pg205 .
 
+:pg20_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV45', 'e29_macao1_2c3_0228.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+        So, """ .
+
+:pg20_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg20_seg1_rep0,
+        :pg20_seg1_rep1,
+        :pg20_seg1_rep2 ;
+    :index 1 ;
+    :selection true .
+
+:pg20_seg1_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg1_rep0 | F" ;
+    :correct false ;
+    :html "mother" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg1_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg1_rep1 | V" ;
+    :correct true ;
+    :html "my mother" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg1_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg1_rep2 | F" ;
+    :correct false ;
+    :html "our mother" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ told us  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV11', 'e29_macao1_2c3_0229.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         we were not to pick """ .
+
+:pg20_seg3 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg20_seg3_rep0,
+        :pg20_seg3_rep1,
+        :pg20_seg3_rep2 ;
+    :index 3 ;
+    :selection true .
+
+:pg20_seg3_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg3_rep0 | V" ;
+    :correct true ;
+    :html "the apples" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg3_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg3_rep1 | F" ;
+    :correct false ;
+    :html "apples" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg3_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg3_rep2 | F" ;
+    :correct false ;
+    :html "an apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg4 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 4 ;
+    :text """.  <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV89', 'e29_macao1_2c3_0230.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         My mother said, 'It’s naughty to pick the apples   
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV82', 'e29_macao1_2c3_023311.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         when they are growing upon<br><br>""" .
+
+:pg20_seg5 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg20_seg5_rep0,
+        :pg20_seg5_rep1,
+        :pg20_seg5_rep2 ;
+    :index 5 ;
+    :selection true .
+
+:pg20_seg5_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg5_rep0 | F" ;
+    :correct false ;
+    :html "a tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg5_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg5_rep1 | V" ;
+    :correct true ;
+    :html "the tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg5_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg5_rep2 | F" ;
+    :correct false ;
+    :html "tree" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg6 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 6 ;
+    :text """,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV27', 'e29_macao1_2c3_0232.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         because we want them to go on growing until they are ripe and rosy,   <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV46', 'e29_macao1_2c3_0233.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and then we shall pick them and put them quite away """ .
+
+:pg20_seg7 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg20_seg7_rep0,
+        :pg20_seg7_rep1,
+        :pg20_seg7_rep2 ;
+    :index 7 ;
+    :selection true .
+
+:pg20_seg7_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg7_rep0 | F" ;
+    :correct false ;
+    :html "for" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg7_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg7_rep1 | F" ;
+    :correct false ;
+    :html "for a" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg7_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg7_rep2 | V" ;
+    :correct true ;
+    :html "for the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg8 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 8 ;
+    :text """ winter-time'.
+    """ .
+
 :pg217_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -960,6 +1248,146 @@
     :index 8 ;
     rdfs:subClassOf :pg228 .
 
+:pg2429_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<br>You don't find many independent companies in the cinema
+        industries.<br>Most of the time, """ .
+
+:pg2429_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg2429_seg1_rep247,
+        :pg2429_seg1_rep471 ;
+    :index 1 ;
+    :selection true .
+
+:pg2429_seg1_rep247 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2429_seg1_rep247 | F" ;
+    :correct false ;
+    :html "there are" ;
+    :id "rep247" ;
+    :index -1 .
+
+:pg2429_seg1_rep471 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2429_seg1_rep471 | V" ;
+    :correct true ;
+    :html "they are" ;
+    :id "rep471" ;
+    :index -1 .
+
+:pg2429_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ confronted by financial difficulties.
+    """ .
+
+:pg2493_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Here's a road.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Here's the road.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
+:pg2759_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg2759_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg2759_seg1_rep269,
+        :pg2759_seg1_rep430 ;
+    :index 1 ;
+    :selection true .
+
+:pg2759_seg1_rep269 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2759_seg1_rep269 | F" ;
+    :correct false ;
+    :html "He has decided" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg2759_seg1_rep430 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2759_seg1_rep430 | V" ;
+    :correct true ;
+    :html "He is decided" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg2759_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text " in his ways.<br><br><br>" .
+
+:pg2759_seg3 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg2759_seg3_rep231,
+        :pg2759_seg3_rep655 ;
+    :index 3 ;
+    :selection true .
+
+:pg2759_seg3_rep231 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2759_seg3_rep231 | V" ;
+    :correct true ;
+    :html "He has decided" ;
+    :id "rep231" ;
+    :index -1 .
+
+:pg2759_seg3_rep655 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2759_seg3_rep655 | F" ;
+    :correct false ;
+    :html "He is decided" ;
+    :id "rep655" ;
+    :index -1 .
+
+:pg2759_seg4 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 4 ;
+    :text """ not to come tomorrow.
+    """ .
+
 :pg293_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1051,6 +1479,115 @@
     :index 8 ;
     rdfs:subClassOf :pg293 .
 
+:pg299_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29anj_s4lc_p115.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
+:pg3092_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "What " .
+
+:pg3092_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg3092_seg1_rep101,
+        :pg3092_seg1_rep117,
+        :pg3092_seg1_rep135,
+        :pg3092_seg1_rep444,
+        :pg3092_seg1_rep469,
+        :pg3092_seg1_rep483,
+        :pg3092_seg1_rep831,
+        :pg3092_seg1_rep843 ;
+    :index 1 ;
+    :selection false .
+
+:pg3092_seg1_rep101 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep101 | V" ;
+    :correct true ;
+    :html "is Sarah" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3092_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'s Sarah" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3092_seg1_rep135 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep135 | V" ;
+    :correct true ;
+    :html " is Sarah" ;
+    :id "rep135" ;
+    :index -1 .
+
+:pg3092_seg1_rep444 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep444 | V" ;
+    :correct true ;
+    :html " 's Sarah" ;
+    :id "rep444" ;
+    :index -1 .
+
+:pg3092_seg1_rep469 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep469 | V" ;
+    :correct true ;
+    :html " is Sara" ;
+    :id "rep469" ;
+    :index -1 .
+
+:pg3092_seg1_rep483 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep483 | V" ;
+    :correct true ;
+    :html " 's Sara" ;
+    :id "rep483" ;
+    :index -1 .
+
+:pg3092_seg1_rep831 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep831 | V" ;
+    :correct true ;
+    :html "'s Sara" ;
+    :id "rep831" ;
+    :index -1 .
+
+:pg3092_seg1_rep843 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep843 | V" ;
+    :correct true ;
+    :html "is Sara" ;
+    :id "rep843" ;
+    :index -1 .
+
+:pg3092_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ cooking?
+        It smells so nice!
+    """ .
+
 :pg313_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1209,19 +1746,133 @@
     :index 4 ;
     rdfs:subClassOf :pg3531 .
 
-:pg3746_rep150 a :MacaoContenu,
+:pg3579_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He needs a pen.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He needs the pen.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
+:pg3600_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "" .
+
+:pg3600_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg3600_seg1_rep101,
+        :pg3600_seg1_rep117 ;
+    :index 1 ;
+    :selection false .
+
+:pg3600_seg1_rep101 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
-    :__protege_display_name "pg3746_rep150 | F" ;
-    :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p> </p>
-        <p> </p>
-        <p> </p>
-        <p> </p>
-        <p>Non, il est difficile d'établir une différence. Toutefois on peut reconstruire la structure des
-            énoncés.<br><br><i><b>Whenever</b></i> + présent en <b>DO</b> expriment qu'on réfère à un ensemble de
-            situations vues au présent, à une situation répétée, d'où le présent simple (présent en <b>DO</b>) dans la
-            proposition principale : <i><b>I tape the conversation</b></i>.<br><br><i><b>If</b></i> pose une condition,
-            une hypothèse et <i><b>had</b></i> indique une rupture avec le réel (un irréel). Parallèlement, la présence
+    :__protege_display_name "pg3600_seg1_rep101 | V" ;
+    :correct true ;
+    :html "There are" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3600_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3600_seg1_rep117 | V" ;
+    :correct true ;
+    :html "there are" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3600_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ two people
+        waiting outside.
+    """ .
+
+:pg3628_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV4748', 'ecran421.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Tell us what you have found about the suspect.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV1221', 'ecran422.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Where is the suspect?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>A</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV3044', 'ecran423.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV87', 'mot42_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     several times with a rat.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV7913', 'ecran424.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                      
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV46', 'mot42_4.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     by the judge.
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux dialogues plausibles, associez chaque question à une réponse en
+            sélectionnant A ou B dans les listes déroulantes.<br><br>Tell us what you have found about the
+            suspect.<br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>Where is the suspect?<br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
+:pg3746_rep150 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3746_rep150 | F" ;
+    :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p> </p>
+        <p> </p>
+        <p> </p>
+        <p> </p>
+        <p>Non, il est difficile d'établir une différence. Toutefois on peut reconstruire la structure des
+            énoncés.<br><br><i><b>Whenever</b></i> + présent en <b>DO</b> expriment qu'on réfère à un ensemble de
+            situations vues au présent, à une situation répétée, d'où le présent simple (présent en <b>DO</b>) dans la
+            proposition principale : <i><b>I tape the conversation</b></i>.<br><br><i><b>If</b></i> pose une condition,
+            une hypothèse et <i><b>had</b></i> indique une rupture avec le réel (un irréel). Parallèlement, la présence
             du modal <i><b>would</b></i> (ou : <i><b>'d</b></i>) situe la proposition principale <i><b>I'd tape the
                 conversation</b></i> dans l'hypothétique.</p></div>
 """ ;
@@ -1268,6 +1919,67 @@
     :index 1 ;
     rdfs:subClassOf :pg381 .
 
+:pg3862_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "Now he " .
+
+:pg3862_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg3862_seg1_rep101,
+        :pg3862_seg1_rep117,
+        :pg3862_seg1_rep227,
+        :pg3862_seg1_rep309 ;
+    :index 1 ;
+    :selection false .
+
+:pg3862_seg1_rep101 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep101 | V" ;
+    :correct true ;
+    :html "has said" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3862_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'s said" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3862_seg1_rep227 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep227 | V" ;
+    :correct true ;
+    :html " 's said" ;
+    :id "rep227" ;
+    :index -1 .
+
+:pg3862_seg1_rep309 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep309 | V" ;
+    :correct true ;
+    :html " has said" ;
+    :id "rep309" ;
+    :index -1 .
+
+:pg3862_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ he
+        doesn't want to come, it's too late!
+    """ .
+
 :pg386_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1324,6 +2036,14 @@
     :index 0 ;
     rdfs:subClassOf :pg3870 .
 
+:pg397_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29anj_s4lc_p115.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg400_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1483,6 +2203,56 @@
     :index 4 ;
     rdfs:subClassOf :pg4031 .
 
+:pg4141_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg4141_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg4141_seg1_rep269,
+        :pg4141_seg1_rep430,
+        :pg4141_seg1_rep527 ;
+    :index 1 ;
+    :selection true .
+
+:pg4141_seg1_rep269 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep269 | F" ;
+    :correct false ;
+    :html "The player's a" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg4141_seg1_rep430 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep430 | F" ;
+    :correct false ;
+    :html "The players a" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg4141_seg1_rep527 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep527 | V" ;
+    :correct true ;
+    :html "The players are" ;
+    :id "rep527" ;
+    :index -1 .
+
+:pg4141_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ talking with the referee.
+    """ .
+
 :pg4192_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1786,6 +2556,104 @@
     :index 4 ;
     rdfs:subClassOf :pg4396 .
 
+:pg444_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV84', 'e29_macao1_2b91.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV41', 'e29_macao1_2b101.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
+:pg4487_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """Peter and Mary have moved to Scotland. Their furniture has been carried
+        to Glasgow by road, and now they """ .
+
+:pg4487_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg4487_seg1_rep117,
+        :pg4487_seg1_rep577,
+        :pg4487_seg1_rep749,
+        :pg4487_seg1_rep982 ;
+    :index 1 ;
+    :selection false .
+
+:pg4487_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'ve finished" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg4487_seg1_rep577 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep577 | V" ;
+    :correct true ;
+    :html "have finished" ;
+    :id "rep577" ;
+    :index -1 .
+
+:pg4487_seg1_rep749 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep749 | V" ;
+    :correct true ;
+    :html " have finished" ;
+    :id "rep749" ;
+    :index -1 .
+
+:pg4487_seg1_rep982 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep982 | V" ;
+    :correct true ;
+    :html " 've finished" ;
+    :id "rep982" ;
+    :index -1 .
+
+:pg4487_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """
+        putting everything in its place.<br>""" .
+
+:pg44_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV13', 'e29anj_s4lc_p114.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg4797_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1838,6 +2706,284 @@
     :index 1 ;
     rdfs:subClassOf :pg491 .
 
+:pg503_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV66', 'e29_macao1_2c4_0234.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         'If you """ .
+
+:pg503_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg1_rep0,
+        :pg503_seg1_rep1,
+        :pg503_seg1_rep2 ;
+    :index 1 ;
+    :selection true .
+
+:pg503_seg10 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 10 ;
+    :text """ on the grass <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV36', 'e29_macao1_2c4_0241.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and she took it in for my mother to wash.<br><br>""" .
+
+:pg503_seg1_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg1_rep0 | F" ;
+    :correct false ;
+    :html "want the apple" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg1_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg1_rep1 | V" ;
+    :correct true ;
+    :html "want an apple" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg1_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg1_rep2 | F" ;
+    :correct false ;
+    :html "want our apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg503_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """"  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV69', 'e29_macao1_2c4_0235.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         , my mother said,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV24', 'e29_macao1_2c4_0236.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         'you must pick up a windfall <br><br>and bring it to me, and I shall wash it for you.' 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV58', 'e29_macao1_2c4_0237.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         As you know, 'windfalls' <br><br>are apples that fall off """ .
+
+:pg503_seg3 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg3_rep0,
+        :pg503_seg3_rep1,
+        :pg503_seg3_rep2 ;
+    :index 3 ;
+    :selection true .
+
+:pg503_seg3_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg3_rep0 | V" ;
+    :correct true ;
+    :html "the tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg3_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg3_rep1 | F" ;
+    :correct false ;
+    :html "a tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg3_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg3_rep2 | F" ;
+    :correct false ;
+    :html "tree" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg503_seg4 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 4 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV17', 'e29_macao1_2c4_0238.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          on to """ .
+
+:pg503_seg5 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg5_rep0,
+        :pg503_seg5_rep1,
+        :pg503_seg5_rep2 ;
+    :index 5 ;
+    :selection true .
+
+:pg503_seg5_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg5_rep0 | F" ;
+    :correct false ;
+    :html "a grass " ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg5_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg5_rep1 | F" ;
+    :correct false ;
+    :html "grass " ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg5_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg5_rep2 | V" ;
+    :correct true ;
+    :html "the grass " ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg503_seg6 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 6 ;
+    :text """,   
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29_macao1_2c4_0239.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         so, one day, my little <br><br>sister looked """ .
+
+:pg503_seg7 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg7_rep0,
+        :pg503_seg7_rep1 ;
+    :index 7 ;
+    :selection true .
+
+:pg503_seg7_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg7_rep0 | F" ;
+    :correct false ;
+    :html "under a tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg7_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg7_rep1 | V" ;
+    :correct true ;
+    :html "under the tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg8 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 8 ;
+    :text """  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV93', 'e29_macao1_2c4_0240.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          and found  """ .
+
+:pg503_seg9 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg9_rep0,
+        :pg503_seg9_rep1,
+        :pg503_seg9_rep2 ;
+    :index 9 ;
+    :selection true .
+
+:pg503_seg9_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg9_rep0 | F" ;
+    :correct false ;
+    :html "nice big windfall" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg9_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg9_rep1 | F" ;
+    :correct false ;
+    :html "the nice big windfall" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg9_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg9_rep2 | V" ;
+    :correct true ;
+    :html "a nice big windfall" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg5132_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les formes proposées : <br><br>If the school refuses to
+        take more children, the governors could be """ .
+
+:pg5132_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg5132_seg1_rep24,
+        :pg5132_seg1_rep429,
+        :pg5132_seg1_rep91 ;
+    :index 1 ;
+    :selection true .
+
+:pg5132_seg1_rep24 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep24 | V" ;
+    :correct true ;
+    :html "taken" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg5132_seg1_rep429 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep429 | F" ;
+    :correct false ;
+    :html "taking" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg5132_seg1_rep91 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep91 | F" ;
+    :correct false ;
+    :html "take" ;
+    :id "rep91" ;
+    :index -1 .
+
+:pg5132_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ to Court.
+    """ .
+
 :pg5136_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1872,6 +3018,35 @@
     :index 0 ;
     rdfs:subClassOf :pg5136 .
 
+:pg52_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV2', 'e29_macao1_2b51.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>   Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV48', 'e29_macao1_2b61.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>   Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg531_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1895,6 +3070,35 @@
     :index 1 ;
     rdfs:subClassOf :pg531 .
 
+:pg558_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top"> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV85', 'e29_macao1_2b31.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV76', 'e29_macao1_2b41.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg561_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -2093,30 +3297,429 @@
         :Reponse ;
     :__protege_display_name "pg6121_7 | F" ;
     :correct false ;
-    :html "<div class=\"STY_reponseQC\" id=\"lienRep7\" onmouseover=\"exo.changerBouton(7,true);\" onmouseout=\"exo.changerBouton(7,false);\" onclick=\"exo.action(7)\"><span style=\"FONT-SIZE: 250%\">• <img align=\"absMiddle\" src=\"../media/photographer.gif\" id=\"MosImg25\" border=\"0\"></span></div>" ;
-    :id "7" ;
-    :index 6 ;
-    rdfs:subClassOf :pg6121 .
+    :html "<div class=\"STY_reponseQC\" id=\"lienRep7\" onmouseover=\"exo.changerBouton(7,true);\" onmouseout=\"exo.changerBouton(7,false);\" onclick=\"exo.action(7)\"><span style=\"FONT-SIZE: 250%\">• <img align=\"absMiddle\" src=\"../media/photographer.gif\" id=\"MosImg25\" border=\"0\"></span></div>" ;
+    :id "7" ;
+    :index 6 ;
+    rdfs:subClassOf :pg6121 .
+
+:pg6121_8 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6121_8 | V" ;
+    :correct true ;
+    :html "<div class=\"STY_reponseQC\" id=\"lienRep8\" onmouseover=\"exo.changerBouton(8,true);\" onmouseout=\"exo.changerBouton(8,false);\" onclick=\"exo.action(8)\"><span style=\"FONT-SIZE: 250%\">• <img src=\"../media/photographer2.gif\" id=\"MosImg12\" border=\"0\" align=\"center\"></span></div>" ;
+    :id "8" ;
+    :index 7 ;
+    rdfs:subClassOf :pg6121 .
+
+:pg6121_9 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6121_9 | F" ;
+    :correct false ;
+    :html "<div class=\"STY_reponseQC\" id=\"lienRep9\" onmouseover=\"exo.changerBouton(9,true);\" onmouseout=\"exo.changerBouton(9,false);\" onclick=\"exo.action(9)\"><span style=\"FONT-SIZE: 250%\">• <img align=\"absMiddle\" src=\"../media/photographer4.gif\" id=\"MosImg4\" border=\"0\"></span></div>" ;
+    :id "9" ;
+    :index 8 ;
+    rdfs:subClassOf :pg6121 .
+
+:pg6180_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg6180_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6180_seg1_rep269,
+        :pg6180_seg1_rep430 ;
+    :index 1 ;
+    :selection true .
+
+:pg6180_seg1_rep269 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6180_seg1_rep269 | F" ;
+    :correct false ;
+    :html "These games " ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg6180_seg1_rep430 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6180_seg1_rep430 | V" ;
+    :correct true ;
+    :html "This game is" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg6180_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ easy.
+    """ .
+
+:pg6241_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV29', 'e29_macao1_2c2.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         When I """ .
+
+:pg6241_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg1_rep0,
+        :pg6241_seg1_rep1,
+        :pg6241_seg1_rep2 ;
+    :index 1 ;
+    :selection true .
+
+:pg6241_seg10 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 10 ;
+    :text """ and eat them.  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV87', 'e29_macao1_2c2_02261.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         It  """ .
+
+:pg6241_seg11 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg11_rep0,
+        :pg6241_seg11_rep1,
+        :pg6241_seg11_rep2 ;
+    :index 11 ;
+    :selection true .
+
+:pg6241_seg11_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg11_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg11_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg12 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 12 ;
+    :text """ very easy thing to <br><br>do  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV43', 'e29_macao1_2c2_0227.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          because  """ .
+
+:pg6241_seg13 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg13_rep0,
+        :pg6241_seg13_rep1,
+        :pg6241_seg13_rep2 ;
+    :index 13 ;
+    :selection true .
+
+:pg6241_seg13_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep0 | V" ;
+    :correct true ;
+    :html "the branches" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg13_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep1 | F" ;
+    :correct false ;
+    :html "branches" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg13_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep2 | F" ;
+    :correct false ;
+    :html "some branches" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg14 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 14 ;
+    :text """ were so low.
+    """ .
+
+:pg6241_seg1_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg1_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg1_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ little girl,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV55', 'e29_macao1_2c2_02233.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and my naughty little sister <br><br>""" .
+
+:pg6241_seg3 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg3_rep0,
+        :pg6241_seg3_rep1,
+        :pg6241_seg3_rep2 ;
+    :index 3 ;
+    :selection true .
+
+:pg6241_seg3_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg3_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg3_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg4 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 4 ;
+    :text """ little girl,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV79', 'e29_macao1_2c2_02241.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         we used to  have """ .
+
+:pg6241_seg5 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg5_rep0,
+        :pg6241_seg5_rep1,
+        :pg6241_seg5_rep2,
+        :pg6241_seg5_rep3 ;
+    :index 5 ;
+    :selection true .
+
+:pg6241_seg5_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep0 | V" ;
+    :correct true ;
+    :html "an apple" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg5_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep1 | F" ;
+    :correct false ;
+    :html "our apple" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg5_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep2 | F" ;
+    :correct false ;
+    :html "the apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg5_rep3 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep3 | F" ;
+    :correct false ;
+    :html "apple" ;
+    :id "rep3" ;
+    :index 3 .
+
+:pg6241_seg6 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 6 ;
+    :text " tree " .
+
+:pg6241_seg7 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg7_rep0,
+        :pg6241_seg7_rep1,
+        :pg6241_seg7_rep2 ;
+    :index 7 ;
+    :selection true .
+
+:pg6241_seg7_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep0 | F" ;
+    :correct false ;
+    :html "in a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg7_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep1 | F" ;
+    :correct false ;
+    :html "in the" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg7_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep2 | V" ;
+    :correct true ;
+    :html "in our" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg8 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 8 ;
+    :text """<br><br> garden,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV77', 'e29_macao1_2c2_02251.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and sometimes my naughty little sister used to pick<br><br> """ .
+
+:pg6241_seg9 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg9_rep0,
+        :pg6241_seg9_rep1,
+        :pg6241_seg9_rep2 ;
+    :index 9 ;
+    :selection true .
+
+:pg6241_seg9_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep0 | F" ;
+    :correct false ;
+    :html "the apples" ;
+    :id "rep0" ;
+    :index 0 .
 
-:pg6121_8 a :MacaoContenu,
+:pg6241_seg9_rep1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
-    :__protege_display_name "pg6121_8 | V" ;
+    :__protege_display_name "pg6241_seg9_rep1 | V" ;
     :correct true ;
-    :html "<div class=\"STY_reponseQC\" id=\"lienRep8\" onmouseover=\"exo.changerBouton(8,true);\" onmouseout=\"exo.changerBouton(8,false);\" onclick=\"exo.action(8)\"><span style=\"FONT-SIZE: 250%\">• <img src=\"../media/photographer2.gif\" id=\"MosImg12\" border=\"0\" align=\"center\"></span></div>" ;
-    :id "8" ;
-    :index 7 ;
-    rdfs:subClassOf :pg6121 .
+    :html "some apples" ;
+    :id "rep1" ;
+    :index 1 .
 
-:pg6121_9 a :MacaoContenu,
+:pg6241_seg9_rep2 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
-    :__protege_display_name "pg6121_9 | F" ;
+    :__protege_display_name "pg6241_seg9_rep2 | F" ;
     :correct false ;
-    :html "<div class=\"STY_reponseQC\" id=\"lienRep9\" onmouseover=\"exo.changerBouton(9,true);\" onmouseout=\"exo.changerBouton(9,false);\" onclick=\"exo.action(9)\"><span style=\"FONT-SIZE: 250%\">• <img align=\"absMiddle\" src=\"../media/photographer4.gif\" id=\"MosImg4\" border=\"0\"></span></div>" ;
-    :id "9" ;
-    :index 8 ;
-    rdfs:subClassOf :pg6121 .
+    :html "apples" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg624_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV36', 'e29_macao1_2b11.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV95', 'e29_macao1_2b21.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
 
 :pg6329_rep150 a :MacaoContenu,
         :MacaoObject,
@@ -2457,6 +4060,86 @@
     :index 8 ;
     rdfs:subClassOf :pg6811 .
 
+:pg6866_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<i><b><br></b></i>I<i><b></b></i>" .
+
+:pg6866_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6866_seg1_rep117,
+        :pg6866_seg1_rep312,
+        :pg6866_seg1_rep356,
+        :pg6866_seg1_rep577,
+        :pg6866_seg1_rep891,
+        :pg6866_seg1_rep935 ;
+    :index 1 ;
+    :selection false .
+
+:pg6866_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep117 | V" ;
+    :correct true ;
+    :html "Would do" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg6866_seg1_rep312 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep312 | V" ;
+    :correct true ;
+    :html " 'd do" ;
+    :id "rep312" ;
+    :index -1 .
+
+:pg6866_seg1_rep356 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep356 | V" ;
+    :correct true ;
+    :html " Would do" ;
+    :id "rep356" ;
+    :index -1 .
+
+:pg6866_seg1_rep577 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep577 | V" ;
+    :correct true ;
+    :html "would do" ;
+    :id "rep577" ;
+    :index -1 .
+
+:pg6866_seg1_rep891 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep891 | V" ;
+    :correct true ;
+    :html " would do" ;
+    :id "rep891" ;
+    :index -1 .
+
+:pg6866_seg1_rep935 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep935 | V" ;
+    :correct true ;
+    :html "'d do" ;
+    :id "rep935" ;
+    :index -1 .
+
+:pg6866_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """<i><b> </b></i>medical
+        studies if I could start again.<br>""" .
+
 :pg699_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -2750,6 +4433,48 @@
     :index 8 ;
     rdfs:subClassOf :pg740 .
 
+:pg7429_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les deux formes proposées : <br><br>John has
+        been """ .
+
+:pg7429_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg7429_seg1_rep24,
+        :pg7429_seg1_rep429 ;
+    :index 1 ;
+    :selection true .
+
+:pg7429_seg1_rep24 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7429_seg1_rep24 | V" ;
+    :correct true ;
+    :html "given" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg7429_seg1_rep429 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7429_seg1_rep429 | F" ;
+    :correct false ;
+    :html "giving" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg7429_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ a guitar for his birthday. He's been practising with Jim for more than a week and they've finally
+        learnt to play a tune.
+    """ .
+
 :pg7434_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -2781,6 +4506,52 @@
     :index 0 ;
     rdfs:subClassOf :pg7434 .
 
+:pg7576_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV546', 'ecran431.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     It' s Paul's birthday.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV439', 'ecran432.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     The teacher has put on his Father Christmas suit. 
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>A</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV5393', 'ecran433.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV15', 'mot43_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     a lot of presents.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV7781', 'ecran434.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV59', 'mot43_4.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     a lot of presents. 
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux paires plausibles, associez les énoncés, en sélectionnant A ou B dans les
+            listes déroulantes.<br><br>It' s Paul's birthday. <br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>The teacher has put on his Father Christmas suit. <br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg758_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -2837,6 +4608,67 @@
     :index 0 ;
     rdfs:subClassOf :pg7664 .
 
+:pg7682_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "I'm so thirsty, I  " .
+
+:pg7682_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg7682_seg1_rep101,
+        :pg7682_seg1_rep113,
+        :pg7682_seg1_rep117,
+        :pg7682_seg1_rep239 ;
+    :index 1 ;
+    :selection false .
+
+:pg7682_seg1_rep101 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep101 | V" ;
+    :correct true ;
+    :html "would drink" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg7682_seg1_rep113 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep113 | V" ;
+    :correct true ;
+    :html " would drink" ;
+    :id "rep113" ;
+    :index -1 .
+
+:pg7682_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'d drink" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg7682_seg1_rep239 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep239 | V" ;
+    :correct true ;
+    :html " 'd drink" ;
+    :id "rep239" ;
+    :index -1 .
+
+:pg7682_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ a
+        whole bottle of fresh water if I could.
+    """ .
+
 :pg7691_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -3057,6 +4889,53 @@
     :index 4 ;
     rdfs:subClassOf :pg7973 .
 
+:pg8027_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV6364', 'ecran411.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Why does Lucy have so many pills to take?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV1264', 'ecran412.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Why isn't Ella with you?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle"><b>A
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV364', 'ecran413.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                </b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV532', 'mot41_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     by the doctor for her allergy.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV0', 'ecran414.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                </b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV53', 'mot41_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                    by the doctor for her allergy.
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux dialogues plausibles, associez chaque question à une réponse en
+            sélectionnant A ou B dans les listes déroulantes.<br><br>Why does Lucy have so many pills to
+            take?<br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>Why isn't Ella with you?<br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg813_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -3124,6 +5003,46 @@
     :index 1 ;
     rdfs:subClassOf :pg825 .
 
+:pg8400_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "You must phone Mr Williams if you have a problem. He's " .
+
+:pg8400_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg8400_seg1_rep117,
+        :pg8400_seg1_rep5 ;
+    :index 1 ;
+    :selection false .
+
+:pg8400_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg8400_seg1_rep117 | V" ;
+    :correct true ;
+    :html "the" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg8400_seg1_rep5 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg8400_seg1_rep5 | V" ;
+    :correct true ;
+    :html " the" ;
+    :id "rep5" ;
+    :index -1 .
+
+:pg8400_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ boss.
+    """ .
+
 :pg8412_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -3514,6 +5433,14 @@
     :index 1 ;
     rdfs:subClassOf :pg8876 .
 
+:pg888_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV13', 'e29anj_s4lc_p114.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg890_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -3576,6 +5503,46 @@
     :index 1 ;
     rdfs:subClassOf :pg894 .
 
+:pg910_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "Choisissez entre les deux formes proposées : <br><br>What " .
+
+:pg910_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg910_seg1_rep24,
+        :pg910_seg1_rep429 ;
+    :index 1 ;
+    :selection true .
+
+:pg910_seg1_rep24 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg910_seg1_rep24 | F" ;
+    :correct false ;
+    :html "if" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg910_seg1_rep429 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg910_seg1_rep429 | V" ;
+    :correct true ;
+    :html "have" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg910_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ the suspects proven, their innocence or their guilt?
+    """ .
+
 :pg9152_rep511 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -3710,6 +5677,125 @@
     :index 1 ;
     rdfs:subClassOf :pg93 .
 
+:pg9414_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "Choisissez entre les deux formes proposées : <br><br>What " .
+
+:pg9414_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg9414_seg1_rep566,
+        :pg9414_seg1_rep762 ;
+    :index 1 ;
+    :selection true .
+
+:pg9414_seg1_rep566 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9414_seg1_rep566 | F" ;
+    :correct false ;
+    :html "have" ;
+    :id "rep566" ;
+    :index -1 .
+
+:pg9414_seg1_rep762 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9414_seg1_rep762 | F" ;
+    :correct false ;
+    :html "if" ;
+    :id "rep762" ;
+    :index -1 .
+
+:pg9414_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ the suspect is proven innocent? Do we have other possibilities?
+    """ .
+
+:pg948_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV75', 'e29_macao1_2b71.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV18', 'e29_macao1_2b81.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
+:pg9615_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg9615_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg9615_seg1_rep269,
+        :pg9615_seg1_rep430,
+        :pg9615_seg1_rep527 ;
+    :index 1 ;
+    :selection true .
+
+:pg9615_seg1_rep269 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep269 | V" ;
+    :correct true ;
+    :html "My mother's a" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg9615_seg1_rep430 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep430 | F" ;
+    :correct false ;
+    :html "My mothers are" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg9615_seg1_rep527 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep527 | F" ;
+    :correct false ;
+    :html "My mothers a " ;
+    :id "rep527" ;
+    :index -1 .
+
+:pg9615_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ a good cook.
+    """ .
+
 :pg965_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -3993,6 +6079,9 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg1023 | Première tâche" ;
+    :aSegment :pg1023_seg0,
+        :pg1023_seg1,
+        :pg1023_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4433,6 +6522,7 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "02 | pg1888 | Deuxième tâche" ;
+    :aSegment :pg1888_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4510,6 +6600,7 @@
         owl:NamedIndividual ;
     rdfs:label "Septième tâche" ;
     :__protege_display_name "07 | pg1919 | Septième tâche" ;
+    :aSegment :pg1919_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4621,6 +6712,15 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (2)" ;
     :__protege_display_name "02 | pg20 | Ecoutez et complétez (2)" ;
+    :aSegment :pg20_seg0,
+        :pg20_seg1,
+        :pg20_seg2,
+        :pg20_seg3,
+        :pg20_seg4,
+        :pg20_seg5,
+        :pg20_seg6,
+        :pg20_seg7,
+        :pg20_seg8 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien. Complétez maintenant la
         suite du texte.</p>
         <p align=""> </p></div>
@@ -4759,6 +6859,9 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche" ;
     :__protege_display_name "09 | pg2429 | Sixième tâche" ;
+    :aSegment :pg2429_seg0,
+        :pg2429_seg1,
+        :pg2429_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4808,6 +6911,7 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche (2)" ;
     :__protege_display_name "06 | pg2493 | Sixième tâche (2)" ;
+    :aSegment :pg2493_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -5011,6 +7115,11 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg2759 | Première tâche" ;
+    :aSegment :pg2759_seg0,
+        :pg2759_seg1,
+        :pg2759_seg2,
+        :pg2759_seg3,
+        :pg2759_seg4 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -5233,6 +7342,7 @@
         owl:NamedIndividual ;
     rdfs:label "Mémento : longueur de la voyelle" ;
     :__protege_display_name "21 | pg299 | Mémento : longueur de la voyelle" ;
+    :aSegment :pg299_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align="">Contrairement aux idées reçues,
@@ -5337,6 +7447,9 @@
         owl:NamedIndividual ;
     rdfs:label "Cinquième tâche" ;
     :__protege_display_name "04 | pg3092 | Cinquième tâche" ;
+    :aSegment :pg3092_seg0,
+        :pg3092_seg1,
+        :pg3092_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -5578,6 +7691,7 @@
         owl:NamedIndividual ;
     rdfs:label "Huitième tâche" ;
     :__protege_display_name "08 | pg3579 | Huitième tâche" ;
+    :aSegment :pg3579_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -5706,6 +7820,9 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche" ;
     :__protege_display_name "05 | pg3600 | Sixième tâche" ;
+    :aSegment :pg3600_seg0,
+        :pg3600_seg1,
+        :pg3600_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -5812,6 +7929,7 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg3628 | Deuxième tâche" ;
+    :aSegment :pg3628_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux dialogues
         reconstitués que vous pouvez écouter. <br><br>1 Tell us what you have found about the suspect. <br>A She has
         been seen several times with a rat. <br><br>Dans <i>She has been seen</i>, on a un <i><a class="STY_lienDansZoneComt" href="javascript:parent.SCO_ouvrirDoc('doc28886','htm')">present
@@ -6083,6 +8201,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg3862 | Troisième tâche" ;
+    :aSegment :pg3862_seg0,
+        :pg3862_seg1,
+        :pg3862_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -6195,6 +8316,7 @@
         owl:NamedIndividual ;
     rdfs:label "Longueur de la voyelle" ;
     :__protege_display_name "00 | pg397 | Longueur de la voyelle" ;
+    :aSegment :pg397_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align="">Contrairement aux idées reçues,
@@ -6381,6 +8503,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg4141 | Troisième tâche" ;
+    :aSegment :pg4141_seg0,
+        :pg4141_seg1,
+        :pg4141_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -6541,6 +8666,7 @@
         owl:NamedIndividual ;
     rdfs:label "Mémento : voyelles lâches et voyelles tendues" ;
     :__protege_display_name "18 | pg44 | Mémento : voyelles lâches et voyelles tendues" ;
+    :aSegment :pg44_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align=""><br><br><font color="#a60a69">Contrairement
@@ -6566,6 +8692,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (5)" ;
     :__protege_display_name "08 | pg444 | Reconnaître le mot commun (5)" ;
+    :aSegment :pg444_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">FOR est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -6655,6 +8782,9 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg4487 | Première tâche" ;
+    :aSegment :pg4487_seg0,
+        :pg4487_seg1,
+        :pg4487_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -7011,6 +9141,17 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (3)" ;
     :__protege_display_name "03 | pg503 | Ecoutez et complétez (3)" ;
+    :aSegment :pg503_seg0,
+        :pg503_seg1,
+        :pg503_seg10,
+        :pg503_seg2,
+        :pg503_seg3,
+        :pg503_seg4,
+        :pg503_seg5,
+        :pg503_seg6,
+        :pg503_seg7,
+        :pg503_seg8,
+        :pg503_seg9 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien ! </p></div>
     """ ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p align="">Une ou plusieurs réponses ne
@@ -7180,6 +9321,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg5132 | Troisième tâche" ;
+    :aSegment :pg5132_seg0,
+        :pg5132_seg1,
+        :pg5132_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -7282,6 +9426,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (3)" ;
     :__protege_display_name "04 | pg52 | Reconnaître le mot commun (3)" ;
+    :aSegment :pg52_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">TO est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -7531,6 +9676,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (2)" ;
     :__protege_display_name "02 | pg558 | Reconnaître le mot commun (2)" ;
+    :aSegment :pg558_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">AT est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -7751,6 +9897,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg6180 | Deuxième tâche" ;
+    :aSegment :pg6180_seg0,
+        :pg6180_seg1,
+        :pg6180_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -7795,6 +9944,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (1)" ;
     :__protege_display_name "00 | pg624 | Reconnaître le mot commun (1)" ;
+    :aSegment :pg624_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">OF est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -7818,6 +9968,21 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (1)" ;
     :__protege_display_name "01 | pg6241 | Ecoutez et complétez (1)" ;
+    :aSegment :pg6241_seg0,
+        :pg6241_seg1,
+        :pg6241_seg10,
+        :pg6241_seg11,
+        :pg6241_seg12,
+        :pg6241_seg13,
+        :pg6241_seg14,
+        :pg6241_seg2,
+        :pg6241_seg3,
+        :pg6241_seg4,
+        :pg6241_seg5,
+        :pg6241_seg6,
+        :pg6241_seg7,
+        :pg6241_seg8,
+        :pg6241_seg9 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien. Complétez maintenant la
         suite du texte.</p>
         <p align=""> </p></div>
@@ -8161,6 +10326,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (4)" ;
     :__protege_display_name "07 | pg6866 | Quatrième tâche (4)" ;
+    :aSegment :pg6866_seg0,
+        :pg6866_seg1,
+        :pg6866_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -8359,6 +10527,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg7429 | Deuxième tâche" ;
+    :aSegment :pg7429_seg0,
+        :pg7429_seg1,
+        :pg7429_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p>Bravo !<br>Vous avez en effet entendu : <br><br><i>John's been given a guitar for his birthday. He's been
@@ -8409,6 +10580,7 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg7576 | Troisième tâche" ;
+    :aSegment :pg7576_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux paires
         reconstituées que vous pouvez écouter. <br><br>1 It' s Paul's birthday. <br>B He is given a lot of presents.<br><br>Dans
         <i>He is given</i>, on a un présent à la voix passive (voix passive : BE + V au participe passé). Le sujet
@@ -8561,6 +10733,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche" ;
     :__protege_display_name "03 | pg7682 | Quatrième tâche" ;
+    :aSegment :pg7682_seg0,
+        :pg7682_seg1,
+        :pg7682_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -8728,6 +10903,7 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg8027 | Première tâche" ;
+    :aSegment :pg8027_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux dialogues
         reconstitués que vous pouvez réécouter.<br><br>1 Why does Lucy have so many pills to take? <br>B She has been
         seen by the doctor for her allergy.<br><br>Dans <i>She has been seen</i>, on a un <a class="STY_lienDansZoneComt" href="javascript:parent.SCO_ouvrirDoc('doc28886','htm')"><i>present
@@ -8872,6 +11048,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg8400 | Deuxième tâche" ;
+    :aSegment :pg8400_seg0,
+        :pg8400_seg1,
+        :pg8400_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -9413,6 +11592,7 @@
         owl:NamedIndividual ;
     rdfs:label "Voyelles lâches et voyelles tendues" ;
     :__protege_display_name "00 | pg888 | Voyelles lâches et voyelles tendues" ;
+    :aSegment :pg888_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align=""><br><br><font color="#a60a69">Contrairement
@@ -9506,6 +11686,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (2)" ;
     :__protege_display_name "04 | pg910 | Quatrième tâche (2)" ;
+    :aSegment :pg910_seg0,
+        :pg910_seg1,
+        :pg910_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -9699,6 +11882,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (3)" ;
     :__protege_display_name "05 | pg9414 | Quatrième tâche (3)" ;
+    :aSegment :pg9414_seg0,
+        :pg9414_seg1,
+        :pg9414_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -9792,6 +11978,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (4)" ;
     :__protege_display_name "06 | pg948 | Reconnaître le mot commun (4)" ;
+    :aSegment :pg948_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">IN est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -9815,6 +12002,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche" ;
     :__protege_display_name "03 | pg9615 | Quatrième tâche" ;
+    :aSegment :pg9615_seg0,
+        :pg9615_seg1,
+        :pg9615_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -15086,6 +17276,10 @@
     :titre "> Utiliser les symboles phonétiques" ;
     rdfs:subClassOf :MosMod341 .
 
+:Champ a owl:Class ;
+    rdfs:subClassOf :MacaoContenu,
+        :MacaoObject .
+
 :SousPartie a owl:Class ;
     rdfs:subClassOf :MacaoContenu,
         :MacaoObject,
@@ -15119,6 +17313,10 @@
         :MacaoContenu,
         :MacaoObject .
 
+:Segment a owl:Class ;
+    rdfs:subClassOf :MacaoContenu,
+        :MacaoObject .
+
 :Exercice a owl:Class ;
     rdfs:subClassOf :Activite,
         :MacaoContenu,
diff --git a/tetras_extraction/result/macao_12/macao_full.ttl b/tetras_extraction/result/macao_12/macao_full.ttl
index a5d8d94..8952cd6 100644
--- a/tetras_extraction/result/macao_12/macao_full.ttl
+++ b/tetras_extraction/result/macao_12/macao_full.ttl
@@ -27,6 +27,10 @@
     rdfs:domain :Exercice ;
     rdfs:range :Reponse .
 
+:aSegment a owl:ObjectProperty ;
+    rdfs:domain :ExerciceTAT ;
+    rdfs:range :Segment .
+
 :cheminFichier a owl:DatatypeProperty ;
     rdfs:domain :MacaoRessource ;
     rdfs:range xsd:anyURI .
@@ -312,6 +316,197 @@
     :index 1 ;
     rdfs:subClassOf :pg205 .
 
+:pg20_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV45', 'e29_macao1_2c3_0228.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+        So, """ .
+
+:pg20_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg20_seg1_rep0,
+        :pg20_seg1_rep1,
+        :pg20_seg1_rep2 ;
+    :index 1 ;
+    :selection true .
+
+:pg20_seg1_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg1_rep0 | F" ;
+    :correct false ;
+    :html "mother" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg1_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg1_rep1 | V" ;
+    :correct true ;
+    :html "my mother" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg1_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg1_rep2 | F" ;
+    :correct false ;
+    :html "our mother" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ told us  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV11', 'e29_macao1_2c3_0229.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         we were not to pick """ .
+
+:pg20_seg3 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg20_seg3_rep0,
+        :pg20_seg3_rep1,
+        :pg20_seg3_rep2 ;
+    :index 3 ;
+    :selection true .
+
+:pg20_seg3_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg3_rep0 | V" ;
+    :correct true ;
+    :html "the apples" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg3_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg3_rep1 | F" ;
+    :correct false ;
+    :html "apples" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg3_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg3_rep2 | F" ;
+    :correct false ;
+    :html "an apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg4 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 4 ;
+    :text """.  <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV89', 'e29_macao1_2c3_0230.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         My mother said, 'It’s naughty to pick the apples   
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV82', 'e29_macao1_2c3_023311.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         when they are growing upon<br><br>""" .
+
+:pg20_seg5 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg20_seg5_rep0,
+        :pg20_seg5_rep1,
+        :pg20_seg5_rep2 ;
+    :index 5 ;
+    :selection true .
+
+:pg20_seg5_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg5_rep0 | F" ;
+    :correct false ;
+    :html "a tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg5_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg5_rep1 | V" ;
+    :correct true ;
+    :html "the tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg5_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg5_rep2 | F" ;
+    :correct false ;
+    :html "tree" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg6 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 6 ;
+    :text """,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV27', 'e29_macao1_2c3_0232.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         because we want them to go on growing until they are ripe and rosy,   <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV46', 'e29_macao1_2c3_0233.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and then we shall pick them and put them quite away """ .
+
+:pg20_seg7 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg20_seg7_rep0,
+        :pg20_seg7_rep1,
+        :pg20_seg7_rep2 ;
+    :index 7 ;
+    :selection true .
+
+:pg20_seg7_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg7_rep0 | F" ;
+    :correct false ;
+    :html "for" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg20_seg7_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg7_rep1 | F" ;
+    :correct false ;
+    :html "for a" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg20_seg7_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg20_seg7_rep2 | V" ;
+    :correct true ;
+    :html "for the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg20_seg8 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 8 ;
+    :text """ winter-time'.
+    """ .
+
 :pg217_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -574,6 +769,14 @@
     :index 8 ;
     rdfs:subClassOf :pg293 .
 
+:pg299_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29anj_s4lc_p115.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg313_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -661,6 +864,14 @@
     :index 1 ;
     rdfs:subClassOf :pg386 .
 
+:pg397_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29anj_s4lc_p115.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg400_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -761,6 +972,43 @@
     :index 2 ;
     rdfs:subClassOf :pg41 .
 
+:pg444_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV84', 'e29_macao1_2b91.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV41', 'e29_macao1_2b101.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
+:pg44_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV13', 'e29anj_s4lc_p114.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg491_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -781,6 +1029,262 @@
     :index 1 ;
     rdfs:subClassOf :pg491 .
 
+:pg503_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV66', 'e29_macao1_2c4_0234.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         'If you """ .
+
+:pg503_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg1_rep0,
+        :pg503_seg1_rep1,
+        :pg503_seg1_rep2 ;
+    :index 1 ;
+    :selection true .
+
+:pg503_seg10 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 10 ;
+    :text """ on the grass <br><br>
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV36', 'e29_macao1_2c4_0241.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and she took it in for my mother to wash.<br><br>""" .
+
+:pg503_seg1_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg1_rep0 | F" ;
+    :correct false ;
+    :html "want the apple" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg1_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg1_rep1 | V" ;
+    :correct true ;
+    :html "want an apple" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg1_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg1_rep2 | F" ;
+    :correct false ;
+    :html "want our apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg503_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """"  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV69', 'e29_macao1_2c4_0235.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         , my mother said,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV24', 'e29_macao1_2c4_0236.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         'you must pick up a windfall <br><br>and bring it to me, and I shall wash it for you.' 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV58', 'e29_macao1_2c4_0237.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         As you know, 'windfalls' <br><br>are apples that fall off """ .
+
+:pg503_seg3 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg3_rep0,
+        :pg503_seg3_rep1,
+        :pg503_seg3_rep2 ;
+    :index 3 ;
+    :selection true .
+
+:pg503_seg3_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg3_rep0 | V" ;
+    :correct true ;
+    :html "the tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg3_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg3_rep1 | F" ;
+    :correct false ;
+    :html "a tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg3_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg3_rep2 | F" ;
+    :correct false ;
+    :html "tree" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg503_seg4 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 4 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV17', 'e29_macao1_2c4_0238.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          on to """ .
+
+:pg503_seg5 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg5_rep0,
+        :pg503_seg5_rep1,
+        :pg503_seg5_rep2 ;
+    :index 5 ;
+    :selection true .
+
+:pg503_seg5_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg5_rep0 | F" ;
+    :correct false ;
+    :html "a grass " ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg5_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg5_rep1 | F" ;
+    :correct false ;
+    :html "grass " ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg5_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg5_rep2 | V" ;
+    :correct true ;
+    :html "the grass " ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg503_seg6 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 6 ;
+    :text """,   
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV72', 'e29_macao1_2c4_0239.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         so, one day, my little <br><br>sister looked """ .
+
+:pg503_seg7 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg7_rep0,
+        :pg503_seg7_rep1 ;
+    :index 7 ;
+    :selection true .
+
+:pg503_seg7_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg7_rep0 | F" ;
+    :correct false ;
+    :html "under a tree" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg7_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg7_rep1 | V" ;
+    :correct true ;
+    :html "under the tree" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg8 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 8 ;
+    :text """  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV93', 'e29_macao1_2c4_0240.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          and found  """ .
+
+:pg503_seg9 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg503_seg9_rep0,
+        :pg503_seg9_rep1,
+        :pg503_seg9_rep2 ;
+    :index 9 ;
+    :selection true .
+
+:pg503_seg9_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg9_rep0 | F" ;
+    :correct false ;
+    :html "nice big windfall" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg503_seg9_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg9_rep1 | F" ;
+    :correct false ;
+    :html "the nice big windfall" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg503_seg9_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg503_seg9_rep2 | V" ;
+    :correct true ;
+    :html "a nice big windfall" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg52_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV2', 'e29_macao1_2b51.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>   Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV48', 'e29_macao1_2b61.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>   Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg531_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -804,6 +1308,35 @@
     :index 1 ;
     rdfs:subClassOf :pg531 .
 
+:pg558_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top"> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV85', 'e29_macao1_2b31.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV76', 'e29_macao1_2b41.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg561_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -943,6 +1476,365 @@
     :index 8 ;
     rdfs:subClassOf :pg6121 .
 
+:pg6241_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """ 
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV29', 'e29_macao1_2c2.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         When I """ .
+
+:pg6241_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg1_rep0,
+        :pg6241_seg1_rep1,
+        :pg6241_seg1_rep2 ;
+    :index 1 ;
+    :selection true .
+
+:pg6241_seg10 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 10 ;
+    :text """ and eat them.  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV87', 'e29_macao1_2c2_02261.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         It  """ .
+
+:pg6241_seg11 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg11_rep0,
+        :pg6241_seg11_rep1,
+        :pg6241_seg11_rep2 ;
+    :index 11 ;
+    :selection true .
+
+:pg6241_seg11_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg11_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg11_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg11_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg12 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 12 ;
+    :text """ very easy thing to <br><br>do  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV43', 'e29_macao1_2c2_0227.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+          because  """ .
+
+:pg6241_seg13 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg13_rep0,
+        :pg6241_seg13_rep1,
+        :pg6241_seg13_rep2 ;
+    :index 13 ;
+    :selection true .
+
+:pg6241_seg13_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep0 | V" ;
+    :correct true ;
+    :html "the branches" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg13_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep1 | F" ;
+    :correct false ;
+    :html "branches" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg13_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg13_rep2 | F" ;
+    :correct false ;
+    :html "some branches" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg14 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 14 ;
+    :text """ were so low.
+    """ .
+
+:pg6241_seg1_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg1_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg1_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg1_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ little girl,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV55', 'e29_macao1_2c2_02233.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and my naughty little sister <br><br>""" .
+
+:pg6241_seg3 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg3_rep0,
+        :pg6241_seg3_rep1,
+        :pg6241_seg3_rep2 ;
+    :index 3 ;
+    :selection true .
+
+:pg6241_seg3_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep0 | V" ;
+    :correct true ;
+    :html "was a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg3_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep1 | F" ;
+    :correct false ;
+    :html "was" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg3_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg3_rep2 | F" ;
+    :correct false ;
+    :html "was the" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg4 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 4 ;
+    :text """ little girl,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV79', 'e29_macao1_2c2_02241.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         we used to  have """ .
+
+:pg6241_seg5 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg5_rep0,
+        :pg6241_seg5_rep1,
+        :pg6241_seg5_rep2,
+        :pg6241_seg5_rep3 ;
+    :index 5 ;
+    :selection true .
+
+:pg6241_seg5_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep0 | V" ;
+    :correct true ;
+    :html "an apple" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg5_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep1 | F" ;
+    :correct false ;
+    :html "our apple" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg5_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep2 | F" ;
+    :correct false ;
+    :html "the apple" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg5_rep3 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg5_rep3 | F" ;
+    :correct false ;
+    :html "apple" ;
+    :id "rep3" ;
+    :index 3 .
+
+:pg6241_seg6 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 6 ;
+    :text " tree " .
+
+:pg6241_seg7 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg7_rep0,
+        :pg6241_seg7_rep1,
+        :pg6241_seg7_rep2 ;
+    :index 7 ;
+    :selection true .
+
+:pg6241_seg7_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep0 | F" ;
+    :correct false ;
+    :html "in a" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg7_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep1 | F" ;
+    :correct false ;
+    :html "in the" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg7_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg7_rep2 | V" ;
+    :correct true ;
+    :html "in our" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg6241_seg8 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 8 ;
+    :text """<br><br> garden,  
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV77', 'e29_macao1_2c2_02251.swf', '18', '18', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+         and sometimes my naughty little sister used to pick<br><br> """ .
+
+:pg6241_seg9 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6241_seg9_rep0,
+        :pg6241_seg9_rep1,
+        :pg6241_seg9_rep2 ;
+    :index 9 ;
+    :selection true .
+
+:pg6241_seg9_rep0 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep0 | F" ;
+    :correct false ;
+    :html "the apples" ;
+    :id "rep0" ;
+    :index 0 .
+
+:pg6241_seg9_rep1 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep1 | V" ;
+    :correct true ;
+    :html "some apples" ;
+    :id "rep1" ;
+    :index 1 .
+
+:pg6241_seg9_rep2 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6241_seg9_rep2 | F" ;
+    :correct false ;
+    :html "apples" ;
+    :id "rep2" ;
+    :index 2 .
+
+:pg624_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV36', 'e29_macao1_2b11.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV95', 'e29_macao1_2b21.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg6361_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1804,6 +2696,14 @@
     :index 1 ;
     rdfs:subClassOf :pg879 .
 
+:pg888_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <script type="text/javascript">ajDocW(PF_clipAV('clipAV13', 'e29anj_s4lc_p114.swf', '500', '320', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+    """ .
+
 :pg890_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1910,6 +2810,35 @@
     :index 1 ;
     rdfs:subClassOf :pg93 .
 
+:pg948_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<p align="">
+        </p><table class="STY_tableau" width="100%" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td width="100" valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV75', 'e29_macao1_2b71.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>    Enoncé 1
+                </td>
+                <td valign="top"></td>
+            </tr>
+            <tr>
+                <td valign="top"></td>
+                <td valign="top"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value=" "> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td valign="top">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV18', 'e29_macao1_2b81.swf', '80', '40', 'false', 'Flash', 'false', '', 'Quality:high;wmode:transparent', ''));</script>
+                    <br>     Enoncé 2
+                </td>
+                <td valign="top"></td>
+            </tr>
+        </table>
+        """ .
+
 :pg965_1 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -2190,6 +3119,15 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (2)" ;
     :__protege_display_name "02 | pg20 | Ecoutez et complétez (2)" ;
+    :aSegment :pg20_seg0,
+        :pg20_seg1,
+        :pg20_seg2,
+        :pg20_seg3,
+        :pg20_seg4,
+        :pg20_seg5,
+        :pg20_seg6,
+        :pg20_seg7,
+        :pg20_seg8 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien. Complétez maintenant la
         suite du texte.</p>
         <p align=""> </p></div>
@@ -2353,6 +3291,7 @@
         owl:NamedIndividual ;
     rdfs:label "Mémento : longueur de la voyelle" ;
     :__protege_display_name "21 | pg299 | Mémento : longueur de la voyelle" ;
+    :aSegment :pg299_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align="">Contrairement aux idées reçues,
@@ -2857,6 +3796,7 @@
         owl:NamedIndividual ;
     rdfs:label "Longueur de la voyelle" ;
     :__protege_display_name "00 | pg397 | Longueur de la voyelle" ;
+    :aSegment :pg397_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align="">Contrairement aux idées reçues,
@@ -3023,6 +3963,7 @@
         owl:NamedIndividual ;
     rdfs:label "Mémento : voyelles lâches et voyelles tendues" ;
     :__protege_display_name "18 | pg44 | Mémento : voyelles lâches et voyelles tendues" ;
+    :aSegment :pg44_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align=""><br><br><font color="#a60a69">Contrairement
@@ -3048,6 +3989,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (5)" ;
     :__protege_display_name "08 | pg444 | Reconnaître le mot commun (5)" ;
+    :aSegment :pg444_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">FOR est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -3182,6 +4124,17 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (3)" ;
     :__protege_display_name "03 | pg503 | Ecoutez et complétez (3)" ;
+    :aSegment :pg503_seg0,
+        :pg503_seg1,
+        :pg503_seg10,
+        :pg503_seg2,
+        :pg503_seg3,
+        :pg503_seg4,
+        :pg503_seg5,
+        :pg503_seg6,
+        :pg503_seg7,
+        :pg503_seg8,
+        :pg503_seg9 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien ! </p></div>
     """ ;
     :commentaireSugg """<div id="divSugg1" onclick="SPE_clicDansBulle(event,'divSugg1')"><p align="">Une ou plusieurs réponses ne
@@ -3397,6 +4350,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (3)" ;
     :__protege_display_name "04 | pg52 | Reconnaître le mot commun (3)" ;
+    :aSegment :pg52_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">TO est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -3537,6 +4491,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (2)" ;
     :__protege_display_name "02 | pg558 | Reconnaître le mot commun (2)" ;
+    :aSegment :pg558_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">AT est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -3699,6 +4654,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (1)" ;
     :__protege_display_name "00 | pg624 | Reconnaître le mot commun (1)" ;
+    :aSegment :pg624_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">OF est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -3722,6 +4678,21 @@
         owl:NamedIndividual ;
     rdfs:label "Ecoutez et complétez (1)" ;
     :__protege_display_name "01 | pg6241 | Ecoutez et complétez (1)" ;
+    :aSegment :pg6241_seg0,
+        :pg6241_seg1,
+        :pg6241_seg10,
+        :pg6241_seg11,
+        :pg6241_seg12,
+        :pg6241_seg13,
+        :pg6241_seg14,
+        :pg6241_seg2,
+        :pg6241_seg3,
+        :pg6241_seg4,
+        :pg6241_seg5,
+        :pg6241_seg6,
+        :pg6241_seg7,
+        :pg6241_seg8,
+        :pg6241_seg9 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">Bien. Complétez maintenant la
         suite du texte.</p>
         <p align=""> </p></div>
@@ -4629,6 +5600,7 @@
         owl:NamedIndividual ;
     rdfs:label "Voyelles lâches et voyelles tendues" ;
     :__protege_display_name "00 | pg888 | Voyelles lâches et voyelles tendues" ;
+    :aSegment :pg888_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"></div>
 """ ;
     :description """<div id="STY_question" class="STY_question"></div><div id="divConsigne" onclick="SPE_clicDansBulle(event,'divConsigne')"><p align=""><br><br><font color="#a60a69">Contrairement
@@ -4805,6 +5777,7 @@
         owl:NamedIndividual ;
     rdfs:label "Reconnaître le mot commun (4)" ;
     :__protege_display_name "06 | pg948 | Reconnaître le mot commun (4)" ;
+    :aSegment :pg948_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p align="">C'est cela! </p>
         <p align="">IN est le seul mot commun aux deux énoncés.</p></div>
     """ ;
@@ -7521,6 +8494,10 @@
     :titre "> Reconnaître les prépositions" ;
     rdfs:subClassOf :MosMod34 .
 
+:Champ a owl:Class ;
+    rdfs:subClassOf :MacaoContenu,
+        :MacaoObject .
+
 :MosEtp129 a :MacaoContenu,
         :MacaoObject,
         :Module,
@@ -7916,6 +8893,10 @@
         :MacaoContenu,
         :MacaoObject .
 
+:Segment a owl:Class ;
+    rdfs:subClassOf :MacaoContenu,
+        :MacaoObject .
+
 :ExerciceQC a owl:Class ;
     rdfs:subClassOf :Activite,
         :Exercice,
diff --git a/tetras_extraction/result/macao_3/macao_full.ttl b/tetras_extraction/result/macao_3/macao_full.ttl
index 8c22c23..bef0b1f 100644
--- a/tetras_extraction/result/macao_3/macao_full.ttl
+++ b/tetras_extraction/result/macao_3/macao_full.ttl
@@ -27,6 +27,10 @@
     rdfs:domain :Exercice ;
     rdfs:range :Reponse .
 
+:aSegment a owl:ObjectProperty ;
+    rdfs:domain :ExerciceTAT ;
+    rdfs:range :Segment .
+
 :cheminFichier a owl:DatatypeProperty ;
     rdfs:domain :MacaoRessource ;
     rdfs:range xsd:anyURI .
@@ -119,6 +123,47 @@
     rdfs:domain :Activite ;
     rdfs:range :MacaoRessource .
 
+:pg1023_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les deux formes proposées : <br><br>Now that the Prime
+        Minister has  """ .
+
+:pg1023_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg1023_seg1_rep24,
+        :pg1023_seg1_rep429 ;
+    :index 1 ;
+    :selection true .
+
+:pg1023_seg1_rep24 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg1023_seg1_rep24 | V" ;
+    :correct true ;
+    :html "shaken" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg1023_seg1_rep429 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg1023_seg1_rep429 | F" ;
+    :correct false ;
+    :html "shaking" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg1023_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ the President's hand, she is going back to her car.
+    """ .
+
 :pg1181_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -421,6 +466,32 @@
     :index 3 ;
     rdfs:subClassOf :pg186 .
 
+:pg1888_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <p><i><b>
+            <table width="70%" bgcolor="#00c0c0" cellpadding="3" cellspacing="0" valign="top" border="0">
+                <tr>
+                    <td style="BACKGROUND: #b5f0c7; WIDTH: 20%" width="40%" valign="middle"><img align="center" border="0" src="../media/ecouteur_macao.png" id="MosImg32"></td>
+                    <td style="BACKGROUND: #b5f0c7" valign="middle">
+                        <script type="text/javascript">ajDocW(PF_clipAV('clipAV2861', 'ecran191.swf', '30', '25', 'false', 'Flash', '', '', 'quality:high;wmode:transparent', '', ''));</script>
+                    </td>
+                </tr>
+            </table>
+        </b></i></p>
+        <p><i><b></b></i><i><b><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou1"> </b></i>Zurich?<br><b><i> </i></b>
+        </p><table width="70%" bgcolor="#00c0c0" cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="BACKGROUND: #b5f0c7; WIDTH: 20%" width="40%" valign="middle"><img align="center" border="0" src="../media/ecouteur_macao.png" id="MosImg320"></td>
+                <td style="BACKGROUND: #b5f0c7" valign="middle">
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV2769', 'ecran192.swf', '30', '25', 'false', 'Flash', '', '', 'quality:high;wmode:transparent', '', ''));</script>
+                </td>
+            </tr>
+        </table>
+        <br><i><b><input type="text" onkeyup="actionDetecteTrou()" onfocus="focusChamp(this)" onkeypress="return tapeDansChamp(event)" onkeydown="return tapeDansChamp(event)" class="STY_champTAT" id="champTrou2"> </b></i>Zorba?""" .
+
 :pg1894_rep36 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -542,6 +613,32 @@
     :index 1 ;
     rdfs:subClassOf :pg1894 .
 
+:pg1919_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He drank half the bottle of water.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He drank half a bottle of water.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
 :pg191_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -573,6 +670,247 @@
     :index 0 ;
     rdfs:subClassOf :pg191 .
 
+:pg2429_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<br>You don't find many independent companies in the cinema
+        industries.<br>Most of the time, """ .
+
+:pg2429_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg2429_seg1_rep247,
+        :pg2429_seg1_rep471 ;
+    :index 1 ;
+    :selection true .
+
+:pg2429_seg1_rep247 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2429_seg1_rep247 | F" ;
+    :correct false ;
+    :html "there are" ;
+    :id "rep247" ;
+    :index -1 .
+
+:pg2429_seg1_rep471 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2429_seg1_rep471 | V" ;
+    :correct true ;
+    :html "they are" ;
+    :id "rep471" ;
+    :index -1 .
+
+:pg2429_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ confronted by financial difficulties.
+    """ .
+
+:pg2493_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Here's a road.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Here's the road.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
+:pg2759_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg2759_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg2759_seg1_rep269,
+        :pg2759_seg1_rep430 ;
+    :index 1 ;
+    :selection true .
+
+:pg2759_seg1_rep269 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2759_seg1_rep269 | F" ;
+    :correct false ;
+    :html "He has decided" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg2759_seg1_rep430 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2759_seg1_rep430 | V" ;
+    :correct true ;
+    :html "He is decided" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg2759_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text " in his ways.<br><br><br>" .
+
+:pg2759_seg3 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg2759_seg3_rep231,
+        :pg2759_seg3_rep655 ;
+    :index 3 ;
+    :selection true .
+
+:pg2759_seg3_rep231 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2759_seg3_rep231 | V" ;
+    :correct true ;
+    :html "He has decided" ;
+    :id "rep231" ;
+    :index -1 .
+
+:pg2759_seg3_rep655 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg2759_seg3_rep655 | F" ;
+    :correct false ;
+    :html "He is decided" ;
+    :id "rep655" ;
+    :index -1 .
+
+:pg2759_seg4 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 4 ;
+    :text """ not to come tomorrow.
+    """ .
+
+:pg3092_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "What " .
+
+:pg3092_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg3092_seg1_rep101,
+        :pg3092_seg1_rep117,
+        :pg3092_seg1_rep135,
+        :pg3092_seg1_rep444,
+        :pg3092_seg1_rep469,
+        :pg3092_seg1_rep483,
+        :pg3092_seg1_rep831,
+        :pg3092_seg1_rep843 ;
+    :index 1 ;
+    :selection false .
+
+:pg3092_seg1_rep101 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep101 | V" ;
+    :correct true ;
+    :html "is Sarah" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3092_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'s Sarah" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3092_seg1_rep135 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep135 | V" ;
+    :correct true ;
+    :html " is Sarah" ;
+    :id "rep135" ;
+    :index -1 .
+
+:pg3092_seg1_rep444 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep444 | V" ;
+    :correct true ;
+    :html " 's Sarah" ;
+    :id "rep444" ;
+    :index -1 .
+
+:pg3092_seg1_rep469 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep469 | V" ;
+    :correct true ;
+    :html " is Sara" ;
+    :id "rep469" ;
+    :index -1 .
+
+:pg3092_seg1_rep483 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep483 | V" ;
+    :correct true ;
+    :html " 's Sara" ;
+    :id "rep483" ;
+    :index -1 .
+
+:pg3092_seg1_rep831 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep831 | V" ;
+    :correct true ;
+    :html "'s Sara" ;
+    :id "rep831" ;
+    :index -1 .
+
+:pg3092_seg1_rep843 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3092_seg1_rep843 | V" ;
+    :correct true ;
+    :html "is Sara" ;
+    :id "rep843" ;
+    :index -1 .
+
+:pg3092_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ cooking?
+        It smells so nice!
+    """ .
+
 :pg3209_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -691,6 +1029,120 @@
     :index 4 ;
     rdfs:subClassOf :pg3531 .
 
+:pg3579_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """<br>
+        <table cellpadding="3" cellspacing="0" valign="top" border="0">
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">Enoncés</td>
+                <td style="FONT-SIZE: 10px" valign="middle">Contextes</td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He needs a pen.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle">He needs the pen.</td>
+                <td style="FONT-SIZE: 10px" valign="middle"><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                    <option value="_INIT_TROU"> </option>
+                </select></td>
+            </tr>
+        </table>
+        <br><br> <br><br> 
+    """ .
+
+:pg3600_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "" .
+
+:pg3600_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg3600_seg1_rep101,
+        :pg3600_seg1_rep117 ;
+    :index 1 ;
+    :selection false .
+
+:pg3600_seg1_rep101 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3600_seg1_rep101 | V" ;
+    :correct true ;
+    :html "There are" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3600_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3600_seg1_rep117 | V" ;
+    :correct true ;
+    :html "there are" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3600_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ two people
+        waiting outside.
+    """ .
+
+:pg3628_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV4748', 'ecran421.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Tell us what you have found about the suspect.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV1221', 'ecran422.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Where is the suspect?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>A</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV3044', 'ecran423.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV87', 'mot42_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     several times with a rat.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV7913', 'ecran424.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                      
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV46', 'mot42_4.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     by the judge.
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux dialogues plausibles, associez chaque question à une réponse en
+            sélectionnant A ou B dans les listes déroulantes.<br><br>Tell us what you have found about the
+            suspect.<br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>Where is the suspect?<br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg3746_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -727,6 +1179,67 @@
     :index 0 ;
     rdfs:subClassOf :pg3746 .
 
+:pg3862_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "Now he " .
+
+:pg3862_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg3862_seg1_rep101,
+        :pg3862_seg1_rep117,
+        :pg3862_seg1_rep227,
+        :pg3862_seg1_rep309 ;
+    :index 1 ;
+    :selection false .
+
+:pg3862_seg1_rep101 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep101 | V" ;
+    :correct true ;
+    :html "has said" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg3862_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'s said" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg3862_seg1_rep227 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep227 | V" ;
+    :correct true ;
+    :html " 's said" ;
+    :id "rep227" ;
+    :index -1 .
+
+:pg3862_seg1_rep309 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg3862_seg1_rep309 | V" ;
+    :correct true ;
+    :html " has said" ;
+    :id "rep309" ;
+    :index -1 .
+
+:pg3862_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ he
+        doesn't want to come, it's too late!
+    """ .
+
 :pg3870_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -854,6 +1367,56 @@
     :index 4 ;
     rdfs:subClassOf :pg4031 .
 
+:pg4141_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg4141_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg4141_seg1_rep269,
+        :pg4141_seg1_rep430,
+        :pg4141_seg1_rep527 ;
+    :index 1 ;
+    :selection true .
+
+:pg4141_seg1_rep269 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep269 | F" ;
+    :correct false ;
+    :html "The player's a" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg4141_seg1_rep430 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep430 | F" ;
+    :correct false ;
+    :html "The players a" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg4141_seg1_rep527 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4141_seg1_rep527 | V" ;
+    :correct true ;
+    :html "The players are" ;
+    :id "rep527" ;
+    :index -1 .
+
+:pg4141_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ talking with the referee.
+    """ .
+
 :pg4192_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1121,6 +1684,67 @@
     :index 4 ;
     rdfs:subClassOf :pg4396 .
 
+:pg4487_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """Peter and Mary have moved to Scotland. Their furniture has been carried
+        to Glasgow by road, and now they """ .
+
+:pg4487_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg4487_seg1_rep117,
+        :pg4487_seg1_rep577,
+        :pg4487_seg1_rep749,
+        :pg4487_seg1_rep982 ;
+    :index 1 ;
+    :selection false .
+
+:pg4487_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'ve finished" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg4487_seg1_rep577 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep577 | V" ;
+    :correct true ;
+    :html "have finished" ;
+    :id "rep577" ;
+    :index -1 .
+
+:pg4487_seg1_rep749 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep749 | V" ;
+    :correct true ;
+    :html " have finished" ;
+    :id "rep749" ;
+    :index -1 .
+
+:pg4487_seg1_rep982 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg4487_seg1_rep982 | V" ;
+    :correct true ;
+    :html " 've finished" ;
+    :id "rep982" ;
+    :index -1 .
+
+:pg4487_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """
+        putting everything in its place.<br>""" .
+
 :pg4797_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1153,6 +1777,57 @@
     :index 0 ;
     rdfs:subClassOf :pg4797 .
 
+:pg5132_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les formes proposées : <br><br>If the school refuses to
+        take more children, the governors could be """ .
+
+:pg5132_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg5132_seg1_rep24,
+        :pg5132_seg1_rep429,
+        :pg5132_seg1_rep91 ;
+    :index 1 ;
+    :selection true .
+
+:pg5132_seg1_rep24 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep24 | V" ;
+    :correct true ;
+    :html "taken" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg5132_seg1_rep429 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep429 | F" ;
+    :correct false ;
+    :html "taking" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg5132_seg1_rep91 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg5132_seg1_rep91 | F" ;
+    :correct false ;
+    :html "take" ;
+    :id "rep91" ;
+    :index -1 .
+
+:pg5132_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ to Court.
+    """ .
+
 :pg5136_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1271,6 +1946,46 @@
     :index 0 ;
     rdfs:subClassOf :pg5836 .
 
+:pg6180_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg6180_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6180_seg1_rep269,
+        :pg6180_seg1_rep430 ;
+    :index 1 ;
+    :selection true .
+
+:pg6180_seg1_rep269 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6180_seg1_rep269 | F" ;
+    :correct false ;
+    :html "These games " ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg6180_seg1_rep430 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6180_seg1_rep430 | V" ;
+    :correct true ;
+    :html "This game is" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg6180_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ easy.
+    """ .
+
 :pg6329_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1304,6 +2019,86 @@
     :index 0 ;
     rdfs:subClassOf :pg6329 .
 
+:pg6866_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<i><b><br></b></i>I<i><b></b></i>" .
+
+:pg6866_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg6866_seg1_rep117,
+        :pg6866_seg1_rep312,
+        :pg6866_seg1_rep356,
+        :pg6866_seg1_rep577,
+        :pg6866_seg1_rep891,
+        :pg6866_seg1_rep935 ;
+    :index 1 ;
+    :selection false .
+
+:pg6866_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep117 | V" ;
+    :correct true ;
+    :html "Would do" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg6866_seg1_rep312 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep312 | V" ;
+    :correct true ;
+    :html " 'd do" ;
+    :id "rep312" ;
+    :index -1 .
+
+:pg6866_seg1_rep356 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep356 | V" ;
+    :correct true ;
+    :html " Would do" ;
+    :id "rep356" ;
+    :index -1 .
+
+:pg6866_seg1_rep577 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep577 | V" ;
+    :correct true ;
+    :html "would do" ;
+    :id "rep577" ;
+    :index -1 .
+
+:pg6866_seg1_rep891 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep891 | V" ;
+    :correct true ;
+    :html " would do" ;
+    :id "rep891" ;
+    :index -1 .
+
+:pg6866_seg1_rep935 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg6866_seg1_rep935 | V" ;
+    :correct true ;
+    :html "'d do" ;
+    :id "rep935" ;
+    :index -1 .
+
+:pg6866_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """<i><b> </b></i>medical
+        studies if I could start again.<br>""" .
+
 :pg7035_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1370,6 +2165,48 @@
     :index 0 ;
     rdfs:subClassOf :pg7390 .
 
+:pg7429_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """Choisissez entre les deux formes proposées : <br><br>John has
+        been """ .
+
+:pg7429_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg7429_seg1_rep24,
+        :pg7429_seg1_rep429 ;
+    :index 1 ;
+    :selection true .
+
+:pg7429_seg1_rep24 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7429_seg1_rep24 | V" ;
+    :correct true ;
+    :html "given" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg7429_seg1_rep429 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7429_seg1_rep429 | F" ;
+    :correct false ;
+    :html "giving" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg7429_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ a guitar for his birthday. He's been practising with Jim for more than a week and they've finally
+        learnt to play a tune.
+    """ .
+
 :pg7434_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1401,6 +2238,52 @@
     :index 0 ;
     rdfs:subClassOf :pg7434 .
 
+:pg7576_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV546', 'ecran431.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     It' s Paul's birthday.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV439', 'ecran432.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     The teacher has put on his Father Christmas suit. 
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>A</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV5393', 'ecran433.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV15', 'mot43_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     a lot of presents.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV7781', 'ecran434.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV59', 'mot43_4.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     a lot of presents. 
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux paires plausibles, associez les énoncés, en sélectionnant A ou B dans les
+            listes déroulantes.<br><br>It' s Paul's birthday. <br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>The teacher has put on his Father Christmas suit. <br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
 :pg7664_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1435,6 +2318,67 @@
     :index 0 ;
     rdfs:subClassOf :pg7664 .
 
+:pg7682_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "I'm so thirsty, I  " .
+
+:pg7682_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg7682_seg1_rep101,
+        :pg7682_seg1_rep113,
+        :pg7682_seg1_rep117,
+        :pg7682_seg1_rep239 ;
+    :index 1 ;
+    :selection false .
+
+:pg7682_seg1_rep101 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep101 | V" ;
+    :correct true ;
+    :html "would drink" ;
+    :id "rep101" ;
+    :index -1 .
+
+:pg7682_seg1_rep113 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep113 | V" ;
+    :correct true ;
+    :html " would drink" ;
+    :id "rep113" ;
+    :index -1 .
+
+:pg7682_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep117 | V" ;
+    :correct true ;
+    :html "'d drink" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg7682_seg1_rep239 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg7682_seg1_rep239 | V" ;
+    :correct true ;
+    :html " 'd drink" ;
+    :id "rep239" ;
+    :index -1 .
+
+:pg7682_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ a
+        whole bottle of fresh water if I could.
+    """ .
+
 :pg7973_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1589,6 +2533,93 @@
     :index 4 ;
     rdfs:subClassOf :pg7973 .
 
+:pg8027_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text """
+        <table style="BACKGROUND: #b5f0c7" width="80%" cellpadding="3" cellspacing="0" valign="top" border="1" bordercolor="">
+            <tr>
+                <td style="FONT-SIZE: 10px" width="60%" valign="top"><img align="center" border="0" src="../media/ecouteur_macao.png" width="23" height="32" id="MosImg32"></td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>1</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV6364', 'ecran411.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Why does Lucy have so many pills to take?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>2</b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV1264', 'ecran412.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                     Why isn't Ella with you?
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="middle"><b>A
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV364', 'ecran413.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                </b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV532', 'mot41_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                     by the doctor for her allergy.
+                </td>
+            </tr>
+            <tr>
+                <td style="FONT-SIZE: 10px" valign="top"><b>B
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV0', 'ecran414.swf', '30', '25', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', 'vertical-align: middle', ''));</script>
+                </b> 
+                    <script type="text/javascript">ajDocW(PF_clipAV('clipAV53', 'mot41_3.swf', '110', '19', 'false', 'Flash', '', '', 'Quality:high;wmode:transparent', '', ''));</script>
+                    by the doctor for her allergy.
+                </td>
+            </tr>
+        </table>
+        <p>Maintenant, de façon à former deux dialogues plausibles, associez chaque question à une réponse en
+            sélectionnant A ou B dans les listes déroulantes.<br><br>Why does Lucy have so many pills to
+            take?<br><select class="STY_selectTAT" id="champTrou1" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select><br><br>Why isn't Ella with you?<br><select class="STY_selectTAT" id="champTrou2" onchange="actionDetecteSelect()">
+                <option value="_INIT_TROU"> </option>
+            </select></p>
+    """ .
+
+:pg8400_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "You must phone Mr Williams if you have a problem. He's " .
+
+:pg8400_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg8400_seg1_rep117,
+        :pg8400_seg1_rep5 ;
+    :index 1 ;
+    :selection false .
+
+:pg8400_seg1_rep117 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg8400_seg1_rep117 | V" ;
+    :correct true ;
+    :html "the" ;
+    :id "rep117" ;
+    :index -1 .
+
+:pg8400_seg1_rep5 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg8400_seg1_rep5 | V" ;
+    :correct true ;
+    :html " the" ;
+    :id "rep5" ;
+    :index -1 .
+
+:pg8400_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ boss.
+    """ .
+
 :pg8601_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1806,6 +2837,46 @@
     :index 1 ;
     rdfs:subClassOf :pg8876 .
 
+:pg910_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "Choisissez entre les deux formes proposées : <br><br>What " .
+
+:pg910_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg910_seg1_rep24,
+        :pg910_seg1_rep429 ;
+    :index 1 ;
+    :selection true .
+
+:pg910_seg1_rep24 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg910_seg1_rep24 | F" ;
+    :correct false ;
+    :html "if" ;
+    :id "rep24" ;
+    :index -1 .
+
+:pg910_seg1_rep429 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg910_seg1_rep429 | V" ;
+    :correct true ;
+    :html "have" ;
+    :id "rep429" ;
+    :index -1 .
+
+:pg910_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ the suspects proven, their innocence or their guilt?
+    """ .
+
 :pg9152_rep511 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -1896,6 +2967,96 @@
     :index 1 ;
     rdfs:subClassOf :pg9264 .
 
+:pg9414_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "Choisissez entre les deux formes proposées : <br><br>What " .
+
+:pg9414_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg9414_seg1_rep566,
+        :pg9414_seg1_rep762 ;
+    :index 1 ;
+    :selection true .
+
+:pg9414_seg1_rep566 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9414_seg1_rep566 | F" ;
+    :correct false ;
+    :html "have" ;
+    :id "rep566" ;
+    :index -1 .
+
+:pg9414_seg1_rep762 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9414_seg1_rep762 | F" ;
+    :correct false ;
+    :html "if" ;
+    :id "rep762" ;
+    :index -1 .
+
+:pg9414_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ the suspect is proven innocent? Do we have other possibilities?
+    """ .
+
+:pg9615_seg0 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 0 ;
+    :text "<br>" .
+
+:pg9615_seg1 a :Champ,
+        :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :aReponse :pg9615_seg1_rep269,
+        :pg9615_seg1_rep430,
+        :pg9615_seg1_rep527 ;
+    :index 1 ;
+    :selection true .
+
+:pg9615_seg1_rep269 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep269 | V" ;
+    :correct true ;
+    :html "My mother's a" ;
+    :id "rep269" ;
+    :index -1 .
+
+:pg9615_seg1_rep430 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep430 | F" ;
+    :correct false ;
+    :html "My mothers are" ;
+    :id "rep430" ;
+    :index -1 .
+
+:pg9615_seg1_rep527 a :MacaoContenu,
+        :MacaoObject,
+        :Reponse ;
+    :__protege_display_name "pg9615_seg1_rep527 | F" ;
+    :correct false ;
+    :html "My mothers a " ;
+    :id "rep527" ;
+    :index -1 .
+
+:pg9615_seg2 a :MacaoContenu,
+        :MacaoObject,
+        :Segment ;
+    :index 2 ;
+    :text """ a good cook.
+    """ .
+
 :pg9764_rep150 a :MacaoContenu,
         :MacaoObject,
         :Reponse ;
@@ -2067,6 +3228,9 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg1023 | Première tâche" ;
+    :aSegment :pg1023_seg0,
+        :pg1023_seg1,
+        :pg1023_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2351,6 +3515,7 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "02 | pg1888 | Deuxième tâche" ;
+    :aSegment :pg1888_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2428,6 +3593,7 @@
         owl:NamedIndividual ;
     rdfs:label "Septième tâche" ;
     :__protege_display_name "07 | pg1919 | Septième tâche" ;
+    :aSegment :pg1919_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2635,6 +3801,9 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche" ;
     :__protege_display_name "09 | pg2429 | Sixième tâche" ;
+    :aSegment :pg2429_seg0,
+        :pg2429_seg1,
+        :pg2429_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2684,6 +3853,7 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche (2)" ;
     :__protege_display_name "06 | pg2493 | Sixième tâche (2)" ;
+    :aSegment :pg2493_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2853,6 +4023,11 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg2759 | Première tâche" ;
+    :aSegment :pg2759_seg0,
+        :pg2759_seg1,
+        :pg2759_seg2,
+        :pg2759_seg3,
+        :pg2759_seg4 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -2988,6 +4163,9 @@
         owl:NamedIndividual ;
     rdfs:label "Cinquième tâche" ;
     :__protege_display_name "04 | pg3092 | Cinquième tâche" ;
+    :aSegment :pg3092_seg0,
+        :pg3092_seg1,
+        :pg3092_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3052,6 +4230,7 @@
         owl:NamedIndividual ;
     rdfs:label "Huitième tâche" ;
     :__protege_display_name "08 | pg3579 | Huitième tâche" ;
+    :aSegment :pg3579_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3162,6 +4341,9 @@
         owl:NamedIndividual ;
     rdfs:label "Sixième tâche" ;
     :__protege_display_name "05 | pg3600 | Sixième tâche" ;
+    :aSegment :pg3600_seg0,
+        :pg3600_seg1,
+        :pg3600_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3268,6 +4450,7 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg3628 | Deuxième tâche" ;
+    :aSegment :pg3628_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux dialogues
         reconstitués que vous pouvez écouter. <br><br>1 Tell us what you have found about the suspect. <br>A She has
         been seen several times with a rat. <br><br>Dans <i>She has been seen</i>, on a un <i><a class="STY_lienDansZoneComt" href="javascript:parent.SCO_ouvrirDoc('doc28886','htm')">present
@@ -3370,6 +4553,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg3862 | Troisième tâche" ;
+    :aSegment :pg3862_seg0,
+        :pg3862_seg1,
+        :pg3862_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3541,6 +4727,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg4141 | Troisième tâche" ;
+    :aSegment :pg4141_seg0,
+        :pg4141_seg1,
+        :pg4141_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3674,6 +4863,9 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg4487 | Première tâche" ;
+    :aSegment :pg4487_seg0,
+        :pg4487_seg1,
+        :pg4487_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -3937,6 +5129,9 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg5132 | Troisième tâche" ;
+    :aSegment :pg5132_seg0,
+        :pg5132_seg1,
+        :pg5132_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4160,6 +5355,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg6180 | Deuxième tâche" ;
+    :aSegment :pg6180_seg0,
+        :pg6180_seg1,
+        :pg6180_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4313,6 +5511,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (4)" ;
     :__protege_display_name "07 | pg6866 | Quatrième tâche (4)" ;
+    :aSegment :pg6866_seg0,
+        :pg6866_seg1,
+        :pg6866_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4464,6 +5665,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg7429 | Deuxième tâche" ;
+    :aSegment :pg7429_seg0,
+        :pg7429_seg1,
+        :pg7429_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p>Bravo !<br>Vous avez en effet entendu : <br><br><i>John's been given a guitar for his birthday. He's been
@@ -4514,6 +5718,7 @@
         owl:NamedIndividual ;
     rdfs:label "Troisième tâche" ;
     :__protege_display_name "02 | pg7576 | Troisième tâche" ;
+    :aSegment :pg7576_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux paires
         reconstituées que vous pouvez écouter. <br><br>1 It' s Paul's birthday. <br>B He is given a lot of presents.<br><br>Dans
         <i>He is given</i>, on a un présent à la voix passive (voix passive : BE + V au participe passé). Le sujet
@@ -4635,6 +5840,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche" ;
     :__protege_display_name "03 | pg7682 | Quatrième tâche" ;
+    :aSegment :pg7682_seg0,
+        :pg7682_seg1,
+        :pg7682_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4703,6 +5911,7 @@
         owl:NamedIndividual ;
     rdfs:label "Première tâche" ;
     :__protege_display_name "00 | pg8027 | Première tâche" ;
+    :aSegment :pg8027_seg0 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')">Effectivement. Voici les deux dialogues
         reconstitués que vous pouvez réécouter.<br><br>1 Why does Lucy have so many pills to take? <br>B She has been
         seen by the doctor for her allergy.<br><br>Dans <i>She has been seen</i>, on a un <a class="STY_lienDansZoneComt" href="javascript:parent.SCO_ouvrirDoc('doc28886','htm')"><i>present
@@ -4773,6 +5982,9 @@
         owl:NamedIndividual ;
     rdfs:label "Deuxième tâche" ;
     :__protege_display_name "01 | pg8400 | Deuxième tâche" ;
+    :aSegment :pg8400_seg0,
+        :pg8400_seg1,
+        :pg8400_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -4892,6 +6104,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (2)" ;
     :__protege_display_name "04 | pg910 | Quatrième tâche (2)" ;
+    :aSegment :pg910_seg0,
+        :pg910_seg1,
+        :pg910_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -5002,6 +6217,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche (3)" ;
     :__protege_display_name "05 | pg9414 | Quatrième tâche (3)" ;
+    :aSegment :pg9414_seg0,
+        :pg9414_seg1,
+        :pg9414_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -5095,6 +6313,9 @@
         owl:NamedIndividual ;
     rdfs:label "Quatrième tâche" ;
     :__protege_display_name "03 | pg9615 | Quatrième tâche" ;
+    :aSegment :pg9615_seg0,
+        :pg9615_seg1,
+        :pg9615_seg2 ;
     :commentaireSucces """<div id="divCmtSucces" onclick="SPE_clicDansBulle(event,'divCmtSucces')"><p> </p>
         <p> </p>
         <p> </p>
@@ -7318,6 +8539,10 @@
         :MacaoObject,
         :Module .
 
+:Champ a owl:Class ;
+    rdfs:subClassOf :MacaoContenu,
+        :MacaoObject .
+
 :Module a owl:Class ;
     rdfs:subClassOf :MacaoContenu,
         :MacaoObject .
@@ -7346,6 +8571,10 @@
         :MacaoContenu,
         :MacaoObject .
 
+:Segment a owl:Class ;
+    rdfs:subClassOf :MacaoContenu,
+        :MacaoObject .
+
 :Exercice a owl:Class ;
     rdfs:subClassOf :Activite,
         :MacaoContenu,
diff --git a/tetras_extraction/script/src/test.py b/tetras_extraction/script/src/test.py
index 68c1a8d..2227603 100644
--- a/tetras_extraction/script/src/test.py
+++ b/tetras_extraction/script/src/test.py
@@ -117,7 +117,32 @@ class TestObjectCount(unittest.TestCase):
                 ?subj :correct ?correct .
                 ?subj :html ?html .
                 }""",
-            (180, 106, 180 + 106),
+            # The minus values are to account for missed gaps in TAT activities
+            # (see warnings when running the extraction), which are caused
+            # by a known but tricky bug
+            (258 - 30, 161, 258 - 30 + 161),
+        )
+        # Segments TAT
+        self.assertCount(
+            """SELECT * WHERE {
+                ?subj a :Segment .
+
+                ?subj :index ?index .
+                ?subj :text ?text .
+                MINUS { ?subj a :Champ }
+                }""",
+            (28, 42, 28 + 42),
+        )
+        # Champs TAT
+        self.assertCount(
+            """SELECT * WHERE {
+                ?subj a :Champ ;
+                      a :Segment .
+
+                ?subj :index ?index .
+                ?subj :selection ?selection .
+                }""",
+            (16, 18, 16 + 18),
         )
 
     def assertCount(
-- 
GitLab


From c5616c6fd430480a1bc159f7b97206cc4713c540 Mon Sep 17 00:00:00 2001
From: Eliott Sammier <eliott.sammier@tetras-libre.fr>
Date: Wed, 21 Aug 2024 10:02:22 +0200
Subject: [PATCH 10/22] More CLI fixes

---
 mcli | 84 +++++++++++++++++++++++++++++++++++-------------------------
 1 file changed, 49 insertions(+), 35 deletions(-)

diff --git a/mcli b/mcli
index c9d2fde..bd32c4c 100755
--- a/mcli
+++ b/mcli
@@ -2,17 +2,23 @@
 
 # Default value for version env var
 if [[ -z "$VERSION" ]]; then
-    VERSION="each"
+    VERSION="macao_12"
 fi
 # First parameter overrides version if set
+version_regex='^(macao_12|macao_3|each|full)$'
 if [[ "$1" == "12" || "$1" == "3" ]]; then
     VERSION="macao_$1"
     shift
-elif [[ "$1" = "each" || "$1" = "full" ]]; then
+elif [[ "$1" =~ $version_regex ]]; then
     VERSION="$1"
     shift
 fi
 export VERSION
+if [[ ! "$VERSION" =~ $version_regex ]]; then
+    echo "Invalid version '$VERSION'"
+    exit 1
+fi
+
 # Special version value "each" is processed by calling the script itself once
 # for each actual version
 if [[ "$VERSION" = "each" && "$1" != "shell" && "$1" != "status" && "$1" != "setup" ]]; then
@@ -35,40 +41,47 @@ print_usage() {
     cat <<EOF
 Usage: $(basename "$0") [version] <command> [args]
 
-COMMANDS
+VERSION
+    Specifies which part of the MACAO repository to use: "macao_12", "macao_3"
+    (or simply "12" and "3"), "each" for both in separate result dirs
+    and "full" for both merged in a single result dir.
+    If not specified, uses the value of the "VERSION" environment variable,
+    or "12" by default. Some commands do not support every version.
 
-status
-    Print useful info about the current environment.
-shell [-p|--pyenv]
-    Open a shell with mcli's environment variables set, including PATH.
-    If -p or --pyenv is specified, also enter the Python virtual env.
-list-streams <file>
-    List audio streams in <file>
-count-streams [<file>]
-    Count audio streams in <file>, or from all SWF files if none is given
-index-extensions
-    Index all files by extension
-count-all [-f|--force]
-    Count many types of Macao objects.
-    If -f or --force is given, refresh indexes before counting (equivalent to count-streams and index-extensions)
-setup
-    Initialize Python environment required by extractors
-setup-debug
-    (Re)create .env file used by the Python debugger launch config
-extract
-    Run the extract stage, to generate RDF from text sources
-transform
-    Run the transform stage, to complete and clean-up the RDF data
-export
-    Run the export stage, to generate Macao-Hugo content pages
-convert
-    Run the full conversion process (extract -> transform -> export)
-test
-    Run simple tests on the extracted RDF data
-extract-mp3 [-y|--yes-overwrite]
-    Extract audio streams from all Flash SWF files
-help
-    Print this help and exit
+COMMANDS
+    status
+        Print useful info about the current environment.
+    shell [-p|--pyenv]
+        Open a shell with mcli's environment variables set, including PATH.
+        If -p or --pyenv is specified, also enter the Python virtual env.
+    list-streams <file>
+        List audio streams in <file>
+    count-streams [<file>]
+        Count audio streams in <file>, or from all SWF files if none is given
+    index-extensions
+        Index all files by extension
+    count-all [-f|--force]
+        Count many types of Macao objects.
+        If -f or --force is given, refresh indexes before counting (equivalent
+        to count-streams and index-extensions)
+    setup
+        Initialize Python environment required by extractors
+    setup-debug
+        (Re)create .env file used by the Python debugger launch config
+    extract
+        Run the extract stage, to generate RDF from text sources
+    transform
+        Run the transform stage, to complete and clean-up the RDF data
+    export
+        Run the export stage, to generate Macao-Hugo content pages
+    convert
+        Run the full conversion process (extract -> transform -> export)
+    test
+        Run simple tests on the extracted RDF data
+    extract-mp3 [-y|--yes-overwrite]
+        Extract audio streams from all Flash SWF files
+    help
+        Print this help and exit
 EOF
 }
 
@@ -131,6 +144,7 @@ index_extensions() {
     allfiles="$(find . -path '**/.idea' -prune -o -type f -print)"
     cd - || exit
     # List all extensions, then for each one, filter the index for files with this extension
+    # ( Perl expression courtesy of https://stackoverflow.com/a/1842270 )
     perl -ne 'print $1 if m/\.([^.\/]+)$/**//' <<<"$allfiles" | sort -u | while read -r ext; do
         echo "[$ext]" >>"$out_file"
         grep -E ".*\.$ext\$" <<<"$allfiles" | sort >>"$out_file"
-- 
GitLab


From 4c52443b5b8a3e621f94e865cc0c4bdc15f9db00 Mon Sep 17 00:00:00 2001
From: Eliott Sammier <eliott.sammier@tetras-libre.fr>
Date: Thu, 22 Aug 2024 13:07:03 +0200
Subject: [PATCH 11/22] Clean up unused function

---
 tetras_extraction/script/src/extract.py | 10 ----------
 1 file changed, 10 deletions(-)

diff --git a/tetras_extraction/script/src/extract.py b/tetras_extraction/script/src/extract.py
index f2f90ab..ff66cc0 100644
--- a/tetras_extraction/script/src/extract.py
+++ b/tetras_extraction/script/src/extract.py
@@ -1,5 +1,3 @@
-import filecmp
-
 from lxml import etree
 from rdflib import RDFS, Graph, Literal, URIRef
 from rdflib.namespace import OWL, RDF
@@ -146,14 +144,6 @@ def is_subsection(id: str):
     )
 
 
-def compare_files(f1: str, f2: str):
-    log.info(
-        "Files {} and {} {}.".format(
-            f1, f2, "are identical" if filecmp.cmp(f1, f2) else "differ"
-        )
-    )
-
-
 def main():
     g = create_graph()
 
-- 
GitLab


From 5a7d767c6a182903f39a10eab2842b93d8ded314 Mon Sep 17 00:00:00 2001
From: Anthony Geourjon <anthony.geourjon@tetras-libre.fr>
Date: Mon, 13 Jan 2025 17:16:07 +0100
Subject: [PATCH 12/22] Add element in macao_schema.ttl

---
 tetras_extraction/schemes/macao_schema.ttl | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/tetras_extraction/schemes/macao_schema.ttl b/tetras_extraction/schemes/macao_schema.ttl
index e77aacc..b430438 100644
--- a/tetras_extraction/schemes/macao_schema.ttl
+++ b/tetras_extraction/schemes/macao_schema.ttl
@@ -242,3 +242,19 @@
       :ExerciceTAT
     ) ;
 ].
+
+### Addition from Eliott
+
+###  http://www.semanticweb.org/eliott/ontologies/2024/4/macao/Reponse
+:Champ rdf:type owl:Class ;
+         rdfs:subClassOf :MacaoContenu .
+
+
+###  http://www.semanticweb.org/eliott/ontologies/2024/4/macao/Reponse
+:Reponse rdf:type owl:Class ;
+         rdfs:subClassOf :MacaoContenu .
+
+         ###  http://www.semanticweb.org/eliott/ontologies/2024/4/macao/aReponseIncorrecte
+:aSegment rdf:type owl:ObjectProperty ;
+          rdfs:domain :ExerciceTAT ;
+          rdfs:range :Segment .
-- 
GitLab


From 5557b79743d13cd61dd88a4592900ce93f4763bc Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Mon, 13 Jan 2025 19:46:20 +0100
Subject: [PATCH 13/22] add customFormat to qcm quiz

---
 tetras_extraction/script/templates/qcm.rq | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tetras_extraction/script/templates/qcm.rq b/tetras_extraction/script/templates/qcm.rq
index 671b42d..b2b356d 100644
--- a/tetras_extraction/script/templates/qcm.rq
+++ b/tetras_extraction/script/templates/qcm.rq
@@ -8,6 +8,7 @@ PREFIX st: <http://ns.inria.fr/sparql-template/>
 # Template for the JSON definition of QCM activities
 template mt:qcm(?qcm) {
 '"name": "quizQuestion"' mt:sep()
+'"customFormat": "hide_disabled-checkboxes"' mt:sep()
 '"type": "checkbox"' mt:sep()
 '"name": "' ?id '"' mt:sep()
 '"choices": ['
-- 
GitLab


From d5b07788f67a297db53d801cb1f361a4f67c7471 Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Mon, 13 Jan 2025 22:20:04 +0100
Subject: [PATCH 14/22] add index to choice URI to fix display order

---
 tetras_extraction/script/src/extract_page.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index 061a8a4..f119ea1 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -252,7 +252,7 @@ class ExerciceQC(Exercice):
     def save(self, graph: Graph):
         super().save(graph)
         for choice in self.choices.values():
-            choice_node = choice.save(graph, f"{self.id}_{choice.id}")
+            choice_node = choice.save(graph, f"{self.id}_{choice.index}_{choice.id}")
             graph.add((NS[self.id], NS["aReponse"], choice_node))
             # Our fake "class hierarchy" just for easier visualization
             graph.add((choice_node, RDFS.subClassOf, NS[self.id]))
-- 
GitLab


From 5f723d6c3375d7d5525653282d59e9c44daf5dcc Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Mon, 13 Jan 2025 22:45:34 +0100
Subject: [PATCH 15/22] allow TAT choice text html->md

---
 tetras_extraction/script/src/extract_page.py |  2 +-
 tetras_extraction/script/src/transform.py    | 14 +++++++++-----
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index f119ea1..23f85f1 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -335,7 +335,7 @@ class ExerciceTAT(Exercice):
             graph.add((segment_uri, RDF.type, NS["Segment"]))
             graph.add((segment_uri, NS["index"], Literal(index)))
             if isinstance(segment, str):
-                graph.add((segment_uri, NS["text"], Literal(segment)))
+                graph.add((segment_uri, NS["html"], Literal(segment)))
             else:
                 graph.add((segment_uri, RDF.type, NS["Champ"]))
                 segment.save(graph, rdf_name)
diff --git a/tetras_extraction/script/src/transform.py b/tetras_extraction/script/src/transform.py
index b3285bb..10ae8ff 100644
--- a/tetras_extraction/script/src/transform.py
+++ b/tetras_extraction/script/src/transform.py
@@ -118,11 +118,15 @@ def transform_html(graph: Graph):
     for prop in html_properties:
         for t in graph.triples((None, NS[prop], None))  :
             desc_str = prepareHTMLforMD(t[2])
-            tmp = tempfile.NamedTemporaryFile(suffix=".html")
-            with open(tmp.name, 'w') as f:
-                f.write(desc_str)
-            mid = MarkItDown()
-            desc_md = postEditMD(mid.convert(tmp.name).text_content)
+            if desc_str == '':
+                desc_md = ''
+            else:
+                tmp = tempfile.NamedTemporaryFile(suffix=".html")
+                with open(tmp.name, 'w') as f:
+                    f.write(desc_str)
+                mid = MarkItDown()
+                tmp_md = mid.convert(tmp.name).text_content
+                desc_md = postEditMD(tmp_md)
             l = list(t)
             l[2] = Literal(desc_md)
             l[1] = NS[prop+'_md']
-- 
GitLab


From efbfe7a6759d604a022fb5e6593ce456b9215180 Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Tue, 14 Jan 2025 10:07:03 +0100
Subject: [PATCH 16/22] comments and anchors

---
 tetras_extraction/script/src/transform.py     | 21 +++++++++++++++++++
 .../script/templates/activite.rq              |  5 ++---
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/tetras_extraction/script/src/transform.py b/tetras_extraction/script/src/transform.py
index 10ae8ff..bb0d8df 100644
--- a/tetras_extraction/script/src/transform.py
+++ b/tetras_extraction/script/src/transform.py
@@ -41,6 +41,16 @@ def prepareHTMLforMD(str):
     # Identify image content and add markups to identify them in the MD
     regexIMG = re.compile(r"<img.*?src=\"\.\./media/(.*?)\".*?>")
     str = regexIMG.sub(r"@IMAGESTART\1@IMAGEEND", str)
+    # Identify words supporting comments and add markups to identify them in the MD
+    regexANCHOR= re.compile(r"<a class=\"STY_lienComt\" href=\"javascript:CRS_afficherDetail\('(.)'\)\" onclick=\"enrPosClic\(event,'.'\)\">(.*?)</a>")
+    str = regexANCHOR.sub(r"@ANCHORSTART@\1@\2@ANCHOREND", str)
+    # Identify anchor words with related comment id and add markups to identify them in the MD
+    regexANCHOR= re.compile(r"<a class=\"STY_lienComt\" href=\"javascript:CRS_afficherDetail\('(.)'\)\" onclick=\"enrPosClic\(event,'.'\)\">(.*?)</a>")
+    str = regexANCHOR.sub(r"@ANCHORSTART@\1@\2@ANCHOREND", str)
+    # Identify comments ids  and add markups to identify them in the MD
+    regexCOMMENTID= re.compile(r"<div id=\"divCmt(.)\" onclick=\"SPE_clicDansBulle\(event,'.'\)\">")#(.*)</div>", re.MULTILINE)
+    str = regexCOMMENTID.sub(r"@COMMENTIDSTART@\1@COMMENTIDEND", str)
+
     return(str)
 
 
@@ -70,6 +80,17 @@ def postEditMD(str):
         str = str.replace(imageElt, imgHtml)
     ###################################################
 
+    ###################################################
+    # Add html code to MD for comment anchors
+    ###################################################
+    # First for the words supporting the comments
+    regexANCHOR = re.compile(r"@ANCHORSTART@(.)@(.*?)@ANCHOREND")
+    str = regexANCHOR.sub(r"<span commentaireInfoId='\1'>\2</span>", str)
+
+    # For the comments themselves it is done in activite.rq
+
+    ###################################################
+
     # Add html for images and fix media paths
     regexIMG = re.compile(r"!\[\]\(\.\./media/(.*?)\)")
     str = regexIMG.sub(r"<img src='/macao-hugo/media/\1'>", str)
diff --git a/tetras_extraction/script/templates/activite.rq b/tetras_extraction/script/templates/activite.rq
index ad2284f..c138254 100644
--- a/tetras_extraction/script/templates/activite.rq
+++ b/tetras_extraction/script/templates/activite.rq
@@ -15,10 +15,9 @@ template mt:activite(?act) {
 
     ?desc                                                                st:nl()
 
-    '<div class="commentaireInfoGroup">'                                 st:nl()
+    '<div class="commentaireInfoGroup" hidden="True">'                                 st:nl()
     group {
-        '<div class="commentaireInfo">'    st:nl()
-            ?info_comment
+            concat(replace(replace(?info_comment,'@COMMENTIDSTART@','<div class="commentaireInfo" id="'),'@COMMENTIDEND','">'),'</div>')
         '</div>'                           st:nl()
     }
     '</div>'                                                             st:nl()
-- 
GitLab


From df97fbf2d52d5ea5a2af76ad9a66479a45ebc76f Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Tue, 14 Jan 2025 10:29:15 +0100
Subject: [PATCH 17/22] fix comments and anchors

---
 tetras_extraction/script/src/transform.py      | 5 ++++-
 tetras_extraction/script/templates/activite.rq | 3 ++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/tetras_extraction/script/src/transform.py b/tetras_extraction/script/src/transform.py
index bb0d8df..460a099 100644
--- a/tetras_extraction/script/src/transform.py
+++ b/tetras_extraction/script/src/transform.py
@@ -87,7 +87,10 @@ def postEditMD(str):
     regexANCHOR = re.compile(r"@ANCHORSTART@(.)@(.*?)@ANCHOREND")
     str = regexANCHOR.sub(r"<span commentaireInfoId='\1'>\2</span>", str)
 
-    # For the comments themselves it is done in activite.rq
+    # For the comments themselves
+    if '@COMMENTIDSTART' in str :
+        str = str.replace('@COMMENTIDSTART@','<div class="commentaireInfo" id="').replace('@COMMENTIDEND','">') + '</div>'
+
 
     ###################################################
 
diff --git a/tetras_extraction/script/templates/activite.rq b/tetras_extraction/script/templates/activite.rq
index c138254..f84a948 100644
--- a/tetras_extraction/script/templates/activite.rq
+++ b/tetras_extraction/script/templates/activite.rq
@@ -17,7 +17,8 @@ template mt:activite(?act) {
 
     '<div class="commentaireInfoGroup" hidden="True">'                                 st:nl()
     group {
-            concat(replace(replace(?info_comment,'@COMMENTIDSTART@','<div class="commentaireInfo" id="'),'@COMMENTIDEND','">'),'</div>')
+        '<div class="commentaireInfo">'    st:nl()
+            ?info_comment
         '</div>'                           st:nl()
     }
     '</div>'                                                             st:nl()
-- 
GitLab


From 6afb3d99ddc3050af6991fc15f1fef1c5839fa5f Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Tue, 14 Jan 2025 17:08:25 +0100
Subject: [PATCH 18/22] fix comments

---
 tetras_extraction/script/src/extract_page.py   | 2 ++
 tetras_extraction/script/src/transform.py      | 4 ++--
 tetras_extraction/script/templates/activite.rq | 2 --
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tetras_extraction/script/src/extract_page.py b/tetras_extraction/script/src/extract_page.py
index 23f85f1..67e2216 100644
--- a/tetras_extraction/script/src/extract_page.py
+++ b/tetras_extraction/script/src/extract_page.py
@@ -334,6 +334,8 @@ class ExerciceTAT(Exercice):
             graph.add((NS[self.id], NS["aSegment"], segment_uri))
             graph.add((segment_uri, RDF.type, NS["Segment"]))
             graph.add((segment_uri, NS["index"], Literal(index)))
+            graph.add((segment_uri, RDFS.label, Literal(rdf_name)))
+
             if isinstance(segment, str):
                 graph.add((segment_uri, NS["html"], Literal(segment)))
             else:
diff --git a/tetras_extraction/script/src/transform.py b/tetras_extraction/script/src/transform.py
index 460a099..11cc963 100644
--- a/tetras_extraction/script/src/transform.py
+++ b/tetras_extraction/script/src/transform.py
@@ -85,11 +85,11 @@ def postEditMD(str):
     ###################################################
     # First for the words supporting the comments
     regexANCHOR = re.compile(r"@ANCHORSTART@(.)@(.*?)@ANCHOREND")
-    str = regexANCHOR.sub(r"<span commentaireInfoId='\1'>\2</span>", str)
+    str = regexANCHOR.sub(r"<span spanId='\1'>\2</span>", str)
 
     # For the comments themselves
     if '@COMMENTIDSTART' in str :
-        str = str.replace('@COMMENTIDSTART@','<div class="commentaireInfo" id="').replace('@COMMENTIDEND','">') + '</div>'
+        str = str.replace('@COMMENTIDSTART@','<div class="commentaireInfo" commentaireId="').replace('@COMMENTIDEND','">') + '</div>'
 
 
     ###################################################
diff --git a/tetras_extraction/script/templates/activite.rq b/tetras_extraction/script/templates/activite.rq
index f84a948..2d306b3 100644
--- a/tetras_extraction/script/templates/activite.rq
+++ b/tetras_extraction/script/templates/activite.rq
@@ -17,9 +17,7 @@ template mt:activite(?act) {
 
     '<div class="commentaireInfoGroup" hidden="True">'                                 st:nl()
     group {
-        '<div class="commentaireInfo">'    st:nl()
             ?info_comment
-        '</div>'                           st:nl()
     }
     '</div>'                                                             st:nl()
 
-- 
GitLab


From c73cd36697ccac5569a09d67e3d4a1b908d63205 Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Tue, 14 Jan 2025 17:39:21 +0100
Subject: [PATCH 19/22] hide titles in qcm and qcu

---
 tetras_extraction/script/templates/qcm.rq | 2 +-
 tetras_extraction/script/templates/qcu.rq | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/tetras_extraction/script/templates/qcm.rq b/tetras_extraction/script/templates/qcm.rq
index b2b356d..41e6a95 100644
--- a/tetras_extraction/script/templates/qcm.rq
+++ b/tetras_extraction/script/templates/qcm.rq
@@ -7,8 +7,8 @@ PREFIX st: <http://ns.inria.fr/sparql-template/>
 
 # Template for the JSON definition of QCM activities
 template mt:qcm(?qcm) {
-'"name": "quizQuestion"' mt:sep()
 '"customFormat": "hide_disabled-checkboxes"' mt:sep()
+'"titleLocation": "hidden"' mt:sep()
 '"type": "checkbox"' mt:sep()
 '"name": "' ?id '"' mt:sep()
 '"choices": ['
diff --git a/tetras_extraction/script/templates/qcu.rq b/tetras_extraction/script/templates/qcu.rq
index cdc12e7..62db9d0 100644
--- a/tetras_extraction/script/templates/qcu.rq
+++ b/tetras_extraction/script/templates/qcu.rq
@@ -5,6 +5,7 @@ PREFIX st: <http://ns.inria.fr/sparql-template/>
 # Template for the JSON definition of QCU activities
 template mt:qcu(?qcu) {
     '"name": "' ?id '"' mt:sep()
+    '"titleLocation": "hidden"' mt:sep()
     '"type": "radiogroup"' mt:sep()
     '"choices": ['
     box {
-- 
GitLab


From 6a38885f67c0bbd65bd1b56b6927a9a8955e7067 Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Wed, 15 Jan 2025 17:36:57 +0100
Subject: [PATCH 20/22] center images verticaly

---
 tetras_extraction/script/src/transform.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tetras_extraction/script/src/transform.py b/tetras_extraction/script/src/transform.py
index 11cc963..95e7913 100644
--- a/tetras_extraction/script/src/transform.py
+++ b/tetras_extraction/script/src/transform.py
@@ -76,7 +76,7 @@ def postEditMD(str):
     regexIMG = re.compile(r"@IMAGESTART.*?@IMAGEEND")
     for imageElt in regexIMG.findall(str):
         imgFilename = imageElt.replace("@IMAGESTART","").replace("@IMAGEEND","").replace(r"\_","_")
-        imgHtml = '<img src="/macao-hugo/media/'+imgFilename+'" id="'+imgFilename+'"/>'
+        imgHtml = '<img style="vertical-align:middle;" src="/macao-hugo/media/'+imgFilename+'" id="'+imgFilename+'"/>'
         str = str.replace(imageElt, imgHtml)
     ###################################################
 
-- 
GitLab


From 7855277bcc5e680759a20a02c181ebe50a0903a1 Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Wed, 15 Jan 2025 17:47:00 +0100
Subject: [PATCH 21/22] fix some comments

---
 tetras_extraction/script/src/transform.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tetras_extraction/script/src/transform.py b/tetras_extraction/script/src/transform.py
index 95e7913..2269bab 100644
--- a/tetras_extraction/script/src/transform.py
+++ b/tetras_extraction/script/src/transform.py
@@ -48,7 +48,7 @@ def prepareHTMLforMD(str):
     regexANCHOR= re.compile(r"<a class=\"STY_lienComt\" href=\"javascript:CRS_afficherDetail\('(.)'\)\" onclick=\"enrPosClic\(event,'.'\)\">(.*?)</a>")
     str = regexANCHOR.sub(r"@ANCHORSTART@\1@\2@ANCHOREND", str)
     # Identify comments ids  and add markups to identify them in the MD
-    regexCOMMENTID= re.compile(r"<div id=\"divCmt(.)\" onclick=\"SPE_clicDansBulle\(event,'.'\)\">")#(.*)</div>", re.MULTILINE)
+    regexCOMMENTID= re.compile(r"<div id=\"divCmt(.)\" onclick=\"SPE_clicDansBulle\(event,'.*?'\)\">")#(.*)</div>", re.MULTILINE)
     str = regexCOMMENTID.sub(r"@COMMENTIDSTART@\1@COMMENTIDEND", str)
 
     return(str)
-- 
GitLab


From b28f7da6d76e0707b055922f7ee3245d339cc1f4 Mon Sep 17 00:00:00 2001
From: daxid <david.rouquet@tetras-libre.fr>
Date: Tue, 4 Mar 2025 09:06:05 +0100
Subject: [PATCH 22/22] add media replacement script

---
 .../script/replaceStaticMediaFiles.sh         | 43 +++++++++++++++++++
 1 file changed, 43 insertions(+)
 create mode 100644 tetras_extraction/script/replaceStaticMediaFiles.sh

diff --git a/tetras_extraction/script/replaceStaticMediaFiles.sh b/tetras_extraction/script/replaceStaticMediaFiles.sh
new file mode 100644
index 0000000..b36a853
--- /dev/null
+++ b/tetras_extraction/script/replaceStaticMediaFiles.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+# Check if the correct number of arguments is provided
+if [ "$#" -ne 2 ]; then
+    echo "Usage: $0 <in_folder> <out_folder>"
+    exit 1
+fi
+
+IN_FOLDER="$1"
+OUT_FOLDER="$2"
+
+# Check if the input and output folders exist
+if [ ! -d "$IN_FOLDER" ]; then
+    echo "Input folder does not exist: $IN_FOLDER"
+    exit 1
+fi
+
+if [ ! -d "$OUT_FOLDER" ]; then
+    echo "Output folder does not exist: $OUT_FOLDER"
+    exit 1
+fi
+
+# Iterate over each file in the input folder
+for IN_FILE in "$IN_FOLDER"/*; do
+    # Extract the base name of the file (without extension)
+    BASE_NAME=$(basename "$IN_FILE")
+    BASE_NAME="${BASE_NAME%.*}"
+
+    # Search for a file with the same base name in the output folder and its subfolders
+    OUT_FILE=$(find "$OUT_FOLDER" -type f -name "${BASE_NAME}.*")
+
+    if [ -n "$OUT_FILE" ]; then
+        # Extract the extension of the output file
+        OUT_EXT="${OUT_FILE##*.}"
+
+        # Convert the input file to the same format as the output file
+        magick "$IN_FILE" "${OUT_FILE%.*}.$OUT_EXT"
+
+        echo "Replaced $OUT_FILE with converted $IN_FILE"
+    else
+        echo "No matching file found in output folder for $BASE_NAME"
+    fi
+done
-- 
GitLab