\ProvidesFile{biblatex-gost.dbx}
[2023/04/25\space v1.24\space biblatex-gost data model]

% Biblatex-GOST data model

\DeclareDatamodelFields[type=field, datatype=range]{
  number,
  book,
  part,
  volume,
  issue,
}

\DeclareDatamodelFields[type=field, datatype=literal]{
  internalsortbook,
  internalsortpart,
  internalsortvolume,
  internalsortissue,
  books,parts,issues,
  volsorder,
  sortvolume,
  systemreq,
  publication,
  ipc,
  requestnumber,
  prioritynumber,
  prioritycountry,
  authorcountry,
  science,
  specialitycode,
  speciality,
  heading,
}

\DeclareDatamodelFields[type=field,datatype=date,skipout]{
  update,
  prioritydate,
  publicationdate,
}

\DeclareDatamodelFields[type=list, datatype=name]{
  booktranslator,
  bookcommentator,
  bookannotator,
  bookintroduction,
  bookforeword,
  bookafterword,
}

\DeclareDatamodelFields[type=field, datatype=key]{
  media,
}

\@ifpackagelater{biblatex}{2016/12/06} %biblatex 3.8+
{\DeclareDatamodelFields[type=list, datatype=key]{
  bookoriglanguage,
}}
{\DeclareDatamodelFields[type=field, datatype=key]{
  bookoriglanguage,
}}

\DeclareDatamodelFields[type=list, datatype=literal]{
  specdata,
  credits,
  bookcredits,
  editioncredits,
}

\DeclareDatamodelEntryfields{
  number,
  book,part,issue,
  books,parts,issues,
  internalsortbook,
  internalsortpart,
  internalsortvolume,
  internalsortissue,
  language,
  media,
  credits,
  editioncredits,
  specdata,
  volsorder,
  heading,
}

\DeclareDatamodelEntryfields[article,periodical]{
  journalcredits,
  location,
  publisher,
}

\DeclareDatamodelEntryfields[book,collection,proceedings,reference]{
  sortvolume,
}

\DeclareDatamodelEntryfields[inbook,incollection,inproceedings,inreference,bookinbook,suppbook,suppcollection]{
  booktranslator,
  bookcommentator,
  bookannotator,
  bookintroduction,
  bookforeword,
  bookafterword,
  bookoriglanguage,
  bookcredits,
}

\DeclareDatamodelEntryfields[thesis]{
  science,specialitycode,speciality,number,
}

\DeclareDatamodelEntryfields[online]{
  update,systemreq,
}

\DeclareDatamodelEntryfields[patent]{
  pagetotal,
  priorityday,prioritymonth,priorityyear,
  priorityendday,priorityendmonth,priorityendyear,
  publicationday,publicationmonth,publicationyear,
  publicationendday,publicationendmonth,publicationendyear,
  publication,requestnumber,ipc,prioritynumber,prioritycountry,
  authorcountry
}

\DeclareDatamodelConstraints{
  \constraint[type=data, datatype=date]{
    \constraintfield{update}
    \constraintfield{prioritydate}
    \constraintfield{publicationdate}
  }
}

\endinput