Source code for PyOpenWorm.evidence
import logging
from PyOpenWorm.dataObject import DataObject, ObjectProperty
from PyOpenWorm.contextDataObject import ContextDataObject
logger = logging.getLogger(__name__)
[docs]class EvidenceError(Exception):
pass
[docs]class Evidence(DataObject):
"""
A representation which provides evidence, for a group of statements.
Attaching evidence to an set of statements is done like this::
>>> from PyOpenWorm.connection import Connection
>>> from PyOpenWorm.evidence import Evidence
>>> from PyOpenWorm.context import Context
Declare contexts::
>>> ACTX = Context(ident="http://example.org/data/some_statements")
>>> BCTX = Context(ident="http://example.org/data/some_other_statements")
>>> EVCTX = Context(ident="http://example.org/data/some_statements#evidence")
Make statements in `ACTX` and `BCTX` contexts::
>>> ACTX(Connection)(pre_cell="VA11", post_cell="VD12", number=3)
>>> BCTX(Connection)(pre_cell="VA11", post_cell="VD12", number=2)
In `EVCTX`, state that a that a certain document supports the set of
statements in `ACTX`, but refutes the set of statements in `BCTX`::
>>> doc = EVCTX(Document)(author='White et al.', date='1986')
>>> EVCTX(Evidence)(reference=doc, supports=ACTX.rdf_object)
>>> EVCTX(Evidence)(reference=doc, refutes=BCTX.rdf_object)
Finally, save the contexts::
>>> ACTX.save_context()
>>> BCTX.save_context()
>>> EVCTX.save_context()
One note about the `reference` predicate: the reference should, ideally, be
an unambiguous link to a peer-reviewed piece of scientific literature
detailing methods and data analysis that supports the set of statements.
However, in gather data from pre-existing sources, going to that level of
specificity may be difficult due to deficient query capability at the data
source. In such cases, a broader reference, such as a `Website` with
information which guides readers to a peer-reviewed article supporting the
statement is sufficient.
"""
class_context = 'http://openworm.org/schema/sci'
supports = ObjectProperty(value_type=ContextDataObject)
'''A context naming a set of statements which are supported by the attached
reference'''
refutes = ObjectProperty(value_type=ContextDataObject)
'''A context naming a set of statements which are refuted by the attached
reference'''
reference = ObjectProperty()
'''The resource providing evidence supporting/refuting the attached context'''
[docs] def defined_augment(self):
return ((self.supports.has_defined_value() or
self.refutes.has_defined_value()) and
self.reference.has_defined_value())
[docs] def identifier_augment(self):
s = ""
if self.supports.has_defined_value:
s += self.supports.defined_values[0].identifier.n3()
else:
s += self.refutes.defined_values[0].identifier.n3()
s += self.reference.defined_values[0].identifier.n3()
return self.make_identifier(s)
__yarom_mapped_classes__ = (Evidence,)