diff --git a/src/server/sparql/FacetResults.js b/src/server/sparql/FacetResults.js
index a7d1d2ca120f3f5fd9099664c4da057f1c41f4ad..2ae997585154bcd31b6fd7105673ae3918e751c0 100644
--- a/src/server/sparql/FacetResults.js
+++ b/src/server/sparql/FacetResults.js
@@ -114,7 +114,12 @@ export const getAllResults = ({
     }));
   }
   // console.log(prefixes + q)
-  return runSelectQuery(prefixes + q, endpoint, mapper, resultFormat);
+  return runSelectQuery({
+    query: prefixes + q,
+    endpoint,
+    resultMapper: mapper,
+    resultFormat
+  });
 };
 
 export const getResultCount = async ({
@@ -135,7 +140,12 @@ export const getResultCount = async ({
       facetID: null
     }));
   }
-  const response = await runSelectQuery(prefixes + q, endpoint, mapCount, resultFormat);
+  const response = await runSelectQuery({
+    query: prefixes + q,
+    endpoint,
+    resultMapper: mapCount,
+    resultFormat
+  });
   return({
     resultClass: resultClass,
     data: response.data,
@@ -205,7 +215,12 @@ const getPaginatedData = ({
   }
   q = q.replace('<RESULT_SET_PROPERTIES>', resultSetProperties);
   // console.log(prefixes + q);
-  return runSelectQuery(prefixes + q, endpoint, makeObjectList, resultFormat);
+  return runSelectQuery({
+    query: prefixes + q,
+    endpoint,
+    resultMapper: makeObjectList,
+    resultFormat
+  });
 };
 
 export const getByURI = ({
@@ -280,5 +295,10 @@ export const getByURI = ({
   }
   q = q.replace('<ID>', `<${uri}>`);
   // console.log(prefixes + q)
-  return runSelectQuery(prefixes + q, endpoint, makeObjectList, resultFormat);
+  return runSelectQuery({
+    query: prefixes + q,
+    endpoint,
+    resultMapper: makeObjectList,
+    resultFormat
+  });
 };
diff --git a/src/server/sparql/FacetValues.js b/src/server/sparql/FacetValues.js
index 2a4310ab0d02700068bc314f201c1ab60ab3a679..a9d3d138d63a7131697a03dd083efa82621ddba9 100644
--- a/src/server/sparql/FacetValues.js
+++ b/src/server/sparql/FacetValues.js
@@ -33,6 +33,7 @@ export const getFacet = async ({
   // choose query template and result mapper:
   let q = '';
   let mapper = null;
+  let previousSelections = null;
   switch(facetConfig.type) {
     case 'list':
       q = facetValuesQuery;
@@ -67,6 +68,7 @@ export const getFacet = async ({
       facetID: facetID,
       inverse: false,
     });
+    previousSelections = new Set(getUriFilters(constraints, facetID));
     // if this facet has previous selections, include them in the query
     if (hasPreviousSelections(constraints, facetID)) {
       selectedBlock = generateSelectedBlock({
@@ -120,7 +122,13 @@ export const getFacet = async ({
     q = q.replace('<END_PROPERTY>', facetConfig.endProperty);
   }
   // console.log(prefixes + q)
-  const response = await runSelectQuery(prefixes + q, endpoint, mapper, resultFormat);
+  const response = await runSelectQuery({
+    query: prefixes + q,
+    endpoint,
+    resultMapper: mapper,
+    previousSelections,
+    resultFormat
+  });
   if (facetConfig.type === 'hierarchical') {
     return({
       facetClass: facetClass,
diff --git a/src/server/sparql/JenaQuery.js b/src/server/sparql/JenaQuery.js
index cb6b8d311f115d9026bb5f30125ddff194e2f7f3..991d748db4b3dd72f5e7ea8e52e1107dfdb167bd 100644
--- a/src/server/sparql/JenaQuery.js
+++ b/src/server/sparql/JenaQuery.js
@@ -11,6 +11,11 @@ export const queryJenaIndex = async ({
   q = q.replace('<QUERY>', `
   ?id text:query ('${queryTerm.toLowerCase()}' 2000) .
   `);
-  const results = await runSelectQuery(prefixes + q, endpoint, makeObjectList, resultFormat);
+  const results = await runSelectQuery({
+    query: prefixes + q,
+    endpoint,
+    resultMapper: makeObjectList,
+    resultFormat
+  });
   return results;
 };
diff --git a/src/server/sparql/Mappers.js b/src/server/sparql/Mappers.js
index 0d07fda45f1ac3563d7ec72df4ed0faab5ff5c11..710936ec75d15dc6668b1e422adcf5cac25989c6 100644
--- a/src/server/sparql/Mappers.js
+++ b/src/server/sparql/Mappers.js
@@ -19,7 +19,8 @@ export const mapCount = sparqlBindings => {
   return sparqlBindings[0].count.value;
 };
 
-export const mapFacet = sparqlBindings => {
+export const mapFacet = (sparqlBindings, previousSelections) => {
+  console.log(previousSelections)
   let results = [];
   if (sparqlBindings.length > 0) {
     results = mapFacetValues(sparqlBindings);
@@ -27,7 +28,8 @@ export const mapFacet = sparqlBindings => {
   return results;
 };
 
-export const mapHierarchicalFacet = sparqlBindings => {
+export const mapHierarchicalFacet = (sparqlBindings, previousSelections) => {
+  console.log(previousSelections)
   const results = mapFacetValues(sparqlBindings);
   let treeData = getTreeFromFlatData({
     flatData: results,
diff --git a/src/server/sparql/SparqlApi.js b/src/server/sparql/SparqlApi.js
index e40b945f1828df12282d14066c9590f2b4ee2b45..30eb68e44faa1fa218e62b5e550b7687e1f5adf3 100644
--- a/src/server/sparql/SparqlApi.js
+++ b/src/server/sparql/SparqlApi.js
@@ -5,7 +5,13 @@ import querystring from 'querystring';
 //   'Accept': 'text/turtle'
 // };
 
-export const runSelectQuery = async (query, endpoint, resultMapper, resultFormat) => {
+export const runSelectQuery = async ({
+  query,
+  endpoint,
+  resultMapper,
+  previousSelections = null,
+  resultFormat
+}) => {
   let MIMEtype = resultFormat === 'json'
     ? 'application/sparql-results+json; charset=utf-8'
     : 'text/csv; charset=utf-8';
@@ -22,7 +28,7 @@ export const runSelectQuery = async (query, endpoint, resultMapper, resultFormat
       data: q,
     });
     if (resultFormat === 'json') {
-      const mappedResults = resultMapper(response.data.results.bindings);
+      const mappedResults = resultMapper(response.data.results.bindings, previousSelections);
       return {
         data: mappedResults,
         sparqlQuery: query
diff --git a/src/server/sparql/SparqlQueriesGeneral.js b/src/server/sparql/SparqlQueriesGeneral.js
index 79bdb6d147bcfcf09c09c148d55462cd29e722f5..a5b060646c836df056553dcd53eef59a37e0bb90 100644
--- a/src/server/sparql/SparqlQueriesGeneral.js
+++ b/src/server/sparql/SparqlQueriesGeneral.js
@@ -69,9 +69,7 @@ export const facetValuesQuery = `
             ?instance <PREDICATE> ?id .
             VALUES ?facetClass { <FACET_CLASS> }
             ?instance a ?facetClass .
-            <SELECTED_VALUES>
           }
-          <SELECTED_VALUES_NO_HITS>
           <PARENTS>
           BIND(COALESCE(?selected_, false) as ?selected)
         }