diff --git a/project/dalia/query/items/facets/facet_objects.py b/project/dalia/query/items/facets/facet_objects.py
index 9159df259122a8c284f9748f92c7573823208b57..7bff7c933419cc8eecfc86ec6a689dd933f14fcb 100644
--- a/project/dalia/query/items/facets/facet_objects.py
+++ b/project/dalia/query/items/facets/facet_objects.py
@@ -1,9 +1,11 @@
 from typing import Callable, Dict
 
-from rdflib import DCTERMS, URIRef, XSD
-from rdflib.term import Literal, Node
+from rdflib import DCTERMS, SKOS, URIRef, XSD
+from rdflib.term import Node
 
-from project.dalia.rdf.namespace import MoDalia, SCHEMA, bibo, hcrt
+from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL
+from project.dalia.query.utils import Dataset, filter_by_lang
+from project.dalia.rdf.namespace import MoDalia, SCHEMA, SKOS_last_call, bibo, hcrt
 
 
 class FacetObject:
@@ -18,17 +20,22 @@ class FacetObject:
     This class could not be rewritten as frozen dataclass because the items field is mutable (there are no frozen
     dicts).
     """
+
     def __init__(
             self,
             label: str,
             key: URIRef,
             predicate: URIRef,
+            label_dataset: Dataset,
+            label_graph_pattern: tuple,
             items: Dict[Node, str],
             selected_facet_initializer: Callable[[str], Node]
     ):
         self.label = label
         self.key = key
         self.predicate = predicate
+        self.label_dataset = label_dataset
+        self.label_graph_pattern = label_graph_pattern
         self.items = items
         self.selected_facet_initializer = selected_facet_initializer
 
@@ -37,6 +44,11 @@ TARGET_AUDIENCE_FACET = FacetObject(
     label="Target Audience",
     key=MoDalia.TargetGroup,
     predicate=MoDalia.hasTargetGroup,
+    label_dataset=Dataset.ONTOLOGIES,
+    label_graph_pattern=(
+        (VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
+        filter_by_lang(VAR_LABEL),
+    ),
     items={
         MoDalia.StudentSchool: "Student (School)",
         MoDalia.BachelorStudent: "Bachelor Student",
@@ -55,6 +67,11 @@ MEDIA_TYPE_FACET = FacetObject(
     label="Media Type",
     key=MoDalia.MediaType,
     predicate=MoDalia.hasMediaType,
+    label_dataset=Dataset.ONTOLOGIES,
+    label_graph_pattern=(
+        (VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
+        filter_by_lang(VAR_LABEL),
+    ),
     items={
         SCHEMA.AudioObject: "Audio",
         MoDalia.Code: "Code",
@@ -71,6 +88,11 @@ LEARNING_RESOURCE_TYPE_FACET = FacetObject(
     label="Learning Resource Type",
     key=MoDalia.LearningResourceType,
     predicate=MoDalia.hasLearningType,
+    label_dataset=Dataset.ONTOLOGIES,
+    label_graph_pattern=(
+        (VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
+        filter_by_lang(VAR_LABEL),
+    ),
     items={
         bibo.Article: "Article",
         hcrt.assessment: "Assessment",
@@ -103,6 +125,11 @@ LANGUAGE_FACET = FacetObject(
     label="Language",
     key=XSD.language,
     predicate=DCTERMS.language,
+    label_dataset=Dataset.ONTOLOGIES,
+    label_graph_pattern=(
+        (VAR_ITEM, SKOS_last_call.prefLabel, VAR_LABEL),
+        filter_by_lang(VAR_LABEL),
+    ),
     items={
         URIRef("http://lexvo.org/id/iso639-3/eng"): "English",
         URIRef("http://lexvo.org/id/iso639-3/fra"): "French",
diff --git a/project/dalia/query/items/metadata/languages.py b/project/dalia/query/items/metadata/languages.py
index 37b175b14ce9ae5f589d04f151c3f197841e7b6e..2afd90d3871af59f7f937ccccf7e5cc9675dc09e 100644
--- a/project/dalia/query/items/metadata/languages.py
+++ b/project/dalia/query/items/metadata/languages.py
@@ -3,9 +3,10 @@ from typing import Collection, Dict, List
 from rdflib import DCTERMS, URIRef
 from rdflib.term import Node
 
+from project.dalia.query.items.facets.facet_objects import LANGUAGE_FACET
 from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
-from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
-from project.dalia.query.utils import Dataset, filter_by_lang
+from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris_for_facet
+from project.dalia.query.utils import filter_by_lang
 from project.dalia.rdf.namespace import SKOS_last_call
 
 _LABEL_GRAPH_PATTERN = (
@@ -15,7 +16,7 @@ _LABEL_GRAPH_PATTERN = (
 
 
 def _map_language_uris_to_string_label(items: Collection[Node]) -> Dict[Node, str]:
-    return get_labels_for_item_uris(items, Dataset.ONTOLOGIES, _LABEL_GRAPH_PATTERN)
+    return get_labels_for_item_uris_for_facet(items, LANGUAGE_FACET)
 
 
 def get_languages_for_resources(resource_uri_refs: List[URIRef]) -> Dict[URIRef, List[str]]:
diff --git a/project/dalia/query/items/metadata/learning_resource_types.py b/project/dalia/query/items/metadata/learning_resource_types.py
index 6a3aaa9b032f030bb1ad567504c4d207d0fc88b1..89d9572fd1a46efbbef1853e84488d50d462749f 100644
--- a/project/dalia/query/items/metadata/learning_resource_types.py
+++ b/project/dalia/query/items/metadata/learning_resource_types.py
@@ -1,23 +1,18 @@
 from typing import Collection, Dict, List
 
-from rdflib import SKOS, URIRef
+from rdflib import URIRef
 from rdflib.term import Node
 
 from project.dalia.api_models.api_models import LabelValueItem
+from project.dalia.query.items.facets.facet_objects import LEARNING_RESOURCE_TYPE_FACET
 from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
-from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
+from project.dalia.query.labels.label_service import get_labels_for_item_uris_for_facet
 from project.dalia.query.labels.utils import remap_to_label_value_item
-from project.dalia.query.utils import Dataset, filter_by_lang
 from project.dalia.rdf.namespace import MoDalia
 
-_LABEL_GRAPH_PATTERN = (
-    (VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
-    filter_by_lang(VAR_LABEL),
-)
-
 
 def _map_learning_resource_type_uris_to_label_value_items(items: Collection[Node]) -> Dict[Node, LabelValueItem]:
-    mapping = get_labels_for_item_uris(items, Dataset.ONTOLOGIES, _LABEL_GRAPH_PATTERN)
+    mapping = get_labels_for_item_uris_for_facet(items, LEARNING_RESOURCE_TYPE_FACET)
 
     return remap_to_label_value_item(mapping)
 
diff --git a/project/dalia/query/items/metadata/media_types.py b/project/dalia/query/items/metadata/media_types.py
index 3570481964f44cc2af154eaa265fb7ca75199eab..c2ba0aa83ff1e42177c17dee68864406a400bb54 100644
--- a/project/dalia/query/items/metadata/media_types.py
+++ b/project/dalia/query/items/metadata/media_types.py
@@ -1,23 +1,18 @@
 from typing import Collection, Dict, List
 
-from rdflib import SKOS, URIRef
+from rdflib import URIRef
 from rdflib.term import Node
 
 from project.dalia.api_models.api_models import LabelValueItem
+from project.dalia.query.items.facets.facet_objects import MEDIA_TYPE_FACET
 from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
-from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
+from project.dalia.query.labels.label_service import get_labels_for_item_uris_for_facet
 from project.dalia.query.labels.utils import remap_to_label_value_item
-from project.dalia.query.utils import Dataset, filter_by_lang
 from project.dalia.rdf.namespace import MoDalia
 
-_LABEL_GRAPH_PATTERN = (
-    (VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
-    filter_by_lang(VAR_LABEL),
-)
-
 
 def _map_media_type_uris_to_label_value_items(items: Collection[Node]) -> Dict[Node, LabelValueItem]:
-    mapping = get_labels_for_item_uris(items, Dataset.ONTOLOGIES, _LABEL_GRAPH_PATTERN)
+    mapping = get_labels_for_item_uris_for_facet(items, MEDIA_TYPE_FACET)
 
     return remap_to_label_value_item(mapping)
 
diff --git a/project/dalia/query/items/metadata/target_groups.py b/project/dalia/query/items/metadata/target_groups.py
index a75a354fe56cc72b191ed7b0be31e0a3485ec954..9528e6e1791f897beae59597148d221bc8dfa627 100644
--- a/project/dalia/query/items/metadata/target_groups.py
+++ b/project/dalia/query/items/metadata/target_groups.py
@@ -1,23 +1,18 @@
 from typing import Collection, Dict, List
 
-from rdflib import SKOS, URIRef
+from rdflib import URIRef
 from rdflib.term import Node
 
 from project.dalia.api_models.api_models import LabelValueItem
+from project.dalia.query.items.facets.facet_objects import TARGET_AUDIENCE_FACET
 from project.dalia.query.items.metadata.one_to_many_metadata import get_one_to_many_metadata_for_resources
-from project.dalia.query.labels.label_service import VAR_ITEM, VAR_LABEL, get_labels_for_item_uris
+from project.dalia.query.labels.label_service import get_labels_for_item_uris_for_facet
 from project.dalia.query.labels.utils import remap_to_label_value_item
-from project.dalia.query.utils import Dataset, filter_by_lang
 from project.dalia.rdf.namespace import MoDalia
 
-_LABEL_GRAPH_PATTERN = (
-    (VAR_ITEM, SKOS.prefLabel, VAR_LABEL),
-    filter_by_lang(VAR_LABEL),
-)
-
 
 def _map_target_group_uris_to_label_value_items(items: Collection[Node]) -> Dict[Node, LabelValueItem]:
-    mapping = get_labels_for_item_uris(items, Dataset.ONTOLOGIES, _LABEL_GRAPH_PATTERN)
+    mapping = get_labels_for_item_uris_for_facet(items, TARGET_AUDIENCE_FACET)
 
     return remap_to_label_value_item(mapping)
 
diff --git a/project/dalia/query/labels/label_service.py b/project/dalia/query/labels/label_service.py
index 35f0f61e6edcc90572b54aad816335831774bbde..47336c02387930214d13f4a4b3ce3fe3cc8469fc 100644
--- a/project/dalia/query/labels/label_service.py
+++ b/project/dalia/query/labels/label_service.py
@@ -55,3 +55,15 @@ def get_labels_for_item_uris(
     query = prepare_query_for_labels_from_items(items, graph_pattern, order_by)
     results = query_dataset(dataset, query)
     return _process_results(results)
+
+
+def get_labels_for_item_uris_for_facet(items: Collection[URIRef], facet) -> Dict[URIRef, str]:
+    """
+    Retrieves the labels for the given items and the given facet.
+
+    :param items: URIRefs of the items
+    :param facet: facet definition
+    :return: Associations between the item URIRefs and their respective label. The insertion order of this dictionary
+             reflects the specified order.
+    """
+    return get_labels_for_item_uris(items, facet.label_dataset, facet.label_graph_pattern)
diff --git a/tests/project/dalia/query/items/basic_search_filters/test_basic_search_filters.py b/tests/project/dalia/query/items/basic_search_filters/test_basic_search_filters.py
index 0756474cedd3b1fb5d63470d3433271dea6f4085..b6945135a52b06535130c7350537e45d1f12e439 100644
--- a/tests/project/dalia/query/items/basic_search_filters/test_basic_search_filters.py
+++ b/tests/project/dalia/query/items/basic_search_filters/test_basic_search_filters.py
@@ -3,9 +3,11 @@ from rdflib import URIRef
 from rest_framework import status
 
 from project.dalia.api_models.api_models import BasicSearchFilter, BasicSearchFilterKey, BasicSearchFilterValue
-from project.dalia.query.items.basic_search_filters.basic_search_filters import \
-    prepare_query_to_get_all_existing_filter_items_for_facet
+from project.dalia.query.items.basic_search_filters.basic_search_filters import (
+    prepare_query_to_get_all_existing_filter_items_for_facet,
+)
 from project.dalia.query.items.facets.facet_objects import FacetObject
+from project.dalia.query.utils import Dataset
 from project.dalia.rdf.namespace import MoDalia, SCHEMA, bibo, hcrt
 from project.dalia.serializers import BasicSearchFilterSerializer
 from tests.project.dalia.utils import dedent_and_normalize, normalize
@@ -14,6 +16,8 @@ _TEST_FACET = FacetObject(
     label="Test facet",
     key=URIRef("http://example/testFacet"),
     predicate=URIRef("http://example/hasTestFacet"),
+    label_dataset=Dataset.ONTOLOGIES,
+    label_graph_pattern=(),
     items={
         URIRef("http://example/testFacetItem1"): "Item 1",
         URIRef("http://example/testFacetItem2"): "Item 2",
diff --git a/tests/project/dalia/query/items/facets/utils.py b/tests/project/dalia/query/items/facets/utils.py
index 767e9e553357fcd7f3f47bd63e3ee12e6b4e5636..66579bd1124a07729ea9701e461c869546c6b3c0 100644
--- a/tests/project/dalia/query/items/facets/utils.py
+++ b/tests/project/dalia/query/items/facets/utils.py
@@ -1,11 +1,14 @@
 from rdflib import Literal, URIRef
 
 from project.dalia.query.items.facets.facet_objects import FacetObject
+from project.dalia.query.utils import Dataset
 
 TEST_FACET1 = FacetObject(
     label="facet1",
     key=URIRef("facet1-key"),
     predicate=URIRef("facet1-predicate"),
+    label_dataset=Dataset.ONTOLOGIES,
+    label_graph_pattern=(),
     items={
         URIRef("facet1-item1"): "",
         URIRef("facet1-item2"): "",
@@ -18,6 +21,8 @@ TEST_FACET2 = FacetObject(
     label="facet2",
     key=URIRef("facet2-key"),
     predicate=URIRef("facet2-predicate"),
+    label_dataset=Dataset.ONTOLOGIES,
+    label_graph_pattern=(),
     items={
         URIRef("facet2-item1"): "",
     },
@@ -27,6 +32,8 @@ TEST_FACET3 = FacetObject(
     label="facet3",
     key=URIRef("facet3-key"),
     predicate=URIRef("facet3-predicate"),
+    label_dataset=Dataset.ONTOLOGIES,
+    label_graph_pattern=(),
     items={
         URIRef("facet3-item1"): "",
         URIRef("facet3-item2"): "",
@@ -37,6 +44,8 @@ TEST_FACET4 = FacetObject(
     label="facet4",
     key=URIRef("facet4-key"),
     predicate=URIRef("facet4-predicate"),
+    label_dataset=Dataset.ONTOLOGIES,
+    label_graph_pattern=(),
     items={
         Literal("facet4-item1"): "",
         Literal("facet4-item2"): "",