All Projects → neo4j-labs → Neosemantics

neo4j-labs / Neosemantics

Licence: apache-2.0
Graph+Semantics: Import/Export RDF from Neo4j. SHACL Validation, Model mapping and more.... If you like it, please ★ ⇧

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Neosemantics

biolink-model
Schema and generated objects for biolink data model and upper ontology
Stars: ✭ 83 (-83.47%)
Mutual labels:  neo4j, rdf
Clojure Graph Resources
A curated list of Clojure resources for dealing with graph-like data.
Stars: ✭ 94 (-81.27%)
Mutual labels:  rdf, neo4j
Jsonld Java
JSON-LD implementation for Java
Stars: ✭ 337 (-32.87%)
Mutual labels:  rdf
Plumhound
Bloodhound for Blue and Purple Teams
Stars: ✭ 452 (-9.96%)
Mutual labels:  neo4j
Brightstardb
This is the core development repository for BrightstarDB.
Stars: ✭ 420 (-16.33%)
Mutual labels:  rdf
Rdf
RDF.rb is a pure-Ruby library for working with Resource Description Framework (RDF) data.
Stars: ✭ 353 (-29.68%)
Mutual labels:  rdf
Neo4j Browser
Neo4j Browser is the general purpose user interface for working with Neo4j. Query, visualize, administrate and monitor the database.
Stars: ✭ 420 (-16.33%)
Mutual labels:  neo4j
Popoto
Visual query builder for Neo4j graph database
Stars: ✭ 318 (-36.65%)
Mutual labels:  neo4j
Odin
Automated network asset, email, and social media profile discovery and cataloguing.
Stars: ✭ 476 (-5.18%)
Mutual labels:  neo4j
Pyld
JSON-LD processor written in Python
Stars: ✭ 413 (-17.73%)
Mutual labels:  rdf
Picofeed
PHP library to parse and write RSS/Atom feeds
Stars: ✭ 439 (-12.55%)
Mutual labels:  rdf
Rssguard
RSS Guard is simple feed reader which supports web-based feed services.
Stars: ✭ 373 (-25.7%)
Mutual labels:  rdf
Neo4j Reco
Neo4j-based recommendation engine module with real-time and pre-computed recommendations.
Stars: ✭ 361 (-28.09%)
Mutual labels:  neo4j
Neo4j Graphql
GraphQL bindings for Neo4j, generates and runs Cypher
Stars: ✭ 429 (-14.54%)
Mutual labels:  neo4j
Exakat
The Exakat Engine : smart static analysis for PHP
Stars: ✭ 346 (-31.08%)
Mutual labels:  neo4j
Webvowl
Visualizing ontologies on the Web
Stars: ✭ 459 (-8.57%)
Mutual labels:  rdf
Tropy
Research photo management
Stars: ✭ 337 (-32.87%)
Mutual labels:  rdf
Sparqlwrapper
A wrapper for a remote SPARQL endpoint
Stars: ✭ 365 (-27.29%)
Mutual labels:  rdf
Grand Stack Starter
Simple starter project for GRANDstack full stack apps
Stars: ✭ 419 (-16.53%)
Mutual labels:  neo4j
Web Karma
Information Integration Tool
Stars: ✭ 489 (-2.59%)
Mutual labels:  rdf

neosemantics (n10s)

n10s Logo neosemantics is a plugin that enables the use of RDF in Neo4j. RDF is a W3C standard model for data interchange. Some key features of n10s are:

  • Store RDF data in Neo4j in a lossless manner (imported RDF can subsequently be exported without losing a single triple in the process).
  • On-demand export property graph data from Neo4j as RDF.
  • Model validation based on the W3C SHACL language
  • Import of Ontologies and Taxonomies in OWL/RDFS/SKOS/...

Other features in NSMNTX include model mapping and inferencing on Neo4j graphs.

⇨ User Manual and Blog ⇦

⇨ Check out the complete user manual with examples of use. ⇦

Blog on neosemantics (and more). ⇦

Installation

You can either download a prebuilt jar from the releases area or build it from the source. If you prefer to build, check the note below.

  1. Copy the the jar(s) in the <NEO_HOME>/plugins directory of your Neo4j instance. (note: If you're going to use the JSON-LD serialisation format for RDF, you'll need to include also APOC)
  2. Add the following line to your <NEO_HOME>/conf/neo4j.conf
dbms.unmanaged_extension_classes=n10s.endpoint=/rdf
  1. Restart the server.
  2. Check that the installation went well by: Running call dbms.procedures(). The list of procedures should include a number of them prefixed by n10s.

Checking that the logs show the following line on startup:

YYYY-MM-DD HH:MM:SS.000+0000 INFO  Mounted unmanaged extension [n10s.endpoint] at [/rdf]

You can also test the extension is mounted by running :get http://localhost:7474/rdf/ping on the neo4j browser and this should return the following message

{"ping":"here!"}

Basic flow

0. Pre-req: Constraint Creation

CREATE CONSTRAINT n10s_unique_uri ON (r:Resource) ASSERT r.uri IS UNIQUE

1. Creating a Graph Configuration

Before any RDF import operation a GraphConfig needs to be created. Here we define the way the RDF data is persisted in Neo4j. We'll find things like

Param Values Desc
handleVocabUris "SHORTEN","KEEP","SHORTEN_STRICT","MAP" how namespaces are handled
handleMultival "OVERWRITE","ARRAY" how multivalued properties are handled
handleRDFTypes "LABELS","NODES","LABELS_AND_NODES" how RDF datatypes are handled
multivalPropList [ list of predicate uris ]
... ... ...

Most of them are the same (expect some changes) as in previous versions (see 3.5 manual for reference).

You can create a graph config with all the defaults like this:

call n10s.graphconfig.init()

Or customize it by passing a map with your options:

call n10s.graphconfig.init( { handleMultival: "ARRAY", 
                              multivalPropList: ["http://voc1.com#pred1", "http://voc1.com#pred2"],
                              keepLangTag: true })

2. Importing RDF data

Once the Graph config is created we can import data from a url using fetch:

call n10s.rdf.import.fetch( "https://raw.githubusercontent.com/jbarrasa/neosemantics/3.5/docs/rdf/nsmntx.ttl",
                            "Turtle")

Or pass it as a parameter using inline:

with '
@prefix neo4voc: <http://neo4j.org/vocab/sw#> .
@prefix neo4ind: <http://neo4j.org/ind#> .

neo4ind:nsmntx3502 neo4voc:name "NSMNTX" ;
			   a neo4voc:Neo4jPlugin ;
			   neo4voc:runsOn neo4ind:neo4j355 .

neo4ind:apoc3502 neo4voc:name "APOC" ;
			   a neo4voc:Neo4jPlugin ;		   
			   neo4voc:runsOn neo4ind:neo4j355 .

neo4ind:graphql3502 neo4voc:name "Neo4j-GraphQL" ;
			   a neo4voc:Neo4jPlugin ;			   
			   neo4voc:runsOn neo4ind:neo4j355 .			   			   

neo4ind:neo4j355 neo4voc:name "neo4j" ;
			   a neo4voc:GraphPlatform , neo4voc:AwesomePlatform .

' as  payload

call n10s.rdf.import.inline( payload, "Turtle") yield terminationStatus, triplesLoaded, triplesParsed, namespaces
return terminationStatus, triplesLoaded, triplesParsed, namespaces

It is possible to pass some request specific parameters like headerParams, commitSize, languageFilter... (also found in the 3.5 manual)

3. Importing Ontologies, QuadRDF, etc

Same naming scheme applies...

call n10s.onto.import.fetch(...)

Use autocompletion to discover the different procedures.

Full documentation will be available soon. In the meantime, please share your feedback in the Neo4j community portal.

Thanks!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].