wipo-gbd-transformation 1.1.54__py3-none-any.whl → 1.1.56__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of wipo-gbd-transformation might be problematic. Click here for more details.
- gbdtransformation/brands/chtm/filters.py +159 -181
- gbdtransformation/brands/chtm/schema +79 -91
- gbdtransformation/brands/chtm/template.yml +98 -107
- gbdtransformation/brands/natm/__init__.py +2 -3
- gbdtransformation/brands/natm/filters.py +8 -2
- gbdtransformation/brands/notm/__init__.py +5 -0
- gbdtransformation/brands/notm/filters.py +98 -0
- gbdtransformation/brands/notm/template.yml +165 -0
- gbdtransformation/brands/phtm/schema +79 -50
- gbdtransformation/brands/phtm/schema.classic +50 -0
- gbdtransformation/brands/phtm/template.classic.yml +102 -0
- gbdtransformation/brands/phtm/template.yml +1 -102
- gbdtransformation/brands/xxxx/template.yml +1 -1
- gbdtransformation/designs/woid/filters.py +11 -2
- gbdtransformation/execs-nico.py +709 -0
- gbdtransformation/execs.py +9 -4
- gbdtransformation/gbd-transform.exec.tgz +0 -0
- {wipo_gbd_transformation-1.1.54.dist-info → wipo_gbd_transformation-1.1.56.dist-info}/METADATA +3 -1
- {wipo_gbd_transformation-1.1.54.dist-info → wipo_gbd_transformation-1.1.56.dist-info}/RECORD +24 -17
- {wipo_gbd_transformation-1.1.54.dist-info → wipo_gbd_transformation-1.1.56.dist-info}/LICENSE.md +0 -0
- {wipo_gbd_transformation-1.1.54.dist-info → wipo_gbd_transformation-1.1.56.dist-info}/SOURCES_Stefans-Mac-Studio.local_Sep-18-063455-2024_Conflict.txt +0 -0
- {wipo_gbd_transformation-1.1.54.dist-info → wipo_gbd_transformation-1.1.56.dist-info}/WHEEL +0 -0
- {wipo_gbd_transformation-1.1.54.dist-info → wipo_gbd_transformation-1.1.56.dist-info}/entry_points.txt +0 -0
- {wipo_gbd_transformation-1.1.54.dist-info → wipo_gbd_transformation-1.1.56.dist-info}/top_level.txt +0 -0
|
@@ -1,130 +1,121 @@
|
|
|
1
1
|
{% from 'navigation.tmpl' import match %}
|
|
2
2
|
|
|
3
|
-
{%
|
|
4
|
-
{% set
|
|
5
|
-
|
|
6
|
-
kind: {{ kind }}
|
|
7
|
-
|
|
8
|
-
markFeature: {{ info.martype | translate_feature(info.marart) }}
|
|
3
|
+
{% set trademark = Trademark %}
|
|
4
|
+
{% set status = trademark.MarkCurrentStatusCode | translate_status %}
|
|
5
|
+
{% set officeCode = trademark.RegistrationOfficeCode %}
|
|
9
6
|
|
|
10
|
-
|
|
11
|
-
designatedCountries:
|
|
12
|
-
- CH
|
|
7
|
+
{% if officeCode == 'CH' %}
|
|
13
8
|
|
|
14
|
-
st13: {{
|
|
9
|
+
st13: {{ trademark.ApplicationNumber.ApplicationNumberText | st13('CH', appdate=trademark.ApplicationDate) }}
|
|
10
|
+
gbdStatus: {{ status }}
|
|
11
|
+
registrationOfficeCode: {{ officeCode }}
|
|
12
|
+
type: TRADEMARK
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
{% if not status == 'Delete' %}
|
|
15
|
+
kind: {{ tradenark.MarkCategory | translate_kind }}
|
|
16
|
+
markFeature: {{ trademark.MarkRepresentation.MarkFeatureCategory | translate_feature }}
|
|
17
|
+
designatedCountries:
|
|
18
|
+
- {{ officeCode }}
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
applicationNumber: {{ trademark.ApplicationNumber.ApplicationNumberText }}
|
|
21
|
+
applicationDate: {{ trademark.ApplicationDate | convertdate('%Y-%m-%d') }}
|
|
22
|
+
registrationNumber: {{ trademark | get_registration_nb(trademark.MarkCurrentStatusCode) }}
|
|
23
|
+
registrationDate: {{ trademark.RegistrationDate }}
|
|
24
|
+
applicationLanguageCode:
|
|
25
|
+
officeStatus: {{ trademark.MarkCurrentStatusCode }}
|
|
26
|
+
statusDate:
|
|
27
|
+
expiryDate: {{ trademark.ExpiryDate }}
|
|
22
28
|
|
|
23
|
-
|
|
24
|
-
terminationDate: {{ info.basdeld }}
|
|
29
|
+
markDisclaimerDetails:
|
|
25
30
|
|
|
26
|
-
|
|
27
|
-
gbdStatus: {{ info.basstate | translate_status(info.basdeld) }}
|
|
28
|
-
statusDate: {{ info.lastgazd }}
|
|
31
|
+
markDescriptionDetails:
|
|
29
32
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
wordMarkSpecification:
|
|
34
|
+
markVerbalElement:
|
|
35
|
+
{% set verbalElement = trademark.MarkRepresentation.MarkReproduction.WordMarkSpecification.MarkSignificantVerbalElementText | clean_verbal_element %}
|
|
36
|
+
- text: {{ verbalElement }}
|
|
37
|
+
languageCode:
|
|
33
38
|
|
|
34
39
|
markImageDetails:
|
|
35
|
-
|
|
36
|
-
|
|
40
|
+
{% call(img) match('MarkImage', trademark.MarkRepresentation.MarkImageBag) %}
|
|
41
|
+
- name: {{ img.FileName }}
|
|
42
|
+
colourIndicator: {{ img.MarkImageColourClaimedText | get_true_or_false }}
|
|
37
43
|
colourClaimed:
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
text: {{ verbal | trim }}
|
|
44
|
+
- text: {{ img.MarkImageColourClaimedText }}
|
|
45
|
+
languageCode: {{ img.MarkImageColourClaimedText | local_guess_language() }}
|
|
46
|
+
classification:
|
|
47
|
+
kind: Vienna
|
|
48
|
+
code:
|
|
49
|
+
-
|
|
50
|
+
{% endcall %}
|
|
46
51
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
text: {{ applicant.name }}
|
|
53
|
-
fullAddress:
|
|
54
|
-
- languageCode: {{ info.origlan }}
|
|
55
|
-
text: {{ applicant.addr }}
|
|
56
|
-
countryCode: {{ applicant.nat }}
|
|
57
|
-
{% endfor %}
|
|
52
|
+
markSoundDetails:
|
|
53
|
+
{% call(sound) match('MarkSoundDetails.MarkSound', trademark.MarkRepresentation.MarkSoundBag) %}
|
|
54
|
+
- filename: {{ sound.MarkSoundFilename }}
|
|
55
|
+
fileformat: {{ sound.MarkSoundFileFormat }}
|
|
56
|
+
{% endcall %}
|
|
58
57
|
|
|
59
|
-
|
|
60
|
-
{%
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
fullAddress:
|
|
65
|
-
- languageCode: {{ info.origlan }}
|
|
66
|
-
text: {{ representative.addr }}
|
|
67
|
-
countryCode: {{ representative.nat }}
|
|
68
|
-
{% endfor %}
|
|
69
|
-
|
|
70
|
-
{% if persons.correspondence %}
|
|
71
|
-
correspondence:
|
|
72
|
-
fullName:
|
|
73
|
-
- languageCode: {{ info.origlan }}
|
|
74
|
-
text: {{ persons.correspondence.name }}
|
|
75
|
-
fullAddress:
|
|
76
|
-
- languageCode: {{ info.origlan }}
|
|
77
|
-
text: {{ persons.correspondence.addr }}
|
|
78
|
-
countryCode: {{ persons.correspondence.nat }}
|
|
79
|
-
{% endif %}
|
|
58
|
+
markVideoDetails:
|
|
59
|
+
{% call(video) match('MarkVideoDetails.MarkVideo', trademark.MarkRepresentation) %}
|
|
60
|
+
- filename: {{ video.MarkVideoFilename }}
|
|
61
|
+
fileformat: {{ video.MarkVideoFileFormat }}
|
|
62
|
+
{% endcall %}
|
|
80
63
|
|
|
81
|
-
priorities:
|
|
82
|
-
{% call(prio) match('prigr.prio', info) %}
|
|
83
|
-
- countryCode: {{ prio.prinat }}
|
|
84
|
-
number: {{ prio.prinr }}
|
|
85
|
-
date: {{ prio.priappd }}
|
|
86
|
-
comment: {{ prigr.prirem }}
|
|
87
|
-
{% endcall %}
|
|
88
|
-
|
|
89
|
-
{% set (nc_gs, gs) = info.gsgr | structure_gs %}
|
|
90
|
-
{% if nc_gs.keys() | length > 0 %}
|
|
91
64
|
goodsServicesClassification:
|
|
92
65
|
kind: Nice
|
|
93
66
|
version: {{ ASK_THE_OFFICE }}
|
|
94
|
-
class:
|
|
95
|
-
|
|
96
|
-
- code: {{
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
{% for term in terms %}
|
|
101
|
-
- {{ term }}
|
|
102
|
-
{% endfor %}
|
|
103
|
-
{% endif %}
|
|
104
|
-
{% endfor %}
|
|
105
|
-
{% endif %}
|
|
67
|
+
class:
|
|
68
|
+
{% call(ClassDescription) match('ClassDescription', trademark.GoodsServicesBag.GoodsServices.ClassDescriptionBag) %}
|
|
69
|
+
- code: {{ ClassDescription.ClassNumber }}
|
|
70
|
+
terms: {{ ClassDescription.GoodsServicesDescriptionText }}
|
|
71
|
+
languageCode: {{ ClassDescription.GoodsServicesDescriptionText | local_guess_language() }}
|
|
72
|
+
{% endcall %}
|
|
106
73
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
{{
|
|
110
|
-
{
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
74
|
+
priorities:
|
|
75
|
+
{% call(priority) match('PriorityBag.Priority', trademark) %}
|
|
76
|
+
- countryCode: {{ priority.PriorityCountryCode }}
|
|
77
|
+
number: {{ priority.PriorityRegistrationNumber }}
|
|
78
|
+
date: {{ select_priority_date }}
|
|
79
|
+
{% endcall %}
|
|
80
|
+
|
|
81
|
+
publications:
|
|
82
|
+
{% call(publication) match('PublicationBag.Publication', trademark) %}
|
|
83
|
+
- identifier: {{ publication.PublicationIdentifier }}
|
|
84
|
+
date: {{ publication.PublicationDate }}
|
|
85
|
+
section: {{ publication.PublicationPage }}
|
|
86
|
+
{% endcall %}
|
|
114
87
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
88
|
+
applicants:
|
|
89
|
+
{% call(Applicant) match('Applicant', trademark.ApplicantBag) %}
|
|
90
|
+
- identifier:
|
|
91
|
+
kind:
|
|
92
|
+
fullName:
|
|
93
|
+
- text: {{ Applicant.Contact.Name.PersonName.PersonFullName }}
|
|
94
|
+
languageCode:
|
|
95
|
+
{% call(postalAddress) match('PostalAddress', Applicant.Contact.PostalAddressBag) %}
|
|
96
|
+
fullAddress:
|
|
97
|
+
{% set addr = postalAddress.PostalStructuredAddress | get_full_address %}
|
|
98
|
+
- text: {{ addr }}
|
|
99
|
+
languageCode: {{ addr | local_guess_language() }}
|
|
100
|
+
countryCode: {{ postalAddress.PostalStructuredAddress.CountryCode }}
|
|
101
|
+
{% endcall %}
|
|
127
102
|
{% endcall %}
|
|
128
103
|
|
|
129
|
-
|
|
104
|
+
representatives:
|
|
105
|
+
{% call(Representative) match('Representative', trademark.RepresentativeBag) %}
|
|
106
|
+
- identifier:
|
|
107
|
+
kind:
|
|
108
|
+
fullName:
|
|
109
|
+
- text: {{ Representative.Contact.Name.PersonName.PersonFullName }}
|
|
110
|
+
languageCode:
|
|
111
|
+
{% call(postalAddress) match('PostalAddress', Representative.Contact.PostalAddressBag) %}
|
|
112
|
+
fullAddress:
|
|
113
|
+
{% set addr = postalAddress.PostalStructuredAddress | get_full_address %}
|
|
114
|
+
- text: {{ addr }}
|
|
115
|
+
languageCode: {{ addr | local_guess_language() }}
|
|
116
|
+
countryCode: {{ postalAddress.PostalStructuredAddress.CountryCode }}
|
|
117
|
+
{% endcall %}
|
|
118
|
+
{% endcall %}
|
|
130
119
|
|
|
120
|
+
{% endif %}
|
|
121
|
+
{% endif %}
|
|
@@ -6,7 +6,6 @@ source = 'national'
|
|
|
6
6
|
# NA/T/197/593
|
|
7
7
|
# AP/M/2006/413
|
|
8
8
|
# A/D/1/825028
|
|
9
|
-
appnum_mask = [ '[A-Z]{2}/([A-Z])/\\d
|
|
10
|
-
'[A-Z]
|
|
11
|
-
'([A-Z])/D/1/(\\d*)' ]
|
|
9
|
+
appnum_mask = [ '([A-Z]{2})/([A-Z])/\\d*/(\\d*)',
|
|
10
|
+
'([A-Z])/[A-Z]/1/(\\d*)' ]
|
|
12
11
|
|
|
@@ -11,27 +11,33 @@ def translate_type(header):
|
|
|
11
11
|
code = header.TransactionCode
|
|
12
12
|
|
|
13
13
|
# extraction missing info.
|
|
14
|
-
if
|
|
14
|
+
if 'do not use' in code.lower():
|
|
15
15
|
raise Exception('Code "%s" encountered. Skipping.' % code)
|
|
16
16
|
|
|
17
17
|
if code == 'National Trademarks': return 'TRADEMARK'
|
|
18
|
+
if code == 'National Marks Act 2012': return 'TRADEMARK'
|
|
18
19
|
if code == 'Madrid Marks': return 'TRADEMARK'
|
|
19
20
|
if code == 'Banjul Trademark': return 'TRADEMARK'
|
|
21
|
+
if code == 'Banjul Protocol Marks': return 'TRADEMARK'
|
|
20
22
|
if code == 'DEFENSIVE MARK': return 'TRADEMARK'
|
|
23
|
+
if code == 'CERTIFICATION MARK': return 'TRADEMARK'
|
|
21
24
|
|
|
22
25
|
raise Exception('Type "%s" is not mapped.' % code)
|
|
23
26
|
|
|
24
27
|
def translate_kind(trademark, header):
|
|
25
28
|
subcode = header.TransactionSubCode
|
|
26
29
|
|
|
30
|
+
if subcode == 'Trade Mark': return ['Individual']
|
|
27
31
|
if subcode == 'PART A': return ['Individual']
|
|
28
32
|
if subcode == 'PART B': return ['Individual']
|
|
29
33
|
if subcode == 'Banjul Trademark': return ['Individual']
|
|
34
|
+
if subcode == 'Banjul Protocol Marks': return ['Individual']
|
|
30
35
|
if subcode == 'Madrid Protocol': return ['Individual']
|
|
31
36
|
if subcode == 'Madrid Agreement': return ['Individual']
|
|
32
37
|
if subcode == 'DEFENSIVE MARK': return ['Defensive']
|
|
38
|
+
if subcode == 'CERTIFICATION MARK': return ['Collective']
|
|
33
39
|
|
|
34
|
-
raise Exception('Kind "%s" not mapped.' %
|
|
40
|
+
raise Exception('Kind "%s" not mapped.' % subcode)
|
|
35
41
|
|
|
36
42
|
def translate_status(trademark):
|
|
37
43
|
status = trademark.MarkCurrentStatusCode
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
def translate_kind(kind):
|
|
4
|
+
if not kind: return ['Individual']
|
|
5
|
+
|
|
6
|
+
if kind == 'Individual mark': return ['Individual']
|
|
7
|
+
if kind == 'Collective mark': return ['Collective']
|
|
8
|
+
|
|
9
|
+
raise Exception('kind "%s" is not mapped.' % kind)
|
|
10
|
+
|
|
11
|
+
def translate_status(status):
|
|
12
|
+
if not status: return 'Ended'
|
|
13
|
+
|
|
14
|
+
if status in ['Registered',
|
|
15
|
+
'Granted']:
|
|
16
|
+
return 'Registered'
|
|
17
|
+
|
|
18
|
+
if status in ['Pending']:
|
|
19
|
+
return 'Pending'
|
|
20
|
+
|
|
21
|
+
if status in ['Refused',
|
|
22
|
+
'Shelved',
|
|
23
|
+
'Finally shelved',
|
|
24
|
+
'Ceased',
|
|
25
|
+
'Ceased/cancelled',
|
|
26
|
+
'Withdrawn']:
|
|
27
|
+
return 'Ended'
|
|
28
|
+
|
|
29
|
+
#return 'Unknown'
|
|
30
|
+
raise Exception('Status "%s" unmapped' % status)
|
|
31
|
+
|
|
32
|
+
def translate_feature(feature):
|
|
33
|
+
"""translation of mark feature"""
|
|
34
|
+
if not feature: return 'Undefined'
|
|
35
|
+
feature = feature.upper()
|
|
36
|
+
if feature == 'COMBINED/FIGURATIVE MARK': return 'Combined'
|
|
37
|
+
if feature == 'WORD MARK': return 'Word'
|
|
38
|
+
if feature == '3D-MARK': return "Three dimensional"
|
|
39
|
+
|
|
40
|
+
#return 'Unknown'
|
|
41
|
+
|
|
42
|
+
# raise Exception to recognize unmapped values
|
|
43
|
+
raise Exception('Feature "%s" unmapped' % feature)
|
|
44
|
+
|
|
45
|
+
def get_local_text(node):
|
|
46
|
+
if "$" in node:
|
|
47
|
+
return node["$"]
|
|
48
|
+
|
|
49
|
+
def get_local_texts(nodes):
|
|
50
|
+
text = ""
|
|
51
|
+
start = True
|
|
52
|
+
for node in nodes:
|
|
53
|
+
if "$" in node:
|
|
54
|
+
if start:
|
|
55
|
+
start = False
|
|
56
|
+
else:
|
|
57
|
+
text += ", "
|
|
58
|
+
text += node["$"]
|
|
59
|
+
return text
|
|
60
|
+
|
|
61
|
+
def get_full_address(postalStructuredAddress):
|
|
62
|
+
result = ""
|
|
63
|
+
if "addressLineText" in postalStructuredAddress:
|
|
64
|
+
for addressLineText in postalStructuredAddress["addressLineText"]:
|
|
65
|
+
# always empty, which is good
|
|
66
|
+
"""
|
|
67
|
+
if hasattr(addressLineText, '__value'):
|
|
68
|
+
if len(result) > 0:
|
|
69
|
+
result += ", "
|
|
70
|
+
result += addressLineText.__value
|
|
71
|
+
"""
|
|
72
|
+
if "cityName" in postalStructuredAddress:
|
|
73
|
+
if len(result) > 0:
|
|
74
|
+
result += ", "
|
|
75
|
+
result += postalStructuredAddress["cityName"]
|
|
76
|
+
if "countryCode" in postalStructuredAddress:
|
|
77
|
+
result += ", " + postalStructuredAddress["countryCode"]
|
|
78
|
+
if "postalCode" in postalStructuredAddress:
|
|
79
|
+
result += " " + postalStructuredAddress["postalCode"]
|
|
80
|
+
if len(result) == 0:
|
|
81
|
+
return
|
|
82
|
+
else:
|
|
83
|
+
return result.strip()
|
|
84
|
+
|
|
85
|
+
def local_guess_language(content):
|
|
86
|
+
if content == None:
|
|
87
|
+
return None
|
|
88
|
+
from lingua import Language, LanguageDetectorBuilder
|
|
89
|
+
detector = LanguageDetectorBuilder.from_all_spoken_languages().build()
|
|
90
|
+
language = detector.detect_language_of(content)
|
|
91
|
+
if language:
|
|
92
|
+
lang = language.iso_code_639_1.name.lower()
|
|
93
|
+
# we merge Norwegian flavors, Norwegian Bokmål and Norwegian Nynorsk
|
|
94
|
+
if lang == "nn" or lang =="nb":
|
|
95
|
+
lang = "no"
|
|
96
|
+
return lang
|
|
97
|
+
else:
|
|
98
|
+
return None
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
{% from 'navigation.tmpl' import match %}
|
|
2
|
+
{% from 'navigation.tmpl' import enumerate %}
|
|
3
|
+
|
|
4
|
+
{% call(trademark) match('trademark', trademarkBag) %}
|
|
5
|
+
|
|
6
|
+
{% call(applicationNumber) match('applicationNumber', trademark.trademarkTypeChoice1) %}
|
|
7
|
+
st13: {{ applicationNumber.applicationNumberText | st13('NO', appdate=trademark.trademarkTypeChoice2.applicationDate) }}
|
|
8
|
+
applicationNumber: {{ applicationNumber.applicationNumberText }}
|
|
9
|
+
{% endcall %}
|
|
10
|
+
applicationDate: {{ trademark.trademarkTypeChoice2.applicationDate | convertdate('%Y-%m-%d') }}
|
|
11
|
+
|
|
12
|
+
registrationNumber: {{ trademark.trademarkTypeChoice1.registrationNumber }}
|
|
13
|
+
registrationDate: {{ trademark.registrationDate }}
|
|
14
|
+
|
|
15
|
+
expiryDate: {{ trademark.expiryDate }}
|
|
16
|
+
# rarely passed
|
|
17
|
+
terminationDate:
|
|
18
|
+
|
|
19
|
+
{% set status = trademark.markCurrentStatusCode | translate_status %}
|
|
20
|
+
gbdStatus: {{ status }}
|
|
21
|
+
officeStatus: {{ trademark.markCurrentStatusCode }}
|
|
22
|
+
statusDate: {{ trademark.markCurrentStatusDate }}
|
|
23
|
+
|
|
24
|
+
registrationOfficeCode: "NO"
|
|
25
|
+
designatedCountries:
|
|
26
|
+
- "NO"
|
|
27
|
+
|
|
28
|
+
type: TRADEMARK
|
|
29
|
+
|
|
30
|
+
kind:
|
|
31
|
+
- Individual
|
|
32
|
+
|
|
33
|
+
markFeature: {{ trademark.markFeatureDescription | translate_feature() }}
|
|
34
|
+
# (Word|Stylized characters|Figurative|Combined|Three dimensional|Colour|Sound|Hologram|Olfactory|Motion|Municipal|Chimney|Other|Undefined)
|
|
35
|
+
|
|
36
|
+
kind:
|
|
37
|
+
- Individual
|
|
38
|
+
# (Individual|Collective|Certificate|Defensive|Other|Membership)
|
|
39
|
+
|
|
40
|
+
publicationDate: #
|
|
41
|
+
|
|
42
|
+
applicationLanguageCode:
|
|
43
|
+
# rarely passed
|
|
44
|
+
secondLanguageCode:
|
|
45
|
+
|
|
46
|
+
markDisclaimerDetails:
|
|
47
|
+
{% call(markDisclaimerText) match('markDisclaimerText', trademark.markDisclaimerBag) %}
|
|
48
|
+
- languageCode:
|
|
49
|
+
text: {{ markDisclaimerText | get_local_text() }}
|
|
50
|
+
{% endcall %}
|
|
51
|
+
|
|
52
|
+
markDescriptionDetails:
|
|
53
|
+
- languageCode:
|
|
54
|
+
text:
|
|
55
|
+
|
|
56
|
+
wordMarkSpecification:
|
|
57
|
+
markVerbalElement:
|
|
58
|
+
- languageCode:
|
|
59
|
+
text: {{ trademark.markRepresentation.markReproduction.wordMarkSpecification.markVerbalElementText | get_local_text() }}
|
|
60
|
+
markSignificantVerbalElement:
|
|
61
|
+
- languageCode:
|
|
62
|
+
text: {{ trademark.markRepresentation.markReproduction.wordMarkSpecification.markSignificantVerbalElementText | get_local_text() }}
|
|
63
|
+
markTranslation:
|
|
64
|
+
- languageCode:
|
|
65
|
+
text:
|
|
66
|
+
markTransliteration:
|
|
67
|
+
|
|
68
|
+
markImageDetails:
|
|
69
|
+
{% call(markImage) match('markImage', trademark.markRepresentation.markReproduction.markImageBag) %}
|
|
70
|
+
- name: {{ markImage.fileName }}
|
|
71
|
+
colourIndicator: {{ markImage.colourModeCategory }}
|
|
72
|
+
colourClaimed:
|
|
73
|
+
- languageCode:
|
|
74
|
+
text:
|
|
75
|
+
description:
|
|
76
|
+
{% call(markDescriptionText) match('markDescriptionText', trademark.markRepresentation.markDescriptionBag.markDescriptionBagTypeChoiceSequence) %}
|
|
77
|
+
- languageCode:
|
|
78
|
+
text: {{ markDescriptionText | get_local_text() }}
|
|
79
|
+
{% endcall %}
|
|
80
|
+
classification:
|
|
81
|
+
kind:
|
|
82
|
+
version:
|
|
83
|
+
code:
|
|
84
|
+
-
|
|
85
|
+
{% endcall %}
|
|
86
|
+
|
|
87
|
+
markSoundDetails:
|
|
88
|
+
- filename:
|
|
89
|
+
fileformat:
|
|
90
|
+
|
|
91
|
+
markVideoDetails:
|
|
92
|
+
- filename:
|
|
93
|
+
fileformat:
|
|
94
|
+
|
|
95
|
+
goodsServicesClassification:
|
|
96
|
+
kind: Nice
|
|
97
|
+
version:
|
|
98
|
+
class:
|
|
99
|
+
{% call(goodsServices) match('goodsServices', trademark.goodsServicesBag) %}
|
|
100
|
+
{% call(classDescription) match('classDescription', goodsServices.classDescriptionBag) %}
|
|
101
|
+
- code: {{ classDescription.classNumber }}
|
|
102
|
+
terms:
|
|
103
|
+
{% call(goodsServicesDescriptionText) match('goodsServicesDescriptionText', classDescription) %}
|
|
104
|
+
{{ goodsServicesDescriptionText.localizedTextType | get_local_text | local_guess_language() }}:
|
|
105
|
+
- {{ goodsServicesDescriptionText.localizedTextType | get_local_text }}
|
|
106
|
+
{% endcall %}
|
|
107
|
+
{% endcall %}
|
|
108
|
+
{% endcall %}
|
|
109
|
+
|
|
110
|
+
priorities:
|
|
111
|
+
{% call(priority) match('priority', trademark.priorityBag) %}
|
|
112
|
+
- countryCode: {{ priority.priorityCountryCode }}
|
|
113
|
+
number: {{ priority.applicationNumber.applicationNumberText }}
|
|
114
|
+
date: {{ priority.priorityApplicationFilingDate }}
|
|
115
|
+
comment:
|
|
116
|
+
{% endcall %}
|
|
117
|
+
|
|
118
|
+
publications:
|
|
119
|
+
- identifier:
|
|
120
|
+
date:
|
|
121
|
+
section:
|
|
122
|
+
|
|
123
|
+
representatives:
|
|
124
|
+
{% call(representative) match('representative', trademark.representativeBag) %}
|
|
125
|
+
- identifier: {{ representative.partyIdentifier }}
|
|
126
|
+
kind:
|
|
127
|
+
fullName:
|
|
128
|
+
- languageCode:
|
|
129
|
+
text: {{ representative.contact.contactTypeChoiceSequence.name.entityName.transliterationName | get_local_texts() }}
|
|
130
|
+
fullAddress:
|
|
131
|
+
{% call(postalAddress) match('postalAddress', representative.contact.contactTypeChoiceSequence.postalAddressBag) %}
|
|
132
|
+
- languageCode:
|
|
133
|
+
text: {{ postalAddress.postalStructuredAddress | get_full_address() }}
|
|
134
|
+
{% endcall %}
|
|
135
|
+
countryCode:
|
|
136
|
+
{% endcall %}
|
|
137
|
+
|
|
138
|
+
correspondence:
|
|
139
|
+
fullName:
|
|
140
|
+
- languageCode:
|
|
141
|
+
text:
|
|
142
|
+
fullAddress:
|
|
143
|
+
- languageCode:
|
|
144
|
+
text:
|
|
145
|
+
countryCode:
|
|
146
|
+
|
|
147
|
+
applicants:
|
|
148
|
+
{% call(applicant) match('applicant', trademark.applicantBag) %}
|
|
149
|
+
- identifier: {{ applicant.partyIdentifier }}
|
|
150
|
+
kind:
|
|
151
|
+
fullName:
|
|
152
|
+
- languageCode:
|
|
153
|
+
text: {{ applicant.contact.contactTypeChoiceSequence.name.entityName.transliterationName | get_local_texts() }}
|
|
154
|
+
fullAddress:
|
|
155
|
+
{% call(postalAddress) match('postalAddress', applicant.contact.contactTypeChoiceSequence.postalAddressBag) %}
|
|
156
|
+
- languageCode:
|
|
157
|
+
text: {{ postalAddress.postalStructuredAddress | get_full_address() }}
|
|
158
|
+
{% endcall %}
|
|
159
|
+
countryCode:
|
|
160
|
+
{% endcall %}
|
|
161
|
+
|
|
162
|
+
{% endcall %}
|
|
163
|
+
|
|
164
|
+
# here goes extra information that is office specific and that is pertinent for us to retain.
|
|
165
|
+
extra:
|
|
@@ -1,50 +1,79 @@
|
|
|
1
|
-
/
|
|
2
|
-
__/
|
|
3
|
-
____/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
1
|
+
/Transaction
|
|
2
|
+
__/TradeMarkTransactionBody
|
|
3
|
+
____/TransactionContentDetails
|
|
4
|
+
______/TransactionCode
|
|
5
|
+
______/TransactionData
|
|
6
|
+
________/TradeMarkApplication
|
|
7
|
+
__________/TradeMarkDetails
|
|
8
|
+
____________/TradeMark
|
|
9
|
+
______________/ApplicantDetails
|
|
10
|
+
________________/Applicant
|
|
11
|
+
__________________/ApplicantAddressBook
|
|
12
|
+
____________________/FormattedNameAddress
|
|
13
|
+
______________________/Address
|
|
14
|
+
________________________/AddressCountryCode
|
|
15
|
+
______________________/Name
|
|
16
|
+
________________________/FreeFormatName
|
|
17
|
+
__________________________/FreeFormatNameDetails
|
|
18
|
+
____________________________/FreeFormatNameLine
|
|
19
|
+
____________________________/FreeFormatNameLine[@languageCode=en]
|
|
20
|
+
______________/ApplicationDate
|
|
21
|
+
______________/ApplicationLanguageCode
|
|
22
|
+
______________/ApplicationNumber
|
|
23
|
+
______________/ExpiryDate
|
|
24
|
+
______________/GoodsServicesDetails
|
|
25
|
+
________________/GoodsServices
|
|
26
|
+
__________________/ClassDescriptionDetails
|
|
27
|
+
____________________/ClassDescription
|
|
28
|
+
______________________/ClassNumber
|
|
29
|
+
______________________/GoodsServicesDescription
|
|
30
|
+
______________________/GoodsServicesDescription[@languageCode=en]
|
|
31
|
+
______________/MarkCurrentStatusCode
|
|
32
|
+
______________/MarkCurrentStatusDate
|
|
33
|
+
______________/MarkDisclaimerDetails
|
|
34
|
+
________________/MarkDisclaimer
|
|
35
|
+
________________/MarkDisclaimer[@languageCode=en]
|
|
36
|
+
______________/MarkEventDetails
|
|
37
|
+
________________/MarkEvent
|
|
38
|
+
__________________/MarkEventCode
|
|
39
|
+
__________________/MarkEventDate
|
|
40
|
+
__________________/OfficeSpecificMarkEventName
|
|
41
|
+
______________/MarkFeature
|
|
42
|
+
______________/MarkImageDetails
|
|
43
|
+
________________/MarkImage
|
|
44
|
+
__________________/MarkImageCategory
|
|
45
|
+
____________________/CategoryCodeDetails
|
|
46
|
+
______________________/CategoryCode
|
|
47
|
+
____________________/CategoryKind
|
|
48
|
+
____________________/CategoryVersion
|
|
49
|
+
__________________/MarkImageFileFormat
|
|
50
|
+
__________________/MarkImageFilename
|
|
51
|
+
______________/PriorityDetails
|
|
52
|
+
________________/Priority
|
|
53
|
+
__________________/PriorityCountryCode
|
|
54
|
+
__________________/PriorityDate
|
|
55
|
+
__________________/PriorityNumber
|
|
56
|
+
______________/PublicationDetails
|
|
57
|
+
________________/Publication
|
|
58
|
+
__________________/PublicationDate
|
|
59
|
+
__________________/PublicationIdentifier
|
|
60
|
+
__________________/PublicationSection
|
|
61
|
+
______________/RegistrationDate
|
|
62
|
+
______________/RegistrationNumber
|
|
63
|
+
______________/RegistrationOfficeCode
|
|
64
|
+
______________/RepresentativeDetails
|
|
65
|
+
________________/Representative
|
|
66
|
+
__________________/RepresentativeAddressBook
|
|
67
|
+
____________________/FormattedNameAddress
|
|
68
|
+
______________________/Address
|
|
69
|
+
________________________/AddressCountryCode
|
|
70
|
+
______________________/Name
|
|
71
|
+
________________________/FreeFormatName
|
|
72
|
+
__________________________/FreeFormatNameDetails
|
|
73
|
+
____________________________/FreeFormatNameLine
|
|
74
|
+
____________________________/FreeFormatNameLine[@languageCode=en]
|
|
75
|
+
______________/WordMarkSpecification
|
|
76
|
+
________________/MarkVerbalElementText
|
|
77
|
+
________________/MarkVerbalElementText[@languageCode=en]
|
|
78
|
+
______/TransactionIdentifier
|
|
79
|
+
______/TransactionSubCode
|