FESAPI example PropertyKind not found/validated by EPC RESQMLV2.0.1 Editor

Hi :slight_smile: ,

I am currently implementing the the property export of an IJK grid. The visualization is good now, I can export any type of faulted IJK grid.

As for the properties, I begun by copying Fesapi example:

EML2_NS::PropertyKind* propType = m_gridRepo->createPropertyKind("0a5f4400-fa3e-11e5-80a4-0002a5d5c51b", "cellIndex", gsoap_eml2_1::eml21__QuantityClassKind__not_x0020a_x0020measure);

RESQML2_NS::DiscreteProperty* discreteProp = m_gridRepo->createDiscreteProperty(m_gridIJK, "4a305182-221e-4205-9e7c-a36b06fa5b3d", "test_prop", 1, gsoap_eml2_3::resqml22__IndexableElement__cells, propType);

std::vector<unsigned short> propValuesshort = { 0, 1 };

discreteProp->pushBackUShortHdf5Array3dOfValues(propValuesshort.data(), grid_dimensions.P1, grid_dimensions.P2, grid_dimensions.P3, m_gridHDFProxy, 1111);

RESQML2_NS::PropertySet* propSet = m_gridRepo->createPropertySet("62245eb4-dbf4-4871-97de-de9e4f4597be", "Testing property set", false, true, gsoap_eml2_3::resqml22__TimeSetKind__not_x0020a_x0020time_x0020set);
    	propSet->pushBackProperty(discreteProp);
m_gridHDFProxy->close();
m_gridEpc->serializeFrom(*m_gridRepo);

with

grid_dimensions = {2,1,1}
resqml2::IjkGridExplicitRepresentation* m_gridIJK;
common::DataObjectRepository* m_gridRepo;
eml2::AbstractHdfProxy* m_gridHDFProxy;

But when I tried to open my file, the EPC Validator-Editor returns an error message :

image

Without the property, my RESQML export is working fine, I can visualize the grid and the data of the EPC corresponds to what I expected.

Link to my EPC and H5 files : https://we.tl/t-pICj9QORVs

I would be really grateful if you could tell me what did I miss :slight_smile:

Hi Morgane,

FESAPI can support multiple versions of standard (RESQML2.0 with RESML2.2 in a same EPC document for example). Most of readers cannot do that today and I am pretty sure the Geosiris EPC Package validator neither… It looks to be the reason of the problem you are facing.

Indeed, in the FESAPI example (it might not be a good idea), the created property kind is a new version one i.e. an EML2.1 where RESQML2.0 is supposed to more likely work with EML2.0. This is cause of the constructor used for the property kind in the FESAPI example and in your code.

Please simply use another constructor for your PropertyKind construction which would write an EML2.0 (or RESQML2.0.1) PropertyKind (not a later version).
I advise you to use this one please which looks to be the most common one as a start :

DLL_IMPORT_OR_EXPORT RESQML2_0_1_NS::PropertyKind* createPropertyKind(const std::string & guid, const std::string & title,
const std::string & namingSystem, gsoap_resqml2_0_1::resqml20__ResqmlUom uom, gsoap_resqml2_0_1::resqml20__ResqmlPropertyKind parentEnergisticsPropertyKind);

where :

  • uom would be set to “Euc” if there is no uom
  • parentEnergisticsPropertyKind set to discrete (or continuous or categorical) according to the associated properties.

Thanks Philippe for the answer.

It is now working with RESQMLv2.0.1 properties.