Проблема получения только языков программирования из DBPedia с помощью Sparql - PullRequest
0 голосов
/ 22 марта 2019

Все работает нормально, и да, я получаю языки программирования, используя запрос sparql по коду Java, но проблема в том, что вы можете посмотреть на картинку, что sex_education не является языком программирования, но я включаю его в свой список результатов.Не только это, но и некоторые другие результаты, которые не являются языками программирования.Что я могу сделать сейчас, чтобы получить только языки программирования!

import com.hp.hpl.jena.query.*;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.util.*;

public class App 
{
    public static void main(String[] args) {
        ParameterizedSparqlString qs = new ParameterizedSparqlString(""
                + "prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
                + "prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#>\n"
                + "PREFIX dbo:     <http://dbpedia.org/ontology/>"
                + "\n"
                + "SELECT ?pl ?label \n" + 
                "    WHERE { \n" + 
               // "          ?pl dbo:abstract ?abstract .\n" + 
                "            ?pl rdfs:label ?label .\n" + 
               // "            ?pl dbo:influenced ?influenced .\n" + 
               // "            ?pl dbo:influencedBy ?influencedBy .\n" + 
                "            ?pl rdf:type dbo:ProgrammingLanguage .\n" + 
               // "            FILTER (LANG(?abstract) = 'en') .\n" + 
                                    "   FILTER (LANG(?label)='en')"+
                "         }");


        QueryExecution exec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", qs.asQuery());

        ResultSet results = exec.execSelect();

        int count = 0;

        while (results.hasNext()) {

            System.out.println(results.next().get("label").toString()+"");
            //System.out.println(results.next().get("abstract").toString()+"\n\n");
            count++;
        }

        System.out.println(count);


        //ResultSetFormatter.out(results);
    }
}

Снимок экрана с результатом

Screen Shot of result

1 Ответ

0 голосов
/ 23 марта 2019

Данные DBpedia загрязнены, так же как и данные Википедии, из которых получена DBpedia.

DBpedia-Live (в настоящий момент остановлен, но предназначен для обновления приблизительно в реальном времени из пожарного рукава Википедии) отражает Википедиюизменяется быстрее, чем DBpedia (пакетное обновление, обычно 6-12 месяцев между партиями, обычно 3-18 месяцев после изменений в Википедии).

Вы можете копировать и вставлять любой запрос, который выполняется на конечной точке DBpedia до конечной точки DBpedia-Live для получения результатов из более свежих данных.

...