wipo-gbd-transformation 1.1.39__py3-none-any.whl → 1.1.42__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/bztm/__init__.py +16 -0
- gbdtransformation/brands/bztm/filters.py +77 -0
- gbdtransformation/brands/bztm/schema +87 -0
- gbdtransformation/brands/bztm/tests/__init__.py +0 -0
- gbdtransformation/brands/metm/__init__.py +1 -1
- {wipo_gbd_transformation-1.1.39.dist-info → wipo_gbd_transformation-1.1.42.dist-info}/METADATA +1 -1
- {wipo_gbd_transformation-1.1.39.dist-info → wipo_gbd_transformation-1.1.42.dist-info}/RECORD +12 -15
- gbdtransformation/brands/xxtm/__init__.py +0 -2
- gbdtransformation/brands/xxtm/filters.py +0 -60
- gbdtransformation/brands/xxtm/schema +0 -4
- gbdtransformation/brands/xxtm/template.yml +0 -183
- gbdtransformation/designs/bnid/__init__.py +0 -5
- gbdtransformation/designs/bnid/filters.py +0 -57
- gbdtransformation/designs/bnid/schema +0 -80
- /gbdtransformation/{designs/bnid → brands/bztm}/template.yml +0 -0
- {wipo_gbd_transformation-1.1.39.dist-info → wipo_gbd_transformation-1.1.42.dist-info}/LICENSE.md +0 -0
- {wipo_gbd_transformation-1.1.39.dist-info → wipo_gbd_transformation-1.1.42.dist-info}/WHEEL +0 -0
- {wipo_gbd_transformation-1.1.39.dist-info → wipo_gbd_transformation-1.1.42.dist-info}/entry_points.txt +0 -0
- {wipo_gbd_transformation-1.1.39.dist-info → wipo_gbd_transformation-1.1.42.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
render = 'JSON'
|
|
2
|
+
source = 'national'
|
|
3
|
+
|
|
4
|
+
# TN/M/100/901864 # madrid
|
|
5
|
+
# TN/E/2002/001864 # etrangere
|
|
6
|
+
# TN/T/2019/001877 # local
|
|
7
|
+
# TN/S/2005/001886
|
|
8
|
+
appnum_mask = [ 'BZ/M/\\d*/(\\d*)',
|
|
9
|
+
'A/T/\\d*/(\\d*)'
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
# 100/901864
|
|
13
|
+
# 2009/002484
|
|
14
|
+
# 001818
|
|
15
|
+
regnum_mask = [ '\\d*/(\\d*)',
|
|
16
|
+
'(\\d*)' ]
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import gbdtransformation.brands.ipas.filters as ipas
|
|
2
|
+
import gbdtransformation.common.filters as commons
|
|
3
|
+
|
|
4
|
+
ignore_namespace = [
|
|
5
|
+
'http://www.wipo.int/standards/XMLSchema/trademarks',
|
|
6
|
+
'http://www.wipo.int/standards/XMLSchema/wo-trademarks']
|
|
7
|
+
|
|
8
|
+
def get_appdate(appdate, appnum):
|
|
9
|
+
return appnum.split('/')[-2].zfill(4)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def translate_type(header):
|
|
13
|
+
code = header.TransactionCode
|
|
14
|
+
|
|
15
|
+
if code == 'Trademark': return 'TRADEMARK'
|
|
16
|
+
if code == 'TM Madrid': return 'TRADEMARK'
|
|
17
|
+
|
|
18
|
+
raise Exception('Type "%s" is not mapped.' % code)
|
|
19
|
+
|
|
20
|
+
def translate_kind(trademark, header):
|
|
21
|
+
subcode = header.TransactionSubCode
|
|
22
|
+
|
|
23
|
+
if subcode == 'Trademark': return ['Individual']
|
|
24
|
+
if subcode == 'Madrid Protocol': return ['Individual']
|
|
25
|
+
|
|
26
|
+
raise Exception('Kind "%s" not mapped.' % subcode)
|
|
27
|
+
|
|
28
|
+
def translate_status(trademark):
|
|
29
|
+
status = trademark.MarkCurrentStatusCode
|
|
30
|
+
|
|
31
|
+
return ipas.translate_status(status)
|
|
32
|
+
|
|
33
|
+
def translate_feature(trademark):
|
|
34
|
+
feature = trademark.MarkFeature
|
|
35
|
+
|
|
36
|
+
# if not feature: return 'Undefined'
|
|
37
|
+
|
|
38
|
+
return ipas.translate_feature(feature)
|
|
39
|
+
|
|
40
|
+
def translate_event(event):
|
|
41
|
+
return ipas.translate_event(event)
|
|
42
|
+
|
|
43
|
+
# ---------------------------------------
|
|
44
|
+
# TODO: separate values like
|
|
45
|
+
# {'fr': ['PICO BELLO بيكوبالو']}
|
|
46
|
+
def verbal_lang_map(markVerbalElements, applang=None):
|
|
47
|
+
# print( ipas.verbal_lang_map(markVerbalElements, applang=applang))
|
|
48
|
+
return ipas.verbal_lang_map(markVerbalElements, applang=applang)
|
|
49
|
+
|
|
50
|
+
def get_registration_nb(trademark, tmstatus):
|
|
51
|
+
if trademark.RegistrationNumber:
|
|
52
|
+
return trademark.RegistrationNumber
|
|
53
|
+
|
|
54
|
+
if not tmstatus in ['Expired', 'Registered']:
|
|
55
|
+
return None
|
|
56
|
+
|
|
57
|
+
# a way to deduce the registration number
|
|
58
|
+
appnum_parts = trademark.ApplicationNumber.split('/')
|
|
59
|
+
regnum = '%s/%s' % (appnum_parts[-2], appnum_parts[-1])
|
|
60
|
+
return regnum
|
|
61
|
+
|
|
62
|
+
def get_expiry_date(trademark, tmstatus):
|
|
63
|
+
return ipas.get_expiry_date(trademark, tmstatus)
|
|
64
|
+
|
|
65
|
+
def get_registration_date(trademark, tmstatus):
|
|
66
|
+
return ipas.get_registration_date(trademark, tmstatus)
|
|
67
|
+
|
|
68
|
+
def is_international(header):
|
|
69
|
+
code = header.TransactionCode
|
|
70
|
+
return code == 'Marque Madrid'
|
|
71
|
+
|
|
72
|
+
# TN/M/100/673426
|
|
73
|
+
def get_ir_refnum(appnum):
|
|
74
|
+
return appnum.split('/')[-1]
|
|
75
|
+
|
|
76
|
+
def get_goods_services(goods_services):
|
|
77
|
+
return ipas.get_goods_services(goods_services)
|
|
@@ -0,0 +1,87 @@
|
|
|
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
|
+
________________________/FreeFormatAddress
|
|
16
|
+
__________________________/FreeFormatAddressLine
|
|
17
|
+
______________________/Name
|
|
18
|
+
________________________/FreeFormatName
|
|
19
|
+
__________________________/FreeFormatNameDetails
|
|
20
|
+
____________________________/FreeFormatNameLine
|
|
21
|
+
____________________________/FreeFormatNameLine[@languageCode=en]
|
|
22
|
+
______________/ApplicationDate
|
|
23
|
+
______________/ApplicationLanguageCode
|
|
24
|
+
______________/ApplicationNumber
|
|
25
|
+
______________/ExpiryDate
|
|
26
|
+
______________/GoodsServicesDetails
|
|
27
|
+
________________/GoodsServices
|
|
28
|
+
__________________/ClassDescriptionDetails
|
|
29
|
+
____________________/ClassDescription
|
|
30
|
+
______________________/ClassNumber
|
|
31
|
+
______________________/GoodsServicesDescription
|
|
32
|
+
______________________/GoodsServicesDescription[@languageCode=en]
|
|
33
|
+
______________/KindMark
|
|
34
|
+
______________/MarkCurrentStatusCode
|
|
35
|
+
______________/MarkCurrentStatusDate
|
|
36
|
+
______________/MarkDisclaimerDetails
|
|
37
|
+
________________/MarkDisclaimer
|
|
38
|
+
________________/MarkDisclaimer[@languageCode=en]
|
|
39
|
+
______________/MarkEventDetails
|
|
40
|
+
________________/MarkEvent
|
|
41
|
+
__________________/MarkEventCode
|
|
42
|
+
__________________/MarkEventDate
|
|
43
|
+
__________________/OfficeSpecificMarkEventCode
|
|
44
|
+
__________________/OfficeSpecificMarkEventDescription
|
|
45
|
+
__________________/OfficeSpecificMarkEventDescription[@languageCode=en]
|
|
46
|
+
______________/MarkFeature
|
|
47
|
+
______________/MarkImageDetails
|
|
48
|
+
________________/MarkImage
|
|
49
|
+
__________________/MarkImageCategory
|
|
50
|
+
____________________/CategoryCodeDetails
|
|
51
|
+
______________________/CategoryCode
|
|
52
|
+
____________________/CategoryKind
|
|
53
|
+
____________________/CategoryVersion
|
|
54
|
+
__________________/MarkImageColourClaimedText
|
|
55
|
+
__________________/MarkImageColourClaimedText[@languageCode=en]
|
|
56
|
+
__________________/MarkImageFileFormat
|
|
57
|
+
__________________/MarkImageFilename
|
|
58
|
+
______________/PriorityDetails
|
|
59
|
+
________________/Priority
|
|
60
|
+
__________________/PriorityCountryCode
|
|
61
|
+
__________________/PriorityDate
|
|
62
|
+
__________________/PriorityNumber
|
|
63
|
+
______________/PublicationDetails
|
|
64
|
+
________________/Publication
|
|
65
|
+
__________________/PublicationDate
|
|
66
|
+
__________________/PublicationIdentifier
|
|
67
|
+
______________/RegistrationDate
|
|
68
|
+
______________/RegistrationNumber
|
|
69
|
+
______________/RegistrationOfficeCode
|
|
70
|
+
______________/RepresentativeDetails
|
|
71
|
+
________________/Representative
|
|
72
|
+
__________________/RepresentativeAddressBook
|
|
73
|
+
____________________/FormattedNameAddress
|
|
74
|
+
______________________/Address
|
|
75
|
+
________________________/AddressCountryCode
|
|
76
|
+
________________________/FreeFormatAddress
|
|
77
|
+
__________________________/FreeFormatAddressLine
|
|
78
|
+
______________________/Name
|
|
79
|
+
________________________/FreeFormatName
|
|
80
|
+
__________________________/FreeFormatNameDetails
|
|
81
|
+
____________________________/FreeFormatNameLine
|
|
82
|
+
____________________________/FreeFormatNameLine[@languageCode=en]
|
|
83
|
+
______________/WordMarkSpecification
|
|
84
|
+
________________/MarkVerbalElementText
|
|
85
|
+
________________/MarkVerbalElementText[@languageCode=en]
|
|
86
|
+
______/TransactionIdentifier
|
|
87
|
+
______/TransactionSubCode
|
|
File without changes
|
{wipo_gbd_transformation-1.1.39.dist-info → wipo_gbd_transformation-1.1.42.dist-info}/RECORD
RENAMED
|
@@ -58,6 +58,11 @@ gbdtransformation/brands/bwtm/filters.py,sha256=LsXFk5Wbg4djPmGy2s3amPp69nzd5apO
|
|
|
58
58
|
gbdtransformation/brands/bwtm/schema,sha256=AP0MxQyD0hY4APRh8nxitlxMqJYJB4AaaTJ8y20-XBA,3283
|
|
59
59
|
gbdtransformation/brands/bwtm/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
|
|
60
60
|
gbdtransformation/brands/bwtm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
+
gbdtransformation/brands/bztm/__init__.py,sha256=ofMGRu7dFCn4bDyenW4fj7EgCf19JOZelGM-4Xod1kQ,324
|
|
62
|
+
gbdtransformation/brands/bztm/filters.py,sha256=KtIYFTAbZQBusVX5bvGLRT1VDuFkq-UtvepI_C5QlXE,2297
|
|
63
|
+
gbdtransformation/brands/bztm/schema,sha256=AP0MxQyD0hY4APRh8nxitlxMqJYJB4AaaTJ8y20-XBA,3283
|
|
64
|
+
gbdtransformation/brands/bztm/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
|
|
65
|
+
gbdtransformation/brands/bztm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
66
|
gbdtransformation/brands/catm/__init__.py,sha256=pMtR-N5slJD0QHJU36_dbeWyqoqn4Q0eaMOmfO4Ed_o,270
|
|
62
67
|
gbdtransformation/brands/catm/filters.py,sha256=_bjcSr1EccujS-zJnUAIqtacOxDTmY4PfCrYuQqIeio,8204
|
|
63
68
|
gbdtransformation/brands/catm/schema,sha256=Xace88lwiEefhHkk6Zg12dzVF237nMy06HMISEXaTwk,34762
|
|
@@ -229,7 +234,7 @@ gbdtransformation/brands/mdtm/__init__.py,sha256=UHmbQDIPDdApISBKfO9tKOX6LgUQ_Ib
|
|
|
229
234
|
gbdtransformation/brands/mdtm/filters.py,sha256=OCNuSdhTHZ-BROQtR_kME0UMNfAw5rYTCrtKiELDC8E,2100
|
|
230
235
|
gbdtransformation/brands/mdtm/schema,sha256=tfKmy1EAbBSHBODWEWnmxGQ7shVL1MV_g2JJFaH4buc,3498
|
|
231
236
|
gbdtransformation/brands/mdtm/template.yml,sha256=51cYNG0PTG_v8rIydL05-i72uHt1k0C6tKJ28PCLm3c,4943
|
|
232
|
-
gbdtransformation/brands/metm/__init__.py,sha256=
|
|
237
|
+
gbdtransformation/brands/metm/__init__.py,sha256=0LO2jD7KrOqIqnmVh9gjnFXk2W489ZS5f4JohD0NYrA,86
|
|
233
238
|
gbdtransformation/brands/metm/filters.py,sha256=wpbuXXsKwq7EJ2Q_UArd1VRTVqZTgnuukf_iivlac6o,2583
|
|
234
239
|
gbdtransformation/brands/metm/schema,sha256=AP0MxQyD0hY4APRh8nxitlxMqJYJB4AaaTJ8y20-XBA,3283
|
|
235
240
|
gbdtransformation/brands/metm/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
|
|
@@ -418,10 +423,6 @@ gbdtransformation/brands/wstm/schema,sha256=TFrF4FR76cytcbtQkDWxtF74I0tCPRDIvWRF
|
|
|
418
423
|
gbdtransformation/brands/wstm/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
|
|
419
424
|
gbdtransformation/brands/wstm/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
420
425
|
gbdtransformation/brands/wstm/tests/test.xml.gz,sha256=UKm7LTvKaETUtHMKurFGqkqXO1Rh-4x1Jo2wyZOvwJ8,1284
|
|
421
|
-
gbdtransformation/brands/xxtm/__init__.py,sha256=Cdy9Ki01mAvufymKb9QSLwfFggaoerOenq6BxhPu500,66
|
|
422
|
-
gbdtransformation/brands/xxtm/filters.py,sha256=YCaQ6yH2LINwCQvbPHDhnORQyWglbswLlSOY6ur3KXQ,1874
|
|
423
|
-
gbdtransformation/brands/xxtm/schema,sha256=KaFhfG6P5SE787wkAuME6hhpcg7vLnSb9x1rW_0EL3M,163
|
|
424
|
-
gbdtransformation/brands/xxtm/template.yml,sha256=Iec6yINK8xiB1o5ZdPcqHpGjrCdeHo1tt7-XT99XFwg,4566
|
|
425
426
|
gbdtransformation/brands/xxxx/__init__.py,sha256=fricc3VHm4BwGRFKIIqB0t-NtP3tTVRrEYee_gWpiFo,172
|
|
426
427
|
gbdtransformation/brands/xxxx/filters.py,sha256=YCaQ6yH2LINwCQvbPHDhnORQyWglbswLlSOY6ur3KXQ,1874
|
|
427
428
|
gbdtransformation/brands/xxxx/schema,sha256=g_oWkd7k2e5fAQR1BdNkPSsIgP3dkTyc7esWo_UOHQA,163
|
|
@@ -461,10 +462,6 @@ gbdtransformation/designs/alid/__init__.py,sha256=0kyp4Yt-Kg9aA3BN4CRURi7-5evAVd
|
|
|
461
462
|
gbdtransformation/designs/alid/filters.py,sha256=mWXLCYZr5davrmog1VAgtm7tDwwrRx6meOfpU2W0SiQ,1563
|
|
462
463
|
gbdtransformation/designs/alid/schema,sha256=4W6aAkQ4JFTzOEVGYRWlWpsieoIIWoVqhLLnGzI3MjM,3502
|
|
463
464
|
gbdtransformation/designs/alid/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
|
|
464
|
-
gbdtransformation/designs/bnid/__init__.py,sha256=-vF4B_-fuOTvegI5lTsg81NN_vf-pOkBtC-KaEnGD1A,83
|
|
465
|
-
gbdtransformation/designs/bnid/filters.py,sha256=nCY1ANnzl0RiZYfyhL-fl_uUh8rMp2FF5f-O3l-zb7k,1562
|
|
466
|
-
gbdtransformation/designs/bnid/schema,sha256=BSzYzhQUcv3cLI-rDSLEEcIAOxMSIgQClvfKDVVTyak,3145
|
|
467
|
-
gbdtransformation/designs/bnid/template.yml,sha256=PO7s1HDQM9ushIJuIX3z_dfWO-f62YDzBG_sYKDlnG8,34
|
|
468
465
|
gbdtransformation/designs/ipas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
469
466
|
gbdtransformation/designs/ipas/filters.py,sha256=TytwuAxktVKoeq04ffZT_BP6JZOiMe58eO7nkf5Cnzw,3618
|
|
470
467
|
gbdtransformation/designs/ipas/template.yml,sha256=lPfqFnc5cIkkVHE_4HaMZek31i1bNWBjKRIIc65i5hE,7396
|
|
@@ -484,9 +481,9 @@ gbdtransformation/utilities/st66.xsd,sha256=co8aFN3a5TpudllRttWmfLeiZu8ulNipfeXm
|
|
|
484
481
|
schemas/ShazamConfig.py,sha256=D67os5B11C41h_WZ7kk54Ss0Kk7tHh8W0d_1c_aX-lY,1191
|
|
485
482
|
schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
486
483
|
schemas/schema_extractor.py,sha256=3-ImtnI777f6b3VA0A_w-NoXdlGz5VZMzK6MnPdQQAY,10294
|
|
487
|
-
wipo_gbd_transformation-1.1.
|
|
488
|
-
wipo_gbd_transformation-1.1.
|
|
489
|
-
wipo_gbd_transformation-1.1.
|
|
490
|
-
wipo_gbd_transformation-1.1.
|
|
491
|
-
wipo_gbd_transformation-1.1.
|
|
492
|
-
wipo_gbd_transformation-1.1.
|
|
484
|
+
wipo_gbd_transformation-1.1.42.dist-info/LICENSE.md,sha256=6r2dL13EwZqSt2ellLbJRFTA-6ECIDOer4YthCfkac0,35654
|
|
485
|
+
wipo_gbd_transformation-1.1.42.dist-info/METADATA,sha256=GLVT8s1SkuPDJkjhGnvdxxkrosegBe8H05DX6gi5eCg,485
|
|
486
|
+
wipo_gbd_transformation-1.1.42.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
|
487
|
+
wipo_gbd_transformation-1.1.42.dist-info/entry_points.txt,sha256=CiiRxivMelcgA7W_4rzY1fG-AGEarhpXQUlKYzKWsOI,165
|
|
488
|
+
wipo_gbd_transformation-1.1.42.dist-info/top_level.txt,sha256=oU1j-JNLga18Fd-EV6Xl9wM8zxYoNVEzb7P8MDhTPJg,26
|
|
489
|
+
wipo_gbd_transformation-1.1.42.dist-info/RECORD,,
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# standard gbd definitions
|
|
2
|
-
from gbdtransformation.brands import kinds as std_kinds
|
|
3
|
-
from gbdtransformation.brands import status as std_status
|
|
4
|
-
from gbdtransformation.brands import features as std_features
|
|
5
|
-
from gbdtransformation.brands import events as std_events
|
|
6
|
-
|
|
7
|
-
# namespaces defined in XML and to be ignored in procecssing
|
|
8
|
-
ignore_namespace = []
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
# -------------------------------------------------------------
|
|
12
|
-
# data translation helpers:
|
|
13
|
-
# translate values from office interpretation to gbd equivalent
|
|
14
|
-
# -------------------------------------------------------------
|
|
15
|
-
|
|
16
|
-
def translate_kind(kind):
|
|
17
|
-
"""translation of the kind of trademark to a
|
|
18
|
-
multivalue gbd interpretation"""
|
|
19
|
-
|
|
20
|
-
# out-of-the-box match
|
|
21
|
-
if kind.capitalize() in std_kinds:
|
|
22
|
-
return [kind.capitalize()]
|
|
23
|
-
|
|
24
|
-
# __insert here__ : translation logic
|
|
25
|
-
|
|
26
|
-
# raise Exception to recognize unmapped values
|
|
27
|
-
raise Exception('kind "%s" is not mapped.' % kind)
|
|
28
|
-
|
|
29
|
-
def translate_status(status):
|
|
30
|
-
"""translation of mark status"""
|
|
31
|
-
# a required data from office. if not present and no way to guess,
|
|
32
|
-
# return Unknown
|
|
33
|
-
if not status: return 'Unknown'
|
|
34
|
-
|
|
35
|
-
# out-of-the-box match
|
|
36
|
-
if status.capitalize() in std_status:
|
|
37
|
-
return status.capitalize()
|
|
38
|
-
|
|
39
|
-
# __insert here__ : translation logic
|
|
40
|
-
|
|
41
|
-
# raise Exception to recognize unmapped values
|
|
42
|
-
raise Exception('Status "%s" unmapped' % status)
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def translate_feature(feature):
|
|
46
|
-
"""translation of mark feature"""
|
|
47
|
-
|
|
48
|
-
# needed information from office
|
|
49
|
-
# if office cannot provide information, then agree on a way to guess (uatm)
|
|
50
|
-
if not feature: return 'Undefined'
|
|
51
|
-
|
|
52
|
-
# out-of-the-box match
|
|
53
|
-
if feature.capitalize() in std_features:
|
|
54
|
-
return feature.capitalize()
|
|
55
|
-
|
|
56
|
-
# __insert here__ : translation logic
|
|
57
|
-
|
|
58
|
-
# raise Exception to recognize unmapped values
|
|
59
|
-
raise Exception('Feature "%s" unmapped' % feature)
|
|
60
|
-
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
{% from 'navigation.tmpl' import match %}
|
|
2
|
-
|
|
3
|
-
# common filter methods accessible in this template
|
|
4
|
-
# gbdtransformation.common.filters
|
|
5
|
-
# .convertdate
|
|
6
|
-
# .contains
|
|
7
|
-
# .append
|
|
8
|
-
# .guess_language
|
|
9
|
-
# . ...
|
|
10
|
-
# gbdtransformation.brands.filters
|
|
11
|
-
# .st13
|
|
12
|
-
# .pad_vienna
|
|
13
|
-
# .split_terms (for goods and services)
|
|
14
|
-
#
|
|
15
|
-
# TESTING:
|
|
16
|
-
# developing the template:
|
|
17
|
-
# see the transformation output:
|
|
18
|
-
# gbd-transform /data/brands/collections/xxtm/ xxtm -t1
|
|
19
|
-
# test for transformation errors:
|
|
20
|
-
# gbd-transform /data/brands/collections/xxtm/ xxtm -r200 -w4 -q
|
|
21
|
-
# validating the template:
|
|
22
|
-
# gbd-transform /data/brands/collections/xxtm/ xxtm -r2000 -w40 -q --qc
|
|
23
|
-
|
|
24
|
-
brand:
|
|
25
|
-
type: # (TRADEMARK|EMBLEM|AOP|INN)
|
|
26
|
-
kind: # (Individual|Collective|Certificate|Guarantee|Defensive|Other)
|
|
27
|
-
markFeature: # (Word|Stylized characters|Figurative|Combined|Three dimensional|Colour|Sound|Hologram|Olfactory|Motion|Municipal|Chimney|Other|Undefined)
|
|
28
|
-
|
|
29
|
-
registrationOfficeCode:
|
|
30
|
-
designatedCountries:
|
|
31
|
-
- str (CountryCode)
|
|
32
|
-
|
|
33
|
-
# rarely passed
|
|
34
|
-
filingPlace:
|
|
35
|
-
|
|
36
|
-
# some collections indicate that the application
|
|
37
|
-
# originates from international filing and provide IR number
|
|
38
|
-
# (question to ask in GBD participation questionnaire)
|
|
39
|
-
applicationRefNumber:
|
|
40
|
-
applicationRefOrigin:
|
|
41
|
-
|
|
42
|
-
# can be deduced from appnum given office cc and (optional) appdate
|
|
43
|
-
st13: # {{ Trademark.ApplicationNumber | st13('XX', appdate=... }}
|
|
44
|
-
|
|
45
|
-
applicationNumber:
|
|
46
|
-
# dates can be converted if not matching expected format
|
|
47
|
-
applicationDate: # ex: {{ Trademark.ApplicationDate | convertdate('%Y%m%d') }}
|
|
48
|
-
|
|
49
|
-
# some collections have registration number
|
|
50
|
-
# equals application number when registered
|
|
51
|
-
registrationNumber:
|
|
52
|
-
# some collections we can guess registration date
|
|
53
|
-
# from event list
|
|
54
|
-
registrationDate:
|
|
55
|
-
|
|
56
|
-
applicationLanguageCode:
|
|
57
|
-
# rarely passed
|
|
58
|
-
secondLanguageCode:
|
|
59
|
-
|
|
60
|
-
expiryDate:
|
|
61
|
-
# rarely passed
|
|
62
|
-
terminationDate:
|
|
63
|
-
|
|
64
|
-
# status as is in the document
|
|
65
|
-
officeStatus:
|
|
66
|
-
# status as translated to gbdFormat
|
|
67
|
-
gbdStatus: # (Ended|Expired|Pending|Registered|Unknown)
|
|
68
|
-
# can also be the date of the last event in markevents if given
|
|
69
|
-
statusDate:
|
|
70
|
-
|
|
71
|
-
markDisclaimerDetails:
|
|
72
|
-
- languageCode: # use guess_language to set it if not passed
|
|
73
|
-
# ex {{ Trademark.MarkDisclaimerDetails | guess_language(lang='..', default='..') }}
|
|
74
|
-
# lang: the language if provided in doc
|
|
75
|
-
# default: default language if lang not provided.
|
|
76
|
-
# if no lang no default => use langdetect library
|
|
77
|
-
text:
|
|
78
|
-
|
|
79
|
-
markDescriptionDetails:
|
|
80
|
-
- languageCode:
|
|
81
|
-
text:
|
|
82
|
-
|
|
83
|
-
wordMarkSpecification:
|
|
84
|
-
markVerbalElement:
|
|
85
|
-
- languageCode:
|
|
86
|
-
text:
|
|
87
|
-
markSignificantVerbalElement:
|
|
88
|
-
- languageCode:
|
|
89
|
-
text:
|
|
90
|
-
markTranslation:
|
|
91
|
-
- languageCode:
|
|
92
|
-
text:
|
|
93
|
-
markTransliteration:
|
|
94
|
-
|
|
95
|
-
markImageDetails:
|
|
96
|
-
- name:
|
|
97
|
-
colourIndicator:
|
|
98
|
-
colourClaimed:
|
|
99
|
-
- languageCode:
|
|
100
|
-
text:
|
|
101
|
-
classification:
|
|
102
|
-
kind: Vienna #mostly
|
|
103
|
-
version: 7 #mostly
|
|
104
|
-
code:
|
|
105
|
-
- string
|
|
106
|
-
|
|
107
|
-
markSoundDetails:
|
|
108
|
-
- filename:
|
|
109
|
-
fileformat:
|
|
110
|
-
|
|
111
|
-
markVideo:
|
|
112
|
-
- filename:
|
|
113
|
-
fileformat:
|
|
114
|
-
|
|
115
|
-
goodsServices:
|
|
116
|
-
- nice:
|
|
117
|
-
version: 11 #mostly
|
|
118
|
-
terms:
|
|
119
|
-
- languageCode:
|
|
120
|
-
text:
|
|
121
|
-
|
|
122
|
-
# some datasets have goods and services
|
|
123
|
-
# terms that are not classified under a
|
|
124
|
-
# nice class
|
|
125
|
-
goodsServicesceUnclassified:
|
|
126
|
-
- languageCode:
|
|
127
|
-
text:
|
|
128
|
-
|
|
129
|
-
priorities:
|
|
130
|
-
- countryCode:
|
|
131
|
-
number:
|
|
132
|
-
date:
|
|
133
|
-
comment:
|
|
134
|
-
|
|
135
|
-
publications:
|
|
136
|
-
- identifier:
|
|
137
|
-
date:
|
|
138
|
-
section:
|
|
139
|
-
|
|
140
|
-
applicants:
|
|
141
|
-
- identifier:
|
|
142
|
-
kind:
|
|
143
|
-
fullName:
|
|
144
|
-
- languageCode:
|
|
145
|
-
text:
|
|
146
|
-
fullAddress:
|
|
147
|
-
- languageCode:
|
|
148
|
-
text:
|
|
149
|
-
countryCode: # sometimes, country name is provided instead
|
|
150
|
-
|
|
151
|
-
representatives:
|
|
152
|
-
- identifier:
|
|
153
|
-
kind:
|
|
154
|
-
fullName:
|
|
155
|
-
- languageCode:
|
|
156
|
-
text:
|
|
157
|
-
fullAddress:
|
|
158
|
-
- languageCode:
|
|
159
|
-
text:
|
|
160
|
-
countryCode:
|
|
161
|
-
|
|
162
|
-
correspondence:
|
|
163
|
-
fullName:
|
|
164
|
-
- languageCode:
|
|
165
|
-
text:
|
|
166
|
-
fullAddress:
|
|
167
|
-
- languageCode:
|
|
168
|
-
text:
|
|
169
|
-
countryCode:
|
|
170
|
-
|
|
171
|
-
events:
|
|
172
|
-
- officeKind:
|
|
173
|
-
gbdKind: # Filed, Registered, Published, Pending, Inactive,
|
|
174
|
-
# Opposed, Withdrawn, Expired, Examined, Invalidated,
|
|
175
|
-
# Rejected, Abandoned, Suspended, Surrendered, Appealed,
|
|
176
|
-
# Awaiting court action, Converted, Notification, Unknown
|
|
177
|
-
date:
|
|
178
|
-
|
|
179
|
-
appeals:
|
|
180
|
-
- kind:
|
|
181
|
-
date:
|
|
182
|
-
# here goes extra information that is office specific and that is pertinent for us to retain.
|
|
183
|
-
extra:
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# standard gbd definitions
|
|
2
|
-
import gbdtransformation.designs.ipas.filters as ipas
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
# namespaces defined in XML and to be ignored in procecssing
|
|
6
|
-
ignore_namespace = [
|
|
7
|
-
'http://www.wipo.int/standards/XMLSchema/designs',
|
|
8
|
-
'http://www.wipo.int/standards/XMLSchema/wo-designs'
|
|
9
|
-
]
|
|
10
|
-
def get_appdate(appdate, appnum):
|
|
11
|
-
return appnum.split('/')[-2]
|
|
12
|
-
|
|
13
|
-
def get_designs_count(design, header):
|
|
14
|
-
return '1'
|
|
15
|
-
|
|
16
|
-
def get_designs_pos(design, header):
|
|
17
|
-
return '1'
|
|
18
|
-
|
|
19
|
-
def translate_kind(desgin, header):
|
|
20
|
-
code = header.TransactionCode.lower()
|
|
21
|
-
subcode = header.TransactionSubCode.lower()
|
|
22
|
-
if code == 'industrial design':
|
|
23
|
-
return 'Industrial Design'
|
|
24
|
-
raise Exception('Type "%s" "%s" is not mapped.' % (code, subcode))
|
|
25
|
-
|
|
26
|
-
def translate_status(design):
|
|
27
|
-
status = design.DesignCurrentStatusCode
|
|
28
|
-
|
|
29
|
-
if status == '2295': return 'Unknown'
|
|
30
|
-
if status == '2353': return 'Unknown'
|
|
31
|
-
if status == '2366': return 'Unknown'
|
|
32
|
-
if status == '2387': return 'Unknown'
|
|
33
|
-
if status == '2389': return 'Unknown'
|
|
34
|
-
if status == '2394': return 'Unknown'
|
|
35
|
-
if status == 'Reinstated': return 'Pending'
|
|
36
|
-
|
|
37
|
-
return ipas.translate_status(status)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def get_registration_nb(design, idstatus):
|
|
41
|
-
if design.RegistrationNumber:
|
|
42
|
-
return design.RegistrationNumber
|
|
43
|
-
|
|
44
|
-
return None
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def get_expiry_date(design, idstatus):
|
|
48
|
-
return ipas.get_expiry_date(design, idstatus)
|
|
49
|
-
|
|
50
|
-
def get_registration_date(design, idstatus):
|
|
51
|
-
return ipas.get_registration_date(design, idstatus)
|
|
52
|
-
|
|
53
|
-
def is_international(header):
|
|
54
|
-
return False
|
|
55
|
-
|
|
56
|
-
def get_ir_refnum(appnum):
|
|
57
|
-
return appnum
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/Transaction
|
|
2
|
-
__/DesignTransactionBody
|
|
3
|
-
____/TransactionContentDetails
|
|
4
|
-
______/TransactionCode
|
|
5
|
-
______/TransactionData
|
|
6
|
-
________/DesignApplicationDetails
|
|
7
|
-
__________/DesignApplication
|
|
8
|
-
____________/ApplicantDetails
|
|
9
|
-
______________/ApplicantKey
|
|
10
|
-
____________/DesignApplicationDate
|
|
11
|
-
____________/DesignApplicationLanguageCode
|
|
12
|
-
____________/DesignApplicationNumber
|
|
13
|
-
____________/DesignDetails
|
|
14
|
-
______________/Design
|
|
15
|
-
________________/ApplicantDetails
|
|
16
|
-
__________________/Applicant
|
|
17
|
-
____________________/ApplicantAddressBook
|
|
18
|
-
______________________/FormattedNameAddress
|
|
19
|
-
________________________/Address
|
|
20
|
-
__________________________/AddressCountryCode
|
|
21
|
-
__________________________/FreeFormatAddress
|
|
22
|
-
____________________________/FreeFormatAddressLine
|
|
23
|
-
________________________/Name
|
|
24
|
-
__________________________/FreeFormatName
|
|
25
|
-
____________________________/FreeFormatNameDetails
|
|
26
|
-
______________________________/FreeFormatNameLine
|
|
27
|
-
______________________________/FreeFormatNameLine[@languageCode=en]
|
|
28
|
-
________________/DesignCurrentStatusCode
|
|
29
|
-
________________/DesignCurrentStatusDate
|
|
30
|
-
________________/DesignDescription
|
|
31
|
-
________________/DesignEventDetails
|
|
32
|
-
__________________/DesignEvent
|
|
33
|
-
____________________/DesignEventCode
|
|
34
|
-
____________________/DesignEventDate
|
|
35
|
-
____________________/OfficeSpecificDesignEventCode
|
|
36
|
-
____________________/OfficeSpecificDesignEventDescription
|
|
37
|
-
____________________/OfficeSpecificDesignEventDescription[@languageCode=en]
|
|
38
|
-
________________/DesignIdentifier
|
|
39
|
-
________________/DesignRepresentationSheetDetails
|
|
40
|
-
__________________/DesignRepresentationSheet
|
|
41
|
-
____________________/RepresentationSheetFilename
|
|
42
|
-
________________/DesignTitle
|
|
43
|
-
________________/DesignTitle[@languageCode=en]
|
|
44
|
-
________________/DesignTitle[@sequenceNumber=1]
|
|
45
|
-
________________/IndicationProductDetails
|
|
46
|
-
__________________/IndicationProduct
|
|
47
|
-
____________________/ClassDescriptionDetails
|
|
48
|
-
______________________/ClassDescription
|
|
49
|
-
________________________/ClassNumber
|
|
50
|
-
________________________/ProductDescription
|
|
51
|
-
____________________/ClassificationKindCode
|
|
52
|
-
____________________/ClassificationVersion
|
|
53
|
-
________________/NoveltyStatement
|
|
54
|
-
________________/NoveltyStatement[@languageCode=en]
|
|
55
|
-
________________/PriorityDetails
|
|
56
|
-
__________________/Priority
|
|
57
|
-
____________________/PriorityCountryCode
|
|
58
|
-
____________________/PriorityDate
|
|
59
|
-
____________________/PriorityNumber
|
|
60
|
-
________________/PublicationDetails
|
|
61
|
-
__________________/Publication
|
|
62
|
-
____________________/PublicationDate
|
|
63
|
-
________________/RegistrationDate
|
|
64
|
-
________________/RegistrationNumber
|
|
65
|
-
________________/RepresentativeDetails
|
|
66
|
-
__________________/Representative
|
|
67
|
-
____________________/RepresentativeAddressBook
|
|
68
|
-
______________________/FormattedNameAddress
|
|
69
|
-
________________________/Address
|
|
70
|
-
__________________________/AddressCountryCode
|
|
71
|
-
__________________________/FreeFormatAddress
|
|
72
|
-
____________________________/FreeFormatAddressLine
|
|
73
|
-
________________________/Name
|
|
74
|
-
__________________________/FreeFormatName
|
|
75
|
-
____________________________/FreeFormatNameDetails
|
|
76
|
-
______________________________/FreeFormatNameLine
|
|
77
|
-
______________________________/FreeFormatNameLine[@languageCode=en]
|
|
78
|
-
____________/RegistrationOfficeCode
|
|
79
|
-
______/TransactionIdentifier
|
|
80
|
-
______/TransactionSubCode
|
|
File without changes
|
{wipo_gbd_transformation-1.1.39.dist-info → wipo_gbd_transformation-1.1.42.dist-info}/LICENSE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wipo_gbd_transformation-1.1.39.dist-info → wipo_gbd_transformation-1.1.42.dist-info}/top_level.txt
RENAMED
|
File without changes
|