---
name: "Biber::DataModel"
section: "3pm"
platform: "linux"
package: "biber"
version: "1:2.22-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Biber::DataModel"
---

# Biber::DataModel(3pm)

Biber::DataModel objects

## NAME

Biber::DataModel - Biber::DataModel objects

### new

```
    Initialize a Biber::DataModel object
    We are passing in an array of datamodels as there may be more than one in tool
    mode - the one from biber-tool.conf and modifications in a user .conf
    We first merge these before extracting data. In case of conflicts, user .conf
    datamodel takes precedence.
```

### get\_outcase

```
    Returns the original datamodel field/entrytype case for output
```

### constants

```
    Returns array ref of constant names
```

### get\_constant\_type

```
    Returns a constant type
```

### get\_constant\_value

```
    Returns a constant value
```

### is\_multiscript

```
    Returns boolean to say if a field is a multiscript field
```

### fieldtypes

```
    Returns array ref of legal fieldtypes
```

### datatypes

```
    Returns array ref of legal datatypes
```

### is\_field

```
    Returns boolean to say if a field is a legal field.
    Allows for fields with meta markers whose marked field should be in
    the datamodel.
```

### entrytypes

```
    Returns array ref of legal entrytypes
```

### is\_entrytype

```
    Returns boolean to say if an entrytype is a legal entrytype
```

### is\_field\_for\_entrytype

```
    Returns boolean to say if a field is legal for an entrytype
```

### entrytype\_is\_skipout

```
    Returns boolean depending on whether an entrytype is to be skipped on output
```

### get\_fields\_of\_fieldtype

```
    Retrieve fields of a certain biblatex fieldtype from data model
    Return in sorted order so that bbl order doesn't change when changing
    .bcf. This really messes up tests otherwise.
```

### get\_fields\_of\_fieldformat

```
    Retrieve fields of a certain format from data model
    Return in sorted order so that bbl order doesn't change when changing
    .bcf. This really messes up tests otherwise.
```

### get\_fields\_of\_datatype

```
    Retrieve fields of a certain biblatex datatype from data model
    Return in sorted order so that bbl order doesn't change when changing
    .bcf. This really messes up tests otherwise.
```

### get\_fields\_of\_type

```
    Retrieve fields of a certain biblatex type from data model
    Return in sorted order so that bbl order doesn't change when changing
    .bcf. This really messes up tests otherwise.
```

### is\_fields\_of\_type

```
  Returns boolean to say if the given fieldtype/datatype/format is a valid combination
```

### get\_fieldtype

```
    Returns the fieldtype of a field
```

### get\_datatype

```
    Returns the datatype of a field
```

### get\_fieldformat

```
    Returns the format of a field
```

### get\_dm\_for\_field

```
    Returns the fieldtype, datatype and format of a field
```

### field\_is\_fieldtype

```
    Returns boolean depending on whether a field is a certain biblatex fieldtype
```

### field\_is\_datatype

```
    Returns boolean depending on whether a field is a certain biblatex datatype
```

### field\_is\_type

```
    Returns boolean depending on whether a field is a certain biblatex fieldtype
    and datatype
```

### field\_is\_nullok

```
    Returns boolean depending on whether a field is ok to be null
```

### field\_is\_skipout

```
    Returns boolean depending on whether a field is to be skipped on output
```

### check\_mandatory\_constraints

```
    Checks constraints of type "mandatory" on entry and
    returns an array of warnings, if any
```

### check\_conditional\_constraints

```
    Checks constraints of type "conditional" on entry and
    returns an array of warnings, if any
```

### check\_data\_constraints

```
    Checks constraints of type "data" on entry and
    returns an array of warnings, if any
```

### check\_datatypes

```
    Checks datatypes of fields against fields. These are not explicit constraints
    in the datamodel but rather checks of the datatype of fields in the datamodel.
```

### dump

```
    Dump Biber::DataModel object
```

### generate\_bltxml\_schema

```
    Generate a RelaxNG XML schema from the datamodel for BibLaTeXML datasources
```

### generate\_bblxml\_schema

```
    Generate a RelaxNG XML schema from the datamodel for bblXML output
```

## AUTHORS

Philip Kime `"<philip at kime.org.uk>"`

## BUGS

Please report any bugs or feature requests on our Github tracker at \<https://github.com/plk/biber/issues\>.

## COPYRIGHT & LICENSE

Copyright 2012-2026 Philip Kime, all rights reserved.

This module is free software.  You can redistribute it and/or modify it under the terms of the Artistic License 2.0.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.
