All Projects → dasch-swiss → Dsp Api

dasch-swiss / Dsp Api

Licence: agpl-3.0
Knowledge Organization, Representation, and Annotation

Programming Languages

scala
5932 projects

Labels

Projects that are alternatives of or similar to Dsp Api

Easyrdf
EasyRdf is a PHP library designed to make it easy to consume and produce RDF.
Stars: ✭ 546 (+875%)
Mutual labels:  rdf
Cturtle
Convert RDF Turtle to N-Triples or N3P
Stars: ✭ 11 (-80.36%)
Mutual labels:  rdf
Serd
A lightweight C library for RDF syntax
Stars: ✭ 43 (-23.21%)
Mutual labels:  rdf
Dokieli
💡 dokieli is a clientside editor for decentralised article publishing, annotations and social interactions
Stars: ✭ 582 (+939.29%)
Mutual labels:  rdf
Rdf Dereference.js
Dereference any URL for its RDF contents
Stars: ✭ 18 (-67.86%)
Mutual labels:  rdf
Bib Rdf Pipeline
Scripts and configuration for converting MARC bibliographic records into RDF
Stars: ✭ 27 (-51.79%)
Mutual labels:  rdf
Neosemantics
Graph+Semantics: Import/Export RDF from Neo4j. SHACL Validation, Model mapping and more.... If you like it, please ★ ⇧
Stars: ✭ 502 (+796.43%)
Mutual labels:  rdf
Trifid
Lightweight Linked Data Server and Proxy
Stars: ✭ 51 (-8.93%)
Mutual labels:  rdf
Askomics
DEPRECATED. See askomics/flaskomics
Stars: ✭ 22 (-60.71%)
Mutual labels:  rdf
Sparql Engine
🚂 A framework for building SPARQL query engines in Javascript/Typescript
Stars: ✭ 39 (-30.36%)
Mutual labels:  rdf
Awesome Semantic Web
A curated list of various semantic web and linked data resources.
Stars: ✭ 642 (+1046.43%)
Mutual labels:  rdf
Kgqa Based On Medicine
基于医药知识图谱的智能问答系统
Stars: ✭ 741 (+1223.21%)
Mutual labels:  rdf
Activetriples
An ActiveModel-like interface for RDF data
Stars: ✭ 31 (-44.64%)
Mutual labels:  rdf
Database
Blazegraph High Performance Graph Database
Stars: ✭ 568 (+914.29%)
Mutual labels:  rdf
Unified Cybersecurity Ontology
Unified Cybersecurity Ontology
Stars: ✭ 44 (-21.43%)
Mutual labels:  rdf
N3.js
Lightning fast, spec-compatible, streaming RDF for JavaScript
Stars: ✭ 521 (+830.36%)
Mutual labels:  rdf
Informationmodel
The Information Model of the International Data Spaces implements the IDS reference architecture as an extensible, machine readable and technology independent data model.
Stars: ✭ 27 (-51.79%)
Mutual labels:  rdf
Defacto
Deep Fact Validation
Stars: ✭ 54 (-3.57%)
Mutual labels:  rdf
Semantic Graphql
Create GraphQL schemas from RDF ontologies
Stars: ✭ 47 (-16.07%)
Mutual labels:  rdf
Timbuctoo
an RDF datastore that gives researchers control over the sharing of data between datasets
Stars: ✭ 37 (-33.93%)
Mutual labels:  rdf

Knora — Knowledge Organization, Representation, and Annotation

Github Docker CI

Knora is a server application for storing, sharing, and working with primary sources and data in the humanities.

It is developed by the Data and Service Center for the Humanities at the University of Basel, and is supported by the Swiss Academy of Humanities and Social Sciences and the Swiss National Science Foundation .

Knora is free software, released under the GNU Affero General Public License.

Features

  • Stores humanities data as industry-standard RDF graphs, plus files for binary data such as digitized primary sources.
    • Designed to work with any standards-compliant RDF triplestore. Tested with Jena Fuseki.
  • Based on OWL ontologies that express abstract, cross-disciplinary commonalities in the structure and semantics of research data.
  • Offers a generic HTTP-based API, implemented in Scala, for querying, annotating, and linking together heterogeneous data in a unified way.
    • Handles authentication and authorization.
    • Provides automatic versioning of data.
  • Uses Sipi, a high-performance media server implemented in C++.
  • Designed to be be used with DSP-APP, a general-purpose, browser-based virtual research environment, as well as with custom user interfaces.

Status

Stable

Beta stage

New features under development

Requirements

For developing and testing the API server

Each developer machine should have the following prerequisites installed:

Java Adoptopenjdk 11

To install, follow these steps:

brew tap AdoptOpenJDK/openjdk
brew cask install AdoptOpenJDK/openjdk/adoptopenjdk11

To pin the version of Java, please add this environment variable to you startup script (bashrc, etc.):

export JAVA_HOME=`/usr/libexec/java_home -v 11`

Bazel build tools

To install, follow these steps:

npm install -g @bazel/bazelisk

This will install bazelisk which is a wrapper to the bazel binary. It will, when bazel is run on the command line, automatically install the supported Bazel version, defined in the .bazelversion file in the root of the knora-api repository.

For building the documentation

See docs/Readme.md.

Try it out

Run the Knora API server

With Bazel and Docker installed, run the following to create a test repository and load some test data into the triplestore:

make init-db-test

Then we need to start knora-api after loading the data:

make stack-up

Then try opening http://localhost:3333/v2/resources/http%3A%2F%2Frdfh.ch%2F0803%2Fc5058f3a in a web browser. You should see a response in JSON-LD describing a book.

To shut down the Knora-Stack:

make stack-down

Run the automated tests

Run :

make test

Running with Custom Folders

The $ make stack-up target can be additionally configured thorough the following environment variables:

  • KNORA_DB_HOME: sets the path to the folder where the triplestore will store the database files
  • KNORA_DB_IMPORT: sets the path to the import directory accessible from inside the docker image

If the import and/or data directory are not set, then Docker volumes will be used instead. Be aware on macOS, that setting the KNORA_DB_HOME has a significant negative impact on performance, because of how synchronization with the VM, in which docker is running, is implemented.

How to Contribute

You can help by testing Knora with your data, making bug reports, improving the documentation, and adding features that you need.

First, open an issue to describe your problem or idea. We may ask you to submit a pull request implementing the desired functionality.

Coding conventions

Use camelCase for names of classes, variables, and functions. Make names descriptive, and don't worry if they're long.

Use Scalafmt in IntelliJ IDEA to format Scala code.

Use whitespace to make your code easier to read. Add lots of implementation comments describing what your code is doing, how it works, and why it works that way.

Tests

We write automated tests using ScalaTest. You can run them from the SBT console.

There are three sets of automated tests:

  • Unit tests, route-to-route tests, and end-to-end tests are under webapi/src/test. To run these, type graphdb:test or graphdb-free:test (depending on which triplestore you're using) at the SBT console in the webapi project. To run a single test, use graphdb:test-only *NameOfTestSpec.
  • Integration tests, which can involve Sipi, are under src/it. To run these, first start Sipi, then type it:test at the SBT console in the webapi project.
  • Browser interaction tests are under salsah/src/test, and are written using Selenium. To run these, you will need to unpack the correct ChromeDriver for your platform found under salsah/lib/chromedriver and put it in the same folder. Then start Sipi and the Knora API server, and type test at the SBT console in the salsah project.

Whenever you add a new feature or fix a bug, you should add one or more tests for the change you made.

Documentation

A pull request should include tests and documentation for the changes that were made. See the documentation README for information on writing Knora documentation.

Contact information

Technical

Please use the discuss.dasch.swiss forum for technical questions.

Administrative

Lukas Rosenthaler <[email protected]>

Commit Message Schema

When writing commit messages, we follow the Conventional Commit messages rules. Get more information in our official DSP Contribution Documentation

Release Versioning Convention

The Knora project is following the Semantic Versioning convention for numbering the releases as defined by [http://semver.org]:

Given a version number MAJOR.MINOR.PATCH, increment the:

  • MAJOR version when you make incompatible API changes,
  • MINOR version when you add functionality in a backwards-compatible manner, and
  • PATCH version when you make backwards-compatible bug fixes.

Additionally, we will also increment the MAJOR version in the case when any kind of changes to existing data would be necessary, e.g., any changes to the Knora-Base ontologies which are not backwards compatible.

Release Notes Generation

A pull request usually resolves one issue or user story defined on Youtrack. Since we started to use the release-please-action it's very important to set the PR title in the correct way, especially becuase all commits added within the pull request are squashed. Please read the official DSP Contribution Documentation carefully!

Acknowledgments

YourKit

The Knora project is using YourKit for profiling.

YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.

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].