You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ossie.apache.org by Jochen Christ via dev <de...@ossie.apache.org> on 2026/10/05 09:02:37 UTC

[DISCUSS] Ontology: Naming of custom_properties in the ontology spec (PR #146)

Hi all,

PR https://github.com/apache/ossie/pull/146 adds a flexible object to the ontology spec for metadata that the spec does not model.

The main use case is importing from other formats without losing information, for example OWL/RDF (rdfs:label, owl:equivalentClass, vs:term_status) or SAP CSN annotations, so that a round-trip stays lossless. It is available on the ontology root, concepts, relationships, and roles. Keys are free-form, values can be any JSON, and the spec does not interpret them.

Example from the PR:

  ontology:
    - concept: Person
      type: EntityType
      description: A person.
      iri: foaf:Person
      custom_properties:
        rdfs:label: Person
        owl:equivalentClass: http://schema.org/Person
        vs:term_status: stable

Before we merge, I'd like to settle the name of the field.

The core spec already has custom_extensions, a list of {vendor_name, data} entries where data is a string. The new field is a structured map instead, because OWL/RDF is not a single vendor, and JSON inside a string is hard to read, edit, and validate. With custom_extensions and custom_properties side by side, users may confuse the two: the names are close, but the shapes differ.

Candidates:

1. custom_properties (current name in the PR)
   Descriptive, but close to custom_extensions with a different shape.

2. annotations
   Familiar term for tool-specific metadata (e.g. Kubernetes annotations) and clearly distinct from custom_extensions. In OWL, annotation properties have a specific meaning, and the field may also carry axioms such as owl:equivalentClass.

Which candidate would you prefer?

A related question: should the core spec follow? I'm happy to open a follow-up PR that introduces the same structured field in the core spec and deprecates custom_extensions, so that we have one extension mechanism across the spec.


Thanks,
Jochen