Skip to main content

Ontology

The agrifooddata ontology is the shared vocabulary behind the data model. It tells a program — without asking anybody — what an identifier in a record means and where it comes from.

It is published under permanent identifiers at w3id.org/agrifooddata, which resolves to ontology.agrifooddata.org (source repository).

<https://w3id.org/agrifooddata/crops#TRZAW> a skos:Concept ;
skos:inScheme <https://w3id.org/agrifooddata/crops> ;
skos:notation "TRZAW" ; # the EPPO code
skos:prefLabel "Winterweichweizen"@de .

Two layers that fit together​

SchemaConcept schemes
Answerswhat a farm, a field, an activity iswhat its classifications may be
Holdsthe entity classes, enumerations and properties of the data model, in 14 packages17 curated concept schemes and a handful of code lists
In RDFOWL 2 DLSKOS
Namespacehttps://w3id.org/agrifooddata/term/ (prefix agfoda)https://w3id.org/agrifooddata/<scheme>#<concept>
Exampleagfoda:CultivationPeriod has one agfoda:typeUricrops#TRZAW is such a value

The schema is aligned to SOSA/SSN (observations and sensors), PROV-O (provenance) and GeoSPARQL (geometry). The concept schemes are written in SKOS and take their identifiers from established authorities wherever one exists.

The two are bound to each other​

agfoda:typeUri declares rdfs:range skos:Concept — true, and unhelpful, because it does not say which concepts. The schema therefore carries, per class, an OWL restriction generated from the registry: a cultivation period's type is a concept from the crops scheme.

agfoda:CultivationPeriod rdfs:subClassOf [
a owl:Restriction ; owl:onProperty agfoda:typeUri ;
owl:allValuesFrom [ a owl:Restriction ;
owl:onProperty skos:inScheme ;
owl:hasValue <https://w3id.org/agrifooddata/crops> ] ] .

A reasoner can check this, a form can build its picker from it, and a slot that names a class or property that does not exist breaks a test instead of nothing at all. Where several schemes supply one property, the restriction is over their union — an observation's observed property is a measured quantity, a pest or a soil property.

Every term has an address​

The schema is a slash namespace, so each term is a request of its own:

RequestAnswer
https://w3id.org/agrifooddata/term/Task in a browserthe class's row on the schema page
the same with Accept: text/turtlethe Turtle for an RDF client
https://w3id.org/agrifooddata/cropsthe scheme, as Turtle, JSON-LD, RDF/XML or HTML according to Accept

The schema ships as Turtle (term.ttl) and a page. The concept schemes ship in four files each, under the identifier of the scheme: <scheme>.ttl (the source), .jsonld, .rdf and .html.

Alongside them:

FilePurpose
agrifooddata.ttlthe entry file (VoID/DCAT): every scheme, its provenance, its links
crosswalk.csvthe mapping table
links/agrovoc.ttl, links/eppo.ttllink sets onto AGROVOC and EPPO, kept apart so nobody pulls them in unasked
context.jsonlda JSON-LD context that refers to the data model's

The context is the data model's​

Names in a record are the data model's to give, so the JSON-LD context lives in one place: the data model's context.jsonld. It maps every attribute onto the property declared in the ontology schema — typeUri onto agfoda:typeUri, createdAt onto agfoda:createdAt. The ontology's own context.jsonld refers to it.

Authorities, not replacements​

The vocabulary replaces none of the authorities it names; it connects them. Only what does not exist dereferenceably elsewhere gets an identifier here.

  • AGROVOC (FAO) is the backbone. Where a concept has a verified AGROVOC counterpart, the AGROVOC identifier itself is the concept's identifier (http://aims.fao.org/aos/agrovoc/c_…); it appears in no second address.
  • Crops, pests and growth stages have no dereferenceable authority. They keep identifiers of their own at the granularity of the code list of the German Federal Office of Consumer Protection and Food Safety (BVL), and are mapped onto AGROVOC where AGROVOC names them as the ontology does.
  • Codes of other systems — EPPO, BBCH, ICAR, ISOBUS — travel as code lists bound to concepts, not as identifiers. See Concept schemes.

Language and licence​

The curated schemes are bilingual (German and English). crops, pests and phenology carry German labels only: they come from the German BVL code list, and inventing English labels would be worse than the gap. Everything about the vocabulary itself — documentation, field names, code — is in English.

The vocabularies are published under CC BY 4.0, the tooling under MIT. Crops, pests, growth stages and registrations come from the BVL's plant protection product interface and are free to use under § 10 of the German Data Use Act; the prescribed attribution sits in every affected scheme.

See it in action​