Is there a way for reconciling data against SPARQL endpoints (e.g., DBpedia, databnf, etc).?

I would like to reconcile my data with data exposed through a sparql endpoint service (databnf). I tryed the grefine-rdf-extension but doesn’t seem to work. I use the 3.6.2 of OpenRefine and 1.4.0 of grefine-rdf-extension
I’ve installed the extension and it’s displayed on the OpenRefine interface, so I suppose the installation worked well, but the connection to the sparql endpoint doesn’t seem to work. I have the following message when I try to access the service from the reconciliation window.

HTTP ERROR 404 Not Found

URI: /extension/rdf-extension/services/databnf
MESSAGE: Not Found
SERVLET: refine

Did somebody managed to make this extension work or have another solution for reconciling data against SPARQL endpoints?
Thank for any hint

Hi and welcome!

I’ve just tried it and it works for me.

Can you confirm how you are adding the SPARQL endpoint as a reconciliation service? I did the following:

  • Click the RDF extension menu
  • Choose “Add reconcilation service”
  • Choose “Based on SPARQL endpoint”
    Fill out details:
  1. Name: BNF
  2. Endpoint URL: Éditeur SPARQL de
  3. Graph URI: blank
  4. Type: Generic SPARQL
  5. Label properties: rdfs:label

Once that’s done:

  • Reconcile → Start Reconciling (from column menu)
  • Choose “BNF”
  • Choose “Reconcile against no particular type”
  • Click “Start reconciling”

On a single cell containing the string “Mitterand” I got back three suggested matches. In the console I can see the SPARQL request is returning :
{ "q0": { "result": [ { "id": "", "name": "François Mitterand ou \"Cet homme est dangereux\"", "score": 0.1914893388748169, "match": false, "type": [ { "id": "", "name": "" }, { "id": "", "name": "" } ] }, { "id": "", "name": "\"La force injuste de la loi\", François Mitterand", "score": 0.1875, "match": false, "type": [ { "id": "", "name": "" }, { "id": "", "name": "" } ] }, { "id": "", "name": "Le disciple ou Les dix leçons que Jospin apprit de Mitterand", "score": 0.1499999761581421, "match": false, "type": [ { "id": "", "name": "" }, { "id": "", "name": "" } ] } ] } }

Hi ostephens,
Thanks so much for trying.
I think I followed the same steps.
Here is a screen shot:

the result apears on the next window (french interface, so the message is in French, hope it’s ok) with the following message : “Désolé, aucun type n’a pu être identifié pour vos données. Merci de l’indiquer ci-dessous.” ("Sorry, no type could be identified for your data. Please indicate this below.),

and when I click on “Accès au service de l’API” (up-right corner), I land on the 404 error message I cited above.

Certanly, I missed something, but I don’t know where to look.

Does this message appear when you try to do the reconciliation? If so, are you selecting a specific type to be used for the reconciliation?

yes, you’re right. When choosing the type, we must activate the checkbox “Réconcilier sans type particulier”. Now the service works.
thank you so much.

1 Like