Greetings,

I am wondering if anyone could point me to some CORS configuration examples to 
configure CORS for a standalone Fuseki server run at the command line.

I’ve searched high and low for some workable examples, but so far have not 
found anything that works successfully, official documentation doesn’t have 
much on the subject either.

What I’ve managed to glean from available information so far is that I can 
declare a CORS configuration file with appropriate allow rules, something like:

@prefix fuseki: <http://jena.apache.org/fuseki#> .

<#corsConfig> a fuseki:CORSConfiguration ;
    fuseki:allowedOrigin "https://example.cloudfront.net"; ;
    fuseki:allowedMethod "GET" ;
    fuseki:allowedMethod "POST" ;
    fuseki:allowedHeader "Content-Type" ;
    fuseki:allowedHeader "Origin" ;
    fuseki:allowedHeader "X-Requested-With" ;
    fuseki:allowedHeader "Accept" ;
    fuseki:maxAge 3600 .

And then call that config file from the command line when launching Fuseki with:

/fuseki-server --cors cors-config.ttl

With this approach I was assuming that the CORS configuration would apply to 
any endpoint declared in the main config (see below) with  fuseki:serviceQuery. 
 But, that does not seem to be the case.

This results in a “No services found error"

As a result, I am wondering if the CORS config needs to be integrated somehow 
with the main config file.

If this is the base configuration:

PREFIX :       <http://base/#>
PREFIX fuseki: <http://jena.apache.org/fuseki#>
PREFIX ja:     <http://jena.hpl.hp.com/2005/11/Assembler#>
PREFIX rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:   <http://www.w3.org/2000/01/rdf-schema#>
PREFIX tdb2:   <http://jena.apache.org/2016/tdb#>
PREFIX schema: <https://schema.org/>
PREFIX text: <http://jena.apache.org/text#>

:service_tdb_all  rdf:type            fuseki:Service;
        rdfs:label                    "TDB2 chd";
        fuseki:dataset                :text_dataset;
        fuseki:name                   "chd";
        fuseki:serviceQuery           "query" , "sparql" , "";
        fuseki:serviceReadGraphStore  "get";
        fuseki:serviceReadWriteGraphStore
                "data";
        fuseki:serviceUpdate          "" , "update";
        fuseki:serviceUpload          "upload” .

I’m unsure of how to incorporate the CORS configuration intros config, this is 
where some examples would be helpful.

Perhaps something like this for the “sparql” endpoint?

PREFIX :       <http://base/#>
PREFIX fuseki: <http://jena.apache.org/fuseki#>
PREFIX ja:     <http://jena.hpl.hp.com/2005/11/Assembler#>
PREFIX rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:   <http://www.w3.org/2000/01/rdf-schema#>
PREFIX tdb2:   <http://jena.apache.org/2016/tdb#>
PREFIX schema: <https://schema.org/>
PREFIX text: <http://jena.apache.org/text#>

:service_tdb_all  rdf:type            fuseki:Service;
        rdfs:label                    "TDB2 chd";
        fuseki:dataset                :text_dataset;
        fuseki:name                   "chd”;
        fuseki:serviceQuery           "query" , "sparql" , "”;

        ## SPARQL query services e.g. http://host:port/chd/sparql?query=

    fuseki:endpoint [

      fuseki:operation fuseki:query ;
         fuseki:name "sparql";
      fuseki:CORSConfiguration [
             fuseki:allowOrigin "https://example.cloudfront.net"; ;
             fuseki:allowMethods "GET, POST," ;
                              fuseki:allowHeaders "Content-Type, Authorization” 
 ;
             fuseki:allowedHeader "Origin" ;
              fuseki:allowedHeader "X-Requested-With" ;
               fuseki:allowedHeader "Accept" ;
              fuseki:maxAge 3600 .
      ]
           ] ;


        fuseki:serviceReadGraphStore  "get";
        fuseki:serviceReadWriteGraphStore
                "data";
        fuseki:serviceUpdate          "" , "update";
        fuseki:serviceUpload          "upload” .

The above is just a guess, so any guidance would be greatly appreciated.

Thank you,
Robert

Reply via email to