Skip to content

Use Apache 2 proxy to expose only Marmotta SPARQL endpoint

Did some testing and determined we can use Apache 2 to proxy Tomcat, allowing us to only expose the SPARQL endpoint:

jbourquin@igskrdcnvmw3004:~/source/makb-docker-container$ curl "http://144.47.163.4/marmotta/sparql/select?query=SELECT%20*%20WHERE%20%7B%20%3Fs%20%3Fp%20%3Fo%20%7D%20LIMIT%2010"
<?xml version='1.0' encoding='UTF-8'?>
<sparql xmlns='http://www.w3.org/2005/sparql-results#'>
        <head>
                <variable name='s'/>
                <variable name='p'/>
                <variable name='o'/>
        </head>
        <results>
                <result>
                        <binding name='p'>
                                <uri>http://www.w3.org/2000/01/rdf-schema#label</uri>
                        </binding>
                        <binding name='s'>
                                <uri>http://144.47.163.4/marmotta/ldp</uri>
                        </binding>
                        <binding name='o'>
                                <literal>Marmotta's LDP Root Container</literal>
                        </binding>
                </result>
                <result>
                        <binding name='p'>
                                <uri>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</uri>
                        </binding>
                        <binding name='s'>
                                <uri>http://144.47.163.4/marmotta/ldp</uri>
                        </binding>
                        <binding name='o'>
                                <uri>http://www.w3.org/ns/ldp#Resource</uri>
                        </binding>
                </result>
                <result>
                        <binding name='p'>
                                <uri>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</uri>
                        </binding>
                        <binding name='s'>
                                <uri>http://144.47.163.4/marmotta/ldp</uri>
                        </binding>
                        <binding name='o'>
                                <uri>http://www.w3.org/ns/ldp#RDFSource</uri>
                        </binding>
                </result>
                <result>
                        <binding name='p'>
                                <uri>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</uri>
                        </binding>
                        <binding name='s'>
                                <uri>http://144.47.163.4/marmotta/ldp</uri>
                        </binding>
                        <binding name='o'>
                                <uri>http://www.w3.org/ns/ldp#Container</uri>
                        </binding>
                </result>
                <result>
                        <binding name='p'>
                                <uri>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</uri>
                        </binding>
                        <binding name='s'>
                                <uri>http://144.47.163.4/marmotta/ldp</uri>
                        </binding>
                        <binding name='o'>
                                <uri>http://www.w3.org/ns/ldp#BasicContainer</uri>
                        </binding>
                </result>
                <result>
                        <binding name='p'>
                                <uri>http://www.w3.org/ns/ldp#interactionModel</uri>
                        </binding>
                        <binding name='s'>
                                <uri>http://144.47.163.4/marmotta/ldp</uri>
                        </binding>
                        <binding name='o'>
                                <uri>http://www.w3.org/ns/ldp#Container</uri>
                        </binding>
                </result>
                <result>
                        <binding name='p'>
                                <uri>http://purl.org/dc/terms/created</uri>
                        </binding>
                        <binding name='s'>
                                <uri>http://144.47.163.4/marmotta/ldp</uri>
                        </binding>
                        <binding name='o'>
                                <literal datatype='http://www.w3.org/2001/XMLSchema#dateTime'>2020-06-10T21:58:37.000Z</literal>
                        </binding>
                </result>
                <result>
                        <binding name='p'>
                                <uri>http://purl.org/dc/terms/modified</uri>
                        </binding>
                        <binding name='s'>
                                <uri>http://144.47.163.4/marmotta/ldp</uri>
                        </binding>
                        <binding name='o'>
                                <literal datatype='http://www.w3.org/2001/XMLSchema#dateTime'>2020-06-10T21:58:37.000Z</literal>
                        </binding>
                </result>
        </results>
</sparql>

Please note I am querying port 80 on the docker container instead of port 8080.

When I try to query say /marmotta, nothing gets returned:

jbourquin@igskrdcnvmw3004:~/source/makb-docker-container$ curl "http://144.47.163.4/marmotta"
CTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.38 (Debian) Server at 144.47.163.4 Port 80</address>
</body></html>