metanorma-standoc 1.3.29 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/asciidoctor/standoc/base.rb +2 -25
- data/lib/asciidoctor/standoc/biblio.rng +13 -3
- data/lib/asciidoctor/standoc/blocks.rb +20 -17
- data/lib/asciidoctor/standoc/cleanup.rb +2 -0
- data/lib/asciidoctor/standoc/cleanup_block.rb +2 -2
- data/lib/asciidoctor/standoc/cleanup_section.rb +8 -125
- data/lib/asciidoctor/standoc/cleanup_terms.rb +134 -0
- data/lib/asciidoctor/standoc/datamodel/attributes_table_preprocessor.rb +57 -0
- data/lib/asciidoctor/standoc/datamodel/diagram_preprocessor.rb +102 -0
- data/lib/asciidoctor/standoc/datamodel/plantuml_renderer.rb +408 -0
- data/lib/asciidoctor/standoc/inline.rb +10 -5
- data/lib/asciidoctor/standoc/isodoc.rng +17 -1
- data/lib/asciidoctor/standoc/macros.rb +13 -8
- data/lib/asciidoctor/standoc/macros_yaml2text.rb +19 -13
- data/lib/asciidoctor/standoc/ref.rb +13 -56
- data/lib/asciidoctor/standoc/ref_sect.rb +124 -0
- data/lib/asciidoctor/standoc/section.rb +2 -46
- data/lib/asciidoctor/standoc/views/datamodel/model_representation.adoc.erb +30 -0
- data/lib/asciidoctor/standoc/views/datamodel/plantuml_representation.adoc.erb +20 -0
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +1 -1
- data/spec/asciidoctor-standoc/cleanup_spec.rb +51 -0
- data/spec/asciidoctor-standoc/datamodel/attributes_table_preprocessor_spec.rb +76 -0
- data/spec/asciidoctor-standoc/datamodel/diagram_preprocessor_spec.rb +72 -0
- data/spec/asciidoctor-standoc/inline_spec.rb +5 -1
- data/spec/asciidoctor-standoc/macros_spec.rb +50 -0
- data/spec/asciidoctor-standoc/macros_yaml2text_spec.rb +2 -1
- data/spec/asciidoctor-standoc/refs_spec.rb +0 -4
- data/spec/examples/datamodel/address_class_profile.adoc +4 -0
- data/spec/examples/datamodel/address_component_profile.adoc +4 -0
- data/spec/examples/datamodel/common_models_diagram.adoc +4 -0
- data/spec/examples/datamodel/models/models/AddressClassProfile.yml +90 -0
- data/spec/examples/datamodel/models/models/AddressComponentProfile.yml +63 -0
- data/spec/examples/datamodel/models/models/AddressComponentSpecification.yml +15 -0
- data/spec/examples/datamodel/models/models/AddressProfile.yml +36 -0
- data/spec/examples/datamodel/models/models/AttributeProfile.yml +32 -0
- data/spec/examples/datamodel/models/models/InterchangeAddressClassProfile.yml +79 -0
- data/spec/examples/datamodel/models/models/Localization copy.yml +23 -0
- data/spec/examples/datamodel/models/models/Localization.yml +23 -0
- data/spec/examples/datamodel/models/models/ProfileCompliantAddress.yml +36 -0
- data/spec/examples/datamodel/models/models/ProfileCompliantAddressComponent.yml +15 -0
- data/spec/examples/datamodel/models/models/Signature copy.yml +20 -0
- data/spec/examples/datamodel/models/models/Signature.yml +20 -0
- data/spec/examples/datamodel/models/models/TextDirectionCode copy.yml +16 -0
- data/spec/examples/datamodel/models/models/TextDirectionCode.yml +16 -0
- data/spec/examples/datamodel/models/models/Validity.yml +14 -0
- data/spec/examples/datamodel/models/models/iso19160-1/Address.yml +22 -0
- data/spec/examples/datamodel/models/models/iso19160-1/AddressComponent.yml +2 -0
- data/spec/examples/datamodel/models/style.uml.inc +37 -0
- data/spec/examples/datamodel/models/views/CommonModels.yml +9 -0
- data/spec/examples/datamodel/models/views/TopDown.yml +62 -0
- data/spec/examples/datamodel/top_down_diagram.adoc +4 -0
- data/spec/fixtures/macros_datamodel/address_class_profile.xml +149 -0
- data/spec/fixtures/macros_datamodel/address_component_profile.xml +71 -0
- data/spec/fixtures/macros_datamodel/common_models_diagram.xml +7 -0
- data/spec/fixtures/macros_datamodel/top_down_diagram.xml +7 -0
- data/spec/spec_helper.rb +13 -2
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +66 -66
- data/spec/vcr_cassettes/isobib_get_123.yml +36 -36
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +16 -16
- data/spec/vcr_cassettes/isobib_get_124.yml +17 -17
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +41 -38
- metadata +41 -4
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
[yaml2text,<%= model_path %>,definition]
|
3
|
+
----
|
4
|
+
|
5
|
+
=== {definition.name || "<%= file_name %>"}
|
6
|
+
{definition.definition}
|
7
|
+
|
8
|
+
{if definition.attributes}
|
9
|
+
.{definition.name || "<%= file_name %>"} attributes
|
10
|
+
|===
|
11
|
+
|Name |Definition |Mandatory/ Optional/ Conditional |Max Occur |Data Type
|
12
|
+
|
13
|
+
{definition.attributes&.*,key,EOK}
|
14
|
+
|{key} |{definition.attributes[key].definition || "TODO: enum " + key + "'s definition"} |{definition.attributes[key]&.cardinality&.min == 0 ? "O" : "M"} |{definition.attributes[key]&.cardinality&.max == "*" ? "N" : "1"} |{definition.attributes[key].origin ? "<<" + definition.attributes[key].origin + ">>" : ""}`{definition.attributes[key].type}`
|
15
|
+
{EOK}
|
16
|
+
|===
|
17
|
+
{end}
|
18
|
+
|
19
|
+
{if definition['values']}
|
20
|
+
.{definition.name || "<%= file_name %>"} values
|
21
|
+
|===
|
22
|
+
|Name |Definition
|
23
|
+
|
24
|
+
{definition['values']&.*,key,EOK}
|
25
|
+
|{key} |{definition['values'][key].definition}
|
26
|
+
{EOK}
|
27
|
+
|===
|
28
|
+
{end}
|
29
|
+
|
30
|
+
----
|
@@ -0,0 +1,20 @@
|
|
1
|
+
[plantuml,title=<%= diagram_caption %>]
|
2
|
+
....
|
3
|
+
@startuml
|
4
|
+
|
5
|
+
<%= diagram_options_yml_to_plantuml %>
|
6
|
+
|
7
|
+
<%= class_groups_yml_to_plantuml %>
|
8
|
+
|
9
|
+
<%= imports_yml_to_plantuml %>
|
10
|
+
|
11
|
+
<%= class_defs_yml_to_plantuml %>
|
12
|
+
|
13
|
+
<%= class_relations_yml_to_plantuml %>
|
14
|
+
|
15
|
+
<%= fidelity_yml_to_plantuml %>
|
16
|
+
|
17
|
+
<%= bottom_yml_to_plantuml %>
|
18
|
+
|
19
|
+
@enduml
|
20
|
+
....
|
data/metanorma-standoc.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_dependency "ruby-jing"
|
31
31
|
spec.add_dependency "isodoc", "~> 1.0.20"
|
32
32
|
spec.add_dependency "iev", "~> 0.2.1"
|
33
|
-
spec.add_dependency "relaton", "~> 1.
|
33
|
+
spec.add_dependency "relaton", "~> 1.1.0"
|
34
34
|
spec.add_dependency "relaton-iev", "~> 1.0.0"
|
35
35
|
spec.add_dependency "sterile", "~> 1.0.14"
|
36
36
|
spec.add_dependency "concurrent-ruby"
|
@@ -1844,6 +1844,57 @@ it "moves inherit macros to correct location" do
|
|
1844
1844
|
</clause>
|
1845
1845
|
</sections>
|
1846
1846
|
</standard-document>
|
1847
|
+
OUTPUT
|
1848
|
+
end
|
1849
|
+
|
1850
|
+
it "moves %beforeclause admonitions to right position" do
|
1851
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
1852
|
+
#{ASCIIDOC_BLANK_HDR}
|
1853
|
+
|
1854
|
+
.Foreword
|
1855
|
+
Foreword
|
1856
|
+
|
1857
|
+
[NOTE,beforeclauses=true]
|
1858
|
+
====
|
1859
|
+
Note which is very important
|
1860
|
+
====
|
1861
|
+
|
1862
|
+
== Introduction
|
1863
|
+
Introduction
|
1864
|
+
|
1865
|
+
== Scope
|
1866
|
+
Scope statement
|
1867
|
+
|
1868
|
+
[IMPORTANT,beforeclauses=true]
|
1869
|
+
====
|
1870
|
+
Notice which is very important
|
1871
|
+
====
|
1872
|
+
INPUT
|
1873
|
+
#{BLANK_HDR}
|
1874
|
+
<preface>
|
1875
|
+
<foreword id='_' obligation='informative'>
|
1876
|
+
<title>Foreword</title>
|
1877
|
+
<p id='_'>Foreword</p>
|
1878
|
+
</foreword>
|
1879
|
+
<introduction id='_' obligation='informative'>
|
1880
|
+
<title>Introduction</title>
|
1881
|
+
<p id='_'>Introduction</p>
|
1882
|
+
</introduction>
|
1883
|
+
</preface>
|
1884
|
+
<sections>
|
1885
|
+
<note id='_'>
|
1886
|
+
<p id='_'>Note which is very important</p>
|
1887
|
+
</note>
|
1888
|
+
<admonition id='_' type='important'>
|
1889
|
+
<p id='_'>Notice which is very important</p>
|
1890
|
+
</admonition>
|
1891
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
1892
|
+
<title>Scope</title>
|
1893
|
+
<p id='_'>Scope statement</p>
|
1894
|
+
</clause>
|
1895
|
+
</sections>
|
1896
|
+
</standard-document>
|
1897
|
+
|
1847
1898
|
OUTPUT
|
1848
1899
|
end
|
1849
1900
|
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Asciidoctor::Standoc::Datamodel::AttributesTablePreprocessor do
|
6
|
+
describe '#process' do
|
7
|
+
context 'when simple models without relations' do
|
8
|
+
let(:datamodel_file) do
|
9
|
+
examples_path('datamodel/address_class_profile.adoc')
|
10
|
+
end
|
11
|
+
let(:result_file) do
|
12
|
+
examples_path('datamodel/address_class_profile.xml')
|
13
|
+
end
|
14
|
+
let(:output) do
|
15
|
+
[
|
16
|
+
BLANK_HDR,
|
17
|
+
File.read(fixtures_path('macros_datamodel/address_class_profile.xml'))
|
18
|
+
]
|
19
|
+
.join
|
20
|
+
end
|
21
|
+
|
22
|
+
after do
|
23
|
+
%w[doc html xml err].each do |extention|
|
24
|
+
path = examples_path("datamodel/address_class_profile.#{extention}")
|
25
|
+
FileUtils.rm_f(path)
|
26
|
+
FileUtils.rm_f("address_class_profile.#{extention}")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'correctly renders input' do
|
31
|
+
Asciidoctor.convert_file(datamodel_file,
|
32
|
+
backend: :standoc,
|
33
|
+
safe: :safe,
|
34
|
+
header_footer: true)
|
35
|
+
expect(xmlpp(strip_guid(File.read(result_file))))
|
36
|
+
.to(be_equivalent_to(xmlpp(output)))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when complex relations' do
|
41
|
+
let(:datamodel_file) do
|
42
|
+
examples_path('datamodel/address_component_profile.adoc')
|
43
|
+
end
|
44
|
+
let(:result_file) do
|
45
|
+
examples_path('datamodel/address_component_profile.xml')
|
46
|
+
end
|
47
|
+
let(:output) do
|
48
|
+
path = fixtures_path('macros_datamodel/address_component_profile.xml')
|
49
|
+
[
|
50
|
+
BLANK_HDR,
|
51
|
+
File.read(path)
|
52
|
+
]
|
53
|
+
.join("\n")
|
54
|
+
end
|
55
|
+
|
56
|
+
after do
|
57
|
+
%w[doc html xml err].each do |extention|
|
58
|
+
path = examples_path(
|
59
|
+
"datamodel/address_component_profile.#{extention}"
|
60
|
+
)
|
61
|
+
FileUtils.rm_f(path)
|
62
|
+
FileUtils.rm_f("address_component_profile.#{extention}")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'correctly renders input' do
|
67
|
+
Asciidoctor.convert_file(datamodel_file,
|
68
|
+
backend: :standoc,
|
69
|
+
safe: :safe,
|
70
|
+
header_footer: true)
|
71
|
+
expect(xmlpp(strip_guid(File.read(result_file))))
|
72
|
+
.to(be_equivalent_to(xmlpp(output)))
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Asciidoctor::Standoc::Datamodel::DiagramPreprocessor do
|
6
|
+
describe '#process' do
|
7
|
+
context 'when simple models without relations' do
|
8
|
+
let(:datamodel_file) do
|
9
|
+
examples_path('datamodel/common_models_diagram.adoc')
|
10
|
+
end
|
11
|
+
let(:result_file) do
|
12
|
+
examples_path('datamodel/common_models_diagram.xml')
|
13
|
+
end
|
14
|
+
let(:output) do
|
15
|
+
[
|
16
|
+
BLANK_HDR,
|
17
|
+
File.read(
|
18
|
+
fixtures_path('macros_datamodel/common_models_diagram.xml')
|
19
|
+
)
|
20
|
+
].join
|
21
|
+
end
|
22
|
+
|
23
|
+
after do
|
24
|
+
%w[doc html xml err].each do |extention|
|
25
|
+
path = examples_path("datamodel/common_models_diagram.#{extention}")
|
26
|
+
FileUtils.rm_f(path)
|
27
|
+
FileUtils.rm_f("common_models_diagram.#{extention}")
|
28
|
+
end
|
29
|
+
FileUtils.rm_rf('common_models_diagram_htmlimages')
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'correctly renders input' do
|
33
|
+
Asciidoctor.convert_file(datamodel_file,
|
34
|
+
backend: :standoc,
|
35
|
+
safe: :safe,
|
36
|
+
header_footer: true)
|
37
|
+
expect(xmlpp(strip_src(strip_guid(File.read(result_file)))))
|
38
|
+
.to(be_equivalent_to(xmlpp(output)))
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'when complex relations' do
|
43
|
+
let(:datamodel_file) { examples_path('datamodel/top_down_diagram.adoc') }
|
44
|
+
let(:result_file) { examples_path('datamodel/top_down_diagram.xml') }
|
45
|
+
let(:output) do
|
46
|
+
[
|
47
|
+
BLANK_HDR,
|
48
|
+
File.read(fixtures_path('macros_datamodel/top_down_diagram.xml'))
|
49
|
+
].join("\n")
|
50
|
+
end
|
51
|
+
|
52
|
+
after do
|
53
|
+
%w[doc html xml err].each do |extention|
|
54
|
+
path = examples_path("datamodel/top_down_diagram.#{extention}")
|
55
|
+
FileUtils.rm_f(path)
|
56
|
+
FileUtils.rm_f("top_down_diagram.#{extention}")
|
57
|
+
end
|
58
|
+
FileUtils.rm_rf(examples_path('datamodel/plantuml'))
|
59
|
+
FileUtils.rm_rf('top_down_diagram_htmlimages')
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'correctly renders input' do
|
63
|
+
Asciidoctor.convert_file(datamodel_file,
|
64
|
+
backend: :standoc,
|
65
|
+
safe: :safe,
|
66
|
+
header_footer: true)
|
67
|
+
expect(xmlpp(strip_src(strip_guid(File.read(result_file)))))
|
68
|
+
.to(be_equivalent_to(xmlpp(output)))
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -198,6 +198,8 @@ text, including nested markup.
|
|
198
198
|
Inline Reference with Text to <<reference,text>>
|
199
199
|
Footnoted Reference with Text to <<reference,fn: text>>
|
200
200
|
Anchored Crossreference to other document <<a.adoc#b>>
|
201
|
+
Capitalised Reference to <<reference,capital%>>
|
202
|
+
Lowercase Footnoted Reference to <<reference,capital%fn>>
|
201
203
|
INPUT
|
202
204
|
#{BLANK_HDR}
|
203
205
|
<sections>
|
@@ -207,7 +209,9 @@ text, including nested markup.
|
|
207
209
|
Footnoted Reference to <xref target="reference"/>
|
208
210
|
Inline Reference with Text to <xref target="reference">text</xref>
|
209
211
|
Footnoted Reference with Text to <xref target="reference">text</xref>
|
210
|
-
Anchored Crossreference to other document <xref target="a#b"
|
212
|
+
Anchored Crossreference to other document <xref target="a#b"/>
|
213
|
+
Capitalised Reference to <xref target='reference' case='capital'></xref>
|
214
|
+
Lowercase Footnoted Reference to <xref target='reference' case='capital'></xref></p>
|
211
215
|
</clause>
|
212
216
|
</sections>
|
213
217
|
</standard-document>
|
@@ -270,6 +270,56 @@ OUTPUT
|
|
270
270
|
</p>
|
271
271
|
</figure>
|
272
272
|
</sections>
|
273
|
+
</standard-document>
|
274
|
+
OUTPUT
|
275
|
+
end
|
276
|
+
|
277
|
+
it "skips embedded blocks when supplying line breaks in pseudocode" do
|
278
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
279
|
+
#{ASCIIDOC_BLANK_HDR}
|
280
|
+
|
281
|
+
[pseudocode]
|
282
|
+
====
|
283
|
+
[stem]
|
284
|
+
++++
|
285
|
+
bar X' = (1)/(v) sum_(i = 1)^(v) t_(i)
|
286
|
+
++++
|
287
|
+
====
|
288
|
+
INPUT
|
289
|
+
#{BLANK_HDR}
|
290
|
+
<sections>
|
291
|
+
<figure id='_' class='pseudocode'>
|
292
|
+
<formula id='_'>
|
293
|
+
<stem type='MathML'>
|
294
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
295
|
+
<mover>
|
296
|
+
<mi>X</mi>
|
297
|
+
<mo>¯</mo>
|
298
|
+
</mover>
|
299
|
+
<mi>'</mi>
|
300
|
+
<mo>=</mo>
|
301
|
+
<mfrac>
|
302
|
+
<mn>1</mn>
|
303
|
+
<mi>v</mi>
|
304
|
+
</mfrac>
|
305
|
+
<munderover>
|
306
|
+
<mo>∑</mo>
|
307
|
+
<mrow>
|
308
|
+
<mi>i</mi>
|
309
|
+
<mo>=</mo>
|
310
|
+
<mn>1</mn>
|
311
|
+
</mrow>
|
312
|
+
<mi>v</mi>
|
313
|
+
</munderover>
|
314
|
+
<msub>
|
315
|
+
<mi>t</mi>
|
316
|
+
<mi>i</mi>
|
317
|
+
</msub>
|
318
|
+
</math>
|
319
|
+
</stem>
|
320
|
+
</formula>
|
321
|
+
</figure>
|
322
|
+
</sections>
|
273
323
|
</standard-document>
|
274
324
|
OUTPUT
|
275
325
|
end
|
@@ -543,7 +543,6 @@ RSpec.describe Asciidoctor::Standoc do
|
|
543
543
|
<uri>www.iso.org</uri>
|
544
544
|
</organization>
|
545
545
|
</contributor>
|
546
|
-
<!--
|
547
546
|
<contributor>
|
548
547
|
<role type="publisher"/>
|
549
548
|
<organization>
|
@@ -552,7 +551,6 @@ RSpec.describe Asciidoctor::Standoc do
|
|
552
551
|
<uri>www.iec.ch</uri>
|
553
552
|
</organization>
|
554
553
|
</contributor>
|
555
|
-
-->
|
556
554
|
<edition>2</edition>
|
557
555
|
<language>en</language>
|
558
556
|
<language>fr</language>
|
@@ -645,7 +643,6 @@ RSpec.describe Asciidoctor::Standoc do
|
|
645
643
|
<uri>www.iso.org</uri>
|
646
644
|
</organization>
|
647
645
|
</contributor>
|
648
|
-
<!--
|
649
646
|
<contributor>
|
650
647
|
<role type="publisher"/>
|
651
648
|
<organization>
|
@@ -654,7 +651,6 @@ RSpec.describe Asciidoctor::Standoc do
|
|
654
651
|
<uri>www.iec.ch</uri>
|
655
652
|
</organization>
|
656
653
|
</contributor>
|
657
|
-
-->
|
658
654
|
<edition>2</edition>
|
659
655
|
<language>en</language>
|
660
656
|
<language>fr</language>
|
@@ -0,0 +1,90 @@
|
|
1
|
+
modelType: class
|
2
|
+
# TODO
|
3
|
+
definition: |
|
4
|
+
An `AddressClassProfile` represents a profile of a `ProfileCompliantAddress`.
|
5
|
+
It corresponds to the concept of an `AddressClass` originally
|
6
|
+
expressed in <<ISO19160-1>> as a referenced codelist.
|
7
|
+
|
8
|
+
It represents additional attributes and restrictions to the
|
9
|
+
`ProfileCompliantAddress` model. It also represents metadata for the use of
|
10
|
+
the profile.
|
11
|
+
|
12
|
+
A single profile can include and support multiple types of
|
13
|
+
address formats, such as a numbered street address and a
|
14
|
+
"`PO Box`" address simultaneously. Each of these address formats
|
15
|
+
is represented as an interchange address class.
|
16
|
+
|
17
|
+
[example]
|
18
|
+
--
|
19
|
+
The US Numbered Thoroughfare Address with this syntax can be
|
20
|
+
represented as an address class profile:
|
21
|
+
|
22
|
+
*{sp}{ Complete Landmark Name or Complete Place Name } +
|
23
|
+
*{sp}{ Complete Address Number * } +
|
24
|
+
*{sp}{ Complete Street Name * } +
|
25
|
+
*{sp}{ Complete Subaddress } +
|
26
|
+
*{sp}{ Complete Place Name * } +
|
27
|
+
*{sp}{ State Name * } +
|
28
|
+
*{sp}{ Zip Code } +
|
29
|
+
*{sp}{ Zip Plus 4 } +
|
30
|
+
*{sp}{ Country Name }
|
31
|
+
--
|
32
|
+
attributes:
|
33
|
+
id:
|
34
|
+
definition: Unique identifier of this AddressClassProfile.
|
35
|
+
type: CharacterString
|
36
|
+
type:
|
37
|
+
definition: Intended usage of this profile.
|
38
|
+
type: CharacterString
|
39
|
+
description:
|
40
|
+
definition: Textual description of this profile.
|
41
|
+
type: CharacterString
|
42
|
+
localization:
|
43
|
+
definition: The language and script used within this profile.
|
44
|
+
type: Localization
|
45
|
+
signature:
|
46
|
+
definition: The digital signature to verify the integrity of this profile, and the identity of the publishing authority.
|
47
|
+
type: Signature
|
48
|
+
cardinality:
|
49
|
+
min: 0
|
50
|
+
max: 1
|
51
|
+
areaApplicability:
|
52
|
+
definition: The geographic representation of which this AddressClassProfile applies to. Overlapping geographic areas are allowed across different profiles.
|
53
|
+
type: iso19115MD_SpatialRepresentation
|
54
|
+
cardinality:
|
55
|
+
min: 0
|
56
|
+
max: "*"
|
57
|
+
timeToLive:
|
58
|
+
definition: The maximum time interval between refreshing of this profile via an authoritative source, in seconds.
|
59
|
+
type: Integer
|
60
|
+
validity:
|
61
|
+
definition: The period of date and time that this profile should be considered as valid.
|
62
|
+
type: Validity
|
63
|
+
relations:
|
64
|
+
- target: AttributeProfile
|
65
|
+
relationship:
|
66
|
+
source:
|
67
|
+
type: aggregation
|
68
|
+
attribute:
|
69
|
+
addressClassProfile:
|
70
|
+
target:
|
71
|
+
type: direct
|
72
|
+
attribute:
|
73
|
+
attributeProfile:
|
74
|
+
cardinality:
|
75
|
+
min: 0
|
76
|
+
max: '*'
|
77
|
+
|
78
|
+
- target: ProfileCompliantAddress
|
79
|
+
relationship:
|
80
|
+
source:
|
81
|
+
attribute:
|
82
|
+
profile:
|
83
|
+
cardinality:
|
84
|
+
min: 1
|
85
|
+
max: 1
|
86
|
+
target:
|
87
|
+
type: direct
|
88
|
+
action:
|
89
|
+
verb: compliesWith
|
90
|
+
direction: source
|