OSDU Software issueshttps://community.opengroup.org/groups/osdu/-/issues2023-12-24T04:07:10Zhttps://community.opengroup.org/osdu/platform/pre-shipping/-/issues/500M18 - Data authorization issue for Update/Patch operation2023-12-24T04:07:10ZDadong ZhouM18 - Data authorization issue for Update/Patch operationThis is related to the issue reported in Storage repo: https://community.opengroup.org/osdu/platform/system/storage/-/issues/174.
Added tests in the pre-shipping policy service postman collection. We are having the following issues:
(1...This is related to the issue reported in Storage repo: https://community.opengroup.org/osdu/platform/system/storage/-/issues/174.
Added tests in the pre-shipping policy service postman collection. We are having the following issues:
(1) For Storage Update api and the old Patch api (`updateRecordsMetadata` api): When the Storage service sends data authorization requests for Update/Patch operation to the Policy service, only the new data record header info (ACLs and LegalTags) are sent to the Policy service and the existing data record header info are not included in the request. So the user will be able to update/patch a data record (based on the new ACLS/LegalTags) when the user should have no permission to update/patch (based on the existing record ACLS/LegalTags).
(2) For the new Patch api (`patchRecords` api introduced in M17): the behavior is opposite to (1). When the Storage service sends data authorization requests for the new Patch operation to the Policy service, only the existing data record header info (ACLs and LegalTags) are sent to the Policy service and the new data record header info are not included in the request. So the user will be able to patch a data record (based on the existing ACLS/LegalTags) with the new ACLs/LegalTags which the user should have no permission to use.https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/reservoir/open-etp-server/-/issues/95Import a file to a nonexistent dataspace causes segment fault2023-12-22T12:53:17ZGilson MartinsImport a file to a nonexistent dataspace causes segment faultTrying to import any file to a dataspace that does not exist causes a segment fault.Trying to import any file to a dataspace that does not exist causes a segment fault.Gilson MartinsGilson Martinshttps://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/62Static code analysis for python libraries2023-12-22T09:43:26ZArturo Hernandez [EPAM]Static code analysis for python librariesWe need to adopt this community ADR in our pipeline
https://community.opengroup.org/osdu/platform/system/sdks/common-python-sdk/-/issues/15#note_227939
Eventually passing this to devs to fix static analysis code findingsWe need to adopt this community ADR in our pipeline
https://community.opengroup.org/osdu/platform/system/sdks/common-python-sdk/-/issues/15#note_227939
Eventually passing this to devs to fix static analysis code findingsArturo Hernandez [EPAM]Arturo Hernandez [EPAM]https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/312[SCAL] - Update NumberOfElectrodes reference-data2023-12-21T16:07:39ZMichael Jones[SCAL] - Update NumberOfElectrodes reference-data"3_Electrodes" needs to be changed to "4_Electrodes""3_Electrodes" needs to be changed to "4_Electrodes"M22 - Release 0.25Ernesto GutierrezErnesto Gutierrezhttps://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/295[SCAL] - Relative Permeability Schema Updates2023-12-21T16:07:30ZMykhailo Buriak[SCAL] - Relative Permeability Schema UpdatesSuggested schema with updates
<details><summary>Click to expand</summary>
```json
{
"SamplesAnalysisID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:work-product-component\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[...Suggested schema with updates
<details><summary>Click to expand</summary>
```json
{
"SamplesAnalysisID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:work-product-component\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"SampleID": {
"type": "string",
"pattern": "^[\\w-.]+:master-data-Samples:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DesaturationMethod": {
"type": "string",
"description": "method of desaturation, e.g. centrifuge gas-water, centrifuge oil-water, flood-gas, pore pressure gas-water, etc",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DesaturationMethod:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"TestTemperature": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"Porosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"PorosityType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-PorosityMeasuermentType:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"InitialConditions": {
"type": "object",
"properties": {
"EffectivePermeability": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"PermeabilityMeasurementType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-PermeabilityMeasurementType:[\w\-\.\:\%]+:[0-9]$"
},
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
},
"RelativePermeability": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"PermeabilityMeasurementType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-PermeabilityMeasurementType:[\w\-\.\:\%]+:[0-9]$"
},
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
},
"Saturation": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
},
"SaturationType": {
"type": "string",
"Description": "Identifies the area of focus for this saturation measurement, e.g. 'End Face' or 'Average'",
"pattern": "^[\w\-\.]+:reference-data\-\-SaturationType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
},
"LastFlowRate": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
}
}
},
"TerminalConditions": {
"type": "object",
"properties": {
"EffectivePermeability": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"PermeabilityMeasurementType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-PermeabilityMeasurementType:[\w\-\.\:\%]+:[0-9]$"
},
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
},
"RelativePermeability": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"PermeabilityMeasurementType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-PermeabilityMeasurementType:[\w\-\.\:\%]+:[0-9]$"
},
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
},
"Saturation": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
},
"SaturationType": {
"type": "string",
"Description": "Identifies the area of focus for this saturation measurement, e.g. 'End Face' or 'Average'",
"pattern": "^[\w\-\.]+:reference-data\-\-SaturationType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
}
}
},
"RelativePermeabilityCrossover": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"EndFaceSaturationCrossover": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"ReferencePermeability": {
"type": "object",
"description": "e.g. gas permeability kg, gas permeability at minimum liquid saturation kg@Slmin, oil permeability ko, water permeability kw, etc",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"Type": {
"pattern": "^[\w\-\.]+:reference-data\-\-PermeabilityMeasurementType:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"SaturationProcessMethod": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-SaturationProcessMethod:[\w\-\.\:\%]+:[0-9]$"
},
"InterfacialTension": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"BrineSalinity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"OilViscosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"GasViscosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"WaterViscosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"OilDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"GasDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"WaterDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"FluidSystemType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-FluidSystemType:[\w\-\.\:\%]+:[0-9]$"
},
"PermeabilityTestSteps": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"NetConfiningStress": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"DeltaP": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"InjectionRate": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
},
"CumulativeProduction": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacedFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
},
"EffectivePermeability": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"PermeabilityMeasurementType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-PermeabilityMeasurementType:[\w\-\.\:\%]+:[0-9]$"
},
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
},
"RelativePermeability": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"PermeabilityMeasurementType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-PermeabilityMeasurementType:[\w\-\.\:\%]+:[0-9]$"
},
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
},
"Saturation": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
},
"FluidType": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-DisplacingFluidType:[\w\-\.\:\%]+:[0-9]$"
},
"WettabilityPhase": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-WettabilityPhaseType:[\w\-\.\:\%]+:[0-9]$"
},
"SaturationType": {
"type": "string",
"Description": "Identifies the area of focus for this saturation measurement, e.g. 'End Face' or 'Average'",
"pattern": "^[\w\-\.]+:reference-data\-\-SaturationType:[\w\-\.\:\%]+:[0-9]$"
}
}
}
]
}
}
}
]
}
}
```
</details>
---
**Review Observations - IMB Rel Perm :**
* _Min So w (avg)_ - current in the schema we have InitialWaterSaturation is that the same OR we should have a separate one to capture MinimumWaterSaturation? @michael_jones_epam thoughts? **Not the same as Initial Water Saturation**
* krw @ min So, w = relative permeability to water, should it be covered as a separate attribute or within Permeability array. @michael_jones_epam thoughts? Can it be considered as permeability measurement type?
* **Rel Perm is different from Perm - we can probably build a separate array for it**
* Flow rate should be added to PermeabilityTestSteps
* Saturation Crossover should be added to schema as a numeric
* Net confining stress should be added as to PermeabilityTestSteps
* **NCS is a single value, can be in the main level of the schema as a PermeabilityMeasurementType**
* Swi, Sgi and Soi - stand for Initial Water Saturation, Initial Gas Saturation and Initial Oil Saturation. @michael_jones_epam
* **All 3 can be captured, but there's only those 3. I modeled 3 separate objects in cap pressure.**
* k oil @ swi and k gas @ swi stand for - **Effective** permeability to oil at the Initial Water Saturation (Swi) and **Effective** permeability to gas at Swi.
* @michael_jones_epam looks like we need to introduce standalone attributes for these two. **Agree**
\*\*Review Observations - Trap. Gas-IMB Rel Perm \*\*
* Following attributes are depicted
* Sgt w = avg trapped gas saturation after water flood
* krw @ tg saturation = relative permeability to water at gas trapping saturation
* Sgt o = trapped gas saturation after oilflood
* kro @ tg saturation **=** relative permeability to oil at oil trapping saturation
* @michael_jones_epam my educated guess would be to add an object where we can capture these attributes and call it something like: TrappingGasRelativePermeability **These include saturations; I feel like that name would be a little misleading. We can ask the question, but I think they would just sit in the main level with the other initial/final values.**
\*\*Review Observations - DRN (Drainage) Relative Permeability \*\*
* Min S liq = _Minimum liquid saturation should be added as stand alone attribute to schema_
* krg @ min S liq = _Relative permeability to gas at minimum liquid saturation should be covered within Permeability array and have this added to PermeabilityMeasurementTypereference list_
* Min Sw = _Minimum water saturation, already asked question above, depends on answer_
* kro @ min Sw = _Relative permeability to oil at minimum water saturation should be covered within Permeability array and have this added to PermeabilityMeasurementTypereference list_
* kr crossover = _RelativePermeabilityCrossover should be added to schema_
* Swi = Initial water saturation. _Either have an object + type for initial saturation or capture as stand alone attribute._
* Sgi = Initial gas saturation. _Either have an object + type for initial saturation or capture as stand alone attribute._
* Soi = _Introduce new attribute InitialOilSaturation_
* k oi @ Swi = effective _permeability to oil at initial water saturation should be covered within Permeability array and have this added to PermeabilityMeasurementTypereference list_
* **This could be added to Perm array, though it's so specific it may just be easier to have a standalone 'EffectivePermeabilityToOil" attribute**
* k gas @ Swi = effective _permeability to gas at initial water saturation should be covered within Permeability array and have this added to PermeabilityMeasurementTypereference list,_
* **This could be added to Perm array, though it's so specific it may just be easier to have a standalone 'EffectivePermeabilityToGas" attribute**
**Review observations - Schema Tab**
* ReferencePermeability reference list with the following values should be introduced to the schema
* **I don't think ReferencePermeability needs to be a reference value list. But we do need a way to consolidate all these types of _relative_ permeability. I'm just not fully clear on what the values would be. Gas, Oil, Water, certainly, but the minimums and initial saturation values start to get really specific. We should ask about this**
* Permeability to Gas (kg)
* Permeability to gas at minimum liquid saturation (kg@Slmin)
* Permeability to gas at initial oil saturation (kg@Soi)
* Permeability to gas at initial water saturation (kg@Swi)
* Klinkenberg Absolute Gas Permeability (kinf)
* Permeability to oil (ko)
* Permeability to oil at initial water saturation (ko@Swi)
* Permeability to water (kw)
* None
* Metadata
* Test NCS - \_<span dir="">\~\~</span>add NetConfinigStress object (Value + UOM) to schema <span dir="">\~\~</span>\_
* Core Wettability State -
* Drying Method - _looks like a Sample property and shouldn't be in the content schema BUT is Sample master object is prepared for it?_ @michael_jones_epam **This is in SamplePreparation**
* Cleaning Method - _looks like a Sample property and shouldn't be in the content schema BUT is Sample master object is prepared for it?_ @michael_jones_epam **This is in SamplePreparation**
* Desaturation Method - _the question was raised in Electrical properties ticket update, the way we will handle it depends on the answer._ **We need to clarify this. The reference values are Centrifuge, Porous Plate, and Core Flood, which at least the first two are SampleAnalysisType values.**
* ~~Test Temperature = TestTemperature is already in the schema~~ change to 'Temperature'
* Test Pressure - I thought it is the same but looks like we need to add a standalone object to capture this one. Object Value+UOM **Can just be 'Pressure.'**
* Displacing Fluid - looks like we need a stand alone attribute for this one. Object - Value +UOM
* **This is in the test steps array in cap pressure - would we want to stay consistent here?**
* ~~Produced~~ Displaced Fluid - looks like we need a stand alone attribute. Object - Value + UOM
* **This is in the test steps array in cap pressure - would we want to stay consistent here?**
* Lab Test IFT (Interfacial Tension) - stand alone object: Value+UOM
* Lab Brine Salinity - stand alone object: Value+UOM
* Lab Oil Viscosity - stand alone object: Value+UOM
* Lab Water Viscosity - stand alone object: Value+UOM
* Lab Gas Viscosity - stand alone object: Value + UOM
* Lab Oil Density - stand alone object: Value + UOM
* Lab Water Density - stand alone object: Value + UOM
* Lab Gas Density - stand alone object: Value + UOM
**End Points**
* After a research looks like End Points represent specific points on a relative permeability curve. @michael_jones_epam based on your notes I make the following assumptions.
* **Assumption n1:** Introduce an array called like: EndPoints OR RelativePermeabilityCurveDescription (like described on your notes) with a structure:
* Initial Saturation = Value+UOM+Type
* Initial Relative Permeability = Value + UOM + Type
* Terminal Conditions
* End Saturation = Value+UOM+Type
* End Relative Permeability = Value+UOM+Type
* **Assumption n2:** Leave it to application to map the end points and build the graph and map relevant attributes, if we get back to previous sections we are still storing all these values in stand alone attributes/other nested structures so what's the value of having values duplicated in endpoints structure?
**Review observations - HH Tab**
@michael_jones_epam following attributes were not mentioned in the sections/tab before. I am slightly confused, probably if we go with Assumption n1 then we probably should extend it with something like _Remaining Conditions_ and _Ongoing Conditions OR_ we can capture all these as stand alone attributes
* **Swirr -** _irreducible water saturation during gas-oil drainage. Looks like Value + UOM_
* **So,remain (gas-oil 1o drainage) (frac PV) -** remaining oil saturation after gas-oil drainage. Looks like value + UOM
* **Sw,remain (gas-oil 1o drainage) (frac PV) -** remaining water saturation after gas-oil drainage. _Looks like Value + UOM_
* **kg\[So,remain(gas-oil 1o drainage)\] (mD) -** _relative permeability to gas at the remaining oil saturation after gas-oil drainage. Should we add as a another PermeabilityMeasurementType?_
* **krg\[So,remain(gas-oil 1o drainage)\] \[frac ko(Swirr)\] -** _normalized relative permeability to gas at the remaining oil saturation after gas-oil drainage. Looks like Value + UOM_
* **Sw,remain (gas-oil 1o imbibition) (frac PV) -** remaining water saturation after gas-oil imbibition Looks like Value + UOM. _Side note: Maybe SaturationMeasurementType with all these different types will be helpful here?_
* **ko\[Sgt,o(gas-oil 1o imbibition)\] (mD)** - relative permeability to oil at the trapping saturation of oil during gas-oil imbibition. _Should we add as a another PermeabilityMeasurementType?_
**Steady State Tab**
@michael_jones_epam after review of the table looks like we can introduce two arrays: PrimaryDrainageTestSteps and PrimaryImbibitionTestSteps with the following attributes: **We can likely reduce to one array and use SaturationProcessType as an attribute with 'DrainageTwoPhase' and 'PrimaryImbibition' values for respective elements**
* **fg** = Flowing fraction of non-wetting phase, not sure about naming convention :disappointed:
* **qg** (cc/min) = GasFlowRate. Value+UOM
* **qo** (cc/min) = OilFlowRate. Value+UOM
* **P** (psi) = Pressure. Value+UOM+PressureMeasurementType
* **Sg** (PV) = GasSaturationOfPoreVolume. Value+UOM (and maybe Saturation Type/Saturation Measurment type)
* **So** (PV) = OilSaturationOfPoreVolume. Value+UOM (and maybe Saturation Type/Saturation Measurment type)
* **Sw** (PV) = WaterSaturationOfPoreVolume. Value+UOM (and maybe Saturation Type/Saturation Measurment type)
* **Permeability** = Value + UOM + PermabilityMeasurementType
**Review Observations - Centrifuge Kr tab**
* If centrifuge is a method then I don't think we should introduce a dedicated nested structure for it
* Almost all values are identified on previous tabs except the following
* Sw Face - can't come up with the name but stands for water saturation measured at the face of the core
* **EndFaceWaterSaturation**
* Swn Face - mentioned in the notes that not needed
* Kro Corrected - adjusted relative permeability to oil or just relative permeability to oil?
**Review Observations - Centrifuge kro-IMB tab (last one)**
* All attributes are covered in previous sections
**Conclusion - Assumed structure**
* RelativePermeabilityTestDescription = EndPoints- = TestSummary
* PrimaryDrainageTestSteps **Note comment in SteadyState Tab above on consolidating**
* PrimaryImbibitionTestStepsM22 - Release 0.25Carlos ColinCarlos Colinhttps://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/302[SCAL] - Update RCA content schema2023-12-21T16:07:23ZMykhailo Buriak[SCAL] - Update RCA content schemaSchema with below additions:
<details><summary>Click to expand</summary>
```JSON
{
"$id": "RoutineCoreAnalysis.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"definitions": {
"Con...Schema with below additions:
<details><summary>Click to expand</summary>
```JSON
{
"$id": "RoutineCoreAnalysis.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"definitions": {
"Conditions": {
"type": "object",
"properties": {
"Pressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-PressureMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"additionalProperties": false
},
"Temperature": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
},
"properties": {
"SamplesAnalysisID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:work-product-component\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"SampleID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:master-data\\-\\-Sample:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"TestSteps": {
"type":"array",
"items": {
"NetConfiningStress": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"additionalProperties": false
},
"Permeability": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-PermeabilityMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Orientation": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-SampleOrientationType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Conditions": {
"$ref": "#/definitions/Conditions"
}
},
"additionalProperties": false
},
"Porosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-PorosityMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Orientation": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-SampleOrientationType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Conditions": {
"$ref": "#/definitions/Conditions"
}
},
"additionalProperties": false
},
"GrainDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-GrainDensityMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Conditions": {
"$ref": "#/definitions/Conditions"
}
},
"additionalProperties": false
},
"GrainVolume": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Conditions": {
"$ref": "#/definitions/Conditions"
}
},
"additionalProperties": false
},
"PoreVolume": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Conditions": {
"$ref": "#/definitions/Conditions"
}
},
"additionalProperties": false
},
"Saturation": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Type": {
"type": "string"
},
"Method": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-SaturationMethodType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"Conditions": {
"$ref": "#/definitions/Conditions"
}
},
"additionalProperties": false
},
"LithologyDescription": {
"type": "string"
},
"Remarks": {
"type": "string"
}
},
"additionalProperties": false
},
"required": [
"SamplesAnalysisID",
"SampleID"
]
}
}
```
</details>
* Add NetConfiningStress to TestSteps array of objects to RCA content schema
NetConfiningStress - objectname
Object
* Value
* UnitOfMeasure
---
* Add PoreVolume to TestSteps array of objects to RCA content schema
PoreVolume - object name
Object
* Value
* UnitOfMeasure
---
* Add GrainVolume to TestSteps array of objects to RCA content schema
GrainVolume - object name
Object
* Value
* UnitOfMeasureM22 - Release 0.25Ernesto GutierrezErnesto Gutierrezhttps://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/300Support new master data from the Unified Sample Model2023-12-21T16:06:39ZBryan DawsonSupport new master data from the Unified Sample ModelThe data definitions team has [published](https://community.opengroup.org/osdu/governance/project-management-committee/-/wikis/M22-Release-Notes) their changes for the unified sample model, and we need to adopt the new types
Changes nee...The data definitions team has [published](https://community.opengroup.org/osdu/governance/project-management-committee/-/wikis/M22-Release-Notes) their changes for the unified sample model, and we need to adopt the new types
Changes needed (all on the masterdata endpoint):
1) Remove master-data--Coring
2) Update to [master-data--Sample:2.0.0](https://community.opengroup.org/osdu/data/data-definitions/-/blob/v0.25.0/E-R/master-data/Sample.2.0.0.md)
3) Add the following new types:
- [master-data--SampleAcquisitionJob:1.0.0](https://community.opengroup.org/osdu/data/data-definitions/-/blob/v0.25.0/E-R/master-data/SampleAcquisitionJob.1.0.0.md)
- [master-data--SampleChainOfCustodyEvent:1.0.0](https://community.opengroup.org/osdu/data/data-definitions/-/blob/v0.25.0/E-R/master-data/SampleChainOfCustodyEvent.1.0.0.md)
- [master-data--SampleContainer:1.0.0](https://community.opengroup.org/osdu/data/data-definitions/-/blob/v0.25.0/E-R/master-data/SampleContainer.1.0.0.md)
- [master-data--GenericFacility:1.0.0](https://community.opengroup.org/osdu/data/data-definitions/-/blob/v0.25.0/E-R/master-data/GenericFacility.1.0.0.md)
- [master-data--GenericSite:1.0.0](https://community.opengroup.org/osdu/data/data-definitions/-/blob/v0.25.0/E-R/master-data/GenericSite.1.0.0.md)M22 - Release 0.25Ernesto GutierrezErnesto Gutierrezhttps://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/316[SCAL] - Triaxial Schema Update2023-12-21T16:06:01ZMichael Jones[SCAL] - Triaxial Schema UpdateUpdated Triaxial Schema
<details><summary>Click to expand</summary>
```JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"SamplesAnalysisID": {
"type": "string...Updated Triaxial Schema
<details><summary>Click to expand</summary>
```JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"SamplesAnalysisID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:work-product-component\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"SampleID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:master-data\\-\\-Sample:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"BulkDensityAsReceived": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"TestPorePressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"TestConfiningPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"FluidSaturant": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-FluidSaturantType:[\w\-\.\:\%]+:[0-9]$"
},
"IRSCPorePressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"IRSCMeanEffectiveStress": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"IRSCDifferentialStress": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"MassAsReceived": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"SaturatedMass": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"CutFluid": {
"type": "string",
"description": "Cutting Fluid used when preparing this sample for testing",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-CutFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"LoadingCondition": {
"title": "Loading Condition",
"type": "string"
},
"ConsolidationType": {
"type": "string",
"description": "Consolidation Type, e.g. Isotropic",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-ConsolidationType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DrainageCondition": {
"type": "string",
"description": "Categorization of drainage of the sample, e.g. Drained",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DrainageCondition:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"LoadingMethod": {
"type": "string",
"description": "Method by which stress is applied, or loaded, onto the sample",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-LoadingMethod:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"TestSteps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Time": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"PorePressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"ConfiningPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"AxialStrain": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"RadialStrain": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"AxialStress": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"DifferentialStress": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"AxialPWaveVelocity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"AxialSWaveVelocity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
}
}
},
"Interpretation": {
"type": "array",
"description": "Typically Interpretation will only have one record, though in cases where a sample is tested across multiple fracture stages, it will have more than one",
"items": {
"type": "object",
"properties": {
"StageNumber": {
"type": "object",
"description": "In multifrac stage tests, this identifies each fracture stage.",
"properties": {
"Value": {
"type": "number"
}
}
},
"PlugOrientationToBeddingPlaneNormal": {
"type": "object",
"description": "Angle in degrees of plug orientation to bedding plane normal",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"PeakCompressiveStrength": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"EffectiveCompressiveStrength": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"YoungsModulus": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"LoadingStage": {
"type": "string",
"description": "Loading or Unloading stage",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-LoadingStage:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
}
},
"PoissonsRatio": {
"type": "object",
"properties": {
"Value": {
"type": "number"
}
"LoadingStage": {
"type": "string",
"description": "Loading or Unloading stage",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-LoadingStage:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
}
},
"UnconfinedCompressiveStrength": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"InferredUnconfinedCompressiveStrength": {
"type": "object",
"description": "Mohr-Coulomb Failure Analysis Unconfined Compressive Strength",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"Cohesion": {
"type": "object",
"description": "Mohr-Coulomb Failure Analysis Cohesion",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"InternalFrictionCoefficient": {
"type": "object",
"description": "Mohr-Coulomb Failure Analysis Internal Friction Coefficient",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"InternalFrictionAngle": {
"type": "object",
"description": "Mohr-Coulomb Failure Analysis Internal Friction Angle",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"Alpha": {
"type": "object",
"description": "Drucker-Prager Failure Analysis Alpha",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"Beta": {
"type": "object",
"description": "Drucker-Prager Failure Analysis Beta",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
}
}
},
"required": [
"SamplesAnalysisID"
]
}
}
```
</details>
LoadingStage: New Ref List
https://gitlab.opengroup.org/osdu/subcommittees/data-def/projects/RAFSDDMSDEV/docs/-/blob/main/Design%20Documents/ReferenceValues/Manifests/reference-data/OPEN/LoadingStage.1.0.0.json
LoadingMethod: Update existing ref list:
https://gitlab.opengroup.org/osdu/subcommittees/data-def/projects/RAFSDDMSDEV/docs/-/blob/main/Design%20Documents/ReferenceValues/Manifests/reference-data/OPEN/LoadingMethod.1.0.0.jsonM22 - Release 0.25Olena Holub (EPAM)Olena Holub (EPAM)https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/309[SCAL] - Tensile Strength - Add attributes supporting Brazilian Disc sample t...2023-12-21T16:05:51ZMykhailo Buriak[SCAL] - Tensile Strength - Add attributes supporting Brazilian Disc sample testingUpdate existing tensile strength schema
```json
{
"SamplesAnalysisID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:work-product-component\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"SampleID": {
...Update existing tensile strength schema
```json
{
"SamplesAnalysisID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:work-product-component\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"SampleID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:master-data\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"TVD": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"additionalProperties": false
}
},
"TensileStrengthOrientationToBedding": {
"type": "object",
"description": "Angle in degrees of the tensile strength relative to bedding",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"BulkDensityAsReceived": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"PeakLoad": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"TensileStrength": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]:reference-data\\-\\-TensileStrengthMethod:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"ReservoirUnit": {
"type": "string"
},
"TestSteps": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"DataAquisitionTime": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"AxialForce": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
},
"AxialDisplacement": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\w\-\.]+:reference-data\-\-UnitOfMeasure:[\w\-\.\:\%]+:[0-9]$"
}
}
}
}
}
]
}
}
```M22 - Release 0.25Ernesto GutierrezErnesto Gutierrezhttps://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/303[SCAL] - NMR schema updates2023-12-21T16:05:37ZMykhailo Buriak[SCAL] - NMR schema updatesUpdate existing NMR schema with the following:
https://gitlab.opengroup.org/osdu/subcommittees/data-def/projects/RAFSDDMSDEV/docs/-/blob/main/Design%20Documents/nmr_data_schema.jsonUpdate existing NMR schema with the following:
https://gitlab.opengroup.org/osdu/subcommittees/data-def/projects/RAFSDDMSDEV/docs/-/blob/main/Design%20Documents/nmr_data_schema.jsonM22 - Release 0.25Ernesto GutierrezErnesto Gutierrezhttps://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/315[SCAL] - TEC Addition - TemperatureMean2023-12-21T16:05:25ZMichael Jones[SCAL] - TEC Addition - TemperatureMeanAdd TemperatureMean to the RunNumberarray
<details><summary>Click To Expand</summary>
```JSON
"RunNumber": {
"type": "array",
"items": [
{
...Add TemperatureMean to the RunNumberarray
<details><summary>Click To Expand</summary>
```JSON
"RunNumber": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"TECMeasured": {
"type": "object",
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w-.]:reference-data--UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"TECCorrectionFactor": {
"type": "object",
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w-.]:reference-data--UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"TECCorrected": {
"type": "object",
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w-.]:reference-data--UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"TemperatureMean": {
"type": "object",
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w-.]:reference-data--UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"TemperatureMinimum": {
"type": "object",
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w-.]:reference-data--UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"TemperatureMaximum": {
"type": "object",
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w-.]:reference-data--UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"Spacer": {
"type": "string",
"pattern": "^[\\w-.]:reference-data--Elements:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
]
}
```
</details>M22 - Release 0.25Olena Holub (EPAM)Olena Holub (EPAM)https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/291[SCAL] - Additional Capillary Pressure Content Schema Changes2023-12-21T16:05:23ZMichael Jones[SCAL] - Additional Capillary Pressure Content Schema Changes**Do NOT move this into development until both @michael_jones_epam and @rgadrbou have signed off on schema changes.**
## Identified changes/review needed
<details>
<summary>changes</summary>
* Sample metadata needs
* Wettability Sta...**Do NOT move this into development until both @michael_jones_epam and @rgadrbou have signed off on schema changes.**
## Identified changes/review needed
<details>
<summary>changes</summary>
* Sample metadata needs
* Wettability State - different from the wettability phase type
* As-Received
* Blank
* Contaminated
* Extracted
* NotSpecified
* Other
* Preserved
* Restored
* ~~Drying Method~~ Covered by SamplePreparation object within Sample master-data
* ~~Cleaning Method~~ Covered by SamplePreparation object within Sample master-data
* Cap Pressure changes
* \*Pressure Array added at root level
* Supporting reference value additions (PressureMeasurementType)
* Pore Pressure
* ~~Net Confining Stress needs to be added as a basic pressure type~~ NetConfiningStress is a standalone measurement
* \*Add the following attributes:
* Brine Salinity
* Lab Test IFT (Interfacial Tension)
* Lab Oil Viscosity
* Lab Water Viscosity
* Lab Gas Viscosity
* Lab oil density
* Lab water density
* Lab gas density
* \*Add Initial Oil Saturation object
* \*Remove CapillaryPressureMethod
* \*Add SaturationProcessMethod
* \*Modify FluidSystemType reference value list
* Remove
* OilWater
* WaterGas
* OilGas
* OilWaterAfterWaterOil
* GasOilAfterOilGas
* GasBrineAfterWaterGas
* Add AirMercury
* Add CapillaryPressureCurveEstimationMethod ref list (supports Centrifuge) - attribute added, list still needs to be created
* HasslerBrunner
* Forbes
* Ensure support for Centrifuge Experiment - validate that the following can be stored in existing attributes or add as needed
* Steps
* \*RPM
* \*Capillary Pressure (psi)
* \*Sample Water Out (cc)
* \*Avg Water Saturation (fraction)
* Calculated
* \*CurveEstimationMethod: ref list: CapillaryPressureCurveEstimationMethod
* \*Capillary Pressure
* \*EndFaceWaterSaturation
* Ensure the following are captured in content schema for Centrifuge, or can be calculated from content schema data
* Lowest liquid saturation achieved in drainage or imbibition test - Can be determined from phase saturations
* Lowest water saturation achieved in drainage test - can be determined from phase saturations
* Ensure support for MICP content
* Swanson Permeability - needs to be added as a value in Permeability Measurement Type
* \*Air Permeability @ NCS - covered by permeability array object and pressure object
* \*Klilnkenberg Permeability - covered by Permeability array object
* \*Porosity- covered by schema
* Maximum Sb/Pc - can likely be determined from test values
* \*Pore Throat radius - covered by schema
* \*Entry Pressure (All three can be present in one record), uses FluidSystemType ref list - these have been added
* AirMercury
* GasWater
* OiWater
</details>
## Revised Schema below (includes noted changes above)
<details>
<summary>Revised Schema</summary>
```JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"SamplesAnalysisID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:work-product-component\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"SampleID": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:master-data\\-\\-Sample:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"TestData": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Permeability": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-PermeabilityMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"Porosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-PorosityMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"SaturationProcessMethod": {
"type": "object",
"properties": {
"Value": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-SaturationProcessMethod:[\\w\\-\\.\\:\\%]+:[0-9]*$",
"description": "SaturationProcessMethod, intended to be paired with SampleAnalysisType for Capillary Pressure Subfamilies. e.g. PrimaryDrainage, PrimaryImbibition, SecondaryDrainage, SecondaryImbibition, TertiaryDrainage."
}
}
},
"InitialWaterSaturation": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"InitialOilSaturation": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"InitialGasSaturation": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"Pressure": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-PressureMeasurementType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"EntryPressure": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"Type": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-FluidSystemType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"NetConfiningStress": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"Temperature": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"WaterViscosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"WaterDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"OilViscosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"OilDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"GasViscosity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"GasDensity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"InterfacialTension": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"BrineSalinity": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
},
"Endpoints": {
"CapillaryPressureMax": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"WettingPhaseSaturationAtCapillaryPressureMax": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"WettingPhaseSaturationAtCapillaryPressureMax": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"NonwettingPhaseSaturationAtCapillaryPressureMax": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"LowestWettingPhaseSaturationAVG": {
"type": "object",
"description": "Lowest wetting phase saturation achieved averaged over entire core plug or composite, only applicable for centrifuge & coreflood",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"LowestNonwettingPhaseSaturationAVG": {
"type": "object",
"description": "Lowest Non-wetting phase saturation achieved averaged over entire core plug or composite, only applicable for centrifuge & coreflood",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"CapillaryPressureSteps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"StepNumber": {
"type": "string"
},
"CapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"PhaseSaturation": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacingFluid": {
"type": "string",
"description": "Fluid introduced to a sample during capillary pressure testing, e.g. Mercury",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacingFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacedFluid": {
"type": "string",
"description": "Fluid produced or displaced from a sample during capillary pressure testing, e.g. Brine, Hexane, or LiveCrudeOil",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacedFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"WettabilityPhaseType": {
"type": "string",
"description": "Phase transition type for this capillary pressure test, e.g. Wetting or Nonwetting",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-WettabilityPhaseType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"PhaseInjectedVolume": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacingFluid": {
"type": "string",
"description": "Fluid introduced to a sample during capillary pressure testing, e.g. Mercury",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacingFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacedFluid": {
"type": "string",
"description": "Fluid produced or displaced from a sample during capillary pressure testing, e.g. Brine, Hexane, or LiveCrudeOil",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacedFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"CapillaryPressurePhaseType": {
"type": "string",
"description": "Phase transition type for this capillary pressure test, e.g. Wetting or Nonwetting",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-CapillaryPressurePhaseType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
},
"Remark": {
"type": "string"
},
"CalculatedProperties": {
"type": "object",
"properties": {
"PoreThroatRadius": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"PoreThroatMedianRadius": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"EndFaceEstimationMethod": {
"type": "string",
"description": "Method of estimating capillary pressure in a centrifuge experiment, e.g. HasslerBrunner or Forbes",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-EndFaceEstimationMethod:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"EndFacePhaseSaturation": {
"type": "object",
"description": "Calculated saturation of the end face of the sample in a centrifuge experiment.",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"JFunction": {
"type": "object",
"properties": {
"Value": {
"type": "number"
}
}
},
"GasWaterCapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"GasOilCapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"OilWaterCapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"AirMercuryCapillaryPressure": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"GasWaterAboveFWL": {
"type": "object",
"description": "estimated height above free water level for gas",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"OilWaterAboveFWL": {
"type": "object",
"description": "estimated height above free water level for oil",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
}
},
"PoreThroatSizeDistribution": {
"type": "array",
"items": {
"type": "object",
"properties": {
"PoreThroatSize": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"CumulativePhaseSaturation": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacingFluid": {
"type": "string",
"description": "Fluid introduced to a sample during capillary pressure testing, e.g. Mercury",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacingFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacedFluid": {
"type": "string",
"description": "Fluid produced or displaced from a sample during capillary pressure testing, e.g. Brine, Hexane, or LiveCrudeOil",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacedFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"CapillaryPressurePhaseType": {
"type": "string",
"description": "Phase transition type for this capillary pressure test, e.g. Wetting or Nonwetting",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-CapillaryPressurePhaseType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"PhaseSaturationFrequency": {
"type": "object",
"properties": {
"Value": {
"type": "number"
},
"DisplacingFluid": {
"type": "string",
"description": "Fluid introduced to a sample during capillary pressure testing, e.g. Mercury",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacingFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"DisplacedFluid": {
"type": "string",
"description": "Fluid produced or displaced from a sample during capillary pressure testing, e.g. Brine, Hexane, or LiveCrudeOil",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-DisplacedFluidType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
},
"CapillaryPressurePhaseType": {
"type": "string",
"description": "Phase transition type for this capillary pressure test, e.g. Wetting or Nonwetting",
"pattern": "^[\\w\\-\\.]+:reference-data\\-\\-CapillaryPressurePhaseType:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
}
}
}
}
}
}
}
}
}
}
},
"required": [
"SampleID",
"SamplesAnalysisID"
]
}
```
</details>M22 - Release 0.25Olena Holub (EPAM)Olena Holub (EPAM)https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/301[SCAL] - Remove porosityexponent from electrical properties schema2023-12-21T16:05:20ZMykhailo Buriak[SCAL] - Remove porosityexponent from electrical properties schemaRemove from electrical properties and multiple salinity schemas these attributes
* `AdjustedPorosityExponent`
* `PorosityExponent`Remove from electrical properties and multiple salinity schemas these attributes
* `AdjustedPorosityExponent`
* `PorosityExponent`M22 - Release 0.25Olena Holub (EPAM)Olena Holub (EPAM)https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/305[SCAL] - Add "SupercriticalCO2" value to DisplacedFluidType and DisplacingFlu...2023-12-21T16:05:18ZMichael Jones[SCAL] - Add "SupercriticalCO2" value to DisplacedFluidType and DisplacingFluidTypeThe following value needs to be added to **DisplacingFluidType**:
```JSON
{
"id": "{{NAMESPACE}}:reference-data--DisplacingFluidType:SupercriticalCO2",
"kind": "{{rafsddms-schema-authority}}:wks:reference-data--Disp...The following value needs to be added to **DisplacingFluidType**:
```JSON
{
"id": "{{NAMESPACE}}:reference-data--DisplacingFluidType:SupercriticalCO2",
"kind": "{{rafsddms-schema-authority}}:wks:reference-data--DisplacingFluidType.1.0.0",
"acl": {
"owners": [
"{{DATA_OWNERS_GROUP}}"
],
"viewers": [
"{{DATA_OWNERS_GROUP}}"
]
},
"legal": {
"legaltags": [
"{{LEGAL_TAG}}"
],
"otherRelevantDataCountries": [
"US"
],
"status": "compliant"
},
"data": {
"Name": "SupercriticalCO2",
"ID": SupercriticalCO2,
"Description": "SupercriticalCO2",
"Code": "SupercriticalCO2",
"AttributionAuthority": "RAFSDDMS"
}
}
```
And **DisplacedFluidType**:
```JSON
{
"id": "{{NAMESPACE}}:reference-data--DisplacedFluidType:SupercriticalCO2",
"kind": "{{rafsddms-schema-authority}}:wks:reference-data--DisplacedFluidType.1.0.0",
"acl": {
"owners": [
"{{DATA_OWNERS_GROUP}}"
],
"viewers": [
"{{DATA_OWNERS_GROUP}}"
]
},
"legal": {
"legaltags": [
"{{LEGAL_TAG}}"
],
"otherRelevantDataCountries": [
"US"
],
"status": "compliant"
},
"data": {
"Name": "SupercriticalCO2",
"ID": SupercriticalCO2,
"Description": "SupercriticalCO2",
"Code": "SupercriticalCO2",
"AttributionAuthority": "RAFSDDMS"
}
}`
```M22 - Release 0.25Olena Holub (EPAM)Olena Holub (EPAM)https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/307[SCAL] - Wettability Content Schema and WettabilityIndexType Corrections2023-12-21T16:05:16ZMichael Jones[SCAL] - Wettability Content Schema and WettabilityIndexType CorrectionsExisting schema of Wettability should incorporate the following updates:
- **InitialCappillaryPressure**- should be "`InitialCapillaryPressure`"
- Add the following attribute into the WettabilityIndexData object, attribute should go :
...Existing schema of Wettability should incorporate the following updates:
- **InitialCappillaryPressure**- should be "`InitialCapillaryPressure`"
- Add the following attribute into the WettabilityIndexData object, attribute should go :
```JSON
"CapillaryPressureAnalysisID": {
"type": "string",
"description": "OSDU ID for the Capillary Pressure Analysis referenced in this Wettability Analysis.",
"pattern": "^[\\w\\-\\.]+:work-product-component\\-\\-SamplesAnalysis:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
```
* Remove existing WettabilityIndexType reference list and manifest the following one:[WettabilityIndexType.json](/uploads/634907a2585fbb9acab78f6530919877/WettabilityIndexType.json)
* Add two following objects to WettabilityIndexData array
```plaintext
"ForcedImbibedBrineVolume": {
"type": "object",
"description": "volume of forced imbibed brine, displacing water, expressed as fraction of pore volume. no confining pressure applied",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w-.]:reference-data--UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
},
"ForcedImbibedOilVolume": {
"type": "object",
"description": "volume of forced imbibed oil, displacing water, expressed as fraction of pore volume. no confining pressure applied",
"properties": {
"Value": {
"type": "number"
},
"UnitOfMeasure": {
"type": "string",
"pattern": "^[\\w-.]:reference-data--UnitOfMeasure:[\\w\\-\\.\\:\\%]+:[0-9]*$"
}
}
```M22 - Release 0.25Olena Holub (EPAM)Olena Holub (EPAM)https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/reservoir/open-etp-server/-/issues/104Memory error in GetDataSubarrays crashes the server2023-12-21T15:00:32ZØyvind Sigmundson SchøyenMemory error in GetDataSubarrays crashes the serverHello!
I was unsure of the severity/significance of this error, but I made the issue confidential to be on the safe side. Feel free to make it public if you deem it best so.
I am working on a project where we are using the open-etp-ser...Hello!
I was unsure of the severity/significance of this error, but I made the issue confidential to be on the safe side. Feel free to make it public if you deem it best so.
I am working on a project where we are using the open-etp-server to store and retrieve RESQML-objects. In particular we look at two-dimensional arrays (the RESQML-object Grid2dRepresentation). When trying to use the GetDataSubarrays-request (protocol 9, message type ID 3 in the ETP-v12 spec) we get an error response from the server if we try to access elements beyond the size of the array. However, in the case where we try to access too many elements in the last axis of the array (if the sum of `starts[1]` and `counts[1]` is greater than the size of axis `1` in the array), then the server crashes. See below for the log from the server running in Docker.
```
[2023-12-13 13:55:34.554] Info: [somecli] SVR <REQ Thread(1) Session(1) Msg(26)_PMsg(0) DataArray(9).GetDataSubarrays(3) Final(F) -5
[2023-12-13 13:55:34.556] Error: [somecli] SVR >ERR Thread(1) Session(1) Msg(25)_PMsg(26) partial array[1] Core(0).ProtocolException(1000)
ETP-5 (starts[1] 0 + counts[1] 5) > dimensions[1] 4
[2023-12-13 13:55:34.556] Info: [somecli] SVR >RES Thread(1) Session(1) Msg(27)_PMsg(26) DataArray(9).GetDataSubarraysResponse(8) Final(F)
[2023-12-13 13:55:34.557] Info: [somecli] SVR <REQ Thread(1) Session(1) Msg(28)_PMsg(0) Core(0).CloseSession(5) Final(F) -5
[2023-12-13 13:55:34.557] Info: SVR Thread(1) Session(1) from [somecli] CLOSED NORMALLY
free(): invalid next size (fast)
```
This requires a manual restart of the server, and affects anyone using the server.
For comparison, when trying to access too many elements in the zeroth axis we get the logs:
```
[2023-12-13 14:00:37.821] Info: [somecli] SVR <REQ Thread(1) Session(1) Msg(26)_PMsg(0) DataArray(9).GetDataSubarrays(3) Final(F) -5
[2023-12-13 14:00:37.822] Error: [somecli] SVR >ERR Thread(1) Session(1) Msg(25)_PMsg(26) partial array[1] Core(0).ProtocolException(1000)
ETP-5 (starts[0] 0 + counts[0] 4) > dimensions[0] 3
[2023-12-13 14:00:37.822] Info: [somecli] SVR >RES Thread(1) Session(1) Msg(27)_PMsg(26) DataArray(9).GetDataSubarraysResponse(8) Final(F)
[2023-12-13 14:00:37.824] Info: [somecli] SVR <REQ Thread(1) Session(1) Msg(28)_PMsg(0) Core(0).CloseSession(5) Final(F) -5
[2023-12-13 14:00:37.824] Info: SVR Thread(1) Session(1) from [somecli] CLOSED NORMALLY
```
and the server is still running normally.
We get the error on the latest published open-etp-server image (`community.opengroup.org:5555/osdu/platform/domain-data-mgmt-services/reservoir/open-etp-server/open-etp-server-main:latest`).
I can add a demo-script of the error upon request (it is fairly long due to manual usage of websockets in Python).Fabiola RiveraFabiola Riverahttps://community.opengroup.org/osdu/platform/consumption/geospatial/-/issues/317Provider - Reinstate Service Name for AGO Compatibility2023-12-19T19:51:02ZLevi RemingtonProvider - Reinstate Service Name for AGO CompatibilityWith Azure's automated deployment, I could test integration for production Feature Service and ArcGIS Online. I found that [our removal](https://community.opengroup.org/osdu/platform/consumption/geospatial/-/merge_requests/130#does-this-...With Azure's automated deployment, I could test integration for production Feature Service and ArcGIS Online. I found that [our removal](https://community.opengroup.org/osdu/platform/consumption/geospatial/-/merge_requests/130#does-this-introduce-a-breaking-change) of the optional Feature Service name has resulted in broken compatibility with ArcGIS Online Mapping Clients, as AGO expects a Feature Service name when you add a layer as a Portal item.
## Proposed Solution
* Reinstate the `gcz` Feature Service name to restore compatibility.
* Consider enforcing `gcz` as the Feature Service name, or possibly making it configurable.https://community.opengroup.org/osdu/platform/data-flow/ingestion/osdu-airflow-lib/-/issues/11EDS Naturalization have circular import2023-12-19T19:11:46ZBruce JinEDS Naturalization have circular importThe file `osdu_airflow/eds/eds_naturalization/signed_url_details/abstract/environment_factory.py` and file `osdu_airflow/eds/eds_naturalization/signed_url_details/concrete/operator_environment_factory.py` is trying to import each other.
...The file `osdu_airflow/eds/eds_naturalization/signed_url_details/abstract/environment_factory.py` and file `osdu_airflow/eds/eds_naturalization/signed_url_details/concrete/operator_environment_factory.py` is trying to import each other.
Which disables the component.M22 - Release 0.25https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/issues/96Sample Depth is defined as required although it is part of RockSample (ID) in...2023-12-19T16:06:37ZRaghd GadrbouhSample Depth is defined as required although it is part of RockSample (ID) in RCA content schemaIt would be fine to re-enter the sample depth values although it is already defined as part of the rocksample schema. However only one depth is allowed here, as the property is defined as object (not an array). This doesn't accommodate f...It would be fine to re-enter the sample depth values although it is already defined as part of the rocksample schema. However only one depth is allowed here, as the property is defined as object (not an array). This doesn't accommodate for top and base depth.
My suggestion it to remove sample depth from the rca content schema.
https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/rock-and-fluid-sample/rafs-ddms-services/-/blob/main/app/models/data_schemas/jsonschema/rca_data_schema.jsonMichael JonesMykhailo BuriakMichael Joneshttps://community.opengroup.org/osdu/platform/system/indexer-service/-/issues/120Augmenter can't recursively resolve the schema (property/type pair) of the au...2023-12-19T15:40:02ZZhibin MaiAugmenter can't recursively resolve the schema (property/type pair) of the augmented properties.Augmenter is supposed to be able to augment the properties from other augmented properties when updating schema mapping and creating the Document for Elasticsearch.
We illustrate the issue using the following examples:
### Well has aug...Augmenter is supposed to be able to augment the properties from other augmented properties when updating schema mapping and creating the Document for Elasticsearch.
We illustrate the issue using the following examples:
### Well has augmented properties `CountryNames` from kind `osdu:wks:master-data--GeoPoliticalEntity:1.` and `WellUWI` from itself
```
{
"Name": "Well-IndexPropertyPathConfiguration",
"Description": "The index property list for master-data--Well:1., valid for all master-data--Well kinds for major version 1.",
"Code": "osdu:wks:master-data--Well:1.",
"AttributionAuthority": "OSDU",
"Configurations": [{
"Name": "CountryNames",
"Policy": "ExtractAllMatches",
"UseCase": "As a user I want to find objects by a country name, with the understanding that an object may extend over country boundaries.",
"Paths": [{
"RelatedObjectsSpec": {
"RelatedConditionProperty": "data.GeoContexts[].GeoTypeID",
"RelatedConditionMatches": [
"opendes:reference-data--GeoPoliticalEntityType:Country:"
],
"RelatedObjectID": "data.GeoContexts[].GeoPoliticalEntityID",
"RelatedObjectKind": "osdu:wks:master-data--GeoPoliticalEntity:1.",
"RelationshipDirection": "ChildToParent"
},
"ValueExtraction": {
"ValuePath": "data.GeoPoliticalEntityName"
}
}
]
}, {
"Name": "WellUWI",
"Policy": "ExtractFirstMatch",
"UseCase": "As a user I want to discover and match Wells by their UWI. I am aware that this is not globally reliable, however, I am able to specify a prioritized AliasNameType list to look up value in the NameAliases array.",
"Paths": [{
"ValueExtraction": {
"RelatedConditionProperty": "data.NameAliases[].AliasNameTypeID",
"RelatedConditionMatches": [
"opendes:reference-data--AliasNameType:UniqueIdentifier:",
"opendes:reference-data--AliasNameType:RegulatoryName:",
"opendes:reference-data--AliasNameType:PreferredName:"
],
"ValuePath": "data.NameAliases[].AliasName"
}
}
]
}
]
}
```
### Wellbore has augmented properties `CountryNames` and `WellUWI` from kind `osdu:wks:master-data--osdu:wks:master-data--Wellbore:1.`
```
{
"Name": "Wellbore-IndexPropertyPathConfiguration",
"Description": "The index property list for master-data--Wellbore:1., valid for all master-data--Wellbore kinds for major version 1.",
"Code": "osdu:wks:master-data--Wellbore:1.",
"AttributionAuthority": "OSDU",
"Configurations": [{
"Name": "CountryNames",
"Policy": "ExtractFirstMatch",
"UseCase": "As a user I want to discover Wellbore instances by the well's name value.",
"Paths": [{
"RelatedObjectsSpec": {
"RelatedObjectID": "data.WellID",
"RelatedObjectKind": "osdu:wks:master-data--Well:1.",
"RelationshipDirection": "ChildToParent"
},
"ValueExtraction": {
"ValuePath": "data.CountryNames"
}
}
]
}, {
"Name": "WellUWI",
"Policy": "ExtractFirstMatch",
"UseCase": "As a user I want to discover Wellbore instances by the well's UWI value.",
"Paths": [{
"RelatedObjectsSpec": {
"RelatedObjectID": "data.WellID",
"RelatedObjectKind": "osdu:wks:master-data--Well:1.",
"RelationshipDirection": "ChildToParent"
},
"ValueExtraction": {
"ValuePath": "data.WellUWI"
}
}
]
}
]
}
```
When the indexer tries to resolve the schema for `Wellbore`, the resolved schema should include both `CountryNames` and `WellUWI`.
However, in current implementation, the resolved schema for `Wellbore` does not include augmented properties `CountryNames` and `WellUWI`. At the result, these two properties are not searchable though their values are created in the `Wellbore` records.Zhibin MaiZhibin Mai