You should approach with REST Assured one more time. Actually it should perfectly fit your needs. When you run GraphQL service you basically run a REST end-point where you send some query and receive JSON as a response.

So nothing prevents you from using REST Assured since you can send whatever as a requests and at the same time it provides good tool set for parsing JSON response.

**UPD:**

Below you can find my example for your case  (Rest Assured + TestNg):

    @Test
    public void testGraphQL() throws MalformedURLException {
        String actual = RestAssured.
                                    given()
                                        .header(new Header("Content-type", "application/json"))
                                        .body("{\"query\":\"{\\n Country(id: \\\"us\\\") {\\n name\\n situation\\n }\\n}\\n \"}")
                                    .post(new URL("https://portal.ehri-project.eu/api/graphql"))
                                    .jsonPath().getString("data.Country.name");
        Assert.assertEquals(actual, "United Sttates");
    }

With the following output:

    java.lang.AssertionError: expected [United Sttates] but found [United States]
    Expected :United Sttates
    Actual   :United States
     <Click to see difference>

**P.S.** - This is the query that you have provided in your comment, however you can omit `\n` with no impact to your test.