ADAPT - Product / CropProtectionProduct / FertilizerProduct / CropVariety / Trait Discussion

ADAPT - Product / CropProtectionProduct / FertilizerProduct / CropVariety / Trait Discussion

Note: The integer IDs below correspond to the ReferenceID element in CompoundIdentifiers

Questions:

  • Must already-labeled (i.e., "product") ingredients of labeled mixes and active ingredients (AIs) be expressed in the same way?

  • Do we want to distinguish between labeled mixes and user-created mixes?

  • Do we need a flag to denote that a "Product" is a mix?

  • What "type" of product would a mix be considered if you were using liquid fert as a carrier for some crop protection chemicals? 

    • Should we always use the abstract Product class for mixes? 

    • Do we need a Mix subclass? (Business rules?)

  • How would you express a seed treatment combined with a seed product?

    • Where do things like "seed lot number" go? There could be 0..n

Product

 

 

 

Attribute

Type

Multiplicity

Description

Id

CompoundIdentifier

1

Compound Identifier

Description

string

1

Human-readable description of the product

ManufacturerId

Integer

0..1

Reference to a Manufacturer object

BrandId

Integer

0..1

Reference to a Brand object

ProductType

Integer (Bit field)

1

Bitfield. Proposed place value shown.

The following 4 bits are used to make sense of a MixProduct and/or GenericProduct

1: Has Crop Protection (True for CropProtectionProducts and for mixes containing at least one CropProtectionProduct)

2: Has Crop Nutrition (True for CropNutritionProducts and for mixes containing at least one CropNutritionProduct)

4: Has CropVariety (True for CropVarietyProduct and for mixes containing at least one CropVarietyProduct)

8: Has HarvestedCommodityProduct (True for HarvestedCommodityProducts and for mixes containing at least one HarvestedCommodityProduct)

 

Proposed model to specify mixes (using Category bits in MixProduct)::

 

Note: StationMix also encompasses the use case of a formula used recurrently for a given purpose; e.g., "Ponderosa Farms Burndown Mix".

Need a complete example of how Hot mixes are emergent properties of an ISO task (as the tank is refilled.)

ProductType

ProductTypeEnum

1

 

Status

ProductStatusEnum

1

Possible values:

  • Active

  • Inactive

Will eventually be implemented as an EnumeratedRepresentationValue

ContextItems

ContextItem

0..*

 

Form

ProductFormEnum

1

Possible values:

  • Solid

  • Liquid

  • Gas

Density

NumericRepresentationValue

0..1

It's optional because in some cases (manure, mixes) the density may not be an intensive property of the product, but lot-specific instead.

TotalQuantity

NumericRepresentationValue

0..1

The total amount defined. This is critical for specifying a tank mix extensively (e.g, A certain amount of each component product, and then a total amount.)

ProductComponents

ProductComponent

0..*

Components of this product.

HasCropProtection

Boolean

 1

 

HasCropNutrition

Boolean

1

 

HasCropVariety

Boolean

1

 

HasHarvestCommodity

Boolean

1

 

Category

CategoryEnum

1

 

DensityFactor (Provide lot / batch - specific value of density)

Attribute

Type

Multiplicity

Description

Id

CompoundIdentifier

1

This class is not referenced by anything else, therefore it needs a compound identifier so it can be inserted in the Catalog

ProductId

Integer

1

A reference to a product.

BatchNo

String

0..1

 

LotNo

String

0..1

 

Density

NumericRepresentationValue

1

Ex: 15000 seeds/bag; 500 lb/bag; 2000 pellets/lb

TimeScopes

Timescope

0..*

 

TimeScopeIds

Integer

0..*

 

 

 

 

 

CropProtectionProduct (child class of Product)

Attribute

Attribute

Multiplicity

Description

Biological

Boolean

1

Property of a crop protection product

Organophosphate

Boolean

1

Chemical property.

Carbamate

Boolean

1

Chemical property.

Ingredients

IngredientUse

0..*

 

 

 

 

 

Ingredient (used by ProductComponent)

Attribute

Type

Multiplicity

Description

Id

CompoundIdentifier

1

 

Description

String

1

 

ContextItems

ContextItem

0..*

 

IsActive

Bool

1

 

 

 

 

 

ActiveIngredient (child class of Ingredient)

Attribute

Type

Multiplicity

Description

ModeOfAction

EnumeratedRepresentationValue

1..*

How the active ingredient attacks the pest.

Multiplicity is 1..* because the same ingredient could conceivably have more than one mode of action. (e.g., a fumigant)

 

 

 

 

CropNutritionIngredient (child class of Ingredient)

Attribute

Type

Multiplicity

Description

IngredientCode

CropNutritionIngredientCodeEnum

1

An enumeration literal from a set of nutrient codes.

Will be implemented as an EnumeratedRepresentationValue

 IngredientCode

EnumeratedValue

 1

 

ProductComponent

 

 

 

Attribute

Type

Multiplicity

Description

ProductId

Integer

0..1

If populated, indicates that the ProductComponent is a product. Examples:

  • One of the independentlt-labeled components of Avicta COmplete, itself a labeled product.

  • A product added to a tank mix.

Note that ProductId and IngredientId are mutually explusive: only ONE must be populated at any given time.

IngredientId

Integer

1

If populated, indicates that the ProductComponent is an Ingredient. Examples:

  • glyphosate (an ActiveIngredient)

  • azoxystrobin (an ActiveIngredient)

  • Boron (a CropNutritionIngredient)

  • Humic acid (a CropNutritionIngredient)

Quantity

NumericRepresentationValue

1

Quantitative description of how much of the component participates in the product. This would typically involve a representation such as:

  • A mass fraction. An example of this is the description of the active ingredients that compose a product.

  • An amount by mass or volume: This would typically happen when creating a tank mix.

Reminder: a RepresentationValue encapsulates the following:

  • The meaning of the variable (e.g., a composition, a yield, etc.)

  • The family of units of measure to be used when expressing it (e.g., mass per unit volume, fraction y mass, etc.)

  • A numerical value

  • The specific unit of measure to apply to that value

IsCarrier

Boolean

1

 

IsProduct

Boolean

 1

 

MixOrder

Integer

0..1

 

 

 

 

 

FertilizerProduct (child class of Product) [Not Implemented]

Attribute

Type

Multiplicity

Description

IsManure

Boolean

1

True if the fertilizer is manure. False if it's chemical fertilizer.

 

 

 

 

CropVarietyProduct (child class of Product)

Attribute

Type

Multiplicity

Description

CropId

Integer

1

References the Crop that this variety belongs to.

TraitIds

Integer

0..*

Optional list of Trait

GeneticallyEnhanced

Boolean

1

Is this a Genetically enhanced variety?

 

 

 

 

Trait (used by CropVariety, Catalog)

Attribute

Type

Multiplicity

Description

Id

CompoundIdentifier

1

 

TraitCode

String

1

Short code: e.g., "RR2", "A-GT"

Description

String

0..1

Human-readable name; e.g., "RoundUp Ready 2", "Agrisure-GT"

ManufacturerId

Integer

0..1

 

CropIDs