One solution to this is a function you would write that validates the properties, and prevents saving if they are invalid. You would want to use it in a buffer/directory hook.

For example:

(defun validate-properties ()
  (goto-char (point-min))
  (catch 'error
    (while (re-search-forward org-heading-regexp nil t)
      (let ((v (org-entry-get (point) "NUMERIC")))
(when v
 ;; Let's say we only allow +/- integers
 (if (string-match "\\`[-+]?[0-9]+\\'" v)
     nil
   (error "Non-integer value found: %s" v)
   (throw 'error nil)
   nil))))))

(add-hook 'write-file-functions 'validate-properties t)

You could use a different function for floats, or to make sure a value was one of a few allowed options...

This only works if you only edit the files through emacs, and if everyone is setup so this is automatically loaded in the directory, etc. An alternative place to put something like this is in a git hook, if you have your project in a git repo. you would have to figure out how to write a script that would run emacs to do this kind of thing. But, then you could make sure no invalid files were commited, for example.



John

-----------------------------------
Professor John Kitchin 
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803


On Sun, Feb 23, 2020 at 4:40 AM Vikas Rawal <vikasrawal@gmail.com> wrote:


On Sun, 23 Feb 2020 at 15:02, Bastien <bzg@gnu.org> wrote:
Hi Vikas,

Vikas Rawal <vikasrawal@gmail.com> writes:

> 1. Is it possible to restrict the sub-tree of a headline to have only
> properties specified in the column property of the parent? That is,
> no additional property can be specified.

No, it is currently not possible.  What would be the use-case?


I am thinking of using org-mode to compile a small database. I would like to use properties to add data, and some restrictions of this kind to limit what properties a particular kind of headline could have.

It might seem like an over-kill, but then for org-mode, almost nothing is an over-kill.

I am missing a few nuts and bolts, but would really like to see how it works to use org-mode for a small org-mode-skilled team to use it as a data platform.

Warmest greetings and regards,

Vikas