These concepts distinguish biological identity, managed animal groups, animal movement, cultivation and physical plant material. They are at draft maturity, and they are neither a full agricultural-biology model nor a normative specification. Terms specific to agriculture use agri/: AnimalBreed, AnimalResidence, CropPlanting and CropPlantingComponent. Identities and relationships that also apply outside agriculture keep root URIs: IdentifiedAnimalUnit, IndividualAnimal, AnimalGroup, AnimalGroupCount, AnimalResponsibility, AnimalMovement, PlantVariety, GeneticResourceAccession and SeedLot. See synthetic identity and relationship records, movement records and tests/test_agriculture_biology.py.

Family Decision and boundary
Individual animal IndividualAnimal persists when a tag is replaced. Tags and other codes use the shared identifiers slot, not the human Person or its sex vocabulary. animal_birth_date holds a year, a year and month, or a full date, so a year-only birth record keeps its precision. IdentifiedAnimalUnit is the abstract parent of individual animals and animal groups, because individual and group identification are alternatives.
Animal group AnimalGroup is independent of the human Group hierarchy. AnimalGroupCount points to the group it counts and dates the observation; the group does not list its counts. AnimalMovement separately records an actual movement, its known individual participants and number moved. Its source group identifies the managed population from which animals were drawn, without asserting that every member moved. Predecessors can describe splits or merges but do not establish their event chronology.
Residence and responsibility AnimalResidence dates the agricultural facility where an animal or group is kept. AnimalResponsibility separately dates owner, keeper and operator roles held by a person, organization or group such as a household. The responsible actor is sensitive, because it links a person to animals and, through residence, to premises.
Animal breed AnimalBreed identifies a breed recognized by a breed society, public authority or breed information system. Breed codes from those sources are identifiers of the breed. A national breed population and its risk assessment are observations, not timeless breed properties.
Crop planting CropPlanting is cultivation, not an administrative declaration or permanent land attribute. CropPlantingComponent supports mixed crops, and each component can carry its own planting_date. Season, parcel, dates and area remain optional.
Plant variety PlantVariety distinguishes biological identity from national listing, protection and denomination approval. Multiple denominations do not imply multiple varieties.
Genetic resource accession GeneticResourceAccession covers plant genetic material held by a genebank or other collection. The collection-scoped accession number and the maintaining institute remain distinct; a globally unique identifier, such as an MCPD PUID, goes in identifiers. Neither a variety nor a physical sample is identical to an accession. Animal and microbial accessions are outside this plant family.
Seed lot SeedLot identifies physical material. Multiple lots may represent one accession; mixtures can refer to multiple varieties, accessions and source lots. Quantity does not claim a current inventory balance.

Evidence and alternatives

WOAH Terrestrial Code 2024, chapter 4.3, Article 4.3.3, point 5(c)(iii) distinguishes animal movement from changes of owner or keeper that need not change establishment. It identifies movement dates, origin, destination, transit establishments and the number moved as traceability information. Individual and group identification and replacement identifiers are supported by the neighbouring identification and animal-registration provisions. A native movement event is therefore justified alongside residence and responsibility associations; it is not left solely to an application profile.

AnimalMovement specializes the existing Event. Its source-group reference and incomplete known-participant list are PublicSchema choices that distinguish a managed population from a quantity moved. movement_departure_date and movement_arrival_date are separate, because EU bovine movement records require both and ICAR carries loading and unloading times; recorded_at keeps entry time separate. Transit sites form an unordered collection, not an itinerary. All fields remain optional reference vocabulary. The narrower meaning is actual movement between physical sites. Farm identifies an economic production unit that may use multiple premises; its identity alone does not identify a departure or arrival site, so movement and residence sites are AgriculturalFacility records. Animals can move between premises within one holding without changing that holding's identity. A holding's use of a facility is stated by a separate dated HoldingFacilityLink; it is never inferred from movement or residence records. WOAH notes national conventions that also classify births, deaths or ownership changes as movements; those conventions are not asserted by this class. Inferring travel from changed residence intervals would lose evidence about the actual movement, its participants and transit sites.

WOAH and EU animal health law also cover zoos, research centres, border posts and quarantine stations. Those premises are not agricultural facilities, so the site ranges leave them out until a shared establishment concept is needed.

AnimalResponsibility stays separate from AssetPartyRole. It also covers pets and captive wild animals, and EU animal health law gives keepers and operators duties that ownership does not carry.

FAO DAD-IS data distinguishes breed information, population size and structure, and risk information. We retain a recognized breed concept instead of treating a breed name as a globally unique key or importing current population status into its identity.

FAO WCA 2020, Volume 1, paragraphs 8.4.10 to 8.4.17 describes successive, inter-planted, mixed and associated crops and area attribution. For inter-planted and mixed crops, paragraphs 8.4.12 and 8.4.13 apportion the plot or field among the crops, so the component areas must equal the area of the plot or field. component_planted_area follows that rule. A physical footprint area for each crop would be a different fact under a separately named property. A single primary-crop field would lose the mixture. crop_kind recommends the FAO Indicative Crop Classification from WCA 2020 Annex 4. No international season code list was found, so planting_season takes a national or local scheme.

UPOV 1991 Convention Article 1(vi) supplies the variety definition. The PLUTO TAG data format, pages 5 to 6, tags 010, 540 to 543 and 600 separates national-list and rights records and supports differing denominations across countries. PublicSchema retains identity and denominations; approval history belongs to a jurisdictional registration profile. No equivalence to an entire PLUTO record is claimed.

The FAO/Bioversity Multi-Crop Passport Descriptors (MCPD) define the accession number as unique only within a genebank and record incomplete collecting dates with missing parts, such as 1990----. accession_collection_date stores the known parts as a reduced-precision ISO 8601 date (1990), so no January date is fabricated. The Genesys API manual, sections 3.1 to 3.4 provides an accession JSON model with the same fields; section 3.2 labels that model outdated, so it is implementation evidence, not a current API contract. We do not copy its identity triplet as a universal uniqueness constraint.

CFIA QSP 152.1, definitions and sections 4.6 to 4.9 distinguishes lots, blends, mixtures and certification, including differing domestic and OECD terminology. Generic source-lot links are preferable to importing a jurisdiction-specific mixture enum. Composition proportions and certification rules require an explicit scheme profile; source links alone cannot reconstruct a regulated mixture declaration.

Global registry inheritance, closed animal vocabularies, a required season year and exact-looking field alignments are not used. Native global slots, typed relationships and open CodedValue classifications leave each registry's operating rules to its own profile.

Examples, counterexamples and export limits

The animal example changes keeper while retaining one animal identity, one continuing residence and the same owner. Separate dated relationship records preserve this distinction; changing a keeper never implies a sale or movement. The synthetic herd has twelve animals but only one known individual. Summing both as thirteen double-counts livestock. The mixed planting has two independently dated components and no fabricated season. Two seed lots refer to one accession and variety; merging these three identities destroys physical traceability. A partial variety with no protection is valid vocabulary data.

The separate movement example records three animals drawn from a herd previously counted at twelve. Two herd members are individually known, but only one is identified as a movement participant; the other remains at the origin. The event does not fabricate identities for the other two moved animals, move every known member, or calculate a remaining population of nine. A market and a transit centre are identified without a residence assertion or claimed visit order. The moving animal retains its identity and owner, with separate residence assertions before and after travel. Removing the movement record leaves those residence assertions valid but supplies no movement evidence.

JSON Schema exports check primitive types, arrays, numeric bounds, date patterns and date formats when a format checker is enabled, but accept additional properties and unresolved string references. An animal count cannot be negative, and a movement moves at least one animal. SHACL additionally checks typed RDF relationships when target nodes and their types are supplied: moved individuals, the source group, animal subjects, responsible persons or organizations, and facility sites. A Farm or a Person used as a movement site fails SHACL. Neither export proves identity, pedigree, varietal purity, completeness or chronological consistency. The vocabulary does not encode submission-requiredness. A single transit URI represented as a JSON scalar fails the array schema even though RDF has no scalar-versus-array distinction.

The focused count-submission test requires a population observation and its date. The runnable examples/agriculture-biology/validate_movement_profile.py separately requires a movement identity, departure date, headcount, origin, destination, and either known participants or a source group. It accepts partial individual identification, checks that identified participants do not exceed the headcount, checks that arrival is not before departure, and resolves references using only the supplied records. Missing or wrong-type targets fail this profile without RDF processing. It checks date and timestamp syntax, without comparing a calendar date to a timestamp or inferring a timezone. Run it with uv run --locked python examples/agriculture-biology/validate_movement_profile.py.

No external standard enum or exact mapping is asserted. Original local or unmapped codes can be carried in CodedValue without fabricating an external meaning URI.

Outside this model

The movement event does not describe journeys combining several source groups, timed or ordered transit visits, transport means, received counts or inventory reconciliation. Breed recognition across communities, perennial planting boundaries, recipient and foster dams, accession identity after transfer, mixed-lot composition, denomination approval history, pedigree confidence, seed tests and access-and-benefit-sharing status are not modelled by these identity concepts.

See a problem on this page? Report it on GitHub.