Re: Safe manipulation of RDF data (from semantic-web)

Mikael,

I’ll try to help, but this is getting out of the realm of Processor.

Have you completed the Docker post-installation steps for Linux?
https://docs.docker.com/install/linux/linux-postinstall/

Also check the suggestions here:
https://github.com/docker/compose/issues/4181

Regarding the nginx conf, just use the one from the example - it is
controlled using the PROXY_PASS/PROXY_SET_HOST variables.

On Wed, 2 Oct 2019 at 11.14, Mikael Pesonen <mikael.pesonen@lingsoft.fi>
wrote:

>
> I have, see the error messages at the end of my previous message.
>
>
> On 01/10/2019 18:19, Martynas Jusevičius wrote:
>
> Hi Mikael,
>
> have you installed docker-compose? It’s a separate runtime:
> https://docs.docker.com/compose/install/
>
> Also, are you running docker-compose from
> the folder where docker-compose.yml file is located?
>
> On Tue, 1 Oct 2019 at 11.47, Mikael Pesonen <mikael.pesonen@lingsoft.fi>
> wrote:
>
>>
>> Hi Martynas,
>>
>> I have a compose file now:
>>
>> version: "2"
>> services:
>>    processor:
>>      image: atomgraph/processor
>>      ports:
>>        - 8090:8080
>>        - 8010:8000 # debugger
>>      environment:
>>        - JPDA_ADDRESS=8000 # debugger port
>>        - ENDPOINT="https://semantic-dev.lingsoft.fi/fuseki/ds" #
>> hostname equals service name
>>        - GRAPH_STORE="https://semantic-dev.lingsoft.fi/fuseki/ds" #
>> hostname equals service name
>>        - ONTOLOGY="https://resource.lingsoft.fi/aabb#"
>>      volumes:
>>        -
>>
>> /home/text/cases/nimisampo/proxy/location-mapping.n3:/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/custom-mapping.n3
>>        -
>>
>> /home/text/cases/nimisampo/proxy/person.ttl:/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/org/wikidata/ldt.ttl
>>        -
>>
>> /home/text/cases/nimisampo/proxy/log4j.properties:/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/log4j.properties
>>    nginx:
>>      image: nginx
>>      depends_on:
>>        - processor
>>      ports:
>>        - 80:80
>>      environment:
>>        - PROXY_PASS=http://localhost:8080 # internal Processor URL
>> (hostname equals docker-compose service name)
>>        - PROXY_SET_HOST=https://resource.lingsoft.fi # the hostname set
>> on the request URI before it's passed to Processor
>>      volumes:
>>        - ./nginx.conf.template:/etc/nginx/nginx.conf.template:ro
>>      command: /bin/bash -c "envsubst '$$PROXY_PASS $$PROXY_SET_HOST' <
>> /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf && nginx -g
>> 'daemon off;'"
>>
>>
>> Not sure how nginx env should be, but running this results error
>>
>>  >> docker-compose up
>> ERROR: Couldn't connect to Docker daemon at
>> http+docker://localunixsocket - is it running?
>>
>>
>>  >> sudo service docker status
>> ● docker.service - Docker Application Container Engine
>>     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor
>> preset: enabled)
>>     Active: active (running) since Tue 2019-09-17 16:06:30 EEST; 1 weeks
>> 6 days ago
>>       Docs: https://docs.docker.com
>>   Main PID: 15816 (dockerd)
>>      Tasks: 13
>>     Memory: 610.3M
>>        CPU: 5min 15.038s
>>     CGroup: /system.slice/docker.service
>>             └─15816 /usr/bin/dockerd -H fd://
>> --containerd=/run/containerd/containerd.sock
>>
>> This is probably related to setting up docker but looks like we have
>> limited knowledge on that here. Do you have an idea?
>>
>> Mikael
>>
>> On 27/09/2019 10:46, Martynas Jusevičius wrote:
>> > Hi Mikael,
>> >
>> > On Tue, Sep 24, 2019 at 11:21 AM Mikael Pesonen
>> > <mikael.pesonen@lingsoft.fi> wrote:
>> >
>> >> On 23/09/2019 23:23, Martynas Jusevičius wrote:
>> >>> No not exactly. Let me picture the basic setup:
>> >>>
>> >>> HTTP client -> [ nginx/localhost:8090 ->
>> >>> Processor/resource.lingsoft.fi:80 ] -> SPARQL endpoint
>> >>>
>> >>> You can continue using port 8090 if that is what you prefer, or you
>> >>> can choose any different port. But what you have now is nginx fronting
>> >>> Processor, just for the purpose of rewriting the URL base to
>> >>> resource.lingsoft.fi before Processor receives the request, and that
>> >>> way making sure that the queries from the LDT ontology will select
>> >>> something from your dataset.
>> >>>
>> >>> Nothing changes for the outside consumer -- since nginx and Processor
>> >>> are both running as Docker containers, they communicate via the
>> >>> internal Docker network and the host network is not affected.
>> >>>
>> >>> I'm pretty sure nginx can do this, will try tomorrow.
>> >> Okay thanks for this, forwarded to our tech support.
>> > I've setup an example as promised. nginx is now a reverse proxy in
>> > front of Processor in the Fuseki example:
>> >
>> https://github.com/AtomGraph/Processor#default-ontology-and-a-local-sparql-service
>> >
>> > Processor is now available on two different hostnames. In the second
>> > case the request goes through nginx and the hostname is rewritten to
>> > example.org before the Processor, and becomes BASE
>> > <http://example.org/> in queries.
>> >
>> > $ curl http://localhost:8080/
>> > <http://localhost:8080/>
>> > <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
>> > <http://xmlns.com/foaf/0.1/Document> .
>> > <http://localhost:8080/> <http://purl.org/dc/terms/title>
>> "localhost:8080" .
>> > <http://localhost:8080/> <http://purl.org/dc/terms/description> "This
>> > is an RDF document served by AtomGraph Processor" .
>> > <http://localhost:8080/>
>> > <http://www.w3.org/2000/01/rdf-schema#seeAlso>
>> > <http://localhost:8080/sparql> .
>> >
>> > $ curl http://localhost/
>> > <http://example.org/>
>> > <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
>> > <http://xmlns.com/foaf/0.1/Document> .
>> > <http://example.org/> <http://purl.org/dc/terms/title> "example.org" .
>> > <http://example.org/> <http://purl.org/dc/terms/description> "This is
>> > an RDF document served by AtomGraph Processor" .
>> > <http://example.org/> <http://www.w3.org/2000/01/rdf-schema#seeAlso>
>> > <http://example.org/sparql> .
>> >
>> > The key configuration is PROXY_SET_HOST=example.org in
>> > docker-compose.yml. In your case it would be
>> > PROXY_SET_HOST=resource.lingsoft.fi.
>> >
>> >>> Re. parameters, you cannot supply the template URI itself as a
>> >>> parameter -- only parameters for whichever template matches the path
>> >>> of the request URI by ldt:match. In other words, the URL is a template
>> >>> call, with ?this being the default argument, and then any parameters
>> >>> from the URL query string.
>> >>> An example of agent param (basically same as in Wikidata's example):
>> >>>
>> >>> :PersonItem a ldt:Template ;
>> >>>       rdfs:label "Person template" ;
>> >>>       ldt:match "/{uuid}" ;
>> >>>       ldt:param :AgentParam ;
>> >>>       ldt:query [ a :PersonQueryTemplate ] ;
>> >>>       rdfs:isDefinedBy : .
>> >>>
>> >>> :AgentParam a ldt:Parameter ;
>> >>>       rdfs:label "Agent parameter" ;
>> >>>       spl:predicate :agent ; # parameter name in the URL query string
>> >>>       spl:valueType rdfs:Resource ;
>> >>>       spl:optional true ;
>> >>>       rdfs:isDefinedBy : .
>> >>>
>> >>> :PersonQueryTemplate a spin:Template ;
>> >>>       rdfs:label "Person query template" ;
>> >>>       spin:constraint :AgentParam ;
>> >>>       spin:body :PersonQuery ;
>> >>>       rdfs:isDefinedBy : .
>> >>>
>> >>> :PersonQuery a ldt:Query, sp:Construct ;
>> >>>       rdfs:label "Person query" ;
>> >>>       sp:text """
>> >>> CONSTRUCT
>> >>> {
>> >>>       ...
>> >>> }
>> >>>       """ ;
>> >>>       rdfs:isDefinedBy : .
>> >> So in this case, how does the query url look like?
>> >> https://resource.lingsoft.fi/<uuid> plus something.
>> > For example:
>> >
>> https://resource.lingsoft.fi/c5401732-c75d-4f44-b9d1-4e9e95297d9d?agent=https%3A%2F%2Fresource.lingsoft.fi%2F1ecec683-8df3-4e39-9ecd-64ed5617767a
>> >
>> > URL parameter values have to be percent-encoded:
>> > https://en.wikipedia.org/wiki/Percent-encoding
>> >
>> >>
>> >>> More info on parameters:
>> >>>
>> https://github.com/AtomGraph/Processor/wiki/Linked-Data-Templates#parameters
>> >>>
>> >>> On Mon, Sep 23, 2019 at 1:56 PM Mikael Pesonen
>> >>> <mikael.pesonen@lingsoft.fi> wrote:
>> >>>> Okay so it's possible to have servers on same name? We have public
>> >>>> server resource.lingsoft.fi serving content, and
>> >>>> another server, say ldt.lingsoft.fi, where reverse proxy is
>> redirecting
>> >>>> calls to AtomGraph at localhost:8090 so that AtomGraph thinks it's
>> >>>> running at resource.lingsoft.fi? I have to test that with our tech
>> support.
>> >>>>
>> >>>> Then there is still the question about passing more than one
>> parameters.
>> >>>> So when we make a query
>> >>>>
>> >>>> ldt.lingsoft.fi/<uuid>?template=entire_person&agent=some_agent
>> >>>>
>> >>>> what kind of ontology is needed for the mapping. Could we please
>> have an
>> >>>> example of that too?
>> >>>>
>> >>>> Mikael
>> >>>>
>> >>>>
>> >>>> On 23/09/2019 13:37, Martynas Jusevičius wrote:
>> >>>>> Mikael,
>> >>>>>
>> >>>>> I agree this is a common use case that needs a solution, but I don't
>> >>>>> think the LDT specification is the right place to address it. More
>> >>>>> like the Processor documentation.
>> >>>>>
>> >>>>> I think the core issue here is information hiding:
>> >>>>> https://en.wikipedia.org/wiki/Information_hiding
>> >>>>> You want the Processor to work as if the request is coming from
>> >>>>> https://resource.lingsoft.fi/, yet it is really coming from
>> >>>>> http://localhost:8090/. You want to introduce an indirection that
>> is
>> >>>>> hidden from the data consumer.
>> >>>>>
>> >>>>> This is very much like having a webapp running on
>> >>>>> http://localhost:8090/ but wanting to expose it as
>> http://localhost/,
>> >>>>> i.e. hiding the port number.
>> >>>>> What you would normally do is put a reverse proxy server such as
>> >>>>> Apache or nginx in front of the webapp that would rewrite the URL
>> and
>> >>>>> hide the port from the outside.
>> >>>>>
>> >>>>> The same solution applies here. You could have nginx in front of
>> >>>>> Processor that rewrites the request URL from http://localhost:8090/
>> to
>> >>>>> https://resource.lingsoft.fi/.
>> >>>>> I think this is the cleanest approach - one simple component is
>> >>>>> introduced and neither Processor nor LDT spec require changes.
>> >>>>> More info:
>> https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
>> >>>>>
>> >>>>> If you want to try this, I can put together a docker-compose.yml
>> with
>> >>>>> nginx in front of Processor, using their Docker image:
>> >>>>> https://hub.docker.com/_/nginx
>> >>>>>
>> >>>>> Martynas
>> >>>>>
>> >>>>> On Mon, Sep 23, 2019 at 11:35 AM Mikael Pesonen
>> >>>>> <mikael.pesonen@lingsoft.fi> wrote:
>> >>>>>> Hi Martynas,
>> >>>>>>
>> >>>>>> On 21/09/2019 12:20, Martynas Jusevičius wrote:
>> >>>>>>
>> >>>>>> Hi Mikael,
>> >>>>>>
>> >>>>>> OK there is quite a bit to unpack here :)
>> >>>>>>
>> >>>>>> In relation to your first question, I added such a paragraph to
>> documentation:
>> >>>>>>
>> https://github.com/AtomGraph/Processor/wiki/Linked-Data-Templates#execution
>> >>>>>>
>> >>>>>> "Note that the base URI of the RDF dataset in the SPARQL service
>> needs
>> >>>>>> to be aligned with the base URI of the Processor instance.
>> Considering
>> >>>>>> the example above, the dataset should contain some
>> >>>>>> http://localhost:8080/-based URIs, otherwise ?this will never
>> match
>> >>>>>> any resources and the query results will be empty, leading to a 404
>> >>>>>> Not Found response."
>> >>>>>>
>> >>>>>> So in your case the Processor base URI is http://localhost:8090/,
>> but
>> >>>>>> the issue is the same: the base URI of your dataset is totally
>> >>>>>> different: http://resource.lingsoft.fi/.
>> >>>>>>
>> >>>>>> ?this URI has to have a direct match in your dataset. And its
>> value is
>> >>>>>> the *full* request URI (though without query string), not a URI
>> >>>>>> provided in the path as you are attempting.
>> >>>>>>
>> >>>>>> In other words, if you want this LDT example to work on your
>> >>>>>> http://resource.lingsoft.fi/-based dataset, the Processor should
>> be
>> >>>>>> deployed on http://resource.lingsoft.fi/, and then requests to
>> >>>>>> https://resource.lingsoft.fi/286c384d-cd5c-4887-9b85-94c0c147f709
>> >>>>>> would work.
>> >>>>>>
>> >>>>>> This is easier said than done, because you most likely already
>> have a
>> >>>>>> system running on that domain.
>> >>>>>>
>> >>>>>> You are right, we have this server https://resource.lingsoft.fi/
>> running for serving content. This is probably quite common scenario.
>> >>>>>>
>> >>>>>> So what we usually do is "rebase" the
>> >>>>>> RDF dataset to the base URI of the Processor that we are testing
>> on.
>> >>>>>> You could do that by exporting your RDF dataset as N-Triples or
>> >>>>>> N-Quads and simply replacing http://resource.lingsoft.fi/ with
>> >>>>>> http://localhost:8090/. Put the rebased dataset in a separate test
>> >>>>>> triplestore.
>> >>>>>> Then a request to
>> >>>>>> http://localhost:8090/286c384d-cd5c-4887-9b85-94c0c147f709 should
>> >>>>>> work.
>> >>>>>>
>> >>>>>> This seems quite a heavy solution, to keep in sync two datasets.
>> >>>>>>
>> >>>>>> There are workarounds without doing URI rebasing, for example you
>> >>>>>> could still request
>> >>>>>> http://localhost:8090/286c384d-cd5c-4887-9b85-94c0c147f709 and in
>> the
>> >>>>>> query do smth like (not tested)
>> >>>>>>
>> >>>>>>        BIND (STRAFTER(STR(?this), STR(<>)) AS ?id)
>> >>>>>>        BIND (URI(CONCAT("https://resource.lingsoft.fi/", ?id)) AS
>> ?realThis)
>> >>>>>>
>> >>>>>> and then use ?realThis in the query instead of ?this. What this
>> code
>> >>>>>> does is extract the ID from the request URI by stripping the
>> >>>>>> http://localhost:8090/ base URI (which comes from BASE
>> >>>>>> <http://localhost:8090/>) and concatenating it with the real base
>> URI
>> >>>>>> of your dataset, which is <https://resource.lingsoft.fi/>.
>> >>>>>> This approach is not recommended however, because URIs are opaque
>> >>>>>> identifiers, and their contents should not be parsed in order to
>> >>>>>> extract information (such as the ID in this case):
>> >>>>>> https://www.w3.org/DesignIssues/Axioms.html#opaque
>> >>>>>>
>> >>>>>> Alternatively, you could have a JAX-RS filter that changes the base
>> >>>>>> URI in the UriInfo object. That way the LDT processor could use a
>> >>>>>> ?this URI in queries which is different from the real request URI.
>> But
>> >>>>>> again, this is more of a hack.
>> >>>>>>
>> >>>>>> Since the resource uri is most often used for serving content, it
>> would seem that LDT spec needs some "official",  non hack way to handle the
>> calls? One way that comes to mind is to use URL parameters so that for
>> example call to
>> >>>>>> https://resource.lingsoft.fi/<uuid>?ldt=person&agent=...
>> >>>>>> would be parsed at our content server and forwarded to AtomGraph
>> when ldt parameter is seen. But still LDT would need to support this in
>> some official way. What do you think?
>> >>>>>>
>> >>>>>> Br,
>> >>>>>> Mikael
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> Lets address the rest of your questions when we have this figured
>> out.
>> >>>>>>
>> >>>>>>
>> >>>>>> On Fri, Sep 20, 2019 at 12:13 PM Mikael Pesonen
>> >>>>>> <mikael.pesonen@lingsoft.fi> wrote:
>> >>>>>>
>> >>>>>> Thanks, makes more sense now.
>> >>>>>>
>> >>>>>> We needed to add parameter --network=host to get connections to out
>> >>>>>> local network, but that results a bind error, since we are already
>> 8080
>> >>>>>> in use on our servers. We can figure this out here first...
>> >>>>>>
>> >>>>>> But I'm getting the SPARQL query now.
>> >>>>>>
>> >>>>>> So my ontology is now:
>> >>>>>>
>> >>>>>> @base         <https://resource.lingsoft.fi/aabb> . # just for
>> testing
>> >>>>>>
>> >>>>>> @prefix :     <#> .
>> >>>>>> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
>> >>>>>> @prefix owl:  <http://www.w3.org/2002/07/owl#> .
>> >>>>>> @prefix ldt:  <https://www.w3.org/ns/ldt#> .
>> >>>>>> @prefix sp:   <http://spinrdf.org/sp#> .
>> >>>>>> @prefix spl:  <http://spinrdf.org/spl#> .
>> >>>>>>
>> >>>>>> : a ldt:Ontology ;
>> >>>>>>         owl:imports ldt:, sp: ;
>> >>>>>>         rdfs:label "LDT ontology" .
>> >>>>>>
>> >>>>>> :AdminPersonItem a ldt:Template ;
>> >>>>>>           ldt:match "/{id}" ;
>> >>>>>>           ldt:query :ConstructAdminPerson ;
>> >>>>>>           rdfs:isDefinedBy : .
>> >>>>>>
>> >>>>>> :ConstructAdminPerson a sp:Construct ;
>> >>>>>>           sp:text """
>> >>>>>>           CONSTRUCT
>> >>>>>>           FROM <http://www.lingsoft.fi/graph/common_insight/>
>> >>>>>>           WHERE
>> >>>>>>           {
>> >>>>>>               ?this ?p ?o
>> >>>>>>           }
>> >>>>>>           """ ;
>> >>>>>>           rdfs:isDefinedBy : .
>> >>>>>>
>> >>>>>> Query URL is
>> >>>>>>
>> http://localhost:8090/https%3A%2F%2Fresource.lingsoft.fi%2F286c384d-cd5c-4887-9b85-94c0c147f709
>> >>>>>>
>> >>>>>> Resulted SPARQL is
>> >>>>>>
>> >>>>>> BASE    <http://localhost:8090/>
>> >>>>>>
>> >>>>>> CONSTRUCT
>> >>>>>>       {
>> >>>>>> <https%253A%252F%252Fresource.lingsoft.fi
>> %252F286c384d-cd5c-4887-9b85-94c0c147f709>
>> >>>>>> ?p ?o .
>> >>>>>>       }
>> >>>>>> FROM <http://www.lingsoft.fi/graph/common_insight/>
>> >>>>>> WHERE
>> >>>>>>       {
>> >>>>>> <https%253A%252F%252Fresource.lingsoft.fi
>> %252F286c384d-cd5c-4887-9b85-94c0c147f709>
>> >>>>>>                   ?p  ?o
>> >>>>>>       }
>> >>>>>>
>> >>>>>> So resource id is still double encoded. Perhaps I'm still missing
>> >>>>>> something about the parameter mapping.
>> >>>>>>
>> >>>>>>
>> >>>>>> So now I'm bit further and know how to ask right questions :) So
>> we need
>> >>>>>> to be able to send 3 parameters:
>> >>>>>>
>> >>>>>> 1) Resource URL = in this case person's id
>> >>>>>> (https://resource.lingsoft.fi/286c384d-cd5c-4887-9b85-94c0c147f709
>> )
>> >>>>>>
>> >>>>>> 2) Resource type for selecting correct template/SPARQL query. in
>> this
>> >>>>>> case a person.
>> >>>>>>
>> >>>>>> 3) Access level: how much details are you allowed the query of the
>> person.
>> >>>>>>
>> >>>>>> So how are these 3 parameters mapped to the ontology and generated
>> >>>>>> SPARQL - what kind of modifications are needed for the request URL
>> and
>> >>>>>> template ontology? I'm trying to read the examples but not getting
>> this
>> >>>>>> still...
>> >>>>>>
>> >>>>>> Br,
>> >>>>>> Mikael
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> On 19/09/2019 16:18, Martynas Jusevičius wrote:
>> >>>>>>
>> >>>>>> Hi Mikael,
>> >>>>>>
>> >>>>>> the -v and -e are docker run options:
>> >>>>>> https://docs.docker.com/engine/reference/run/
>> >>>>>> -v specifically mounts a file or folder from the host to the
>> container
>> >>>>>> (which is internally Ubuntu in this case):
>> >>>>>> https://docs.docker.com/storage/bind-mounts/
>> >>>>>>
>> >>>>>> ENDPOINT, ONTOLOGY etc. are defined in the Processor's Dockerfile
>> >>>>>> and/or entrypoint:
>> >>>>>> https://github.com/AtomGraph/Processor/blob/master/Dockerfile
>> >>>>>> https://github.com/AtomGraph/Processor/blob/master/entrypoint.sh
>> >>>>>>
>> >>>>>> Different Docker images can use ENV variables and mounts in
>> different
>> >>>>>> ways and for different purposes. But if you see a container as a
>> large
>> >>>>>> function, they usually serve as user inputs.
>> >>>>>> But Docker and Dockerfiles are large topics on their own :)
>> >>>>>>
>> >>>>>> You could use curl to query an ontology from Fuseki (most likely a
>> >>>>>> different instance than ENDPOINT), store it into a file and then
>> mount
>> >>>>>> it to Processor. Easy to script something like this in bash.
>> >>>>>> We also have a Knowledge Graph management system that builds on
>> top of
>> >>>>>> Processor and provides a UI, for general RDF as well as ontology
>> >>>>>> editing. But it is not open-source so far -- lets take it off-list
>> if
>> >>>>>> it sounds interesting.
>> >>>>>>
>> >>>>>> I need to check how GRAPH_STORE is used and whether it can be made
>> >>>>>> optional. If you don't have one, just provide a bogus (but valid)
>> URL
>> >>>>>> for now, it shouldn't be a problem.
>> >>>>>>
>> >>>>>> On Thu, Sep 19, 2019 at 12:08 PM Mikael Pesonen
>> >>>>>> <mikael.pesonen@lingsoft.fi> wrote:
>> >>>>>>
>> >>>>>> Hi,
>> >>>>>>
>> >>>>>> already some more questions:
>> >>>>>>
>> >>>>>> About docker command line parameters, who defines the -e and -v
>> command
>> >>>>>> line parameters? Looking at the document -v displays the docker
>> version.
>> >>>>>> -e I'm guessing sets an environment variable but what -v does?
>> Sets some
>> >>>>>> input file locations? Couldn't find the document for those.
>> >>>>>>
>> >>>>>> How do I read the template ontologies (any RDF content) from Fuseki
>> >>>>>> endpoint instead of a file(s)?
>> >>>>>>
>> >>>>>> There are separate environment variables for SPARQL and GSP
>> endpoints.
>> >>>>>> Are both required?
>> >>>>>>
>> >>>>>> Mikael
>> >>>>>>
>> >>>>>>
>> >>>>>> On 18/09/2019 16:33, Martynas Jusevičius wrote:
>> >>>>>>
>> >>>>>> Hurray! Thanks a lot for going through this. If you have any
>> >>>>>> suggestions on how to improve the documentation or the setup,
>> please
>> >>>>>> let me know.
>> >>>>>>
>> >>>>>> Now you have these basic options:
>> >>>>>> - change ENDPOINT/GRAPH_STORE values to your own endpoint URLs
>> >>>>>> - edit wikidata.ttl to change LDT templates (or their URI
>> templates,
>> >>>>>> or their queries)
>> >>>>>>
>> >>>>>> If you have a public SPARQL endpoint, we can try the config here.
>> >>>>>>
>> >>>>>> Remember that ?this is a "magic" variable in the queries, which is
>> >>>>>> bound to the request URI. So in the case of the example (?this,
>> >>>>>> <http://localhost:8080/birthdays>), although the Wikidata query
>> does
>> >>>>>> not use ?this variable.
>> >>>>>>
>> >>>>>> On Wed, Sep 18, 2019 at 3:25 PM Mikael Pesonen
>> >>>>>> <mikael.pesonen@lingsoft.fi> wrote:
>> >>>>>>
>> >>>>>> Okay now it seems to work except for connection to wikidata as you
>> >>>>>> mentioned earlier:
>> >>>>>>
>> >>>>>> 18-Sep-2019 13:21:43.730 WARNING [localhost-startStop-1]
>> >>>>>> org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom
>> >>>>>> Creation of SecureRandom instance for session ID generation using
>> >>>>>> [SHA1PRNG] took [162,901] milliseconds.
>> >>>>>> 18-Sep-2019 13:21:43.742 INFO [localhost-startStop-1]
>> >>>>>> org.apache.catalina.startup.HostConfig.deployDescriptor Deployment
>> of
>> >>>>>> configuration descriptor
>> >>>>>> /usr/local/tomcat/conf/Catalina/localhost/ROOT.xml has finished in
>> >>>>>> 164,533 ms
>> >>>>>> 18-Sep-2019 13:21:43.745 INFO [main]
>> >>>>>> org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler
>> >>>>>> ["http-apr-8080"]
>> >>>>>> 18-Sep-2019 13:21:43.753 INFO [main]
>> >>>>>> org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler
>> >>>>>> ["ajp-apr-8009"]
>> >>>>>> 18-Sep-2019 13:21:43.756 INFO [main]
>> >>>>>> org.apache.catalina.startup.Catalina.start Server startup in
>> 164576 ms
>> >>>>>> 18-Sep-2019 13:21:43.918 INFO [http-apr-8080-exec-1]
>> >>>>>> com.sun.jersey.server.impl.application.WebApplicationImpl._initiate
>> >>>>>> Initiating Jersey application, version 'Jersey: 1.19 02/11/2015
>> 03:25 AM'
>> >>>>>> 13:21:44,148 DEBUG Jena:189 - Jena initialization
>> >>>>>> 13:21:44,341 DEBUG FileManager:157 - Add location: LocatorFile
>> >>>>>> 13:21:44,342 DEBUG FileManager:157 - Add location:
>> ClassLoaderLocator
>> >>>>>> 13:21:44,346 DEBUG LocationMapper:152 - Failed to find
>> configuration:
>> >>>>>>
>> file:location-mapping.rdf;file:location-mapping.n3;file:location-mapping.ttl;file:etc/location-mapping.rdf;file:etc/location-mapping.n3;file:etc/location-mapping.ttl
>> >>>>>> 13:21:44,346 DEBUG FileManager:157 - Add location: LocatorFile
>> >>>>>> 13:21:44,348 DEBUG FileManager:157 - Add location: LocatorURL
>> >>>>>> 13:21:44,348 DEBUG FileManager:157 - Add location:
>> ClassLoaderLocator
>> >>>>>> 13:21:44,354 DEBUG StreamManager:142 - Found: location-mapping.n3
>> >>>>>> (ClassLoaderLocator)
>> >>>>>> 13:21:44,731 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://www.w3.org/2011/http-statusCodes =>
>> >>>>>> com/atomgraph/processor/http-statusCodes.rdf
>> >>>>>> 13:21:44,732 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/named-graphs/templates# =>
>> >>>>>> com/atomgraph/processor/ngt.ttl
>> >>>>>> 13:21:44,732 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://www.w3.org/2011/http# => com/atomgraph/processor/http.owl
>> >>>>>> 13:21:44,733 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://spinrdf.org/sp => etc/sp.ttl
>> >>>>>> 13:21:44,733 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt# => com/atomgraph/processor/ldt.ttl
>> >>>>>> 13:21:44,733 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://www.w3.org/2011/http-statusCodes# =>
>> >>>>>> com/atomgraph/processor/http-statusCodes.rdf
>> >>>>>> 13:21:44,734 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://spinrdf.org/sp# => etc/sp.ttl
>> >>>>>> 13:21:44,734 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/topic-hierarchy/templates# =>
>> >>>>>> com/atomgraph/processor/tht.ttl
>> >>>>>> 13:21:44,736 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://spinrdf.org/spin => etc/spin.ttl
>> >>>>>> 13:21:44,737 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/core/templates# =>
>> com/atomgraph/processor/ct.ttl
>> >>>>>> 13:21:44,737 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>>
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#
>> >>>>>> => org/wikidata/ldt.ttl
>> >>>>>> 13:21:44,738 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://www.w3.org/ns/sparql-service-description# =>
>> >>>>>> com/atomgraph/processor/sparql-service.owl
>> >>>>>> 13:21:44,738 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://rdfs.org/ns/void# => com/atomgraph/processor/void.owl
>> >>>>>> 13:21:44,741 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://spinrdf.org/spl => etc/spl.spin.ttl
>> >>>>>> 13:21:44,741 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/document-hierarchy/domain# =>
>> >>>>>> com/atomgraph/processor/dh.ttl
>> >>>>>> 13:21:44,741 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://spinrdf.org/spin# => etc/spin.ttl
>> >>>>>> 13:21:44,742 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/core/domain# =>
>> com/atomgraph/processor/c.ttl
>> >>>>>> 13:21:44,742 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://www.w3.org/2011/http => com/atomgraph/processor/http.owl
>> >>>>>> 13:21:44,742 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://xmlns.com/foaf/0.1/ => com/atomgraph/processor/foaf.owl
>> >>>>>> 13:21:44,743 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://rdfs.org/sioc/ns# => com/atomgraph/processor/sioc.owl
>> >>>>>> 13:21:44,743 DEBUG JenaIOEnvironment:119 - Mapping:
>> >>>>>> http://spinrdf.org/spl# => etc/spl.spin.ttl
>> >>>>>> 13:21:44,792 DEBUG info:334 - System architecture: 64 bit
>> >>>>>> 13:21:44,861 DEBUG FileManager:157 - Add location: LocatorFile
>> >>>>>> 13:21:44,862 DEBUG FileManager:157 - Add location: LocatorURL
>> >>>>>> 13:21:44,862 DEBUG FileManager:157 - Add location:
>> ClassLoaderLocator
>> >>>>>> 13:21:44,863 DEBUG FileManager:527 - Found: ont-policy.rdf
>> >>>>>> (ClassLoaderLocator)
>> >>>>>> 13:21:45,083 DEBUG FileManager:157 - Add location: LocatorFile
>> >>>>>> 13:21:45,084 DEBUG FileManager:157 - Add location:
>> ClassLoaderLocator
>> >>>>>> 13:21:45,084 DEBUG FileManager:527 - Found: location-mapping.n3
>> >>>>>> (ClassLoaderLocator)
>> >>>>>> 13:21:45,104 DEBUG LocationMapper:371 - Mapping:
>> http://spinrdf.org/spl#
>> >>>>>> => etc/spl.spin.ttl
>> >>>>>> 13:21:45,105 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> http://www.w3.org/2011/http-statusCodes =>
>> >>>>>> com/atomgraph/processor/http-statusCodes.rdf
>> >>>>>> 13:21:45,105 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> http://www.w3.org/2011/http-statusCodes# =>
>> >>>>>> com/atomgraph/processor/http-statusCodes.rdf
>> >>>>>> 13:21:45,106 DEBUG LocationMapper:371 - Mapping:
>> http://spinrdf.org/sp#
>> >>>>>> => etc/sp.ttl
>> >>>>>> 13:21:45,106 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> http://www.w3.org/2011/http# => com/atomgraph/processor/http.owl
>> >>>>>> 13:21:45,107 DEBUG LocationMapper:371 - Mapping:
>> http://spinrdf.org/spin
>> >>>>>> => etc/spin.ttl
>> >>>>>> 13:21:45,107 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> http://www.w3.org/ns/sparql-service-description# =>
>> >>>>>> com/atomgraph/processor/sparql-service.owl
>> >>>>>> 13:21:45,108 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/core/domain# =>
>> com/atomgraph/processor/c.ttl
>> >>>>>> 13:21:45,108 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/document-hierarchy/domain# =>
>> >>>>>> com/atomgraph/processor/dh.ttl
>> >>>>>> 13:21:45,108 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> http://spinrdf.org/spin# => etc/spin.ttl
>> >>>>>> 13:21:45,109 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/core/templates# =>
>> com/atomgraph/processor/ct.ttl
>> >>>>>> 13:21:45,109 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/topic-hierarchy/templates# =>
>> >>>>>> com/atomgraph/processor/tht.ttl
>> >>>>>> 13:21:45,109 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> http://xmlns.com/foaf/0.1/ => com/atomgraph/processor/foaf.owl
>> >>>>>> 13:21:45,110 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt# => com/atomgraph/processor/ldt.ttl
>> >>>>>> 13:21:45,110 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> http://rdfs.org/sioc/ns# => com/atomgraph/processor/sioc.owl
>> >>>>>> 13:21:45,110 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> http://www.w3.org/2011/http => com/atomgraph/processor/http.owl
>> >>>>>> 13:21:45,111 DEBUG LocationMapper:371 - Mapping:
>> >>>>>>
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#
>> >>>>>> => org/wikidata/ldt.ttl
>> >>>>>> 13:21:45,111 DEBUG LocationMapper:371 - Mapping:
>> http://spinrdf.org/sp
>> >>>>>> => etc/sp.ttl
>> >>>>>> 13:21:45,111 DEBUG LocationMapper:371 - Mapping:
>> http://spinrdf.org/spl
>> >>>>>> => etc/spl.spin.ttl
>> >>>>>> 13:21:45,112 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> http://rdfs.org/ns/void# => com/atomgraph/processor/void.owl
>> >>>>>> 13:21:45,115 DEBUG LocationMapper:371 - Mapping:
>> >>>>>> https://www.w3.org/ns/ldt/named-graphs/templates# =>
>> >>>>>> com/atomgraph/processor/ngt.ttl
>> >>>>>> 13:21:45,774 DEBUG FileManager:157 - Add location: LocatorFile
>> >>>>>> 13:21:45,775 DEBUG FileManager:157 - Add location: LocatorURL
>> >>>>>> 13:21:45,775 DEBUG FileManager:157 - Add location:
>> ClassLoaderLocator
>> >>>>>> 13:21:45,777 DEBUG Application:179 - FileManager.get():
>> >>>>>> com.atomgraph.core.util.jena.DataManager@dd75c2f
>> >>>>>> 13:21:45,777 DEBUG Application:182 -
>> >>>>>> OntDocumentManager.getInstance().getFileManager():
>> >>>>>> com.atomgraph.core.util.jena.DataManager@dd75c2f
>> >>>>>> 13:21:45,778 DEBUG OntologyProvider:183 - Loading sitemap ontology
>> from
>> >>>>>> URI:
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#
>> >>>>>> 13:21:45,800 DEBUG FileManager:472 - Mapped:
>> >>>>>>
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#
>> >>>>>> => org/wikidata/ldt.ttl
>> >>>>>> 13:21:45,801 DEBUG FileManager:324 -
>> >>>>>> readModel(model,
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#)
>> >>>>>> 13:21:45,801 DEBUG FileManager:340 -
>> >>>>>> readModel(model,
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#,
>> >>>>>> null)
>> >>>>>> 13:21:45,802 DEBUG FileManager:472 - Mapped:
>> >>>>>>
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#
>> >>>>>> => org/wikidata/ldt.ttl
>> >>>>>> 13:21:45,802 DEBUG FileManager:368 - Map:
>> >>>>>>
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#
>> >>>>>> => org/wikidata/ldt.ttl
>> >>>>>> 13:21:45,803 DEBUG FileManager:384 - Syntax guess: TURTLE
>> >>>>>> 13:21:45,804 DEBUG FileManager:527 - Found: org/wikidata/ldt.ttl
>> >>>>>> (ClassLoaderLocator)
>> >>>>>> 13:21:45,810 DEBUG FileManager:472 - Mapped:
>> https://www.w3.org/ns/ldt#
>> >>>>>> => com/atomgraph/processor/ldt.ttl
>> >>>>>> 13:21:45,811 DEBUG FileManager:324 -
>> >>>>>> readModel(model,https://www.w3.org/ns/ldt#)
>> >>>>>> 13:21:45,811 DEBUG FileManager:340 -
>> >>>>>> readModel(model,https://www.w3.org/ns/ldt#, null)
>> >>>>>> 13:21:45,811 DEBUG FileManager:472 - Mapped:
>> https://www.w3.org/ns/ldt#
>> >>>>>> => com/atomgraph/processor/ldt.ttl
>> >>>>>> 13:21:45,812 DEBUG FileManager:368 - Map:
>> https://www.w3.org/ns/ldt# =>
>> >>>>>> com/atomgraph/processor/ldt.ttl
>> >>>>>> 13:21:45,812 DEBUG FileManager:384 - Syntax guess: TURTLE
>> >>>>>> 13:21:45,813 DEBUG FileManager:527 - Found:
>> >>>>>> com/atomgraph/processor/ldt.ttl (ClassLoaderLocator)
>> >>>>>> 13:21:45,825 DEBUG FileManager:472 - Mapped:
>> http://spinrdf.org/sp# =>
>> >>>>>> etc/sp.ttl
>> >>>>>> 13:21:45,825 DEBUG FileManager:324 - readModel(model,
>> http://spinrdf.org/sp#)
>> >>>>>> 13:21:45,825 DEBUG FileManager:340 -
>> >>>>>> readModel(model,http://spinrdf.org/sp#, null)
>> >>>>>> 13:21:45,825 DEBUG FileManager:472 - Mapped:
>> http://spinrdf.org/sp# =>
>> >>>>>> etc/sp.ttl
>> >>>>>> 13:21:45,826 DEBUG FileManager:368 - Map: http://spinrdf.org/sp#
>> =>
>> >>>>>> etc/sp.ttl
>> >>>>>> 13:21:45,826 DEBUG FileManager:384 - Syntax guess: TURTLE
>> >>>>>> 13:21:45,827 DEBUG FileManager:527 - Found: etc/sp.ttl
>> (ClassLoaderLocator)
>> >>>>>> 13:21:45,842 DEBUG FileManager:472 - Mapped:
>> >>>>>> http://www.w3.org/ns/sparql-service-description# =>
>> >>>>>> com/atomgraph/processor/sparql-service.owl
>> >>>>>> 13:21:45,843 DEBUG FileManager:324 -
>> >>>>>> readModel(model,http://www.w3.org/ns/sparql-service-description#)
>> >>>>>> 13:21:45,843 DEBUG FileManager:340 -
>> >>>>>> readModel(model,http://www.w3.org/ns/sparql-service-description#,
>> null)
>> >>>>>> 13:21:45,843 DEBUG FileManager:472 - Mapped:
>> >>>>>> http://www.w3.org/ns/sparql-service-description# =>
>> >>>>>> com/atomgraph/processor/sparql-service.owl
>> >>>>>> 13:21:45,843 DEBUG FileManager:368 - Map:
>> >>>>>> http://www.w3.org/ns/sparql-service-description# =>
>> >>>>>> com/atomgraph/processor/sparql-service.owl
>> >>>>>> 13:21:45,844 DEBUG FileManager:384 - Syntax guess: RDF/XML
>> >>>>>> 13:21:45,844 DEBUG FileManager:527 - Found:
>> >>>>>> com/atomgraph/processor/sparql-service.owl (ClassLoaderLocator)
>> >>>>>> 13:21:45,873 DEBUG FileManager:472 - Mapped:
>> http://spinrdf.org/spin# =>
>> >>>>>> etc/spin.ttl
>> >>>>>> 13:21:45,874 DEBUG FileManager:324 -
>> >>>>>> readModel(model,http://spinrdf.org/spin#)
>> >>>>>> 13:21:45,874 DEBUG FileManager:340 -
>> >>>>>> readModel(model,http://spinrdf.org/spin#, null)
>> >>>>>> 13:21:45,874 DEBUG FileManager:472 - Mapped:
>> http://spinrdf.org/spin# =>
>> >>>>>> etc/spin.ttl
>> >>>>>> 13:21:45,874 DEBUG FileManager:368 - Map: http://spinrdf.org/spin#
>> =>
>> >>>>>> etc/spin.ttl
>> >>>>>> 13:21:45,875 DEBUG FileManager:384 - Syntax guess: TURTLE
>> >>>>>> 13:21:45,875 DEBUG FileManager:527 - Found: etc/spin.ttl
>> >>>>>> (ClassLoaderLocator)
>> >>>>>> 13:21:45,888 DEBUG FileManager:472 - Mapped: http://spinrdf.org/sp
>> =>
>> >>>>>> etc/sp.ttl
>> >>>>>> 13:21:45,889 DEBUG FileManager:324 - readModel(model,
>> http://spinrdf.org/sp)
>> >>>>>> 13:21:45,889 DEBUG FileManager:340 -
>> >>>>>> readModel(model,http://spinrdf.org/sp, null)
>> >>>>>> 13:21:45,890 DEBUG FileManager:472 - Mapped: http://spinrdf.org/sp
>> =>
>> >>>>>> etc/sp.ttl
>> >>>>>> 13:21:45,890 DEBUG FileManager:368 - Map: http://spinrdf.org/sp =>
>> >>>>>> etc/sp.ttl
>> >>>>>> 13:21:45,891 DEBUG FileManager:384 - Syntax guess: TURTLE
>> >>>>>> 13:21:45,893 DEBUG FileManager:527 - Found: etc/sp.ttl
>> (ClassLoaderLocator)
>> >>>>>> 18-Sep-2019 13:21:45.997 INFO [http-apr-8080-exec-1]
>> >>>>>>
>> com.sun.jersey.server.impl.application.DeferredResourceConfig$ApplicationHolder.<init>
>> >>>>>> Instantiated the Application class com.atomgraph.server.Application
>> >>>>>> 13:21:46,388 DEBUG OntologyProvider:183 - Loading sitemap ontology
>> from
>> >>>>>> URI:
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#
>> >>>>>> 13:21:46,390 DEBUG OntologyProvider:183 - Loading sitemap ontology
>> from
>> >>>>>> URI:
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#
>> >>>>>> 13:21:46,395 DEBUG TemplateMatcher:245 - Path: /birthdays matched
>> >>>>>> Template:
>> >>>>>> [<
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#BirthdaysTemplate
>> >:
>> >>>>>> "/birthdays", 0.0]
>> >>>>>> 13:21:46,396 DEBUG OntologyProvider:183 - Loading sitemap ontology
>> from
>> >>>>>> URI:
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#
>> >>>>>> 13:21:46,398 DEBUG TemplateMatcher:245 - Path: /birthdays matched
>> >>>>>> Template:
>> >>>>>> [<
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#BirthdaysTemplate
>> >:
>> >>>>>> "/birthdays", 0.0]
>> >>>>>> 13:21:46,399 DEBUG TemplateCallProvider:85 - Building TemplateCall
>> from
>> >>>>>> Template
>> >>>>>> [<
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#BirthdaysTemplate
>> >:
>> >>>>>> "/birthdays", 0.0]
>> >>>>>> 13:21:46,404 DEBUG ResourceBase:79 - Request URI:
>> >>>>>> http://localhost:8090/birthdays
>> >>>>>> 13:21:46,434 DEBUG ResourceBase:166 - Constructing ResourceBase
>> with
>> >>>>>> matched Template:
>> >>>>>> [<
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#BirthdaysTemplate
>> >:
>> >>>>>> "/birthdays", 0.0]
>> >>>>>> 13:21:46,442 DEBUG SPARQLEndpointBase:80 - Constructing
>> SPARQLEndpointBase
>> >>>>>> 13:21:46,455 DEBUG SPARQLEndpointBase:158 - Loading Dataset using
>> >>>>>> CONSTRUCT/DESCRIBE query: BASE    <http://localhost:8090/>
>> >>>>>> PREFIX  bd:   <http://www.bigdata.com/rdf#>
>> >>>>>> PREFIX  wdt:  <http://www.wikidata.org/prop/direct/>
>> >>>>>> PREFIX  wikibase: <http://wikiba.se/ontology#>
>> >>>>>>
>> >>>>>> CONSTRUCT
>> >>>>>>         {
>> >>>>>>           ?entity
>> >>>>>> <
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#year
>> >
>> >>>>>> ?year .
>> >>>>>>         }
>> >>>>>> WHERE
>> >>>>>>         { SELECT  ?entity ?year
>> >>>>>>           WHERE
>> >>>>>>             { BIND(month(now()) AS ?nowMonth)
>> >>>>>>               BIND(day(now()) AS ?nowDay)
>> >>>>>>               ?entity  wdt:P569  ?date
>> >>>>>>               FILTER ( ( month(?date) = ?nowMonth ) && (
>> day(?date) = ?nowDay ) )
>> >>>>>>               SERVICE wikibase:label
>> >>>>>>                 { bd:serviceParam
>> >>>>>>                             wikibase:language  "en"
>> >>>>>>                 }
>> >>>>>>               BIND(year(?date) AS ?year)
>> >>>>>>             }
>> >>>>>>           LIMIT   100
>> >>>>>>         }
>> >>>>>>
>> >>>>>> 13:21:46,462 DEBUG SPARQLClient:141 - Remote SPARQL service
>> >>>>>> https://query.wikidata.org/bigdata/namespace/wdq/sparql GET query:
>> >>>>>> BASE    <http://localhost:8090/>
>> >>>>>> PREFIX  bd:   <http://www.bigdata.com/rdf#>
>> >>>>>> PREFIX  wdt:  <http://www.wikidata.org/prop/direct/>
>>
>> >>>>>> PREFIX  wikibase: <http://wikiba.se/ontology#>
>> >>>>>>
>> >>>>>> CONSTRUCT
>> >>>>>>         {
>> >>>>>>           ?entity
>> >>>>>> <
>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#year
>> >
>> >>>>>> ?year .
>> >>>>>>         }
>> >>>>>> WHERE
>> >>>>>>         { SELECT  ?entity ?year
>> >>>>>>           WHERE
>> >>>>>>             { BIND(month(now()) AS ?nowMonth)
>> >>>>>>               BIND(day(now()) AS ?nowDay)
>> >>>>>>               ?entity  wdt:P569  ?date
>> >>>>>>               FILTER ( ( month(?date) = ?nowMonth ) && (
>> day(?date) = ?nowDay ) )
>> >>>>>>               SERVICE wikibase:label
>> >>>>>>                 { bd:serviceParam
>> >>>>>>                             wikibase:language  "en"
>> >>>>>>                 }
>> >>>>>>               BIND(year(?date) AS ?year)
>> >>>>>>             }
>> >>>>>>           LIMIT   100
>> >>>>>>         }
>> >>>>>>
>> >>>>>> 1 * Client out-bound request
>> >>>>>> 1 > GET
>> >>>>>>
>> https://query.wikidata.org/bigdata/namespace/wdq/sparql?query=BASE%20%20%20%20%3Chttp%3A%2F%2Flocalhost%3A8090%2F%3E%0APREFIX%20%20bd%3A%20%20%20%3Chttp%3A%2F%2Fwww.bigdata.com%2Frdf%23%3E%0APREFIX%20%20wdt%3A%20%20%3Chttp%3A%2F%2Fwww.wikidata.org%2Fprop%2Fdirect%2F%3E%0APREFIX%20%20wikibase%3A%20%3Chttp%3A%2F%2Fwikiba.se%2Fontology%23%3E%0A%0ACONSTRUCT%20%0A%20%20%7B%20%0A%20%20%20%20%3Fentity%20%3Chttps%3A%2F%2Fgithub.com%2FAtomGraph%2FProcessor%2Fblob%2Fdevelop%2Fexamples%2Fwikidata%23year%3E%20%3Fyear%20.%0A%20%20%7D%0AWHERE%0A%20%20%7B%20SELECT%20%20%3Fentity%20%3Fyear%0A%20%20%20%20WHERE%0A%20%20%20%20%20%20%7B%20BIND%28month%28now%28%29%29%20AS%20%3FnowMonth%29%0A%20%20%20%20%20%20%20%20BIND%28day%28now%28%29%29%20AS%20%3FnowDay%29%0A%20%20%20%20%20%20%20%20%3Fentity%20%20wdt%3AP569%20%20%3Fdate%0A%20%20%20%20%20%20%20%20FILTER%20%28%20%28%20month%28%3Fdate%29%20%3D%20%3FnowMonth%20%29%20%26%26%20%28%20day%28%3Fdate%29%20%3D%20%3FnowDay%20%29%20%29%0A%20%20%20%20%20%20%20%20SERVICE%20wikibase%3Alabel%0A%20%20%20%20%20%20%20%20%20%20%7B%20bd%3AserviceParam%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20wikibase%3Alanguage%20%20%22en%22%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20BIND%28year%28%3Fdate%29%20AS%20%3Fyear%29%0A%20%20%20%20%20%20%7D%0A%20%20%20%20LIMIT%20%20%20100%0A%20%20%7D%0A
>> >>>>>> 1 > Accept: application/n-quads,application/rdf+thrift,text/trig
>> >>>>>> 18-Sep-2019 13:22:06.781 SEVERE [http-apr-8080-exec-1]
>> >>>>>>
>> com.sun.jersey.spi.container.ContainerResponse.mapMappableContainerException
>> >>>>>> The RuntimeException could not be mapped to a response,
>> re-throwing to
>> >>>>>> the HTTP container
>> >>>>>>        com.sun.jersey.api.client.ClientHandlerException:
>> >>>>>> java.net.UnknownHostException: query.wikidata.org
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:155)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.api.client.filter.LoggingFilter.handle(LoggingFilter.java:217)
>> >>>>>>               at
>> com.sun.jersey.api.client.Client.handle(Client.java:652)
>> >>>>>>               at
>> >>>>>> com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509)
>> >>>>>>               at
>> >>>>>> com.atomgraph.core.client.SPARQLClient.get(SPARQLClient.java:145)
>> >>>>>>               at
>> >>>>>> com.atomgraph.core.client.SPARQLClient.query(SPARQLClient.java:173)
>> >>>>>>               at
>> >>>>>>
>> com.atomgraph.core.model.impl.remote.SPARQLEndpointBase.loadDataset(SPARQLEndpointBase.java:77)
>> >>>>>>               at
>> >>>>>>
>> com.atomgraph.core.model.impl.SPARQLEndpointBase.getResponseBuilder(SPARQLEndpointBase.java:159)
>> >>>>>>               at
>> >>>>>>
>> com.atomgraph.core.model.impl.SPARQLEndpointBase.get(SPARQLEndpointBase.java:88)
>> >>>>>>               at
>> >>>>>>
>> com.atomgraph.core.model.impl.QueriedResourceBase.describe(QueriedResourceBase.java:107)
>> >>>>>>               at
>> >>>>>>
>> com.atomgraph.core.model.impl.QueriedResourceBase.get(QueriedResourceBase.java:122)
>> >>>>>>               at
>> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> >>>>>>               at
>> >>>>>>
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> >>>>>>               at
>> >>>>>>
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> >>>>>>               at java.lang.reflect.Method.invoke(Method.java:498)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:137)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
>> >>>>>>               at
>> >>>>>>
>> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
>> >>>>
>
>

Received on Wednesday, 2 October 2019 09:48:31 UTC