Custom data attributes are intended to store custom data private to the page or application, for which there are no more appropriate attributes or elements.
The HTML5 spec contains a "Embedding custom non-visible data with the data-* attributes" chapter that states the folowing:
A custom data attribute is an attribute in no namespace whose name starts with the string "data-", has at least one character after the hyphen, is XML-compatible, and contains no characters in the range U+0041 to U+005A (LATIN CAPITAL LETTER A to LATIN CAPITAL LETTER Z).
[...]
Custom data attributes are intended to store custom data private to the page or application, for which there are no more appropriate attributes or elements.
These attributes are not intended for use by software that is independent of the site that uses the attributes.