Chintan Patel wrote:
Regarding negation of exclusion criteria, it is interesting that you
mention open versus closed world reasoning. We have found that
depending on the underlying clinical data being queried, we might need
to choose between open and closed world reasoning.
You SHOULD not choose and you have to use open world reasoning because
how someone can tell which part of the world is closed and which part is
not.
For example, in pharmacy data, if the patient record does not mention
a drug, we can be reasonably sure that the patient is not on that drug
-- a case for closed world reasoning, whereas for other datasets such
as lab or radiology, often things are explicitly asserted to be
negative if not present, for example, negative MRSA results, hence
requiring an open world reasoning approach.
Let's use you example. According to your logic, if someone says that
_:someone a pha:Patient;
pha:medicine pha:aspirin.
It triggers a closed world reasoning so that no more properties exist.
But do you mean that _:someone does not have a birthday or doesn't have
a name either? I sincerely doubt that is what you want.
If you want to imply specifically that there is no more pha:medicine,
you should design your ontology accordingly. For instance, making the
pha:medicine to range over an rdf:List. Or design another property say,
pha:numOfMedicine and uses rules to suggest that the numOfMedicine must
be consistent with the pha:medicine applied to a given person.
But do not embed closed world reasoning into your ontology. Otherwise,
you break the foundation of RDF.
Xiaoshu