Source code for owmeta.command

from __future__ import print_function, absolute_import

import logging

from owmeta_core.command_util import GenericUserError
from owmeta_core.dataobject import DataObject

from .commands.biology import CellCmd


L = logging.getLogger(__name__)


[docs]class OWMEvidence(object): ''' Commands for evidence ''' def __init__(self, parent): self._parent = parent
[docs] def get(self, identifier, rdf_type=None): ''' Retrieves evidence for the given object. If there are multiple types for the object, the evidence for only one type will be shown, but you can specify which type should be used. Parameters ---------- identifier : str The object to show evidence for rdf_type : str Type of the object to show evidence ''' from owmeta.evidence import Evidence from owmeta.data_trans.data_with_evidence_ds import DataWithEvidenceDataSource from owmeta_core.context_dataobject import ContextDataObject ctx = self._parent._default_ctx.stored identifier = self._parent._den3(identifier) rdf_type = self._parent._den3(rdf_type) if rdf_type: base_type = ctx(ctx.resolve_class(rdf_type)) if base_type is None: raise GenericUserError("Could not find Python class corresponding to " + str(rdf_type)) else: base_type = ctx(DataObject) q = base_type.query(ident=identifier) for l in q.load(): if isinstance(l, ContextDataObject): evq = ctx(Evidence).query() evq.supports(l) self._message_evidence(evq) if isinstance(l, DataWithEvidenceDataSource): evq = l.evidence_context.stored(Evidence).query() self._message_evidence(evq)
def _message_evidence(self, evq): from owmeta.website import Website from owmeta.document import Document msg = self._parent.message for m in evq.load(): ref = m.reference() if isinstance(ref, Document): msg(ref) titles = ['Author:', 'Title: ', 'URI: ', 'DOI: ', 'PMID: ', 'WBID: '] vals = [ref.author(), ref.title(), ref.uri(), ref.doi(), ref.pmid(), ref.wbid()] for title, v in zip(titles, vals): if v: msg(title, v) msg() elif isinstance(ref, Website): msg(ref) titles = ['Title: ', 'URL: '] vals = [ref.title(), ref.url()] for title, v in zip(titles, vals): if v: msg(title, v) msg()