Запрос dbpedia-spotlight с использованием Java

Я пытаюсь адаптировать один из примеров, представленных на DBpedia-SpotLight:

DBpediaSpotlightClient.java (требуется AnnotationClient.java)

Используя этот пример, дается описание, и сервис Spotlight запрашивается для получения аннотированного ответа: веб-служба

Что ж, для запуска этой программы необходимо выбрать путь для входного файла (с описанием) и выходного файла (с результатом): вы можете найти его в конце исходного кода.

File input = new File("...");
File output = new File("...");

Далее, параметры, которые он принимает, сообщаются здесь:

GetMethod getMethod = new GetMethod(API_URL + "rest/annotate/?" +
                "confidence=" + CONFIDENCE
                + "&support=" + SUPPORT
                + "&text=" + URLEncoder.encode(text.text(), "utf-8"));
getMethod.addRequestHeader(new Header("Accept", "application/json"));
spotlightResponse = request(getMethod);

Где, я полагаю, хранятся параметры, переданные для прослушивания службы Spotlight.

Как написано в веб-сервисе, я бы использовал и другие варианты (например, sparql параметр) и использовать другие методы запроса, такие как определение или кандидатов ("rest/spot/?", "rest/candidates/?") но я не знаю, как я могу продолжить.

Как я могу изменить это? Нужен ли другой файл?

Спасибо!

Отредактировано:

Пожалуйста, посмотрите на код, который я запускаю (API_URL - это " http://spotlight.dbpedia.org/"):

        LOG.info("Querying API.");
        String spotlightResponse;
        try {
            GetMethod getMethod = new GetMethod(API_URL + "rest/candidates?" +
                    "confidence=" + CONFIDENCE
                    + "&support=" + SUPPORT
                    + "&text=" + URLEncoder.encode(text.text(), "utf-8"));
            getMethod.addRequestHeader(new Header("Accept", "application/json"));

            spotlightResponse = request(getMethod);
        } catch (UnsupportedEncodingException e) {
            throw new AnnotationException("Could not encode text.", e);
        }

Я попробовал то, что вы предложили, но я получаю такую ​​ошибку для каждого запроса:

INFO 2014-01-28 12:40:41,578 main [DBpediaSpotlightClient] - Querying API.
gen 28, 2014 12:40:54 PM org.apache.commons.httpclient.HttpMethodBase getRespons
eBody
Avvertenza: Going to buffer response body of large or unknown size. Using getRes
ponseBodyAsStream instead is recommended.
ERROR 2014-01-28 12:40:55,089 main [DBpediaSpotlightClient] - org.dbpedia.spotli
ght.exceptions.AnnotationException: Received invalid response from DBpedia Spotl
ight API.
org.dbpedia.spotlight.exceptions.AnnotationException: Received invalid response
from DBpedia Spotlight API.
        at org.dbpedia.spotlight.evaluation.external.DBpediaSpotlightClient.extr
act(DBpediaSpotlightClient.java:74)
        at org.dbpedia.spotlight.evaluation.external.AnnotationClient.saveExtrac
tedEntitiesSet(AnnotationClient.java:138)
        at org.dbpedia.spotlight.evaluation.external.AnnotationClient.evaluateMa
nual(AnnotationClient.java:168)
        at org.dbpedia.spotlight.evaluation.external.AnnotationClient.evaluate(A
nnotationClient.java:164)
        at org.dbpedia.spotlight.evaluation.external.DBpediaSpotlightClient.main
(DBpediaSpotlightClient.java:112)
 INFO 2014-01-28 12:40:55,110 main [DBpediaSpotlightClient] - Extracted entities
 from 5 text items, with 0 successes and 5 errors.
 INFO 2014-01-28 12:40:55,110 main [DBpediaSpotlightClient] - Results saved to:
C:\Users\Alberto\Documents\projects\OmniTourist\apache jena\org\dbpedia\spotligh
t\evaluation\external\output.txt
 INFO 2014-01-28 12:40:55,114 main [DBpediaSpotlightClient] - Average extraction
 time: 0.0 ms

Еще раз спасибо!

1 ответ

Чтобы использовать другие методы, вы должны изменить GetMethod. Например:

// "rest/candidates/?"

GetMethod getMethod = new GetMethod(API_URL + "rest/candidates?" +
                "confidence=" + CONFIDENCE
                + "&support=" + SUPPORT
                + "&text=" + URLEncoder.encode(text.text(), "utf-8"));

И т.п.

Другие вопросы по тегам