- From: Mikael Pesonen <mikael.pesonen@lingsoft.fi>
- Date: Wed, 18 Sep 2019 15:00:29 +0300
- To: Martynas Jusevičius <martynas@atomgraph.com>
- Cc: public-declarative-apps@w3.org
Trying to connect to 8080, I get this output for curl: < HTTP/1.1 404 Not Found < Server: Apache-Coyote/1.1 < Content-Type: text/html;charset=utf-8 < Content-Language: en < Content-Length: 987 < Date: Wed, 18 Sep 2019 11:56:53 GMT < * Connection #0 to host localhost left intact <html><head><title>Apache Tomcat/7.0.68 (Ubuntu) - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 404 - /birthdays</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>/birthdays</u></p><p><b>description</b> <u>The requested resource is not available.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.68 (Ubuntu)</h3></body></html> And for port 8090 I get the connection reset. Heres the docker command: sudo docker run --rm -p 8090:8090 -e ENDPOINT="https://query.wikidata.org/bigdata/namespace/wdq/sparql" -e GRAPH_STORE="https://query.wikidata.org/bigdata/namespace/wdq/service" -e ONTOLOGY="https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#" -v "/home/text/cases/nimisampo/proxy/log4j.properties":"/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/log4j.properties" -v "/home/text/cases/nimisampo/proxy/wikidata.ttl":"/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/org/wikidata/ldt.ttl" -v "/home/text/cases/nimisampo/proxy/location-mapping.n3":"/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/custom-mapping.n3" atomgraph/processor On 18/09/2019 14:57, Martynas Jusevičius wrote: > Can you post the full docker run command you are using? > > On Wed, Sep 18, 2019 at 1:57 PM Mikael Pesonen > <mikael.pesonen@lingsoft.fi> wrote: >> >> Ok, I'm not getting any output then, so it could se some kind of >> connection issue. The output I sent is all there is, >> last line being >> >> 18-Sep-2019 11:45:44.880 INFO [main] >> org.apache.catalina.startup.Catalina.start Server startup in 343896 ms >> >> >> >> On 18/09/2019 14:54, Martynas Jusevičius wrote: >>> The logger is configured to write to stdout, so you should be able to >>> see the logs in container output when log4j.properties are mounted. Is >>> that not the case? >>> >>> If you docker run with -d, then I think you can use docker logs >>> container.name to see the stdout log. >>> https://docs.docker.com/engine/reference/commandline/logs/ >>> >>> This is some of the log that I see when I run the Wikidata example: >>> >>> 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%3A8080%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 >>> 1 * Client in-bound response >>> 1 < 403 >>> 1 < Transfer-Encoding: chunked >>> 1 < X-Cache: cp3033 int, cp3030 pass >>> 1 < Server: Varnish >>> 1 < Server-Timing: cache;desc="int-local" >>> 1 < Connection: keep-alive >>> 1 < X-Client-IP: 87.72.251.196 >>> 1 < Date: Wed, 18 Sep 2019 11:48:33 GMT >>> 1 < X-Varnish: 308872225, 719836281 >>> 1 < Strict-Transport-Security: max-age=106384710; includeSubDomains; preload >>> 1 < X-Cache-Status: int-local >>> 1 < Set-Cookie: >>> WMF-Last-Access-Global=18-Sep-2019;Path=/;Domain=.wikidata.org;HttpOnly;secure;Expires=Sun, >>> 20 Oct 2019 00:00:00 GMT >>> 1 < Set-Cookie: >>> WMF-Last-Access=18-Sep-2019;Path=/;HttpOnly;secure;Expires=Sun, 20 Oct >>> 2019 00:00:00 GMT >>> 1 < Vary: Accept-Encoding >>> 1 < X-Analytics: https=1;nocookies=1 >>> 1 < Age: 0 >>> 1 < Content-Type: text/html; charset=utf-8 >>> 1 < >>> <!DOCTYPE html> >>> <html lang="en"> >>> <meta charset="utf-8"> >>> <title>Wikimedia Error</title> >>> <style> >>> * { margin: 0; padding: 0; } >>> body { background: #fff; font: 15px/1.6 sans-serif; color: #333; } >>> .content { margin: 7% auto 0; padding: 2em 1em 1em; max-width: 640px; } >>> .footer { clear: both; margin-top: 14%; border-top: 1px solid #e5e5e5; >>> background: #f9f9f9; padding: 2em 0; font-size: 0.8em; text-align: >>> center; } >>> img { float: left; margin: 0 2em 2em 0; } >>> a img { border: 0; } >>> h1 { margin-top: 1em; font-size: 1.2em; } >>> .content-text { overflow: hidden; overflow-wrap: break-word; word-wrap: bre >>> 11:48:33,899 ERROR SPARQLClient:177 - Query request to endpoint: >>> https://query.wikidata.org/bigdata/namespace/wdq/sparql unsuccessful. >>> Reason: Forbidden >>> 11:48:33,948 DEBUG OntologyProvider:183 - Loading sitemap ontology >>> from URI: https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata# >>> >>> Which suggests that Wikidata's SPARQL endpoint responds with an error >>> -- this has been on and off today. Although the LDT is processed >>> correctly. >>> >>> On Wed, Sep 18, 2019 at 1:40 PM Mikael Pesonen >>> <mikael.pesonen@lingsoft.fi> wrote: >>>> Sorry how do I access the log file? I'm not able to find it with docker cp. >>>> >>>> Mikael >>>> >>>> >>>> On 18/09/2019 13:27, Martynas Jusevičius wrote: >>>>> This is the file: >>>>> https://raw.githubusercontent.com/AtomGraph/Processor/master/src/main/resources/log4j.properties >>>>> >>>>> On Wed, Sep 18, 2019 at 12:26 PM Mikael Pesonen >>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>> Could I please have a log4j.properties file too. I have no experience in >>>>>> java logging... >>>>>> >>>>>> Mikael >>>>>> >>>>>> On 18/09/2019 13:20, Martynas Jusevičius wrote: >>>>>>> Oops, I'll CC the list again :) >>>>>>> >>>>>>> Could you try mounting log4j.properties as well, like in the example? >>>>>>> That should give you debug output in the container. >>>>>>> >>>>>>> Also a good idea to validate the ontology's Turtle syntax (or any RDF >>>>>>> config really) after any changes, just to be sure. There's a handy >>>>>>> online tool: http://ttl.summerofcode.be >>>>>>> >>>>>>> BTW you can also do docker pull atomgraph/processor, I just released >>>>>>> an updated version that allows killing the container gracefully with >>>>>>> Ctrl+C. >>>>>>> >>>>>>> On Wed, Sep 18, 2019 at 12:12 PM Mikael Pesonen >>>>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>>>> Thanks! Now I think I have the correct command line >>>>>>>> >>>>>>>> sudo docker run --rm -p 8090:8090 -e >>>>>>>> ENDPOINT="https://query.wikidata.org/bigdata/namespace/wdq/sparql" -e >>>>>>>> GRAPH_STORE="https://query.wikidata.org/bigdata/namespace/wdq/service" >>>>>>>> -e >>>>>>>> ONTOLOGY="https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#" >>>>>>>> -v >>>>>>>> "/home/text/cases/nimisampo/proxy/wikidata.ttl":"/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/org/wikidata/ldt.ttl" >>>>>>>> -v >>>>>>>> "/home/text/cases/nimisampo/proxy/location-mapping.n3":"/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/custom-mapping.n3" >>>>>>>> atomgraph/processor >>>>>>>> >>>>>>>> When testing I get >>>>>>>> >>>>>>>> >> curl -v http://localhost:8090/birthdays >>>>>>>> >>>>>>>> * Trying ::1... >>>>>>>> * Connected to localhost (::1) port 8090 (#0) >>>>>>>> > GET /birthdays HTTP/1.1 >>>>>>>> > Host: localhost:8090 >>>>>>>> > User-Agent: curl/7.47.0 >>>>>>>> > Accept: */* >>>>>>>> > >>>>>>>> * Recv failure: Connection reset by peer >>>>>>>> * Closing connection 0 >>>>>>>> curl: (56) Recv failure: Connection reset by peer >>>>>>>> >>>>>>>> >>>>>>>> Do you have and idea what could be the issue? In docker output there >>>>>>>> seems to be no errors: >>>>>>>> >>>>>>>> @prefix lm: <http://jena.hpl.hp.com/2004/08/location-mapping#> . >>>>>>>> >>>>>>>> [] lm:mapping >>>>>>>> >>>>>>>> [ lm:name "https://www.w3.org/ns/ldt#" >>>>>>>> ; lm:altName >>>>>>>> "com/atomgraph/processor/ldt.ttl" ] , >>>>>>>> [ lm:name "https://www.w3.org/ns/ldt/core/domain#" >>>>>>>> ; lm:altName "com/atomgraph/processor/c.ttl" ] , >>>>>>>> [ lm:name "https://www.w3.org/ns/ldt/core/templates#" >>>>>>>> ; lm:altName "com/atomgraph/processor/ct.ttl" ] , >>>>>>>> [ lm:name "https://www.w3.org/ns/ldt/named-graphs/templates#" >>>>>>>> ; lm:altName "com/atomgraph/processor/ngt.ttl" ] , >>>>>>>> [ lm:name "https://www.w3.org/ns/ldt/document-hierarchy/domain#" >>>>>>>> ; lm:altName "com/atomgraph/processor/dh.ttl" ] , >>>>>>>> [ lm:name "https://www.w3.org/ns/ldt/topic-hierarchy/templates#" >>>>>>>> ; lm:altName "com/atomgraph/processor/tht.ttl" ] , >>>>>>>> [ lm:name "http://rdfs.org/sioc/ns#" >>>>>>>> ; lm:altName >>>>>>>> "com/atomgraph/processor/sioc.owl" ] , >>>>>>>> [ lm:name "http://rdfs.org/ns/void#" >>>>>>>> ; lm:altName >>>>>>>> "com/atomgraph/processor/void.owl" ] , >>>>>>>> [ lm:name "http://www.w3.org/2011/http#" >>>>>>>> ; lm:altName >>>>>>>> "com/atomgraph/processor/http.owl" ] , >>>>>>>> [ lm:name "http://www.w3.org/2011/http" >>>>>>>> ; lm:altName >>>>>>>> "com/atomgraph/processor/http.owl" ] , >>>>>>>> [ lm:name "http://www.w3.org/2011/http-statusCodes#" >>>>>>>> ; lm:altName >>>>>>>> "com/atomgraph/processor/http-statusCodes.rdf" ] , >>>>>>>> [ lm:name "http://www.w3.org/2011/http-statusCodes" >>>>>>>> ; lm:altName >>>>>>>> "com/atomgraph/processor/http-statusCodes.rdf" ] , >>>>>>>> [ lm:name "http://www.w3.org/ns/sparql-service-description#" >>>>>>>> ; lm:altName "com/atomgraph/processor/sparql-service.owl" ] , >>>>>>>> [ lm:name "http://xmlns.com/foaf/0.1/" >>>>>>>> ; lm:altName >>>>>>>> "com/atomgraph/processor/foaf.owl" ] , >>>>>>>> [ lm:name "http://spinrdf.org/sp#" >>>>>>>> ; lm:altName "etc/sp.ttl" ] , >>>>>>>> [ lm:name "http://spinrdf.org/sp" >>>>>>>> ; lm:altName "etc/sp.ttl" ] , >>>>>>>> [ lm:name "http://spinrdf.org/spin#" >>>>>>>> ; lm:altName "etc/spin.ttl" ] , >>>>>>>> [ lm:name "http://spinrdf.org/spin" >>>>>>>> ; lm:altName "etc/spin.ttl" ] , >>>>>>>> [ lm:name "http://spinrdf.org/spl#" >>>>>>>> ; lm:altName "etc/spl.spin.ttl" ] , >>>>>>>> [ lm:name "http://spinrdf.org/spl" >>>>>>>> ; lm:altName "etc/spl.spin.ttl" ] >>>>>>>> . >>>>>>>> >>>>>>>> ... html for a github page ... >>>>>>>> >>>>>>>> 18-Sep-2019 09:57:42.303 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Server >>>>>>>> version: Apache Tomcat/8.0.52 >>>>>>>> 18-Sep-2019 09:57:42.305 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Server >>>>>>>> built: Apr 28 2018 16:24:29 UTC >>>>>>>> 18-Sep-2019 09:57:42.306 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Server >>>>>>>> number: 8.0.52.0 >>>>>>>> 18-Sep-2019 09:57:42.306 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log OS >>>>>>>> Name: Linux >>>>>>>> 18-Sep-2019 09:57:42.306 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log OS >>>>>>>> Version: 4.4.0-148-generic >>>>>>>> 18-Sep-2019 09:57:42.306 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log >>>>>>>> Architecture: amd64 >>>>>>>> 18-Sep-2019 09:57:42.307 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Java >>>>>>>> Home: /usr/lib/jvm/java-8-openjdk-amd64/jre >>>>>>>> 18-Sep-2019 09:57:42.307 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log JVM >>>>>>>> Version: 1.8.0_171-8u171-b11-1~deb9u1-b11 >>>>>>>> 18-Sep-2019 09:57:42.307 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log JVM >>>>>>>> Vendor: Oracle Corporation >>>>>>>> 18-Sep-2019 09:57:42.307 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log >>>>>>>> CATALINA_BASE: /usr/local/tomcat >>>>>>>> 18-Sep-2019 09:57:42.308 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log >>>>>>>> CATALINA_HOME: /usr/local/tomcat >>>>>>>> 18-Sep-2019 09:57:42.308 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Command line >>>>>>>> argument: >>>>>>>> -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties >>>>>>>> 18-Sep-2019 09:57:42.308 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Command line >>>>>>>> argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager >>>>>>>> 18-Sep-2019 09:57:42.308 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Command line >>>>>>>> argument: -Djdk.tls.ephemeralDHKeySize=2048 >>>>>>>> 18-Sep-2019 09:57:42.309 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Command line >>>>>>>> argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources >>>>>>>> 18-Sep-2019 09:57:42.309 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Command line >>>>>>>> argument: -Dignore.endorsed.dirs= >>>>>>>> 18-Sep-2019 09:57:42.309 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Command line >>>>>>>> argument: -Dcatalina.base=/usr/local/tomcat >>>>>>>> 18-Sep-2019 09:57:42.309 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Command line >>>>>>>> argument: -Dcatalina.home=/usr/local/tomcat >>>>>>>> 18-Sep-2019 09:57:42.310 INFO [main] >>>>>>>> org.apache.catalina.startup.VersionLoggerListener.log Command line >>>>>>>> argument: -Djava.io.tmpdir=/usr/local/tomcat/temp >>>>>>>> 18-Sep-2019 09:57:42.310 INFO [main] >>>>>>>> org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR >>>>>>>> based Apache Tomcat Native library 1.2.16 using APR version 1.5.2. >>>>>>>> 18-Sep-2019 09:57:42.310 INFO [main] >>>>>>>> org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR >>>>>>>> capabilities: IPv6 [true], sendfile [true], accept filters [false], >>>>>>>> random [true]. >>>>>>>> 18-Sep-2019 09:57:42.314 INFO [main] >>>>>>>> org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL >>>>>>>> successfully initialized (OpenSSL 1.1.0f 25 May 2017) >>>>>>>> 18-Sep-2019 09:57:42.387 INFO [main] >>>>>>>> org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler >>>>>>>> ["http-apr-8080"] >>>>>>>> 18-Sep-2019 09:57:42.394 INFO [main] >>>>>>>> org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler >>>>>>>> ["ajp-apr-8009"] >>>>>>>> 18-Sep-2019 09:57:42.398 INFO [main] >>>>>>>> org.apache.catalina.startup.Catalina.load Initialization processed in 451 ms >>>>>>>> 18-Sep-2019 09:57:42.432 INFO [main] >>>>>>>> org.apache.catalina.core.StandardService.startInternal Starting service >>>>>>>> Catalina >>>>>>>> 18-Sep-2019 09:57:42.432 INFO [main] >>>>>>>> org.apache.catalina.core.StandardEngine.startInternal Starting Servlet >>>>>>>> Engine: Apache Tomcat/8.0.52 >>>>>>>> 18-Sep-2019 09:57:42.446 INFO [localhost-startStop-1] >>>>>>>> org.apache.catalina.startup.HostConfig.deployDescriptor Deploying >>>>>>>> configuration descriptor /usr/local/tomcat/conf/Catalina/localhost/ROOT.xml >>>>>>>> 18-Sep-2019 09:57:43.893 INFO [localhost-startStop-1] >>>>>>>> org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was >>>>>>>> scanned for TLDs yet contained no TLDs. Enable debug logging for this >>>>>>>> logger for a complete list of JARs that were scanned but no TLDs were >>>>>>>> found in them. Skipping unneeded JARs during scanning can improve >>>>>>>> startup time and JSP compilation time. >>>>>>>> 18-Sep-2019 09:57:43.915 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 1,469 ms >>>>>>>> 18-Sep-2019 09:57:43.917 INFO [main] >>>>>>>> org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler >>>>>>>> ["http-apr-8080"] >>>>>>>> 18-Sep-2019 09:57:43.925 INFO [main] >>>>>>>> org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler >>>>>>>> ["ajp-apr-8009"] >>>>>>>> 18-Sep-2019 09:57:43.927 INFO [main] >>>>>>>> org.apache.catalina.startup.Catalina.start Server startup in 1528 ms >>>>>>>> >>>>>>>> >>>>>>>> Mikael >>>>>>>> >>>>>>>> >>>>>>>> On 18/09/2019 10:58, Martynas Jusevičius wrote: >>>>>>>>> Hi :) >>>>>>>>> >>>>>>>>> thanks for reporting, I've now fixed the links. Docker Hub reuses >>>>>>>>> README from GitHub, so GitHub-relative URLs don't work. >>>>>>>>> >>>>>>>>> I also added a link to the Wikidata example: >>>>>>>>> https://github.com/AtomGraph/Processor/tree/master/examples >>>>>>>>> It contains these two files: >>>>>>>>> >>>>>>>>> - wikidata.ttl is the LDT ontology of the example application. It >>>>>>>>> contains LDT templates, in your case :PersonItem for example. >>>>>>>>> The base URI (i.e. the namespace) is totally up to you, but keep in >>>>>>>>> mind the URI of the ldt:Ontology resource, because that is what >>>>>>>>> specified as -e ONTOLOGY. >>>>>>>>> In the Wikidata example, the ontology URI is >>>>>>>>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata# >>>>>>>>> (with the trailing hash). >>>>>>>>> >>>>>>>>> - location-mapping.n3 - this is a config file for Jena: >>>>>>>>> https://jena.apache.org/documentation/notes/file-manager.html#the-locationmapper-configuration-file >>>>>>>>> In RDF we want to use URIs namespaces and not file paths. This file >>>>>>>>> provides a mapping between the two, and when an application attempts >>>>>>>>> to read a mapped URI, Jena actually reads it from the file it is >>>>>>>>> mapped to. >>>>>>>>> In the example, >>>>>>>>> https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata# >>>>>>>>> is mapped to org/wikidata/ldt.ttl - and that is the file we mount >>>>>>>>> under /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/ in the >>>>>>>>> container. >>>>>>>>> >>>>>>>>> So you do need location-mapping.n3 as well, unless your LDT ontology >>>>>>>>> is resolvable from its URI. In the example the ontology URI is made up >>>>>>>>> and there is no document behind it, so Jena would fail reading it if >>>>>>>>> there would be no mapping. >>>>>>>>> >>>>>>>>> I think it would be easiest for you to reuse the example as it is, >>>>>>>>> having copies of wikidata.ttl and location-mapping.n3 on your machine >>>>>>>>> (you can probably skip log4j.properties) that you mount using -v. >>>>>>>>> Then you can make changes in wikidata.ttl. Try to replace the >>>>>>>>> :BirthdaysTemplate and query with your own and see if it works. Worry >>>>>>>>> about namespaces and filenames later :) >>>>>>>>> >>>>>>>>> Well and -e ENDPOINT and -e GRAPH_STORE values have to be replaced >>>>>>>>> with your URLs of course. >>>>>>>>> >>>>>>>>> Martynas >>>>>>>>> >>>>>>>>> On Tue, Sep 17, 2019 at 3:24 PM Mikael Pesonen >>>>>>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>>>>>> Hi again! >>>>>>>>>> >>>>>>>>>> Im reading instructions at https://hub.docker.com/r/atomgraph/processor. There are some broken links at top. >>>>>>>>>> >>>>>>>>>> docker run --rm \ >>>>>>>>>> -p 8080:8080 \ >>>>>>>>>> -e ENDPOINT="https://query.wikidata.org/bigdata/namespace/wdq/sparql" \ >>>>>>>>>> -e GRAPH_STORE="https://query.wikidata.org/bigdata/namespace/wdq/service" \ >>>>>>>>>> -e ONTOLOGY="https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#" \ >>>>>>>>>> -v "/c/Users/namedgraph/WebRoot/Processor/src/main/resources/log4j.properties":"/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/log4j.properties" \ >>>>>>>>>> -v "/c/Users/namedgraph/WebRoot/Processor/examples/wikidata.ttl":"/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/org/wikidata/ldt.ttl" \ >>>>>>>>>> -v "/c/Users/namedgraph/WebRoot/Processor/examples/location-mapping.n3":"/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/custom-mapping.n3" \ >>>>>>>>>> atomgraph/processor >>>>>>>>>> >>>>>>>>>> What is the puspose of wikidata.ttl and where can I find it? location_mapping.n3 can be left out if its non custom? >>>>>>>>>> >>>>>>>>>> So this would work? >>>>>>>>>> >>>>>>>>>> docker run --rm \ >>>>>>>>>> -p 8080:8080 \ >>>>>>>>>> -e ENDPOINT="https://query.wikidata.org/bigdata/namespace/wdq/sparql" \ >>>>>>>>>> -e GRAPH_STORE="https://query.wikidata.org/bigdata/namespace/wdq/service" \ >>>>>>>>>> -e ONTOLOGY="https://github.com/AtomGraph/Processor/blob/develop/examples/wikidata#" \ >>>>>>>>>> -v "/c/Users/namedgraph/WebRoot/Processor/examples/wikidata.ttl":"/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/org/wikidata/ldt.ttl" \ >>>>>>>>>> atomgraph/processor >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Mikael >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 17/09/2019 14:57, Martynas Jusevičius wrote: >>>>>>>>>> >>>>>>>>>> Hi Mikael, >>>>>>>>>> >>>>>>>>>> the template URI on its own is irrelevant here, it could be a blank >>>>>>>>>> node resource. It becomes important when one intends to reuse >>>>>>>>>> templates, e.g. extend them or reference them, possibly from another >>>>>>>>>> LDT ontology. >>>>>>>>>> >>>>>>>>>> Yes it is the ldt:match that holds the URI template that request URI >>>>>>>>>> is matched against. I have expanded the explanation here: >>>>>>>>>> https://github.com/AtomGraph/Processor/wiki/Linked-Data-Templates#templates >>>>>>>>>> >>>>>>>>>> As for the agent ID, one option to pass a value to the LDT template is >>>>>>>>>> using template parameters: >>>>>>>>>> https://github.com/AtomGraph/Processor/wiki/Linked-Data-Templates#parameters >>>>>>>>>> >>>>>>>>>> Then if a request URI is >>>>>>>>>> https://resource.lingsoft.fi/286c384d-cd5c-4887-9b85-94c0c147f709?agent=123456, >>>>>>>>>> a variable binding (?agent, "123456") is applied to the query string >>>>>>>>>> from ldt:query, before it is executed. >>>>>>>>>> This might or might not work for your use case. >>>>>>>>>> >>>>>>>>>> Martynas >>>>>>>>>> >>>>>>>>>> On Tue, Sep 17, 2019 at 1:43 PM Mikael Pesonen >>>>>>>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>>>>>> >>>>>>>>>> Hmm, still mixing up things. So ldt:match has to match the resource URI. >>>>>>>>>> >>>>>>>>>> On 17/09/2019 12:13, Mikael Pesonen wrote: >>>>>>>>>> >>>>>>>>>> Ok now I got it, the template address has to be the same as resource URI. >>>>>>>>>> Just one question, in our case, https://base/{uuid}, how should we >>>>>>>>>> forward the agent id (access level) to the template for utilizing ACL? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 17/09/2019 11:40, Martynas Jusevičius wrote: >>>>>>>>>> >>>>>>>>>> Thanks Mikael, >>>>>>>>>> >>>>>>>>>> the example makes it clearer. >>>>>>>>>> >>>>>>>>>> So the URI template for all persons (and I guess all resources in >>>>>>>>>> general?) is "/{uuid}", if we take https://resource.lingsoft.fi as the >>>>>>>>>> base URI. Which means that you could not match two different LDT >>>>>>>>>> templates for different types of persons. >>>>>>>>>> >>>>>>>>>> Then my suggestion with using a single template with a query that >>>>>>>>>> references the ACL graph still stands. Let me know if you need help >>>>>>>>>> setting it up in Processor. >>>>>>>>>> >>>>>>>>>> Martynas >>>>>>>>>> >>>>>>>>>> On Mon, Sep 16, 2019 at 11:27 AM Mikael Pesonen >>>>>>>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>>>>>> >>>>>>>>>> Here is a sample data: >>>>>>>>>> >>>>>>>>>> <https://resource.lingsoft.fi/286c384d-cd5c-4887-9b85-94c0c147f709> >>>>>>>>>> a foaf:Person ; >>>>>>>>>> vcard:family-name "Pesonen" ; >>>>>>>>>> vcard:fn "Mikael Pesonen" ; >>>>>>>>>> vcard:given-name "Mikael" ; >>>>>>>>>> vcard:hasEmail >>>>>>>>>> <https://resource.lingsoft.fi/cf9b02b7-bd0d-486e-b0d9-da1464e27d2e> , >>>>>>>>>> <https://resource.lingsoft.fi/5c04aa23-6c42-44a1-9ac9-69ee255ac170> ; >>>>>>>>>> vcard:hasGender vcard:Male ; >>>>>>>>>> vcard:hasInstantMessage >>>>>>>>>> <https://resource.lingsoft.fi/4aa01d37-744c-4964-a794-d997aa376584> ; >>>>>>>>>> vcard:hasPhoto >>>>>>>>>> <https://resource.lingsoft.fi/8f4a4ddd-43c2-4e27-8ed7-996dd00e939c> ; >>>>>>>>>> vcard:hasTelephone >>>>>>>>>> <https://resource.lingsoft.fi/3755ed0c-81b7-430e-92a0-16fc80ba41b4> ; >>>>>>>>>> org:basedAt >>>>>>>>>> <https://resource.lingsoft.fi/b48a0820-6921-43fc-a346-e72397265bbe> ; >>>>>>>>>> org:memberOf >>>>>>>>>> <https://resource.lingsoft.fi/810dfbff-e6fb-458a-b27d-3726a27e5109> ; >>>>>>>>>> foaf:account >>>>>>>>>> <https://resource.lingsoft.fi/2f0aa772-f845-4f43-b607-dc65ff66b9aa> ; >>>>>>>>>> <https://resource.lingsoft.fi/cf9b02b7-bd0d-486e-b0d9-da1464e27d2e> >>>>>>>>>> a vcard:Email , vcard:Work ; >>>>>>>>>> rdfs:label "***@lingsoft.fi" ; >>>>>>>>>> vcard:hasValue <mailto:***@lingsoft.fi> . >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> So most of the person's values are resources and every resource has id >>>>>>>>>> of type https://resource.lingsoft.fi/<UUID>. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Mikael >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 15/09/2019 01:02, Martynas Jusevičius wrote: >>>>>>>>>> >>>>>>>>>> I meant the first and the ACL examples as alternatives, but yes you >>>>>>>>>> can combine the approaches as well. Again, depends mostly on your URIs >>>>>>>>>> - and are able to change their pattern? >>>>>>>>>> >>>>>>>>>> I think it would help if you could show some RDF data that represents >>>>>>>>>> your case (does not have to be the actual person data :)) Either paste >>>>>>>>>> inline or as a Gist if it's larger. >>>>>>>>>> >>>>>>>>>> Re. ACL, we use a filter in our LinkedDataHub platform that checks ACL >>>>>>>>>> access before the actual LDT request is invoked. And if query results >>>>>>>>>> need to depend on the access level, we reference the ACL dataset as I >>>>>>>>>> showed in the example. >>>>>>>>>> >>>>>>>>>> Martynas >>>>>>>>>> >>>>>>>>>> On Fri, Sep 13, 2019 at 3:55 PM Mikael Pesonen >>>>>>>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>>>>>> >>>>>>>>>> Looking at your first example, looks like that and this acl >>>>>>>>>> version work >>>>>>>>>> both? >>>>>>>>>> >>>>>>>>>> So as with your first example: >>>>>>>>>> >>>>>>>>>> /person/basic_access/{id} >>>>>>>>>> -- >>>>>>>>>> >>>>>>>>>> :BasicPersonAccessItem a ldt:Template ; >>>>>>>>>> ldt:match "/person/basic_access/{id}" ; >>>>>>>>>> ldt:query :ConstructBasicPerson ; >>>>>>>>>> >>>>>>>>>> ---- >>>>>>>>>> /person/admin_access/{id} >>>>>>>>>> -- >>>>>>>>>> :AdminPersonAccessItem a ldt:Template ; >>>>>>>>>> ldt:match "/person/admin_access/{id}" ; >>>>>>>>>> ldt:query :ConstructFullPerson ; >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> And this acl example >>>>>>>>>> >>>>>>>>>> /person/{agent}/{id} >>>>>>>>>> -- >>>>>>>>>> :PersonAccessItem a ldt:Template ; >>>>>>>>>> ldt:match "/person/{agent}/{id}" ; >>>>>>>>>> ldt:query :ConstructPerson ; >>>>>>>>>> ... >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> ACL example sure is more refined since you can define the access >>>>>>>>>> levels >>>>>>>>>> in the ACL data. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 13/09/2019 16:25, Martynas Jusevičius wrote: >>>>>>>>>> >>>>>>>>>> Well if you only have one kind of person resources with a single URI >>>>>>>>>> pattern, then you cannot select (match) different LDT templates. >>>>>>>>>> That is because an LDT template maps one URI pattern to one SPARQL >>>>>>>>>> command. The matching process is not looking into the SPARQL query >>>>>>>>>> results at all, only at the request URI and the application's LDT >>>>>>>>>> ontology. >>>>>>>>>> >>>>>>>>>> I think you can solve this with a single query though. What we do is >>>>>>>>>> provide the URI of the requesting agent as a query binding, e.g. >>>>>>>>>> ?agent variable. Something like >>>>>>>>>> >>>>>>>>>> :ConstructPerson a sp:Construct ; >>>>>>>>>> sp:text """ >>>>>>>>>> PREFIX foaf: <http://xmlns.com/foaf/0.1/> >>>>>>>>>> PREFIX acl: <http://www.w3.org/ns/auth/acl#> >>>>>>>>>> >>>>>>>>>> CONSTRUCT >>>>>>>>>> { >>>>>>>>>> ?this a foaf:Person . >>>>>>>>>> ?this foaf:name ?name . >>>>>>>>>> ?this ?p ?o . >>>>>>>>>> } >>>>>>>>>> WHERE >>>>>>>>>> { { ?this a foaf:Person ; >>>>>>>>>> foaf:name ?name >>>>>>>>>> } >>>>>>>>>> UNION >>>>>>>>>> { GRAPH <acl> >>>>>>>>>> { ?auth acl:accessTo ?this ; >>>>>>>>>> acl:agent ?agent . >>>>>>>>>> } >>>>>>>>>> ?this ?p ?o >>>>>>>>>> } >>>>>>>>>> } >>>>>>>>>> """ ; >>>>>>>>>> rdfs:isDefinedBy : . >>>>>>>>>> >>>>>>>>>> The idea is that the person query always returns "basic" properties, >>>>>>>>>> and adds all properties *only* if the agent ?agent has an >>>>>>>>>> authorization to access the requested resource ?this. >>>>>>>>>> This approach requires that the query has access to the ACL data, >>>>>>>>>> which I have indicated here as GRAPH <acl>. The actual pattern for >>>>>>>>>> authorization check will probably be more complex of course. >>>>>>>>>> It also requires that the authentication mechanism can provide >>>>>>>>>> the URI >>>>>>>>>> of the agent. >>>>>>>>>> >>>>>>>>>> I hope I got what you meant :) >>>>>>>>>> >>>>>>>>>> On Fri, Sep 13, 2019 at 2:58 PM Mikael Pesonen >>>>>>>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>>>>>> >>>>>>>>>> Ah, I might have explained our case bit vaguely. So I just meant >>>>>>>>>> that we >>>>>>>>>> have in RDF data one kind of person resources, and >>>>>>>>>> depending on the access rights in the application, you are >>>>>>>>>> allowed to >>>>>>>>>> see different portions of that person's data. >>>>>>>>>> Basic user sees only the name, for example, and admin user is >>>>>>>>>> allowed to >>>>>>>>>> see all data. This is handled by selecting different template >>>>>>>>>> for basic >>>>>>>>>> user and admin, right? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 13/09/2019 15:52, Martynas Jusevičius wrote: >>>>>>>>>> >>>>>>>>>> Mikael, >>>>>>>>>> >>>>>>>>>> this is related to hierarchical URIs: >>>>>>>>>> http://patterns.dataincubator.org/book/hierarchical-uris.html >>>>>>>>>> >>>>>>>>>> In your case, the question is how you have organized the >>>>>>>>>> collections/items of basic and admin persons in your dataset. >>>>>>>>>> >>>>>>>>>> One option is that both "basic persons" and "admin persons" >>>>>>>>>> belong to >>>>>>>>>> the same collection and have a single URI pattern: /persons/{id} >>>>>>>>>> In this case you cannot tell if resource /persons/12345 is a >>>>>>>>>> "basic >>>>>>>>>> person" or "admin person" just from its URI. You need to >>>>>>>>>> dereference >>>>>>>>>> it and the look into RDF types and properties. >>>>>>>>>> >>>>>>>>>> Another option is that you treat them as belonging to separate >>>>>>>>>> collections, for example: /persons/{id} and /admins/{id} >>>>>>>>>> In this case you can easily tell if a resource is a "basic >>>>>>>>>> person" or >>>>>>>>>> an "admin person" already from its URIs. >>>>>>>>>> >>>>>>>>>> Linked Data Templates are best suited for this second case, >>>>>>>>>> where URI >>>>>>>>>> space is subdivided into hierarchies based on entity types. >>>>>>>>>> That makes >>>>>>>>>> it easy to define URI templates that match precisely the set of >>>>>>>>>> resources that you want. >>>>>>>>>> >>>>>>>>>> Does it make it clearer? >>>>>>>>>> >>>>>>>>>> On Fri, Sep 13, 2019 at 2:08 PM Mikael Pesonen >>>>>>>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>>>>>> >>>>>>>>>> Hi Martynas, >>>>>>>>>> >>>>>>>>>> thank you for the examples, GET seems clear now. >>>>>>>>>> >>>>>>>>>> Good point about the person / document. We probably end up >>>>>>>>>> with three >>>>>>>>>> kind of resources: actual object, admin record (who last >>>>>>>>>> modified etc), >>>>>>>>>> and web page or another document about the object. >>>>>>>>>> >>>>>>>>>> Just one question: what did you mean by >>>>>>>>>> >>>>>>>>>> "If you cannot distinguish "basic person" from "admin person" >>>>>>>>>> by their >>>>>>>>>> URIs"? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> We are not quite there yet with updates, so we might have >>>>>>>>>> questions >>>>>>>>>> later about those. >>>>>>>>>> >>>>>>>>>> Br, >>>>>>>>>> Mikael >>>>>>>>>> >>>>>>>>>> On 11/09/2019 18:45, Martynas Jusevičius wrote: >>>>>>>>>> >>>>>>>>>> Hi Mikael, >>>>>>>>>> >>>>>>>>>> thanks for reaching out. >>>>>>>>>> >>>>>>>>>> There is more information on LDT in the AtomGraph Processor >>>>>>>>>> wiki, more >>>>>>>>>> specifically: >>>>>>>>>> https://github.com/AtomGraph/Processor/wiki/Linked-Data-Templates >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> The matching is based on URIs: relative request URI is being >>>>>>>>>> matched >>>>>>>>>> against the ldt:match values of templates in the ontology. >>>>>>>>>> >>>>>>>>>> Then, from the matching template (if there is any), the >>>>>>>>>> SPARQL command >>>>>>>>>> is retrieved using either ldt:query or ldt:update (depending >>>>>>>>>> on the >>>>>>>>>> HTTP request method). >>>>>>>>>> >>>>>>>>>> To address your example, templates and queries could look >>>>>>>>>> like this: >>>>>>>>>> >>>>>>>>>> :BasicPersonItem a ldt:Template ; >>>>>>>>>> ldt:match "/person/basic/{id}" ; >>>>>>>>>> ldt:query :ConstructBasicPerson ; >>>>>>>>>> rdfs:isDefinedBy : . >>>>>>>>>> >>>>>>>>>> :ConstructBasicPerson a sp:Construct ; >>>>>>>>>> sp:text """ >>>>>>>>>> PREFIX foaf: <http://xmlns.com/foaf/0.1/> >>>>>>>>>> >>>>>>>>>> CONSTRUCT >>>>>>>>>> { >>>>>>>>>> ?this a foaf:Person ; >>>>>>>>>> foaf:name ?name . >>>>>>>>>> } >>>>>>>>>> { >>>>>>>>>> ?this a foaf:Person ; >>>>>>>>>> foaf:name ?name . >>>>>>>>>> } >>>>>>>>>> """ ; >>>>>>>>>> rdfs:isDefinedBy : . >>>>>>>>>> >>>>>>>>>> :AdminPersonItem a ldt:Template ; >>>>>>>>>> ldt:match "/person/admin/{id}" ; >>>>>>>>>> ldt:query :ConstructAdminPerson ; >>>>>>>>>> rdfs:isDefinedBy : . >>>>>>>>>> >>>>>>>>>> :ConstructAdminPerson a sp:Construct ; >>>>>>>>>> sp:text """ >>>>>>>>>> CONSTRUCT WHERE >>>>>>>>>> { >>>>>>>>>> ?this ?p ?o >>>>>>>>>> } >>>>>>>>>> """ ; >>>>>>>>>> rdfs:isDefinedBy : . >>>>>>>>>> >>>>>>>>>> "Basic person" query retrieves only name and type, "admin >>>>>>>>>> person" >>>>>>>>>> query retrieves all properties. >>>>>>>>>> This example requires that basic and admin person resources >>>>>>>>>> can be >>>>>>>>>> differentiated by their URIs, i.e. "/person/basic/{id}" vs >>>>>>>>>> "/person/admin/{id}". >>>>>>>>>> >>>>>>>>>> It also assumes that persons are documents (since they can be >>>>>>>>>> dereferenced over HTTP), which is not kosher re. httpRange-14 >>>>>>>>>> [1]. A >>>>>>>>>> better solution would have separate resources for persons >>>>>>>>>> e.g. using >>>>>>>>>> hash URIs such as #this) and explicitly connect them to >>>>>>>>>> documents >>>>>>>>>> using an RDF property. We use >>>>>>>>>> foaf:primaryTopic/foaf:isPrimaryTopicOf. >>>>>>>>>> But this is a whole topic on its own. >>>>>>>>>> >>>>>>>>>> If you cannot distinguish "basic person" from "admin person" >>>>>>>>>> by their >>>>>>>>>> URIs, you could also have a template that matches both and >>>>>>>>>> maps to a >>>>>>>>>> single query. The question is then whether you can >>>>>>>>>> differentiate which >>>>>>>>>> properties to return using a single query. >>>>>>>>>> >>>>>>>>>> Does this help? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> [1] https://www.w3.org/2001/tag/group/track/issues/14 >>>>>>>>>> >>>>>>>>>> Martynas >>>>>>>>>> atomgraph.com >>>>>>>>>> >>>>>>>>>> On Wed, Sep 11, 2019 at 11:21 AM Mikael Pesonen >>>>>>>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>>>>>> >>>>>>>>>> Hi Martynas, >>>>>>>>>> >>>>>>>>>> we have a proprietary implementation now: >>>>>>>>>> >>>>>>>>>> js/React app generates a custom json out of form data. That >>>>>>>>>> is sent >>>>>>>>>> (with a template id) to also custom proxy, which converts >>>>>>>>>> the json into >>>>>>>>>> SPARQL using pre made templates. SPARQL is then queried on >>>>>>>>>> Apache Jena. >>>>>>>>>> >>>>>>>>>> Now we would like to replace all custom bits with one ore >>>>>>>>>> more standards. >>>>>>>>>> >>>>>>>>>> Is it possible to have any kind of templates with LDT? For >>>>>>>>>> example >>>>>>>>>> "person_basic" and "person_admin", >>>>>>>>>> where admin contains more properties of a person? >>>>>>>>>> >>>>>>>>>> I'm still having trouble to understand how the SPARQL >>>>>>>>>> template is >>>>>>>>>> selected with LDT. >>>>>>>>>> >>>>>>>>>> Br, >>>>>>>>>> Mikael >>>>>>>>>> >>>>>>>>>> On 10/09/2019 15:50, Martynas Jusevičius wrote: >>>>>>>>>> >>>>>>>>>> Hey Mikael, >>>>>>>>>> >>>>>>>>>> we have a simple example here: >>>>>>>>>> https://github.com/AtomGraph/Processor#example >>>>>>>>>> >>>>>>>>>> Do you have some specific use case in mind? If you can >>>>>>>>>> share it, I can >>>>>>>>>> probably look into it. >>>>>>>>>> >>>>>>>>>> There is a Community Group for Linked Data Templates which >>>>>>>>>> includes a >>>>>>>>>> mailing list: https://www.w3.org/community/declarative-apps/ >>>>>>>>>> >>>>>>>>>> Martynas >>>>>>>>>> atomgraph.com >>>>>>>>>> >>>>>>>>>> On Tue, Sep 10, 2019 at 1:27 PM Mikael Pesonen >>>>>>>>>> <mikael.pesonen@lingsoft.fi> wrote: >>>>>>>>>> >>>>>>>>>> In the example there is the GET request >>>>>>>>>> >>>>>>>>>> GET >>>>>>>>>> /people/Berners-Lee?g=http%3A%2F%2Flinkeddatahub.com%2Fgraphs%2Fc5f34fe9-0456-48e8-a371-04be71529762 >>>>>>>>>> HTTP/1.1 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Often you want to query different amounts of data >>>>>>>>>> depending of the case. Sometimes for example, person name >>>>>>>>>> is enough, other time you want all the triples (DESCRIBE). >>>>>>>>>> How do you specify here the context? >>>>>>>>>> >>>>>>>>>> BTW is there a dedicated forum for discussing Linked Data >>>>>>>>>> Templates? >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> 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 >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> 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 >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> 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 >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> 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 >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> 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 >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> 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 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> 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 >>>>>>>> -- >>>>>>>> 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 >>>>>>>> >>>>>> -- >>>>>> 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 >>>>>> >>>> -- >>>> 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 >>>> >> -- >> 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 >> >> -- 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, 18 September 2019 13:48:32 UTC