Skip to content

Instantly share code, notes, and snippets.

@no-reply
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save no-reply/ae35bd5e507279c942c0 to your computer and use it in GitHub Desktop.
Save no-reply/ae35bd5e507279c942c0 to your computer and use it in GitHub Desktop.
Property-Predicate Semantics in ActiveTriples

Property-Predicate Semantics in ActiveTriples

ActiveTriples is an Object-to-Graph Mapper (OGM) providing ActiveModel friendly, ORM-like functionality for managing RDF resources and graphs as Objects in Ruby.

The library defines a Resource class, instances of which represent the equivalent concept in RDF. Resource objects encapsulate an individual RDF Resource (i.e. its identifier (URI or blank node), and relevant statements) creating a corresponding Object schema and API. The Object schema is strictly non-normative with respect to the data structure and content of the associated RDF graph. That is to say, it is a design goal of ActiveTriples that any arbitrary RDF graph should be readable and safely writeable using the library and compatible with any Object schema. To achieve this goal, it is necessary to specify a clear Object-Graph semantics.

The purpose of this document is to define those semantics, especially as relates to the mapping of (Ruby Object) Properties to (RDF) Predicates on a given Resource. It wisll hopefully evolve to establish the OGM semantics in full. In the meanwhile, I'll be documenting possibilities, adding references, and otherwise annotating this text with information about the related issues.

Prior Art

Historical Notes

In initial development, the design of ActiveTriples was influenced substantially by the needs of the Hydra community, the existing functionality of related software (ActiveFedora, Spira), and the immediate goal of superceding it. The naive property semantics in place as of 0.2.x reflect those pressures, as well as a need for better planning in the project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment