Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Rdflib | 1,901 | 1,567 | 444 | 3 days ago | 33 | July 26, 2022 | 226 | bsd-3-clause | Python | |
RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information. | ||||||||||
Akutan | 1,658 | 4 years ago | 18 | apache-2.0 | Go | |||||
A distributed knowledge graph store | ||||||||||
Oxigraph | 769 | 4 | 6 hours ago | 5 | March 19, 2022 | 59 | apache-2.0 | Rust | ||
SPARQL graph database | ||||||||||
Easyrdf | 560 | 3,113 | 71 | 2 years ago | 18 | December 02, 2020 | 56 | other | ||
EasyRdf is a PHP library designed to make it easy to consume and produce RDF. | ||||||||||
Ontop | 556 | 5 | 5 hours ago | 12 | April 19, 2022 | 63 | apache-2.0 | Java | ||
Ontop is a platform to query relational databases as Virtual RDF Knowledge Graphs using SPARQL | ||||||||||
Graph Notebook | 545 | 3 days ago | 55 | June 11, 2022 | 22 | apache-2.0 | Jupyter Notebook | |||
Library extending Jupyter notebooks to integrate with Apache TinkerPop, openCypher, and RDF SPARQL. | ||||||||||
Rdfstore Js | 536 | 69 | 11 | 3 years ago | 76 | September 03, 2016 | 70 | mit | JavaScript | |
JS RDF store with SPARQL support | ||||||||||
Kglab | 492 | 7 days ago | 22 | April 20, 2022 | 32 | mit | Jupyter Notebook | |||
Graph Data Science: an abstraction layer in Python for building knowledge graphs, integrated with popular graph libraries – atop Pandas, NetworkX, RAPIDS, RDFlib, pySHACL, PyVis, morph-kgc, pslpython, pyarrow, etc. | ||||||||||
Ganswer | 332 | a year ago | 38 | bsd-3-clause | Java | |||||
A KBQA system based on DBpedia. | ||||||||||
Wikidata Graph Builder | 168 | 4 months ago | 6 | mit | TypeScript | |||||
Visualize Wikidata items using d3.js |
Sparnatural is a visual SPARQL query builder written in Typescript.
It supports the creation of basic graph patterns with the selection of values with autocomplete search or dropdown lists. It can be configured through a JSON-LD or OWL configuration file (that can be edited in Protégé) that defines the classes and properties to be presented in the component.
You can play with online demos at http://sparnatural.eu#demos.
To get started :
sparnatural-demo-dbpedia/index.html
sparnatural-demo-dbpedia/index.html
by changing the configuration and adapting the SPARQL endpoint URL;Select the type of entity to search...
... then select the type of the related entity.
In this case there is only one possible type of relation that can connect the 2 entities, so it gets selected automatically. Then select a value for the related entity, in this case in a dropdown list :
Congratulations, your first SPARQL query criteria is complete !
Now you can fetch the generated SPARQL query :
This enables to navigate the graph :
Combine criterias :
Select multiple values for a criteria :
Sparnatural offers currently 6 ways of selecting a value for a criteria : autocomplete field, dropdown list, simple string value, date range (year or date precision), date range with a search in a period name (e.g. "bronze age"), or no selection at all.
(this requires data from Perio.do, a gazeeter of periods for linking and visualizing data)
This is useful when a type a of entity is used only to navigate the graph, but without the ability to select an instance of these entities.
Sparnatural is multilingual and supports displaying labels of classes and properties in multiple languages.
Sparnatural supports the OPTIONAL
and FILTER NOT EXISTS {}
keywords applied to a whole "branch" of the query.
See here how to search for French Museums and the name of Italian painters they display, if any :
There is currently an experimental support for the SERVICE keyword for federated querying.
Sparnatural does not support the creation of UNION, BIND, etc...
To send SPARQL queries to a service that is not hosted on the same domain name as the web page in which Sparnatural is included, the SPARQL endpoint needs to allow Cross-Origin Resource Sharing (CORS). But we have SPARQL proxies for those who are not, don't worry ;-)
The component is configurable using a an OWL configuration file editable in Protégé.. Look at the specification files of the demos to get an idea.
Alternatively one can also use a JSON(-LD) ontology file. A JSON(-LD) configuration file contains :
{
"@id" : "http://dbpedia.org/ontology/Museum",
"@type" : "Class",
"label": [
{"@value" : "Museum", "@language" : "en"},
{"@value" : "Musée","@language" : "fr"}
],
"faIcon": "fas fa-university"
},
{
"@id" : "http://dbpedia.org/ontology/museum",
"@type" : "ObjectProperty",
"subPropertyOf" : "sparnatural:AutocompleteProperty",
"label": [
{"@value" : "displayed at","@language" : "en"},
{"@value" : "exposée à","@language" : "fr"}
],
"domain": "http://dbpedia.org/ontology/Artwork",
"range": "http://dbpedia.org/ontology/Museum",
"datasource" : "datasources:search_rdfslabel_bifcontains"
},
It is possible to directly use font-awesome icons in place of icons embedded in your application :
"faIcon": "fas fa-user",
Look at this page in the documentation.
Map classes or properties in the config to a corresponding SPARQL property path or a corresponding class URI, using the sparqlString
JSON key, e.g. :
{
"@id" : "http://labs.sparna.fr/sparnatural-demo-dbpedia/onto#bornIn",
"@type" : "ObjectProperty",
...
"sparqlString": "<http://dbpedia.org/ontology/birthPlace>/<http://dbpedia.org/ontology/country>",
},
Then call expandSparql
on the sparnatural
instance by passing the original SPARQL query, to replace all mentions of original classes and properties URI with the corresponding SPARQL string :
queryString = sparnatural.expandSparql(queryString);