private function initDataItemEncoderMap()
 {
     $lang = '';
     $xsdValueMapper = new XsdValueMapper();
     $this->registerDataItemEncoder(DataItem::TYPE_NUMBER, function ($dataItem) use($lang, $xsdValueMapper) {
         $xsdValueMapper->process($dataItem);
         return new ExpLiteral($xsdValueMapper->getXsdValue(), $xsdValueMapper->getXsdType(), $lang, $dataItem);
     });
     $this->registerDataItemEncoder(DataItem::TYPE_BLOB, function ($dataItem) use($lang, $xsdValueMapper) {
         $xsdValueMapper->process($dataItem);
         return new ExpLiteral($xsdValueMapper->getXsdValue(), $xsdValueMapper->getXsdType(), $lang, $dataItem);
     });
     $this->registerDataItemEncoder(DataItem::TYPE_BOOLEAN, function ($dataItem) use($lang, $xsdValueMapper) {
         $xsdValueMapper->process($dataItem);
         return new ExpLiteral($xsdValueMapper->getXsdValue(), $xsdValueMapper->getXsdType(), $lang, $dataItem);
     });
     $this->registerDataItemEncoder(DataItem::TYPE_URI, function ($dataItem) {
         return new ExpResource($dataItem->getURI(), $dataItem);
     });
     $this->registerDataItemEncoder(DataItem::TYPE_TIME, function ($dataItem) use($lang, $xsdValueMapper) {
         $gregorianTime = $dataItem->getForCalendarModel(DITime::CM_GREGORIAN);
         $xsdValueMapper->process($gregorianTime);
         return new ExpLiteral($xsdValueMapper->getXsdValue(), $xsdValueMapper->getXsdType(), $lang, $gregorianTime);
     });
     $this->registerDataItemEncoder(DataItem::TYPE_CONTAINER, function ($dataItem) {
         return Exporter::getInstance()->makeExportData($dataItem->getSemanticData());
     });
     $this->registerDataItemEncoder(DataItem::TYPE_WIKIPAGE, function ($dataItem) {
         return Exporter::getInstance()->getResourceElementForWikiPage($dataItem);
     });
     $this->registerDataItemEncoder(DataItem::TYPE_PROPERTY, function ($dataItem) {
         return Exporter::getInstance()->getResourceElementForProperty($dataItem);
     });
     // Not implemented
     $this->registerDataItemEncoder(DataItem::TYPE_GEO, function ($dataItem) {
         return null;
     });
     // Not implemented
     $this->registerDataItemEncoder(DataItem::TYPE_CONCEPT, function ($dataItem) {
         return null;
     });
 }
 /**
  * @dataProvider unsupportedDataItemProvider
  */
 public function testTryToMatchUnsupportedTypeThrowsException($dataItem)
 {
     $instance = new XsdValueMapper();
     $this->setExpectedException('RuntimeException');
     $instance->process($dataItem);
 }