- From: Mikael Pesonen <mikael.pesonen@lingsoft.fi>
- Date: Wed, 2 Oct 2019 13:18:27 +0300
- To: Martynas Jusevičius <martynas@atomgraph.com>
- Cc: public-declarative-apps@w3.org
- Message-ID: <1943507c-0474-8457-2ba0-c5c64071dbf0@lingsoft.fi>
Compose worked when started with sudo. Now I'm lost with the ports
>> sudo docker-compose up
Removing proxy_nginx_1
proxy_processor_1 is up-to-date
Recreating 17117cafe8ef_proxy_nginx_1
Attaching to proxy_processor_1, proxy_nginx_1
nginx_1 | envsubst: error while reading "standard input": Is a
directory
processor_1 | @prefix lm:
<http://jena.hpl.hp.com/2004/08/location-mapping#> .
processor_1 |
processor_1 | [] lm:mapping
processor_1 |
processor_1 | [ lm:name "https://www.w3.org/ns/ldt#"
; lm:altName
"com/atomgraph/processor/ldt.ttl" ] ,
processor_1 | [ lm:name "https://www.w3.org/ns/ldt/core/domain#"
; lm:altName "com/atomgraph/processor/c.ttl" ] ,
processor_1 | [ lm:name "https://www.w3.org/ns/ldt/core/templates#"
; lm:altName "com/atomgraph/processor/ct.ttl" ] ,
processor_1 | [ lm:name
"https://www.w3.org/ns/ldt/named-graphs/templates#" ; lm:altName
"com/atomgraph/processor/ngt.ttl" ] ,
processor_1 | [ lm:name
"https://www.w3.org/ns/ldt/document-hierarchy/domain#" ; lm:altName
"com/atomgraph/processor/dh.ttl" ] ,
processor_1 | [ lm:name
"https://www.w3.org/ns/ldt/topic-hierarchy/templates#" ; lm:altName
"com/atomgraph/processor/tht.ttl" ] ,
processor_1 | [ lm:name "http://rdfs.org/sioc/ns#"
; lm:altName
"com/atomgraph/processor/sioc.owl" ] ,
processor_1 | [ lm:name "http://rdfs.org/ns/void#"
; lm:altName
"com/atomgraph/processor/void.owl" ] ,
processor_1 | [ lm:name "http://www.w3.org/2011/http#"
; lm:altName
"com/atomgraph/processor/http.owl" ] ,
processor_1 | [ lm:name "http://www.w3.org/2011/http"
; lm:altName
"com/atomgraph/processor/http.owl" ] ,
processor_1 | [ lm:name "http://www.w3.org/2011/http-statusCodes#" ;
lm:altName "com/atomgraph/processor/http-statusCodes.rdf" ] ,
processor_1 | [ lm:name "http://www.w3.org/2011/http-statusCodes" ;
lm:altName "com/atomgraph/processor/http-statusCodes.rdf" ] ,
processor_1 | [ lm:name
"http://www.w3.org/ns/sparql-service-description#" ; lm:altName
"com/atomgraph/processor/sparql-service.owl" ] ,
processor_1 | [ lm:name "http://xmlns.com/foaf/0.1/"
; lm:altName
"com/atomgraph/processor/foaf.owl" ] ,
processor_1 | [ lm:name "http://spinrdf.org/sp#"
; lm:altName "etc/sp.ttl" ] ,
processor_1 | [ lm:name "http://spinrdf.org/sp"
; lm:altName "etc/sp.ttl" ] ,
processor_1 | [ lm:name "http://spinrdf.org/spin#"
; lm:altName "etc/spin.ttl" ] ,
processor_1 | [ lm:name "http://spinrdf.org/spin"
; lm:altName "etc/spin.ttl" ] ,
processor_1 | [ lm:name "http://spinrdf.org/spl#"
; lm:altName "etc/spl.spin.ttl" ] ,
processor_1 | [ lm:name "http://spinrdf.org/spl"
; lm:altName "etc/spl.spin.ttl" ]
processor_1 | .@prefix lm:
<http://jena.hpl.hp.com/2004/08/location-mapping#> .
processor_1 |
processor_1 | [] lm:mapping
processor_1 |
processor_1 | [ lm:name
"https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#"
; lm:altName "org/wikidata/ldt.ttl" ] ,
processor_1 | [ lm:name "https://resource.lingsoft.fi/aabb#" ;
lm:altName "org/wikidata/ldt.ttl" ]
processor_1 | .Listening for transport dt_socket at address: 8000
processor_1 | 02-Oct-2019 10:15:33.204 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Server
version: Apache Tomcat/8.0.52
processor_1 | 02-Oct-2019 10:15:33.206 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Server
built: Apr 28 2018 16:24:29 UTC
processor_1 | 02-Oct-2019 10:15:33.206 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Server
number: 8.0.52.0
processor_1 | 02-Oct-2019 10:15:33.207 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log OS
Name: Linux
processor_1 | 02-Oct-2019 10:15:33.207 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log OS
Version: 4.4.0-148-generic
processor_1 | 02-Oct-2019 10:15:33.207 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log
Architecture: amd64
processor_1 | 02-Oct-2019 10:15:33.207 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Java
Home: /usr/lib/jvm/java-8-openjdk-amd64/jre
processor_1 | 02-Oct-2019 10:15:33.208 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log JVM
Version: 1.8.0_171-8u171-b11-1~deb9u1-b11
processor_1 | 02-Oct-2019 10:15:33.208 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log JVM
Vendor: Oracle Corporation
processor_1 | 02-Oct-2019 10:15:33.208 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log
CATALINA_BASE: /usr/local/tomcat
processor_1 | 02-Oct-2019 10:15:33.208 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log
CATALINA_HOME: /usr/local/tomcat
processor_1 | 02-Oct-2019 10:15:33.209 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Djava.util.logging.config.file=/usr/local/to
mcat/conf/logging.properties
processor_1 | 02-Oct-2019 10:15:33.209 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Djava.util.logging.manager=org.apache.juli.C lassLoaderLogManager
processor_1 | 02-Oct-2019 10:15:33.210 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Djdk.tls.ephemeralDHKeySize=2048
processor_1 | 02-Oct-2019 10:15:33.210 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Djava.protocol.handler.pkgs=org.apache.catal ina.webresources
processor_1 | 02-Oct-2019 10:15:33.210 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -agentlib:jdwp=transport=dt_socket,address=80
00,server=y,suspend=n
processor_1 | 02-Oct-2019 10:15:33.210 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Dignore.endorsed.dirs=
processor_1 | 02-Oct-2019 10:15:33.211 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Dcatalina.base=/usr/local/tomcat
processor_1 | 02-Oct-2019 10:15:33.211 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Dcatalina.home=/usr/local/tomcat
processor_1 | 02-Oct-2019 10:15:33.212 INFO [main]
org.apache.catalina.startup.VersionLoggerListener.log Command line
argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
processor_1 | 02-Oct-2019 10:15:33.212 INFO [main]
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR
based Apache Tomcat Native library 1.2.16 using
AP R
version 1.5.2.
processor_1 | 02-Oct-2019 10:15:33.212 INFO [main]
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR
capabilities: IPv6 [true], sendfile [true], accept filter s [false],
random [true].
processor_1 | 02-Oct-2019 10:15:33.217 INFO [main]
org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL
successfully initialized (OpenSSL 1.1.0f 25 May 2017)
processor_1 | 02-Oct-2019 10:15:33.295 INFO [main]
org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler
["http-apr-8080"]
processor_1 | 02-Oct-2019 10:15:33.303 SEVERE [main]
org.apache.coyote.AbstractProtocol.init Failed to initialize end point
associated with ProtocolHandler ["http-apr-8080"]
processor_1 | java.lang.Exception: Socket bind failed: [98] Address
already in use
yml:
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
network_mode: host
nginx:
image: nginx
depends_on:
- processor
ports:
- 8090: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;'"
On 02/10/2019 12:47, Martynas Jusevičius wrote:
> 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 <mailto: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 <mailto: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
>> <mailto: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
>> <http://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 <http://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 <http://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://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
>> <http://example.org> in
>> > docker-compose.yml. In your case it would be
>> > PROXY_SET_HOST=resource.lingsoft.fi
>> <http://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
>> <mailto:mikael.pesonen@lingsoft.fi>> wrote:
>> >>>> Okay so it's possible to have servers on same name? We
>> have public
>> >>>> server resource.lingsoft.fi
>> <http://resource.lingsoft.fi> serving content, and
>> >>>> another server, say ldt.lingsoft.fi
>> <http://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
>> <http://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/
>> <http://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
>> <mailto: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
>> <mailto: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
>> <http://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
>> <http://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
>> <mailto: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
>> <mailto: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
>> <http://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)
>> >>>>
>>
--
Lingsoft - 30 years of Leading Language Management
www.lingsoft.fi
Speech Applications - Language Management - Translation - Reader's and Writer's Tools - Text Tools - E-books and M-books
Mikael Pesonen
System Engineer
e-mail: mikael.pesonen@lingsoft.fi
Tel. +358 2 279 3300
Time zone: GMT+2
Helsinki Office
Eteläranta 10
FI-00130 Helsinki
FINLAND
Turku Office
Kauppiaskatu 5 A
FI-20100 Turku
FINLAND
Received on Wednesday, 2 October 2019 10:19:01 UTC