rdfsparqldbpediadisambiguation

Query dbpedia to find possible contexts to disambiguate a word


Good day, stackoverflow,

I need to suggest to user different contexts for a word, so that he could have a possibility to disambuguate it.

For example: a word "less" can be Unix program, css framework or some other things. A word "apple" can be a fruit, a corporation, a river, a state in the US (big apple) or a bunch of other things.

I hope you got the idea.

I looked over the internet and so far I could come up only with this query.

But it's still far from being perfect. It often gives too much or too few words and sometimes nothing (for "jquery").

http://www.visualdataweb.org/relfinder/relfinder.php seems to use dbpedia as well, but its results are far better than mine.

How should I change my query to get more relevant results?


Solution

  • If you are looking for a Web API, use: DBpedia Lookup or DBpedia Spotlight. If you need to do it in SPARQL, you can use the DBpedia Lexicalization Dataset.

    For DBpedia Lookup, you can give a string and retrieve DBpedia Resources with labels matching those strings: lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString=apple

    For DBpedia Spotlight, you can optionally give more context: spotlight.dbpedia.org/rest/candidates?text=apple+company+macintosh+computer

    For the Lexicalization Dataset, there is no SPARQL endpoint available yet. You will need to download it, load it in your own RDF store and run a query like this:

    PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
    SELECT ?resource ?score WHERE {
    GRAPH ?g {
      ?resource skos:altLabel ?label.
    }
      ?g <http://dbpedia.org/spotlight/score> ?score.
      FILTER (REGEX(?label, "apple", "i"))
    }