Overview¶
What’s in this document?
Introduction¶
The Semantic Objects are a declaratively configurable service for querying and mutating knowledge graphs.
It enables you to write powerful queries and mutations that uncover deep relationships within knowledge graph data, without having to worry about the underlying database query language.
Developers want what we all want - something simple and easy that works most of the time. A groundswell of opposition has developed, avoiding Semantic Web stacks due to complexity. For these reasons, Semantic Objects make use of GraphQL for querying and mutating, and the Semantic Object Meta Language (SOML) based on YAML for mapping RDF models to Semantic Objects.
The Semantic Objects automatically transpile GraphQL queries and mutations into optimized SPARQL queries.
Motivation¶
Accessing knowledge graphs and linked data using the W3C SPARQL query language has limitations, which include but are not limited to:
- Complexity: Skilled developers are required. SPARQL and RDF are perceived to be complex, difficult, unstable, and a niche technology stack. Many view them as conceived out of a scientific agenda rather than a bottom-up engineering approach. The average developer, customer, or enterprise just does not have the time, budget, or developers to make use of its power early in a product build.
- Developer community: Developers want what we all want - something simple and easy that works most of the time. A groundswell of opposition has developed avoiding semantic web stacks due to complexity.
- Integration: New APIs are settling and moving towards GraphQL and JSON. Simple, declarative, and powerful enough for most use cases, GraphQL has a large developer community with many tools, frameworks, and huge momentum.
API proxies are therefore often built by developers for a number of reasons:
- Simplicity: of RESTful APIs or the GraphQL query language.
- Low complexity: supporting requests that are constrained by well-defined, simple schemas.
- Front-end friendly: Supported by many front-end frameworks including React.js and Angular.
- Scalability: Use of caches and constrained views. Restricting and stopping the ability to write highly expressive, inefficient queries. Ability to reuse previously computed results and aggregates. Utilizing the understanding of acceptable stale state.
- Authentication and authorization: controlling and restricting access to data based on users, groups, and/or persona.
The ambition of the Semantic Objects is to lower the barrier of entry for solution teams, developers, and enterprises. It helps increase the use of Ontotext knowledge graphs and text analytics by providing simple, configurable, commoditized integration.