Code Monkey home page Code Monkey logo

lodview's Introduction

LodView

LodView is a Java web application based on Spring and Jena, it's a tool able to offer a W3C standard compliant IRI dereferenciation. LodView, in conjunction with a SPARQL endpoint, allows you to publish RDF data according to all defined standards for Linked Open Data.

LodView is easy to configure and deploy for any developer and it dramatically improves the end user’s experience in accessing HTML based representations of RDF resources.

About us

LodView (as LodLive) is ideated and maintained by Diego Valerio Camarda and Alessandro Antonuccio. Diego is the RDF guy behind the technology, and Alessandro is the designer responsible for the interface and the UX.

Why develop it (for free)

We believe that the dereferencing layer has to be independent from the SPARQL endpoint implementation so during these last years we preferred using Pubby to other software for publishing our data. Probably you don't know this, but you already know Pubby, it is used to publish DBpedia data and a lot of other Linked Open Data out there. Sadly, it is pretty old and its development appears to have stopped, so we created LodView taking inspiration from some of the features in it we really appreciated.

LodView shares Pubby philosophy; the configuration approach (an RDF file) and the basic technologies (we also use Apache Jena) are very similar, both interfaces even look somewhat alike, but we have made some important improvements according to the RDF 1.1 Standard. We have added new features and changed the ones we didn't like (such as the 303 redirection for HTML representation).

While developing LodLive, we realized that there was real need for a great interface to spread linked data principles even more effectively, so we spent time designing an interface for LodView that would be easy to use and beautiful to experience. LodView is free to use for all and we hope that the LOD community may appreciate and enjoy our brand new piece of work.

LodView is an open source software, you may download it and use for it your own data publication but it is also a web service (http://lodview.it) useful to browse any resource published using a SPARQL endpoint or published according to the rules of the web of data (aka content negotiation and RDF).

Demo

You can find some examples on http://lodview.it.

Who is using it

See the list of known users.

Installation instruction

See the wiki page.

Some interesting features

Content negotiation and serialization

LodView allows you to publish RDF data offering a lot of different serializations. It handles content negotiation requests with or without 303 redirections: at the same IRI you can fully access different versions of the resource (HTML, turtle, n-triples, json, json-ld, and many more) or you can set a suffix useful to redirect some requests to an HTML representation of the resource (eg. http://example.com/resource/aaaa/html). You can also override content negotiation features adding the 'output' parameter to the URL and specifying which serialization format you want to access, e.g. http://example.com?output=application/ld-json).

From LodView v1.2.0 you can also use prefixes (e.g. http://example.com/page/aaaa) or set a full "Pubby compliant" redirection strategy (e.g. http://example.com/page/aaaa, http://example.com/data/aaaa.ntriples, etc.) to easily update to LodView but still offering the same URLs to the users.

Internationalization and content language

Available languages: English, Italian, French, Slovak, Galician and Dutch.

LodView interface uses a very few words (labels and system messages) all managed with a language configuration file. It's able to use the client locale to manage not only the interface language but also the RDF literal values for a full i18n experience. You also have the possibility to override your default locale using 'locale' parameter, e.g. http://example.com?locale=fr.

We will appreciate any help in translating LodView, please commit your translation using GitHub or send us the translation file.

Special thanks to Jana Ivanová for the Slovak translation, to Miguel Solla for the Galician translation and to Roland Cornelissen for the Dutch translation.

Information about used properties

LodView provides info about every property found in the resource, just hover on the property to get an "info tooltip" that shows label and comment from the referring ontology (according to the locale of the client). See also how to populate info tooltip.

Object properties

In order to help humans understand the meaning of a resource, LodView shows the label of every object property it has found according to the locale of the client.

Blank nodes management

We don't like blank nodes, but they are used sometimes so we have managed them as an actual part of the resource; they contain information that doesn't belong to any other resource so LodView shows them in the main resource page nesting their values in sub-boxes which saves the user further clicks and contextualizes data more effectively.

Inverse relations management

Inverse relations are an interesting descriptive part of a resource. Very often inverse relations are as valuable and informative as direct relations, and sometimes there are too many of them to be shown all in one go on the HTML page. LodView collects the inverse resources showing them in collapsed boxes; it also provides information about the used inverse properties and the total count of elements that share them without transferring all the data at once but using light on-demand Ajax calls instead.

Colors and user experience

LodView is beautiful and colorful: you can let it randomize the colors of the interface or set your own colors or even bind classes to specific colors to make all "people" orange and all "organizations" green.

Resource widget

LodView provides (and will provide) various widgets for displaying multimedia contents, thesaurus hierarchies, external connected resources and geographical information.

Image widget

Easy access to the image referenced in a resource, e.g. British museum.

Video and audio widget

Players for videos and even audio files are embedded in the resource page, e.g. linked jazz.

Linked LOD resources widget

To make the context of the viewed resourced even more understandable and to prove the power of the linked data cloud, all connected resources (e.g. sameAs) are automatically shown with their title, an image or a map, and an abstract, e.g. dati.camera.

Map representation widget

Geographical information is shown as points on a map (thanks to the OSM project), e.g. geonames.

TODO: manage shape representation.

Hierarchy widget

TODO: develop a widget which is able to represent hierarchical relations (e.g. thesauri, family trees or taxonomies).

SPARQL URL handler

Because we want the SPARQL endpoint URL to be easy to deduce from a resource's IRI, LodView manages calls to http://data.yourdomain.com/sparql redirecting clients to the SPARQL endpoint real URL or proxying it for an even easier access (proxy feature is still under development). This particular feature simplifies server configuration and supports client's discovery capabilities.

LodLive integration

TODO: We want to integrate LodLive in the interface to avoid LodLive having to be open in a new page. The integration will provide an easy graph navigation model, very useful to better understand resource context and to move on to other resources without using standard hyperlinks.


contact information: [email protected]

lodview's People

Contributors

dvcama avatar herminiogg avatar konradhoeffner avatar ktk avatar wikier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lodview's Issues

Managing resources IRIs with anchors

Hi,

Actually I do not know if it is a real issue.

Suppose that you want to dereferenciate an IRI like

http://example.org/data#resource1

According to this RFC #resource1 is sent to the server after the page has been loaded.
In fact using default configuration when accessing to http://example.org/data#resource1 LodView shows information realated to http://example.org/data because it does not receive #resource1

Is there any way to overcome this issue?

Thank you

Luigi

deterministic order of title properties

I use multiple title properties and I want LodView to always prioritize a property early in the list to one later in the list. For example, in the example below, it should always use rdfs:label when present and only fall back on skos.prefLabel when that is not available.

conf:titleProperties dc:title , dcterms:title, rdfs:label , skos:prefLabel, skos:altLabel

As you can see on the screenshot below, the skos:altLabel is used as title even though the rdfs:label value is present. To further complicate the issue, this error does not always occur and is thus hard to confirm. When it is shown correctly, even reloading multiple times does not show the error, maybe it is cached.

lodviewerror

LodView vs lodview.it

Hi,
first let me thank you for this great tool!

I'd like to ask you whether you ever plan to open-source the features that the lodview.it service has and the version on Github does not, mainly "the browsing of any resource published using a SPARQL endpoint or published according to the rules of the web of data (aka content negotiation and RDF)".

_The reasoning behind my question is that in our school project we needed a tool to display remote resource in a pleasing way (at least in the early stages, before we will work with our local copies our our published resource) and also add some buttons that would link back to our application from the displayed concept (e.g. to accept the displayed result as the one chosen by the user).

Based on the demo at lodview.it we decided to go with LodView. Only to realize later that this functionality is seemingly not available or even has been stripped away. (We should have read the README.md more carefully.) Although we eventually managed to crudely adapt the LodView to our needs in our fork, its reliance on global static configuration in determining the resource to display is less than ideal.

Content-Negotiation is not working

Without looking into the code myself, we get the following error on http://lodview.it/lodview/?IRI=https%3A%2F%2Fld.geo.admin.ch%2Fboundaries%2Fmunicipality%2F351&sparql=%3C%3E&prefix=https%3A%2F%2Fld.geo.admin.ch%2Fboundaries%2Fmunicipality%2F351

Oops! something went wrong

sorry but content negotiation is not supported by the IRI
https:​/​/​ld.​geo.​admin.​ch/​boundaries/​municipality/​351

I am able to ask for e.g. text/turtle success fully on the resource. What are the requirements on the resource to be loaded regarding content-neg?

LodView on SSL

Hi,
I run an instance of LodView on an SSL secured website. The browser warns about mixed content when loading a resource page. Warnings are about fetching content from OpenStreetMap such as http://b.tile.osm.org/8/131/83.png, which connection is insecure.
Is there a solution for this? I tried to change http://b.tile.osm.org/8/131/83.png into https://b.tile.osm.org/8/131/83.png but that didn't work.
Thanks,
Roland

dotenv in ConfigurationBean stops app from compiling (tomcat 9)

Maven can't find the Dotenv class:

[ERROR] /C:/Users/konni/LodView/src/main/java/org/dvcama/lodview/conf/ConfigurationBean.java:[63,17] cannot find symbol
[ERROR]   symbol:   class Dotenv
[ERROR]   location: class org.dvcama.lodview.conf.ConfigurationBean

Importing it with import io.github.cdimascio.dotenv.Dotenv; helps to compile the webapp, but the app doesn't start anyway.

ELException /WEB-INF/views/resource.jsp under Wildfly

Description: ELException when opening HTML rendering
Version: a4d390a on Wildfly 9.0.1

Steps that will reproduce the problem?

  1. Install a4d390a on WildFly 9.0.1
  2. Open the HTML rendering of a resource

What is the expected result?
The web site

What happens instead?
Caused by: javax.el.ELException: Error Parsing: ${results.getTitle().replaceAll("\\n"," ").replaceAll("\'","´")} in /WEB-INF/views/resource.jsp

Possible workaround:
Edit line 181 and remove the second replaceAll

Any additional information:

Map representation widget

TODO: manage shape representation.

We are using the wkt:asWKT property to describe the polygon of our spatial objects. It would be great if these polygons would be shown by LodView instead of only GPS coordinate spatial objects.

I would (technically) be able to extend the widget myself and contribute it to this project, but I'm not sure yet if I can find the time.

Default query has become too heavy for Virtuoso after system update

Hi,
I had to change the default query in conf.ttl and had to comment the last 2 UNIONs out because of sudden performance problems of Virtuoso. After updating the several Ubuntu systems LodView became unresponsive for resources containing a certain nr of triples. Resources containing only a few triples were resolved well but more elaborate resources hung the LodView interface.
Apparently the Virtuoso response became too long and generated a 500 error, causing LodView to fail. After simplifying the query this error didn't appear anymore.

I think this is an issue caused by performance reduction of patched Intel based system because of the Meltdown/Spectre flaws. I'm not sure and would like to know if anyone else ran into performance issues after system updates.

tl;dr; When LodView is hung after system update check the default query, it may need simplification.

Language preferences on a per user basis?

First, thank you for this awesome application. Our users at the SNIK project are very impressed at how clean it looks.

However, our user base consists of both English and German speakers. Is it possible to save the language preference on a per-user basis so that an English speaker can choose to sees English labels preferably and a German speaker the German literals, in case both exists? I know there is this option to select between different literal languages but after reload it resets and this also applies to the title.

optimizing Misc.guessColor

I think this code

for (String key : conf.getColorPairMatcher().keySet())
{
  for (TripleBean tripleBean : m)
  {
   if (tripleBean.getValue().equals(key))
   {
    colorPair = conf.getColorPairMatcher().get(key);
    return colorPair;
  }
 }
}

can be optimized like this:

for (TripleBean tripleBean : m)
{
 colorPair = conf.getColorPairMatcher().get(tripleBean.getValue());			
 if(colorPair!=null) return colorPair;
}

assuming that the map does not contain null values,

ConfigurationBean.getRandomColorPair() and conf:byClass

If conf.ttlcontains conf:colorPair conf:byPrefix; then ConfigurationBean.getRandomColorPair() will not work, as it returns "conf:byPrefix" as a color string in this case. For me this results in a black background of the starting page.

ld+json error for certain datatype

When a triple store contains a value with datatype xsd:gYearMonth LodView produces an error, example [1] . The same value is handled correct within the triple store (Virtuoso Open Source), example [2]

Is there a specific library handling the ld+json format, and could it be that it needs updating to a more recent version?

Thanks!

[1] http://data.muziekschatten.nl/som/332000?output=application%2Fld%2Bjson
[2] http://data.muziekschatten.nl/sparql?query=define%20sql%3Adescribe-mode%20%22CBD%22%20%20DESCRIBE%20%3Chttp%3A%2F%2Fdata.muziekschatten.nl%2Fsom%2F332000%3E&output=application%2Fld%2Bjson

Change engine to RDF4J

Nice work. Congratulations. I am impressed of data linkage.

Would it be possible to rewrite the engine into RDF4J-base. I saw the code and it seems it is not too complex for me. What do you think about that?

log4j 1.2.17 in mvn dependency:tree, upgrade Jena version

LodView has a transitive dependency on log4j 1.2.17 included from Apache Jena 2.13.0, see below.

According to https://logging.apache.org/log4j/1.2/:

A security vulnerability, CVE-2019-17571 has been identified against Log4j 1. Log4j includes a SocketServer that accepts serialized log events and deserializes them without verifying whether the objects are allowed or not. This can provide an attack vector that can be expoited. Since Log4j 1 is no longer maintained this issue will not be fixed. Users are urged to upgrade to Log4j 2.

However it is very important to not use a Jena version that depends on Log4j 2 < 2.15.0, as this suffers from an arguably even worse security vulnerability, see https://logging.apache.org/log4j/2.x/index.html.
The current latest version depends on log4j2 2.14.1. Thus, this current version should thus not be used:

<dependency>
    <groupId>org.apache.jena</groupId>
    <artifactId>apache-jena-libs</artifactId>
    <version>4.3.0</version>
    <type>pom</type>
</dependency>

However according to https://github.com/apache/jena/commits/jena-4.3.1, this seems to be fixed in Jena 4.3.1. Thus I will not create a pull request just yet and recommend waiting until Jena 4.3.1 is officially released and available on Maven central and then using that if it doesn't break anything.

$ mvn dependency:tree
[...]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ lodview ---
[WARNING] The artifact xml-apis:xml-apis:jar:2.0.2 has been relocated to xml-apis:xml-apis:jar:1.0.b2
[INFO] lodview:lodview:war:1.2.1-SNAPSHOT
[INFO] +- org.apache.jena:apache-jena-libs:pom:2.13.0:compile
[INFO] |  +- org.apache.jena:jena-tdb:jar:1.1.2:compile
[INFO] |  |  +- org.apache.jena:jena-arq:jar:2.13.0:compile
[INFO] |  |  |  +- org.apache.httpcomponents:httpclient:jar:4.2.6:compile
[INFO] |  |  |  |  +- org.apache.httpcomponents:httpcore:jar:4.2.5:compile
[INFO] |  |  |  |  \- commons-codec:commons-codec:jar:1.6:compile
[INFO] |  |  |  +- com.github.jsonld-java:jsonld-java:jar:0.5.1:compile
[INFO] |  |  |  |  +- com.fasterxml.jackson.core:jackson-core:jar:2.3.3:compile
[INFO] |  |  |  |  \- com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile
[INFO] |  |  |  |     \- com.fasterxml.jackson.core:jackson-annotations:jar:2.3.0:compile
[INFO] |  |  |  +- org.apache.httpcomponents:httpclient-cache:jar:4.2.6:compile
[INFO] |  |  |  +- org.apache.thrift:libthrift:jar:0.9.2:compile
[INFO] |  |  |  \- org.apache.commons:commons-csv:jar:1.0:compile
[INFO] |  |  \- org.apache.jena:jena-core:jar:2.13.0:compile
[INFO] |  |     +- org.apache.jena:jena-iri:jar:1.1.2:compile
[INFO] |  |     \- xerces:xercesImpl:jar:2.11.0:compile
[INFO] |  |        \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO] |  +- org.slf4j:slf4j-log4j12:jar:1.7.6:compile
[INFO] |  \- log4j:log4j:jar:1.2.17:compile
[INFO] +- org.springframework:spring-context:jar:4.2.4.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:4.2.4.RELEASE:compile
[INFO] |  |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  +- org.springframework:spring-beans:jar:4.2.4.RELEASE:compile
[INFO] |  +- org.springframework:spring-core:jar:4.2.4.RELEASE:compile
[INFO] |  \- org.springframework:spring-expression:jar:4.2.4.RELEASE:compile
[INFO] +- org.springframework:spring-webmvc:jar:4.2.4.RELEASE:compile
[INFO] |  \- org.springframework:spring-web:jar:4.2.4.RELEASE:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.7.1:compile
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.1:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.0.7:compile
[INFO] |  \- ch.qos.logback:logback-core:jar:1.0.7:compile
[INFO] +- javax.servlet:javax.servlet-api:jar:3.0.1:provided
[INFO] +- javax.servlet.jsp:jsp-api:jar:2.1:provided
[INFO] +- javax.servlet.jsp.jstl:jstl-api:jar:1.2:compile
[INFO] +- org.glassfish.web:jstl-impl:jar:1.2:compile
[INFO] +- org.apache.commons:commons-lang3:jar:3.3.1:compile
[INFO] \- org.springframework.boot:spring-boot-starter-integration:jar:1.1.4.RELEASE:compile
[INFO]    +- org.springframework.boot:spring-boot-starter:jar:1.1.4.RELEASE:compile
[INFO]    |  +- org.springframework.boot:spring-boot:jar:1.1.4.RELEASE:compile
[INFO]    |  +- org.springframework.boot:spring-boot-autoconfigure:jar:1.1.4.RELEASE:compile
[INFO]    |  +- org.springframework.boot:spring-boot-starter-logging:jar:1.1.4.RELEASE:compile
[INFO]    |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.7:compile
[INFO]    |  |  \- org.slf4j:log4j-over-slf4j:jar:1.7.7:compile
[INFO]    |  \- org.yaml:snakeyaml:jar:1.13:runtime
[INFO]    +- org.springframework.boot:spring-boot-starter-aop:jar:1.1.4.RELEASE:compile
[INFO]    |  +- org.aspectj:aspectjrt:jar:1.8.1:compile
[INFO]    |  \- org.aspectj:aspectjweaver:jar:1.8.1:compile
[INFO]    +- org.springframework:spring-messaging:jar:4.0.6.RELEASE:compile
[INFO]    +- org.springframework:spring-tx:jar:4.0.6.RELEASE:compile
[INFO]    +- org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile
[INFO]    |  \- org.springframework.retry:spring-retry:jar:1.1.0.RELEASE:compile
[INFO]    +- org.springframework.integration:spring-integration-file:jar:4.0.2.RELEASE:compile
[INFO]    |  \- commons-io:commons-io:jar:2.4:compile
[INFO]    +- org.springframework.integration:spring-integration-http:jar:4.0.2.RELEASE:compile
[INFO]    |  \- net.java.dev.rome:rome-fetcher:jar:1.0.0:compile
[INFO]    |     +- jdom:jdom:jar:1.0:compile
[INFO]    |     +- net.java.dev.rome:rome:jar:1.0.0:compile
[INFO]    |     \- commons-httpclient:commons-httpclient:jar:3.0.1:compile
[INFO]    +- org.springframework.integration:spring-integration-ip:jar:4.0.2.RELEASE:compile
[INFO]    \- org.springframework.integration:spring-integration-stream:jar:4.0.2.RELEASE:compile
[INFO] ------------------------------------------------------------------------

error in 303 redirection

there is a bug in 303 redirection of resource described by complex IRI, right now it is possible to avoid the problem commenting this parameter

    conf:httpRedirectSuffix "/html";  

in the configuration file

Russian uri doesn't open.

Hi,

Congratulations for the tool, it is amazing and i really liked. I'm using in my data set about idioms however when i wish to open a uri in Russian language, the lodview doesn't recognized the letters. Could you help me? Follows an example with error:

Russian : http://lid.aksw.org/tr/когда_рак_на_горе_свистнет_trans_rus_en

Look as it works for other languages which I've used:

English: http://lid.aksw.org/en/when_pigs_fly_sense

German: http://lid.aksw.org/lodview/de/zwei_fliegen_mit_einer_klappe_schlagen

Portuguese: http://lid.aksw.org/lodview/pt/matar_dois_coelhos_com_uma_cajadada_so

Italian: http://lid.aksw.org/lodview/it/alle_calende_greche

Colors by prefix?

conf.ttl states that there is an option to choose colors randomly or to assign color by class. Is it also possible to assign color by prefix?

For example, resources under http://dbpedia.org/resource/ should have a different color then resources under http://dbpedia.org/ontology/.

If it does not exist yet I propose it as a new feature.

This could also be implemented by allowing regular expressions for "colors by class", e.g.:

<http://dbpedia.org/ontology/.*> conf:hasColorPair "#c3a116-#ac8c13".

Inverse relations missing

I cloned LodView from the master branch (commit 5e02268) and it does not load any inverse relations even though the text message "loading inverse relations" is shown in the bottom. I am debugging it in Eclipse Neon.1a using the run-jetty-run plugin.

I have the following breakpoints and not one of them stops:

ResourceBuilder.buildInverseResource() (both of them)
LinkedResource.resourceInverses() (both of them)

IE9 compatibility issue

I had some problem in resource visualization con IE9 (Masonry js lib error).

masonry

Some text in the page was overlapped.

overlap

I think this is due to a compatibility issue that can be fixed adding a meta-tag just after the tag

Use logging instead of System.out.println

There are still several places, where System.out.println is used, which then aren't configurable using logging configuration files.

ack -l -c "System.out.println" 
src/main/java/org/dvcama/lodview/controllers/LinkedResourcesController.java:2
src/main/java/org/dvcama/lodview/controllers/StaticController.java:1
src/main/java/org/dvcama/lodview/controllers/ResourceController.java:9
src/main/java/org/dvcama/lodview/controllers/LodController.java:3
src/main/java/org/dvcama/lodview/controllers/ErrorController.java:4
src/main/java/org/dvcama/lodview/bean/OntologyBean.java:7
src/main/java/org/dvcama/lodview/conf/ConfigurationBean.java:1
src/main/java/org/dvcama/lodview/endpoint/SPARQLEndPoint.java:11

add GitHub action CI compile check

For easier integration of pull requests, it would be useful to have automatic checks to make sure it at least compiles with a GitHub action.

docker memory consumption

Using the current master branch, the docker container uses more than 500 MB of RAM even at the start when nothing is happening:

$ docker build -t lodview .
$ docker run --network=host --privileged -d lodview
$ docker stats
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O   BLOCK I/O     PIDS
413bd2f64fca   sweet_leavitt   0.00%     529.5MiB / 15.42GiB   3.35%     0B / 0B   57.6MB / 0B   36

Output of top from within the container:

top - 09:03:30 up 51 min,  0 users,  load average: 0.87, 0.95, 0.73
Tasks:   3 total,   1 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.9 us,  2.1 sy,  0.0 ni, 89.8 id,  0.0 wa,  0.1 hi,  0.1 si,  0.0 st
MiB Mem :  15791.6 total,   7311.0 free,   3588.6 used,   4892.0 buff/cache
MiB Swap:  16384.0 total,  16384.0 free,      0.0 used.   9873.9 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                                                                                                                                
      1 root       1   0 8060128 536560  20060 S   0.3   3.3   0:13.90 java                                                                                                                                                                                                                                                   
     47 root       1   0    5756   3604   3108 S   0.0   0.0   0:00.08 bash                                                                                                                                                                                                                                                   
     59 root       1   0    9768   3368   2844 R   0.0   0.0   0:00.01 top 
# java -XX:+PrintFlagsFinal -version | grep -E "UseContainerSupport | InitialRAMPercentage | MaxRAMPercentage | MinRAMPercentage"
   double InitialRAMPercentage                      = 1.562500                            {product}
   double MaxRAMPercentage                          = 25.000000                           {product}
   double MinRAMPercentage                          = 50.000000                           {product}
     bool UseContainerSupport                       = true                                {product}
# jinfo 1 | grep "VM flags"
Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=260046848 -XX:MaxHeapSize=4139778048 -XX:MaxNewSize=1379926016 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=86507520 -XX:OldSize=173539328 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC

Is there a way to reduce the usage?

Show property labels

In order to make the resource view more human-friendly, consider showing the labels for properties for common vocabularies and ontologies.

Generate static HTML

For RAM and CPU constrained environments and some hosting scenarios with unchanging data it would be great to pregenerate the HTML pages to serve them with a simple HTML server. Is this supported or could it be easily implemented in lodview? Or is it better to just crawl it and download it using for example wget? I can help with the implementation either in Java or as a Dockerfile.

XML Parsing Error: not well-formed

I get many messages like the following in the developer console of Firefox 98.0b8, how to fix this?

This page is in Quirks Mode. Page layout may be impacted. For Standards Mode use “<!DOCTYPE html>”. Function
This page uses the non standard property “zoom”. Consider using calc() in the relevant property values, or using “transform” along with “transform-origin: 0 0”. Function
XML Parsing Error: not well-formed
Location: 
Line Number 1, Column 103: 3
XML Parsing Error: not well-formed
Location: 
Line Number 1, Column 103: 7
XML Parsing Error: not well-formed
Location: 
Line Number 1, Column 103: 8
XML Parsing Error: not well-formed
Location: 
Line Number 1, Column 103:
XML Parsing Error: not well-formed
Location: 
Line Number 1, Column 103:
XML Parsing Error: not well-formed
Location: 
Line Number 1, Column 103:
XML Parsing Error: not well-formed
Location: 
Line Number 1, Column 103:
XML Parsing Error: not well-formed
Location: 
Line Number 1, Column 103:
XML Parsing Error: not well-formed
Location: 

IDN in endpoint URL needs to be punycoded manually

When in conf.ttl I use:

conf:endpoint <https://obchodní-rejstřík.stirdata.opendata.cz/sparql>;

I get a 500 and the UnknownHostException in the log. Punycoding the URL in the config manually works.

conf:endpoint <https://xn--obchodn-rejstk-6lbg94p.stirdata.opendata.cz/sparql>;

Log:

[2021-04-01 15:15:29] [info] HttpException: java.net.UnknownHostException: obchodní-rejstřík.stirdata.opendata.cz: Unexpected error making the query: java.net.UnknownHostException: obchodní-rejstřík.stirdata.opendata.cz
[2021-04-01 15:15:29] [info] #011at com.hp.hpl.jena.sparql.engine.http.HttpQuery.rewrap(HttpQuery.java:417)
[2021-04-01 15:15:29] [info] #011at com.hp.hpl.jena.sparql.engine.http.HttpQuery.execGet(HttpQuery.java:358)
[2021-04-01 15:15:29] [info] #011at com.hp.hpl.jena.sparql.engine.http.HttpQuery.exec(HttpQuery.java:295)
[2021-04-01 15:15:29] [info] #011at com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.execResultSetInner(QueryEngineHTTP.java:346)
[2021-04-01 15:15:29] [info] #011at com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.execSelect(QueryEngineHTTP.java:338)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.moreThenOneQuery(SPARQLEndPoint.java:76)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.moreThenOneQuery(SPARQLEndPoint.java:138)
[2021-04-01 15:15:29] [info] message repeated 2 times: [ #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.moreThenOneQuery(SPARQLEndPoint.java:138)]
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.doQuery(SPARQLEndPoint.java:49)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.doQuery(SPARQLEndPoint.java:148)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.builder.ResourceBuilder.buildHtmlResource(ResourceBuilder.java:65)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.builder.ResourceBuilder.buildHtmlResource(ResourceBuilder.java:35)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.controllers.ResourceController.htmlResource(ResourceController.java:245)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.controllers.ResourceController.resource(ResourceController.java:224)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.controllers.ResourceController.resourceController(ResourceController.java:81)
[2021-04-01 15:15:29] [info] #011at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2021-04-01 15:15:29] [info] #011at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
[2021-04-01 15:15:29] [info] #011at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[2021-04-01 15:15:29] [info] #011at java.base/java.lang.reflect.Method.invoke(Method.java:564)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
[2021-04-01 15:15:29] [info] #011at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
[2021-04-01 15:15:29] [info] #011at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[2021-04-01 15:15:29] [info] #011at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
[2021-04-01 15:15:29] [info] #011at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
[2021-04-01 15:15:29] [info] #011at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
[2021-04-01 15:15:29] [info] #011at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
[2021-04-01 15:15:29] [info] #011at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
[2021-04-01 15:15:29] [info] #011at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
[2021-04-01 15:15:29] [info] #011at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
[2021-04-01 15:15:29] [info] #011at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
[2021-04-01 15:15:29] [info] #011at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[2021-04-01 15:15:29] [info] #011at java.base/java.lang.Thread.run(Thread.java:832)
[2021-04-01 15:15:29] [info] Caused by: java.net.UnknownHostException: obchodní-rejstřík.stirdata.opendata.cz
[2021-04-01 15:15:29] [info] #011at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:800)
[2021-04-01 15:15:29] [info] #011at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1507)
[2021-04-01 15:15:29] [info] #011at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1366)
[2021-04-01 15:15:29] [info] #011at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1300)
[2021-04-01 15:15:29] [info] #011at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
[2021-04-01 15:15:29] [info] #011at org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOperator.java:278)
[2021-04-01 15:15:29] [info] #011at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:162)
[2021-04-01 15:15:29] [info] #011at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
[2021-04-01 15:15:29] [info] #011at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:643)
[2021-04-01 15:15:29] [info] #011at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
[2021-04-01 15:15:29] [info] #011at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
[2021-04-01 15:15:29] [info] #011at org.apache.http.impl.client.DecompressingHttpClient.execute(DecompressingHttpClient.java:137)
[2021-04-01 15:15:29] [info] #011at org.apache.http.impl.client.DecompressingHttpClient.execute(DecompressingHttpClient.java:118)
[2021-04-01 15:15:29] [info] #011at org.apache.jena.riot.web.HttpOp.exec(HttpOp.java:1108)
[2021-04-01 15:15:29] [info] #011at org.apache.jena.riot.web.HttpOp.execHttpGet(HttpOp.java:385)
[2021-04-01 15:15:29] [info] #011at org.apache.jena.riot.web.HttpOp.execHttpGet(HttpOp.java:447)
[2021-04-01 15:15:29] [info] #011at com.hp.hpl.jena.sparql.engine.http.HttpQuery.execGet(HttpQuery.java:346)
[2021-04-01 15:15:29] [info] #011... 57 more
[2021-04-01 15:15:29] [info] java.lang.Exception: connection refused
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.moreThenOneQuery(SPARQLEndPoint.java:141)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.moreThenOneQuery(SPARQLEndPoint.java:138)
[2021-04-01 15:15:29] [info] message repeated 2 times: [ #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.moreThenOneQuery(SPARQLEndPoint.java:138)]
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.doQuery(SPARQLEndPoint.java:49)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.endpoint.SPARQLEndPoint.doQuery(SPARQLEndPoint.java:148)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.builder.ResourceBuilder.buildHtmlResource(ResourceBuilder.java:65)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.builder.ResourceBuilder.buildHtmlResource(ResourceBuilder.java:35)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.controllers.ResourceController.htmlResource(ResourceController.java:245)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.controllers.ResourceController.resource(ResourceController.java:224)
[2021-04-01 15:15:29] [info] #011at org.dvcama.lodview.controllers.ResourceController.resourceController(ResourceController.java:81)
[2021-04-01 15:15:29] [info] #011at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2021-04-01 15:15:29] [info] #011at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
[2021-04-01 15:15:29] [info] #011at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[2021-04-01 15:15:29] [info] #011at java.base/java.lang.reflect.Method.invoke(Method.java:564)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
[2021-04-01 15:15:29] [info] #011at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
[2021-04-01 15:15:29] [info] #011at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[2021-04-01 15:15:29] [info] #011at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
[2021-04-01 15:15:29] [info] #011at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
[2021-04-01 15:15:29] [info] #011at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
[2021-04-01 15:15:29] [info] #011at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
[2021-04-01 15:15:29] [info] #011at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
[2021-04-01 15:15:29] [info] #011at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
[2021-04-01 15:15:29] [info] #011at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
[2021-04-01 15:15:29] [info] #011at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
[2021-04-01 15:15:29] [info] #011at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
[2021-04-01 15:15:29] [info] #011at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
[2021-04-01 15:15:29] [info] #011at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
[2021-04-01 15:15:29] [info] #011at java.base/java.lang.Thread.run(Thread.java:832)
[2021-04-01 15:15:29] [info] error on connection refused -- https://obchodní-rejstřík.stirdata.opendata.cz/zdroj/registrované-osoby/03483142/STATUTARNI_ORGAN/2014-10-14 -- https://obchodní-rejstřík.stirdata.opendata.cz/sparql

commons codec version conflict

There is a conflict between dependency version of commons codec from spring-boot-starter-integration and Jena

Jena 4.4.0 need commons codec 1.15 but spring-boot-starter-integration 1.1.4.RELEASE force commons codec 1.2

In my use case, with URI like http://....../data_test/-c3d8ff75-bd60-4ef6-b1b9-08bb13bc4b72_attr_ratio_5 query execution failed with a NoClassDefFound murMurHash3 not available in commons codec v1.2

Ontology Documentation

Pretty nice work! One question: currently almost no tool is under active development that allows the documentation of an ontology analog to JavaDoc. There are a hand full, but most of them are either not working anymore or offer a rather ugly UI. What I'm currently using is http://www.essepuntato.it/lode and I'd love to see similar features (e.g. embedding images, describing properties, ...) in LodView. Any plans?

Using with docker

Hi there. Congrats on such great work!
Can you help me deploying it using Docker?
How can I configure the instance? Are there envvars?

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.