Source code for PyOpenWorm.data_trans.data_with_evidence_ds
from rdflib.namespace import Namespace
from ..context import Context
from ..contextDataObject import ContextDataObject
from ..datasource import Informational, DataSource
from .. import CONTEXT
from .common_data import DS_NS
from .context_datasource import VariableIdentifierContext
[docs]class DataWithEvidenceDataSource(DataSource):
evidence_context_property = Informational(display_name='Evidence context',
property_name='evidence_context',
property_type='ObjectProperty',
description='The context in which evidence'
' for the "Data context" is defined')
data_context_property = Informational(display_name='Data context',
property_name='data_context',
property_type='ObjectProperty',
description='The context in which primary data'
' for this data source is defined')
combined_context_property = Informational(display_name='Combined context',
property_name='combined_context',
property_type='ObjectProperty',
description='Context importing both the data and evidence contexts')
rdf_namespace = Namespace(DS_NS['DataWithEvidenceDataSource#'])
def __init__(self, *args, **kwargs):
super(DataWithEvidenceDataSource, self).__init__(*args, **kwargs)
self.__ad_hoc_contexts = dict()
self.data_context = _DataContext.contextualize(self.context)(maker=self,
imported=(CONTEXT,))
self.evidence_context = _EvidenceContext.contextualize(self.context)(maker=self,
imported=(CONTEXT,))
self.combined_context = _CombinedContext.contextualize(self.context)(maker=self,
imported=(self.data_context,
self.evidence_context))
if not type(self).query_mode:
self.data_context_property(self.data_context.rdf_object)
self.evidence_context_property(self.evidence_context.rdf_object)
self.combined_context_property(self.combined_context.rdf_object)
def data_context_for(self, **kwargs):
ctx = self.context_for(**kwargs)
self.data_context.add_import(ctx)
return ctx
def context_for(self, ident=None, **kwargs):
key = "&".join(k + "=" + kwargs[k].identifier for k in sorted(kwargs.keys()))
res = self.__ad_hoc_contexts.get(key)
if res is None:
if ident:
ctxid = ident
else:
ctxid = self.identifier + '/context_for?' + key
self.__ad_hoc_contexts[key] = Context.contextualize(self.context)(ident=ctxid)
res = self.__ad_hoc_contexts[key]
return res
def commit_augment(self):
saved_contexts = set([])
self.data_context.save_context(inline_imports=True, saved_contexts=saved_contexts)
self.evidence_context.save_context(inline_imports=True, saved_contexts=saved_contexts)
self.combined_context.save_imports()
class _CombinedContext(VariableIdentifierContext):
def identifier_helper(self):
if self.maker.defined:
return self.maker.identifier
else:
return None
class _EvidenceContext(VariableIdentifierContext):
def identifier_helper(self):
if self.maker.defined:
return self.maker.identifier + '-evidence'
else:
return None
class _DataContext(VariableIdentifierContext):
def identifier_helper(self):
if self.maker.defined:
return self.maker.identifier + '-data'
else:
return None
__yarom_mapped_classes__ = (DataWithEvidenceDataSource,)