Note: The integer IDs below correspond to the ReferenceID element in CompoundIdentifiers
Note: This list supersedes, as of 20150129, the WorkItemOperation material in a previously circulated Excel.
LoggedData (implements WorkRecord)
As of 20150129, LoggedData only has the data already contained in its parent class. We will be on the lookout for any attributes that we need to add, especially in the context of Scouting / FieldObservations. If there are none before the release of v1 of the ADAPT data model, we reserve the right to collapse LoggedData back to its parent.
In the future we will want to consider auxiliary actors in the process of logging data (e.g. a truck and its driver, a grain cart and its driver, etc...)
We have not yet implemented the concept of mark/note, which would allow for space- and time-specific notes to be logged.
20150427: R. Andres Ferreyra (Unlicensed) reviewed the LoggedData object with PAIL team members Dan Berne (Unlicensed) and aberger@agsense.net (Unlicensed). LoggedData is very compatible with PAIL's InboundData and OffsiteData objects, but the general idea of OperationData (which, I believe is central to the SPADE interpretation of LoggedData) does not fit at all. PAIL's suggestion is to create a subclass of LoggedData called Observations, that has OperationData as optional (at best.) This may be a good home for scouting data as well, although it remains to be discussed whether scouting plans (incl. pre-arranged scouting locations) are not analogous to WorkOrders / WorkItems.
Attribute
Type
Multiplicity
Description
Id
CompoundIdentifier
1
WorkRecordId
Integer
1
GrowerId
Integer
0..1
FarmId
Integer
0..1
FieldId
Integer
0..1
CropZoneId
Integer
0..1
TimeScopes
TimeScope
0..*
PersonRoleIds
Integer
0..*
EquipmentConfigurationGroup
EquipmentConfigurationGroup
0..1
GuidanceAllocationIds
Integer
0..*
WorkItemIds
Integer
0..*
SummaryId
Integer
0..1
Notes
Note
0..*
OperationData
OperationData
1..*
ReleaseSpatialData
Action
Description
String
0..1
MachineId
Integer
0..1
OperationData
We will break this out so we have only one OperationData object instance per load.
Attribute
Type
Multiplicity
Description
Id
CompoundIdentifier
1
Unique identifer
R. Andres Ferreyra (Unlicensed): I think this needs to go; I see no reason for OperationData to need to exist independently of the LoggedData.
A reference to the Prescription, if any, used during this operation. If multiple products are used they will be included as a single multi-product prescription.
ProductId
Integer
0..1
The product used for the operation
ProductIds
Integer
0..*
VarietyLocatorId
Integer
0..1
A reference to the VarietyLocator layer used during this operation, if any
WorkItemOperationId
Integer
0..1
A reference to the Work Item Operation that generated this work
MaxDepth
Integer
1
Count of depth
SpatialRecordCount
Integer
1
How many spatial records are there?
EquipmentConfigID
Integer
0..1
EquipmentConfigurationIds
Integer
0..*
GetSpatialRecords()
IEnumerable<SpatialRecord>
Returns an IEnumerable of SpatialRecord
GetDeviceElementUses()
(int, IEnumerable<DeviceElementuse>)
Description
String
0..1
CoincidentOperationDataIds
Integer
0..*
GetSections(Depth: Integer)
IEnumerable<Section>
ConnectorIds
Integer
0..n
A reference to the Connector objects linking MachineConfiguration and ImplementConfiguration (or two ImplementConfiguration) objects. Somewhat redundant because that info can be traced back through the ImplementConfiguration and its Connector references to machine and/or other impllements, but included here to help test / sanity check / select Connectors for processing / export.
NumericMeter (Subclass of Meter) [Not Implemented]
Attribute
Type
Multiplicity
Description
UnitOfMeasure
UnitOfMeasure
1
The unit this meter was recorded in
EnumeratedMeter (Subclass of Meter) [Not Implemented]
Attribute
Type
Multiplicity
Description
ValueCodes
Integer
1..*
Integers that correspond to the Code of an enumeration member. The specific enumeration is implicit in the Representation identified in the parent class.
SectionSummary
Attribute
Type
Multiplicity
Description
Id
Integer
1
UniqueIdentifier
SectionId
Integer
1
A reference to the Section that this summary applies to
TotalDistanceTravelled
NumericRepresentation
1
The total distance traveled with this section on
TotalElapsedTime
NumericRepresentation
1
The total elapsed time with this section on
CalibrationFactor
This is typically entered as a result of measurement via scale tickets, etc.
Attribute
Type
Multiplicity
Description
Id
CompoundIdentifier
1
The id of the calibration factor
MeterId
Integer
1
The meter to apply the calibration factor to
TimeScopeIds
Integer
0...n
The time the calibration occurred. 20150903: R. Andres Ferreyra (Unlicensed) replaced datetime class with TimeScope, for consistency with other mandates.
Value
NumericRepresentationValue
1
The value of the calibration. 20150903: R. Andres Ferreyra (Unlicensed) replaced Double type with NumericRepresentationValue, for consistency with other mandates.
DataLogTrigger
Attribute
Type
Multiplicity
Description
Id
CompoundIdentifier
1
DataLogMethod
LoggingMethodEnum
1
DataLogDistanceInterval
NumericRepresentationValue
0..1
DataLogTimeInterval
NumericRepresentationValue
0..1
DataLogThresholdMinimum
NumericRepresentationValue
0..1
DataLogThresholdMaximum
NumericRepresentationValue
0..1
DataLogThresholdChange
NumericRepresentationValue
0..1
ContextItems
ContextItem
0..*
LoggingLevel
LoggingLevelEnum
1
Representation
Representation
1
DeviceElementId
Integer
0..1
DataLogTrigger
Attribute
Type
Multiplicity
Description
ValueCodes
Integer
0..*
Destination
Attribute
Type
Multiplicity
Description
Id
CompoundIdentifier
1
Description
String
1
Location
Location
0..1
FacilityId
Integer
0..1
MeteredValue
Attribute
Type
Multiplicity
Description
Value
RepresentationValue
1
MeterId
Integer
0..1
DeviceConfigurationId
Integer
0..1
StampedMeteredValue
Attribute
Type
Multiplicity
Description
Values
MeteredValues
1..*
Stamp
TimeScope
0..1
NumericWorkingData
Attribute
Type
Multiplicity
Description
UnitOfMeasure
UnitOfMeasure
0..1
Values
Double
0..*
Id
CompoundIdentifier
1
DeviceElementUseId
Integer
1
Representation
Representation
1
AppliedLatency
NumericRepresentationValue
1
ReportedLatency
NumericRepresentationValue
1
WorkingData
Attribute
Type
Multiplicity
Description
Id
CompoundIdentifier
1
DeviceElementUseId
Integer
1
Representation
Representation
1
AppliedLatency
NumericRepresentationValue
1
ReportedLatency
NumericRepresentationValue
1
LoggingLevelEnum
Enumeration Literal
Description
MachineType
SpecificMachine
ImplementType
SpecificImplement
SpecificSection
SpecificMeter
Unspecified
LoggingMethodEnum
Enumeration Literal
Description
TimeInterval
DistanceInterval
ThresholdLimits
OnChange
Total
Note:
foreach (spatialRecord in operationData.GetSpatialRecords())
{
var shape = spatialRecord.GetShape();
var time = spatialRecord.GetTimeElapsed();
for(depth=0; depth< operationData.GetMaxDepth();depth++)
{
foreach(section in operation.GetSections(depth)
{
var width = section.Width;
foreach(meter in section.GetMeters())
{
if(meter is NumericMeter)
{
var value = spatialRecord.GetMeterValue(meter); // Yo, note that there are different representations for meters...
var appliedLatency = spatialRecord.GetAppliedLatency(meter);
}
else if(meter is EnumeratedMeter)
{
var value = spatialRecord.GetMeterValue(meter);
}
}
}
}
}