Multiple ItemLists

It’s perfectly fine to have multiple ItemList items on a page, and it’s perfectly fine not to provide position.

With "not allowed", you are probably referring to Google’s guidelines for their Carousels search result feature. Google can’t decide what is/isn’t correct use of, only can do that. There is only one case where you should follow Google’s guidelines: If you want to get that specific Google search result feature for your page.

If you don’t want to get the feature, or if you can’t get the feature (it’s not possible for every page), you can ignore these guidelines.

From the perspective of, your idea is correct:

  • Use CollectionPage.

  • Use an ItemList for each subsection’s list.

    (You could use one parent ItemList that has each subsection ItemList as entry, but I don’t think it’s useful to do this as long as each subsection ItemList is meaningful on its own.)

  • The itemListElement property can have the entry (e.g., each MusicRecording) as direct value.

    (You only need to use ListItem if the order of the entries is relevant, in which case you should provide the position property.)

What would then be a proper way to markup a page list this?

It would be helpful if you provided your current markup to answer this. However, as unor pointed out it's acceptable to have multiple ItemList on a page despite the error Google's testing tool threw. To validate this claim run your markup through Yandex's structured data testing tool with multiple ItemList on a page and observe there is, in fact, no error thrown when multiple lists are present.

Regarding position param, it's relevant when the itemListOrder prop is not set to Unordered.

A snippet of your ideal mark-up might look something like:

<h2>Bob Songs</h2>
<ul itemscope itemtype="">
  <meta itemprop="itemListOrder" content="Unordered">
  <meta itemprop="name" content="Bob Songs">
  <li itemprop="itemListElement" itemscope itemtype="">
    <meta itemprop="name" content="Natural Mystic">
    <a href="#" itemprop="url">07. Natural Mystic</a>
  <li itemprop="itemListElement" itemscope itemtype="">
    <meta itemprop="name" content="Sun Is Shining">
    <a href="#" itemprop="url">02. Sun is Shining</a>

Then repeat that list for the next artist for as many artists as you need. And if you want more detailed structure has a good music example to learn from.