Reconciliation Service Debugging Console

Query

Start: Limit:
Sample Ocean's Eleven Query

Result


Reconciliation Service Documentation

The Freebase Reconciliation Service is useful for doing fuzzy matching of datasets where some of the data may be in the graph, and some of the names and values may not exactly match. The service takes a query and attempts to return records that best match it using string distances and probablistice matching.

The service has an interactive interface available here. The UI is written in Javascript using JQuery and is open-sourced at github here.

Please forward questions on the service to the Freebase dev list or to colin AT metaweb.com and peter AT metaweb.com.

API Overview

This API may be subject to change.

NameReconciliation API
DescriptionReconciles a subgraph and returns a sorted list of candidates with confidence values
URLhttp://www.mqlx.com/reconciliation/query
Required Argumentsq - A simplified MQL query.
Optional Arguments start - The offset within the results for a query, for paging through results.
limit - The maximum number of candidates returned.
jsonp - JSONP support - the name of the javascript function to wrap the json results in.
Responseapplication/json

Request

Requests resemble simplified MQL queries, with a dictionary of canonical properties and literal values. Any properties can be used as long as they use the canonical ids. If the property's expected value is a literal, then the value in the request is matched against the literal. If the property's expected value is a topic, then the value is matched against the name. CVT properties are flattened.

The id property can be used to specify the id for an entity in the reconciliation. Property values can be expanded to dictionaries to allow for an id; in this case the name is specified using the name property. If a guid is specified, the service won't question the mapping, and will either return candidates connected to that guid or assume that the connection to that guid is missing from OTG.

Here's an example:

    {
        "/type/object/name":"Blade Runner",
        "/type/object/type":"/film/film",
        "/film/film/starring/actor":["Harrison Ford", "Rutger Hauer"],
        "/film/film/starring/character":["Rick Deckard", "Roy Batty"],
        "/film/film/director":
        {
            "name":"Ridley Scott",
            "id":"/guid/9202a8c04000641f8000000000032ded"
        },
        "/film/film/release_date_s":"1981"
    }
Response

If the first record is a match, it will have the property "match":true in the result. If the service fails to reconcile the root record, it will return some suggested matches in rank-order of likelihood. The name, types, id, and match score of each record is also included.

Here's an example of a reconciliation response:

    [{
      "id":"/guid/9202a8c04000641f8000000000009e89",
      "name":["Bladerunner", "Blade Runner"],
      "score":2.1810298,
      "match":true,
      "type":["/award/award_winning_work", "/award/award_nominated_work", "/common/topic", "/base/dystopia/topic", "/film/film", "/base/greatfilms/topic", "/base/greatfilms/ranked_item", "/media_common/quotation_source", "/fictional_universe/work_of_fiction", "/media_common/adaptation", "/media_common/adapted_work"]
     },
     {
      "id":"/guid/9202a8c04000641f8000000000446749",
      "name":["Blade: Trinity"],
      "score":0.2877137,
      "match":false,
      "type":["/film/film", "/common/topic"]
     },
     {
      "id":"/guid/9202a8c04000641f8000000006b4624f",
      "name":["A Blade in the Dark"],
      "score":0.2664117,
      "match":false,
      "type":["/film/film", "/common/topic"]
     }, ...