Python LMF library
 All Classes Namespaces Files Functions Variables
subject_field.py
Go to the documentation of this file.
1 #! /usr/bin/env python
2 
3 """! @package mrd
4 """
5 
6 from utils.attr import check_attr_type
7 
8 class SubjectField():
9  """! "Subject Field is a class representing a text string that provides domain or status information." (LMF)
10  """
11  def __init__(self):
12  """! @brief Constructor.
13  SubjectField instances are owned by Sense.
14  @return A SubjectField instance.
15  """
16  self.language = None
17  self.semanticDomain = None
18  ## SubjectField instances are owned by SubjectField
19  # There is zero to many SubjectField instances per SubjectField
20  self.subject_field = []
21 
22  def __del__(self):
23  """! @brief Destructor.
24  Release SubjectField instances.
25  """
26  for subject_field in self.subject_field:
27  del subject_field
28  del self.subject_field[:]
29 
30  def set_semanticDomain(self, semantic_domain, language=None):
31  """! @brief Set semantic domain and language.
32  @param semantic_domain The semantic domain to set.
33  @param language Language used to describe the semantic domain.
34  @return SubjectField instance.
35  """
36  error_msg = "Semantic domain value '%s' is not allowed" % semantic_domain
37  check_attr_type(semantic_domain, [str, unicode], error_msg)
38  self.semanticDomain = semantic_domain
39  if language is not None:
40  self.set_language(language)
41  return self
42 
43  def get_semanticDomain(self, language=None):
44  """! @brief Get semantic domain.
45  @param language If this argument is given, get semantic domain only if written in this language.
46  @return The filtered SubjectField attribute 'semanticDomain'.
47  """
48  if language is None or language == self.get_language():
49  return self.semanticDomain
50 
51  def set_language(self, language):
52  """! @brief Set language used for semantic domain.
53  @param language Language used to describe the semantic domain.
54  @return SubjectField instance.
55  """
56  error_msg = "Language value '%s' is not allowed" % language
57  check_attr_type(language, [str, unicode], error_msg)
58  self.language = language
59  return self
60 
61  def get_language(self):
62  """! @brief Get language used for semantic domain.
63  @return SubjectField attribute 'language'.
64  """
65  return self.language
66 
68  """! @brief Create and add a subject field.
69  @return The created SubjectField instance.
70  """
71  subject_field = SubjectField()
72  self.subject_field.append(subject_field)
73  return subject_field
74 
75  def get_subject_fields(self):
76  """! @brief Get all subject fields maintained by this subject field.
77  @return A Python list of subject fields.
78  """
79  return self.subject_field
80 
81  def set_sub_domain(self, semantic_domain, language=None):
82  """! @brief Set a sub-domain and language.
83  @param semantic_domain The sub-domain to set.
84  @param language Language used to describe the sub-domain.
85  @return SubjectField instance.
86  """
87  self.create_and_add_subject_field().set_semanticDomain(semantic_domain, language)
88  return self
89 
90  def get_sub_domains(self, language=None):
91  """! @brief Get all sub-domains.
92  Attribute 'semanticDomain' is owned by SubjectField, which is owned by SubjectField, etc.
93  @param language If this argument is given, get only semantic domains that are described using this language.
94  @return A Python list of all SubjectField attributes 'semanticDomain'.
95  """
96  semantic_domains = []
97  for subject_field in self.get_subject_fields():
98  if subject_field.get_semanticDomain(language) is not None:
99  semantic_domains.append(subject_field.get_semanticDomain(language))
100  semantic_domains += subject_field.get_sub_domains(language)
101  return semantic_domains
def check_attr_type
Check that attribute value is of specified type.
Definition: attr.py:9
"Subject Field is a class representing a text string that provides domain or status information...
Definition: subject_field.py:8
def get_language
Get language used for semantic domain.
def set_sub_domain
Set a sub-domain and language.
def set_language
Set language used for semantic domain.
def create_and_add_subject_field
Create and add a subject field.
def set_semanticDomain
Set semantic domain and language.
def get_subject_fields
Get all subject fields maintained by this subject field.
subject_field
SubjectField instances are owned by SubjectField There is zero to many SubjectField instances per Sub...