Lightweight and fast RDF browser that just need a SPARQL endpoint URL to give a comfortable experience when exploring differents graphs.
Browse a RDF triplestore by providing the SPARQL endpoint URL directly in the browser.
See an example deployment of into-the graph at https://maastrichtu-ids.github.io/into-the-graph.
This RDF linked data browser features:
- A web-based UI to browse SPARQL endpoints content easily. Stateful URL to resolve a specific URI in a specific SPARQL endpoint can be defined using the
uri
andendpoint
parameters. Tested with RDF4J (Ontotext GraphDB) and Virtuoso SPARQL endpoints. - Easily search for concepts in the triplestore. Possibility to change the SPARQL query to define the custom query to use the Search index of different triplestores in settings (Ontotext GraphDB and Virtuoso triplestores documented).
- Work in progress: insights about the content of the triplestore and its different graphs, using precomputed HCLS descriptives statistics.
HCLS descriptive statistics for a graph can simply be computed and inserted running a
docker run
command. Follow those instructions to run it. Or check thefair-metadata
Python library in development.
Into-the-graph is built with TypeScript , ReactJS, and Material-UI to serve and explore RDF data from any SPARQL endpoint.
This service has been developed and used as part of the Data2Services framework. Data2Services provides tools and guideline to easily integrate multiple structured data sources (CSV, RDB, XML) to a RDF knowledge graph, complying with a defined data model. Checkout the documentation at d2s.semanticscience.org
Contributions are welcome! See the guidelines to contribute.
β οΈ Trying to query a HTTP SPARQL endpoint from into-the-graph which is provided through HTTPS might cause issues.
Start browsing various SPARQL endpoints using into-the-graph in one click:
- A Clinical trial in Bio2RDF:
- A Pathway in PathwayCommons:
- A Protein in NextProt:
- A Gene-Disease association in the DisGeNET SPARQL endpoint:
- A Protein (UniProt) in AgroLD:
- A City in DBpedia
- A Citation in the EU Law OpenCitation corpus
- A Publication in the EU Cellar Law dataset:
- http://maastrichtu-ids.github.io/into-the-graph/describe?uri=http://publications.europa.eu/resource/cellar/c721f802-9ce7-11e7-b92d-01aa75ed71a1&endpoint=http://publications.europa.eu/webapi/rdf/sparql
- Browsing not really good due to the use of graphs for entities.
- A City in the LOD SPARQL endpoint
- http://maastrichtu-ids.github.io/into-the-graph/describe?uri=http://www.wikidata.org/entity/Q180083&endpoint=http://lod.openlinksw.com/sparql
- Browsing not really good due to the use of graphs for entities.
- A Dataset in OpenEuropa Joinup SPARQL
- A Statistic in the EU Open Data Portal
You can even directly use http://maastrichtu-ids.github.io/into-the-graph to browse a locally deployed endpoint! e.g. http://localhost:8890/sparql
Requirements: npm and yarn installed.
Clone the repository:
git clone https://github.com/MaastrichtU-IDS/into-the-graph
cd into-the-graph
Install dependencies π₯
yarn
Run the web app in development at http://localhost:19006
yarn dev
The website should reload automatically at each changes to the code π
Upgrade the packages versions in yarn.lock
yarn upgrade perfect-graph unitx-ui unitx
This website is automatically deployed by a GitHub Actions worklow to GitHub Pages at https://maastrichtu-ids.github.io/into-the-graph
You can build locally in /web-build
folder and serve on http://localhost:5000 π¦
yarn build
yarn serve
Or run directly using Docker π³ (requires docker installed)
docker-compose up
Checkout the docker-compose.yml file to see how we run the Docker image.
Optimized SPARQL query to perform full text search in different triplestores.
Support the BioLink model (get rdfs:label and bl:name)
SELECT ?foundUri ?foundLabel WHERE {?foundUri ?p ?foundLabel . VALUES ?p {<http://www.w3.org/2000/01/rdf-schema#label> <https://w3id.org/biolink/vocab/name>} . FILTER(isLiteral(?foundLabel)) FILTER contains(?foundLabel, '$TEXT_TO_SEARCH')} LIMIT 5
See GraphDB full text search documentation to create a search index (uses Apache Lucene under the hood).
PREFIX luc: <http://www.ontotext.com/owlim/lucene#> SELECT ?foundUri ?foundLabel { ?foundLabel luc:searchIndex '$TEXT_TO_SEARCH*' . ?foundUri ?p ?foundLabel . } LIMIT 100
Order by Lucene score
PREFIX luc: <http://www.ontotext.com/owlim/lucene#> SELECT ?foundUri ?foundLabel { ?foundLabel luc:searchIndex '$TEXT_TO_SEARCH*' ; luc:score ?score . ?foundUri ?p ?foundLabel . } ORDER BY ?score LIMIT 100
SELECT ?foundUri ?foundLabel WHERE {?foundUri <http://www.w3.org/2000/01/rdf-schema#label> ?foundLabel . ?foundLabel bif:contains '$TEXT_TO_SEARCH' . } LIMIT 200
SELECT ?foundUri ?foundLabel WHERE {?foundUri ?p ?foundLabel . VALUES ?p {<http://purl.org/spar/cito/hasCitationCreationDate> <http://purl.org/spar/cito/hasCitationTimeSpan>} . FILTER(str(?foundLabel) = '$TEXT_TO_SEARCH')} LIMIT 5
Text operations really slow on OpenCitation SPARQL, so we do a full match (for date mainly).