scaseco / facete3 Goto Github PK
View Code? Open in Web Editor NEWJava-based Semantic Faceted Search Framework featuring a Text UI, Fluent API and Benchmark Generator
License: Other
Java-based Semantic Faceted Search Framework featuring a Text UI, Fluent API and Benchmark Generator
License: Other
It uses some nifty spring-cloud features
This one finally allows to customize data tables about the data of matching entities.
The following query incorrectly returns 0 results on the Virtuoso deployed at http://cord19.aksw.org/sparql
The actual query has a VALUES clause as the first UNION member (instead of the empty graph pattern) but it suffers from the same empty result set problem
SELECT *
WHERE
{ {
SELECT ?o
WHERE
{
{} # Empty for the sake of a minimal example
UNION
{ ?s ?p ?o FILTER ( ?p = <http://id.loc.gov/ontologies/bibframe/title> )}
}
}
OPTIONAL { ?o <http://www.w3.org/2000/01/rdf-schema#label> ?v_1 }
FILTER ( regex(str(?o), "met", "i") )
}
LIMIT 100
Interestingly the query works when filtering?p to <http://example.org/dbpediaSubject>
(instead of <http://id.loc.gov/ontologies/bibframe/title>
).
The titles are all literals and the dbpediaSubjects are all IRIs - so apparently the optional block fails to evaluate for literals.
The query APPEARS to work but actually DOESN'T when omitting the str
function and writing directly regex(?o, ...)
:
It seems as if the regex then evaluates to true regardless of ?o's value.
There may be some wacky optimization in place regarding variables in subject positions that are bound to literal values...
in the lower right corner i would like to see labels as well
btw: great project :-)
The benchmark generator still enumerates all paths in the schema graph.
While random walks would be one option, another one would be to create a data profile by pre-enumerating all possible paths up to a certain length (e.g. 3).
After or maybe even during configuration of the sparql connection the faceted search components should not be configured with the actual data providers right away.
Instead, a panel that allows inspecting the amount of data and configuring a base concept should be shown first.
In general, this panel should provide a button that performs a probing query for whether the currently selected amount of resources can be processed
For specification of the initial set of resources this panel could for example allow for
Facete could provide a shacl builder whose output could be fed into Norman's OpenAPI generator which would allow to easily create REST methods over a SPARQL endpoint.
First move fast then: https://semver.org/
Instead of showing a flat list of facet values (keywords) show a tree view where the inner nodes are classes and the leafs are the keywords.
And maybe a mvn plugin: https://github.com/google/google-java-format
Move shading, packaging etc. into profiles. Right now its all done on mvn clean install
.
hitting q should finish the app
btw: great project :-)
Facete crashes if service custom service url cannot be queried.
Crash should be caught and user notified, facete should not crash.
ERROR com.vaadin.flow.server.DefaultErrorHandler -
org.apache.jena.atlas.web.HttpException: Not an absolute URL: <localhost8234?query=SELECT%20%20%28count%28%2A%29%20AS%20?c_1%29%0AWHERE%0A%20%20%7B%20GRAPH%20?g%0A%20%20%20%20%20%20%7B%20%20%7D%0A%20%20%7D%0A>
since this is a reasonable default, we should start with rdf:type selected and in the value list
btw: great project :-)
For the context menu it needs to be investigated how much effort it is to accomplish this with vaadin; the rest is already implemented in the terminal app label service - but needs to be integrated into vaadin again.
When we click a facet, we should have e.g. a tabbed pane for how we want to create constraints.
The prior versions always had this 'click on a facet value to create a constraint' thing.
But in the API we can e.g. do
facetNode.constraints().between(foo, bar).activate()
facetNode.constraints().greaterThan(baz).activate()
So we could have a separate tab where we show a sliders to create/update/delete range constraints.
The API even has a method to get all values NOT affected by constraints facetNode.fwd().nonConstrainedFacetValueCounts()
It is useful in the benchmark to find out what has not yet been constrained - maybe its not that useful in the UI :)
Originally posted by @Aklakan in #18 (comment)
The following classes are related
Currently the default graph cli option results in a query rewrite that injects GRAPH :dg rather than using the FROM clause.
Systems that allow for virtual graphs (that map to multiple physical ones) usually require graph specifications in the FROM clause.
The flow we use for probing tries to create an RxJava Single from a result set - but if the result set is empty this of course breaks.
Javadoc and readme?
For a given set of RDFnodes enable:
on that basis:
Today I wanted to quickly check the download URLs of some datasets, however, with the new behaviour of using labels everywhere, it is now a pain (selecting the label of the download URL and hitting space bar is possible but hardly usable).
Maybe the most convenient solution would be some form of "stylesheet" configuration for controlling this.
Large number of facet values make the UI unbearably slow. Add a paginator for mitigation.
We need a bean that allows setting which resources to add to the base concept of the faceted query
The UI has to be more modular. The global action components such as IRI/Label Button and Darkmode Button should be exported to a separate package. This will allow the user to import the components and use them in their own UI composition depending on the project needs.
limit / offset on the DataQuery affect the bindings - instead of the entities.
DataQuery should create an EntityQuery first - as EntityQuery uses the right semantics for limit / offset and takes care of the final sparql query construction.
im detail: die data query klasse geht momentan von einer einzigen root variabel aus - aber bei den facetten werten ist die id eines result nodes abhaengig von den attribut-paar (facette, facetten-wert) - d.h. die id eines results ist von 2 variablen abhaengig - momentan ist auch bei facetten-werten einfach die facette die root variabel - aber das ist schlecht also deswegen sind facetcounts nicht unterscheidbar in einer menge umgekehrt heisst dass, dass man nicht mehr
dataQuery[FacetValueCount].filter(foo) machen kann sondern es muesste so aussehen:
dataQuery[FacetValueCount].get(FacetValueCount_.facetValue).filter(foo) Also dass man von einer super-root zu der eigentlichen sparql variabel navigiert um dort einen filter dranzuhaengen
instead or URIs I would like to see prefixed qnames. This will allow for more space for literals :)
btw: great project :-)
Allow text input for the generation of constraints. The LLM must be fed with available properties and values, and the output format must be specified.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.