sparql-mode icon indicating copy to clipboard operation
sparql-mode copied to clipboard

enable querying of an RDF file

Open VladimirAlexiev opened this issue 11 months ago • 4 comments

sparql-mode queries SPARQL endpoints that is specified with variables like this;

(setq
 sparql-default-base-url "..." ;; org-babel-execute:sparql gets endpoint from param :url
 sparql-prompt-base-url t ; this really means endpoint
 sparql-default-format "text/csv" ;; org-babel-execute:sparql gets from param :format
)
(put 'sparql-base-url 'safe-local-variable 'stringp)

However, it's also interesting to query an RDF file. Eg during development of an ontology, you can extract the class hierarchy this way. Two tools that allow this:

VladimirAlexiev avatar Mar 28 '24 12:03 VladimirAlexiev

We could use advice but it's better to fork sparql-mode and add this and other additions (eg sparql vs update vs tarql derived modes, syntax checking with flycheck, etc. A crucial question is how to pass org-babel parameters to the query tool (see params :url and :format in the first code block).

VladimirAlexiev avatar Apr 01 '24 14:04 VladimirAlexiev

I'm not sure whether I understand completely. With the variant org-babel-execute:sparql in ELOT, :url is reused for a filename (in the sense of, if it doesn't look like a url, assume it's a filename). Maybe this should be required to be a file:/// url? It appears to me to make sense that we don't need another header parameter, but can reuse :url.

Regarding :format, there's a use of this in the ELOT elot-robot-execute-query to request either csv or ttl from ROBOT. Should that be done differently?

johanwk avatar Apr 01 '24 18:04 johanwk

Hi @johanwk !

  • you're using :format correctly but sparql-mode currently has only tabular SPARQL formats: https://github.com/ljos/sparql-mode/issues/77
  • I think guessing whether :url is an endpoint or a file is wrong.
    • Loading a file from http or https is a fully valid use case
    • I think that both arq.query and robot query support loading multiple files (arq can take --data multiple times, haven't checked whether robot can take --input multiple times)
    • Both allow loading data in named graphs: arq through --namedGraph, robot in a more involved way
    • The arq documentation is poor, arq --help shows more info but still raises some questions: https://github.com/apache/jena/issues/2411

So I think you should use a new keyword eg :data (which is a file in a triple or quad format, i.e. can populate multiple graphs). In the future we may think of exploiting the namedGraph options of arq or robot.

Please reopen https://github.com/johanwk/elot/issues/27

VladimirAlexiev avatar Apr 10 '24 17:04 VladimirAlexiev

I can only say I agree with all of your points here. I chose shortcuts in order to progress ELOT. sparql-mode should do much better, I just don't want to wait for it.

Will reopen :)

johanwk avatar Apr 10 '24 22:04 johanwk