Classifications

/Class/{parent}/{key}

Define the Taxonomy of your Schema.

Parameters

A Classification needs only parent and key for unique identification. These are both required fields as any Thing created in Higgs must be a member of a taxonomy.

Name Type Description
parent Class Path The parent Classification of the Resource.
key string The key used to access the Resource.

Operations

Name HTTP Method Available
CREATE* POST
READ GET
UPDATE POST
DELETE* DELETE
*Has Limitations

Limitations

Operation Available
CREATE The key and language tag combination must be unique to the Account's set of Classifications.
DELETE Currently, a user cannot perform a delete operation if there exists any Thing Data Instances which have the type of the target Classification. This is due to change and a temporary limitation.

Request Template

Higgs currently supports both Classification and Class as alternate terms. Class is short for URI command-line convenience but is not to be confused with a Class in Object-Oriented programming.

GET|POST|DELETE /Classification/{parent}/{key} HTTP/1.1
Host: higgs.online
GET|POST|DELETE /Classification{?parent,key} HTTP/1.1
Host: higgs.online
GET|POST|DELETE /Class/{parent}/{key} HTTP/1.1
Host: higgs.online
GET|POST|DELETE /Class{?parent,key} HTTP/1.1
Host: higgs.online

Relations

/Relation/{domain}/{key}{?range}

Define and label the data relations of a Classification.

Parameters

The Domain defines the Classification of a data Subject. The Range defines the type the data Key points to.

Name Type Description
domain Classification The Subject Classification required for each Instance.
range Classification | Literal The Classification or Literal that defines the Object or a Relation.

Operations

Name HTTP Method Available
Create* POST
Read GET
Update POST
Delete* DELETE
*Has Limitations

Limitations

Operation Available
Create The key and language tag combination must be unique to the Account's set of Relations.
Delete Cannot perform a delete operation if there exists any Property Instances which have the type of the target Relation. *Temporary

Request Template

Relations support the following 2 different URI templates:

GET|POST|DELETE /Relation/{domain}/{key}{?range} HTTP/1.1
Host: higgs.online
GET|POST|DELETE /Relation{?key,domain,range} HTTP/1.1
Host: higgs.online

Schemas

/Schema

Manage your Classifications and their Relations as a whole.

Parameters

A Schema is made of Classification and Relation Resources.

Name Type Description
classifications List of Classification Resources Classifications to operate on.
relations List of Relation Resources Relations to operate on.

Operations

Name Method Available
CREATE * POST
READ GET
UPDATE POST
DELETE * DELETE
*Has Limitations: See Classification and Relation specifications.

Request Template

The CREATE and UPDATE Service requires users to supply a JSON POST Body consisting of the Schema members.

GET|POST|DELETE /Schema  HTTP/1.1
Host: higgs.online
{*classifications,*relations}

Classification Schemas can be independently managed using:

GET|POST|DELETE /Schema/{classPath}  HTTP/1.1
Host: higgs.online
{*classifications,*relations}

Response

The Response will consist of status and messages from Higgs as well as your current Schema Resource.

Things

/Thing/{type}/{key}

Manage your data within a Subject of Knowledge. Things are instances of Classifications.

Parameters

Things require a Classification Definition to describe its type.

Name Type Description
type classPath/classKey The Classification the Thing is an Instance of.
key string The key used to access the Thing.

Operations

Name HTTP Method Available
CREATE POST
READ GET
UPDATE POST
DELETE DELETE

Request Templates

GET|POST|DELETE /Thing/{type}/{key} HTTP/1.1
Host: higgs.online
POST|DELETE /Thing HTTP/1.1
Host: higgs.online
{classPath,key}
GET|POST /Thing?{type,key} HTTP/1.1
Host: higgs.online

Examples

GET Thing/Person/TimBL
POST Thing/Animal/Mammal/HouseCat/Schrödinger
POST Thing?type=Animal/Mammal/HouseCat&key=Schrödinger

Properties

/Property/{subject}/{key}{?value}

Link Things to other Things or to Data values. Properties are instances of Relation Definitions.

Parameters

Properties are represented by a DLG Triple of Subject, Predicate and Object. On Higgs, the Subject is always some Thing, the predicate maps to a defined Relation and the Object is the value of the Property.

Name Type Description
subject Thing The Subject Thing.
key Relation Key The named predicate which maps to an existing Relation
value Thing | Literal The Property value. This can be another Thing or a Literal.

Operations

Name Method Available
CREATE POST
READ GET
UPDATE POST
DELETE DELETE

Request Templates

POST /Property/{subject}/{relation}{?value} HTTP/1.1
Host: higgs.online

POST /Property HTTP/1.1
Host: higgs.online
{subject,key,value}

POST /Property?{subject,key,value} HTTP/1.1
Host: higgs.online

Examples

GET Property/Person/JasonReinert/name
POST Property/Animal/Mammal/HouseCat/Schrödinger/furColor
POST Property?subject=Animal/HouseCat/Schrödinger&key=locatedAt&value=Location/unknown
DELETE Property/Animal/HouseCat/Schrödinger/name

Response Template

HTTP/1.1 200 OK
Date: Mon, 1 Mar 2016 11:11:11 GMT

{
  "@context": "https://higgs.online/context",
  "@id": "higgs:Response/Success",
  "hsd:type": "higgs:Response",
  "higgs:Response/Success/code": "200",
  "higgs:Operation": "POST",
  "higgs:Response/Success/message": "Read of Property Resource was was successful.",
  "higgs:resource": {
    "@id": "higgs:account/public/Property/Person/JasonReinert/{key}",
    "@type": "higgs:Relation/Person/{key}",
    "key": "{key}",
    "subject": "higgs:account/public/Property/Person/JasonReinert",
    "value": "Jason",
    "dateTimeCreated": "2017-09-15 14:51:09",
    "lastModified": "2017-09-15 14:51:21"
  }
}

Entities

/Entity/{thing}

Define the Taxonomy of your Schema.

Parameters

A Classification needs only parent and key for unique identification. These are both required fields as any Thing created in Higgs must be a member of a taxonomy.

Name Type Description
thing Resource Path The resource path to the Thing.

Operations

Name HTTP Method Available
CREATE POST
READ GET
UPDATE POST
DELETE DELETE

Request Template

GET|POST|DELETE /Entity/{thing} HTTP/1.1
Host: higgs.online

Response Template

HTTP/1.1 200 OK
Date: Mon, 1 Mar 2016 11:11:11 GMT

{
  "@context": "https://higgs.online/context",
  "@id": "higgs:Response/{type}/{uuid}",
  "hsd:type": "higgs:Response",
  "higgs:Response/Success/code": "{code}",
  "higgs:Operation": "{GET|POST|DELETE}",
  "higgs:Response/Success/message": "{operation} of Property Resource was successful.",
  "higgs:resource": {
    "@id": "higgs:account/public/Property/Person/{key}",
    "@type": "higgs:Relation/Person/{key}",
    "{property_key_1}": "{property_1}",
    "{property_key_2}": "{property_2}",
    "dateTimeCreated": "2017-09-15 14:51:09",
    "lastModified": "2017-09-15 14:51:21"
}
}

Literals

Higgs Literals are always typed. This is a read-only service which allows users to interact with the Higgs Engine and receive real-time datatype values. Higgs will either enforce your declared type or infer a type if anonymous. Literal values can be created using Properties

Higgs provides automatic Datatype Coercion and Datatype Inference. This allows users to submit untyped Literal values and relying on the Higgs Reasoner to handle the best matched datatype available for the value.

Operations

Name HTTP Method Available
CREATE -- --
READ GET
UPDATE -- --
DELETE -- --

Parameters

Name Description
type The type of the Literal. Enumerated values, see Datatypes below.
value The value to process

Datatypes

Template Description
/string/{value} A sequence of character text.
/integer/{value} A number without a fractional component.
/float/{value} A number represented in floating-point notation.
/date/{value} The day, month and year.
/datetime/{value} The day, month, year and time.
/boolean/{value} A True or False value
/email/{value} An email address
/URI/{value} A URI
/richText/{value} Marked-up text string

URI Templates

Template Example
{type}/{value}

Coerce a value to a specified type.

integer/1981
Literal/{value}

Infer a best-matched type on the value.

Literal/Hello+World
Literal{?value,*type}

Infer a best-matched type or coerce to a specified type.

Literal?type=integer&value=13.81