Skip to content

Business Objects Configuration

Business Objects allow administrators to define structured, reusable data views that support both importing and exporting data through the Accurids platform.

They are designed for controlled, automated data exchange — ensuring that:

  • external systems receive validated, business-ready JSON, and
  • structured JSON can be imported into Accurids without interacting with RDF directly.

Administrators configure:

  • How RDF data is transformed into or from structured JSON
  • Which objects are included or created based on conditions
  • Where data is delivered or received (e.g., S3, API)
  • When exchanges are triggered (manual or automatic)

Accessing the API

To access and explore the Accurids Public API, navigate to https://your-accurids-domain/api.

The API provides endpoints for defining, updating, importing, and exporting Business Objects.

1. Defining a Business Object

A Business Object is defined via a configuration file (in YAML or JSON) that maps RDF data in Accurids to a structured JSON format. Each configuration specifies:

  • Fields to include (e.g., strings, numbers, booleans, objects, arrays)
  • Paths for data extraction (RDF predicates or linked objects)
  • Nested structures for related objects
  • Optional filters, conditions, or templates for customization
  • Push targets for defining where exports are delivered (e.g., S3, API)

Example YAML Configuration

type: object
path: Person:.
fields:
  uri:
    type: id
  type:
    type: resource
    path: <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
  first_name:
    type: string
    path: <https://schema.org/givenName>
  last_name:
    type: string
    path: <https://schema.org/familyName>
  email:
    type: string
    path: <https://schema.org/email>
  address:
    type: object
    path: <https://schema.org/address>/Address:.
    fields:
      uri:
        type: id
      street:
        type: string
        path: <https://schema.org/streetAddress>
      city:
        type: string
        path: <https://schema.org/addressLocality>

Example with Array Fields

Arrays can be defined to handle properties with multiple values, such as emails, phone numbers, or identifiers. They are declared using type: array with an elements block describing the contained data type.

type: object
path: Person:.
fields:
  uri:
    type: id
  first_name:
    type: string
    path: <https://schema.org/givenName>
  last_name:
    type: string
    path: <https://schema.org/familyName>
  emails:
    type: array
    path: <https://schema.org/email>
    elements:
      type: string
  phone_numbers:
    type: array
    path: <https://schema.org/telephone>
    elements:
      type: string

Arrays can also contain nested objects for more complex relationships.

2. Ingestion Prerequisites

Before ingesting JSON data into Accurids:

  • The PID Generator module must be active for URI minting.
  • All referenced namespaces must exist and match the configuration.
  • The Business Object must be enabled.
  • Input JSON must strictly follow the configured field structure.

Ingestion Modes

When importing data into a Business Object, Accurids supports two ingestion modes that define how existing data is handled and updated.

Mode Description Typical Use Case
ADD Adds new objects and merges new data into existing ones. Existing information is preserved — Accurids appends any additional fields or values from the incoming payload. Incremental enrichment or non-destructive updates where existing data should remain intact.
REPLACE Replaces all existing data for matching objects (based on URI). The previous statements for these objects are deleted and fully replaced with the new payload content. Controlled synchronization or complete data refresh scenarios.

Example Behavior

Existing object:

{
  "uri": "https://id.accurids.com/person/1",
  "name": "Alice"
}

Incoming payload:

{
  "uri": "https://id.accurids.com/person/1",
  "name": "Bob"
}
  • With mode=ADD: → result = name: ["Alice", "Bob"]
  • With mode=REPLACE: → result = name: "Bob"

Example Endpoints

POST /api/v1/business-objects/{id}?mode=ADD

or

POST /api/v1/business-objects/{id}?mode=REPLACE

If no mode is specified, ADD is used by default.

3. Change Owners

Business Objects can optionally define change owners. Change owners are users and/or groups that should also be able to access the pending changes created by Business Object ingestions, even if they did not execute the ingestion API call themselves.

This is useful when Business Objects are executed by service accounts, but review and stewardship should be handled by specific people or teams.

Configuration

Add entityChangeOwners to the Business Object definition:

{
  "entityChangeOwners": {
    "groups": [
      "Group Name"
    ],
    "users": [
      "reviewer1@accurids.com",
      "reviewer2@accurids.com"
    ]
  }
}

Effect

When accurids.pending-changes.skip=false (pending review enabled):

  • the API user that triggered ingestion can access the created pending changes, and
  • the configured change owners can also access the same pending changes (additional visibility).

Because change owners gain access to the pending changes, they can also perform the same workflow actions that their role permits — for example moving changes forward (approval) or moving changes backward (rejection / send back to a previous stage).
See Pending Changes for details on lifecycle stages and forward/backward transitions.

If no owners are configured, access is limited to the ingestion user.

4. Filtering Included Objects

The conditions block defines which objects are processed during import and export.

"conditions": [
  {
    "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
    "value": "https://schema.org/Person"
  }
]

Only objects matching the condition will be included.

5. Creating or Updating a Business Object

Endpoint

PUT /api/v1/business-objects

Example request:

{
  "name": "Person",
  "description": "Business Object for Person data with nested Address",
  "enabled": true,
  "config": "type: object\npath: Person:.\nfields:\n  uri:\n    type: id\n  first_name:\n    type: string\n    path: <https://schema.org/givenName>\n  last_name:\n    type: string\n    path: <https://schema.org/familyName>\n  email:\n    type: string\n    path: <https://schema.org/email>",
  "conditions": [
    {
      "predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
      "value": "https://schema.org/Person"
    }
  ],
  "pushTargets": [
    {
      "bucketName": "company-businessobject"
    }
  ]
}

6. Updating Configuration Only

PUT /api/v1/business-objects/{id}/config

Replaces the configuration while keeping existing metadata.

7. Automation and Scheduling

Business Objects can be processed automatically:

  • On schedule — via a cronExpression
  • On data changes — incremental updates
  • After ingestion — trigger exports automatically

Example schedule:

"cronExpression": "0 0 * * *"

Runs daily at midnight (UTC). Accurids uses standard cron syntax.

8. Metadata and Integrity

Every Business Object export includes metadata for verification and traceability.

Field Description
object_type Business Object name
export_date Timestamp (UTC)
object_count Number of exported objects
data_checksum SHA-256 checksum for file integrity
checksum_algorithm Hashing algorithm used

Accurids uses a FIFO queue to ensure stable, ordered exports — even in case of retries or temporary interruptions.

9. Troubleshooting

Problem Cause Solution
Ingestion failed: null Invalid YAML or namespace mismatch Verify YAML structure and dataset tags
No objects exported Condition mismatch Ensure predicate and value match dataset
Export missing Push configuration issue Check bucket name and permissions
Nested data missing Incorrect paths or namespace Ensure nested fields are valid and linked correctly

When to Use Business Objects

Use Business Objects to:

  • Automate data imports and exports
  • Standardize external data interfaces
  • Keep business logic consistent across systems
  • Maintain full traceability of changes and identifiers

See also: User Guide: Business Objects