<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
  This file is part of the Dutch Taxonomy (Nederlandse Taxonomie; NT)
  Intellectual Property of the State of the Netherlands
  Architecture: NT18
  Version: 20240221.a
  Release date: Aug 11, 2023
-->
<link:linkbase xmlns:gen="http://xbrl.org/2008/generic" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:msg="http://xbrl.org/2010/message" xmlns:xff="http://www.xbrl.org/2010/function/formula" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xbrl.org/2008/generic http://www.xbrl.org/2008/generic-link.xsd http://xbrl.org/2010/message http://www.xbrl.org/2010/generic-message.xsd">
  <link:roleRef roleURI="http://www.xbrl.org/2010/role/message" xlink:href="http://www.xbrl.org/2010/generic-message.xsd#standard-message" xlink:type="simple"/>
  <link:roleRef roleURI="urn:ocw:linkrole:control-number-disclosure-education" xlink:href="../dictionary/ocw-linkroles-education.xsd#ocw-lr-o_ControlNumberDisclosureEducation" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:href="http://www.xbrl.org/2010/validation-message.xsd#assertion-unsatisfied-message" xlink:type="simple"/>
  <gen:link xlink:role="urn:ocw:linkrole:control-number-disclosure-education" xlink:type="extended">
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU1_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU1_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU2_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU2_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU3_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU3_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU4_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU4_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU5_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU5_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU1_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU1_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU2_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU2_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU3_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU3_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU4_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU4_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <gen:arc order="1" xlink:arcrole="http://xbrl.org/arcrole/2010/assertion-unsatisfied-message" xlink:from="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU5_loc" xlink:to="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU5_assertion-unsatisfied-message_EN" xlink:type="arc"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU1" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU1_loc" xlink:type="locator"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU2" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU2_loc" xlink:type="locator"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU3" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU3_loc" xlink:type="locator"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU4" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU4_loc" xlink:type="locator"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU5" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU5_loc" xlink:type="locator"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU1" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU1_loc" xlink:type="locator"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU2" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU2_loc" xlink:type="locator"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU3" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU3_loc" xlink:type="locator"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU4" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU4_loc" xlink:type="locator"/>
    <link:loc xlink:href="ocw-control-number-disclosure-education-for.xml#valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU5" xlink:label="valueAssertion_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU5_loc" xlink:type="locator"/>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU3_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU3_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberAmortisationDepreciationDisclosure` MUST exist at least once, because the reported value of `ControlNumberAmortisationDepreciation` is greater than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU3_ControlNumberAmortisationDepreciation')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU3_ControlNumberAmortisationDepreciation return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU3_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU3_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberAmortisationDepreciationDisclosure` MUST exist at least once, because the reported value of `ControlNumberAmortisationDepreciation` is lower than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU3_ControlNumberAmortisationDepreciation')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU3_ControlNumberAmortisationDepreciation return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU1_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU1_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberBalanceDisclosure` MUST exist at least once, because the reported value of `ControlNumberBalance` is greater than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU1_ControlNumberBalance')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU1_ControlNumberBalance return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU4_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU4_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberBalanceDisclosure` MUST exist at least once, because the reported value of `ControlNumberBalance` is lower than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU4_ControlNumberBalance')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU4_ControlNumberBalance return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU2_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU2_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberCashDisclosure` MUST exist at least once, because the reported value of `ControlNumberCash` is greater than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU2_ControlNumberCash')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU2_ControlNumberCash return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU1_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU1_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberCashDisclosure` MUST exist at least once, because the reported value of `ControlNumberCash` is lower than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU1_ControlNumberCash')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU1_ControlNumberCash return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU5_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU5_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberResultAfterTaxDisclosure` MUST exist at least once, because the reported value of `ControlNumberResultAfterTax` is greater than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU5_ControlNumberResultAfterTax')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU5_ControlNumberResultAfterTax return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU5_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU5_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberResultAfterTaxDisclosure` MUST exist at least once, because the reported value of `ControlNumberResultAfterTax` is lower than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU5_ControlNumberResultAfterTax')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU5_ControlNumberResultAfterTax return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU4_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU4_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberShareInAssetsDisclosure` MUST exist at least once, because the reported value of `ControlNumberShareInAssets` is greater than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU4_ControlNumberShareInAssets')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericGTConstantThnExistenceCovPU4_ControlNumberShareInAssets return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
    <msg:message id="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU2_assertion-unsatisfied-message_EN" xlink:label="ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU2_assertion-unsatisfied-message_EN" xlink:role="http://www.xbrl.org/2010/role/message" xlink:type="resource" xml:lang="en">`ControlNumberShareInAssetsDisclosure` MUST exist at least once, because the reported value of `ControlNumberShareInAssets` is lower than 0. | {if (not(xff:has-fallback-value(xs:QName('varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU2_ControlNumberShareInAssets')))) then ((for $v in $varArc_ControlNumberDisclosureEducation_PrtNumericLTConstantThnExistenceCovPU2_ControlNumberShareInAssets return concat("name:'",$v/name(),"', value:'",$v,"', @contextRef:'",$v/@contextRef,"', @unitRef:'",$v/@unitRef,"' | "))) else ''}</msg:message>
  </gen:link>
</link:linkbase>
