-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multiple network providers per span and node #210
Comments
Thanks for this @duncandewhurst - all very comprehensive and clear.
I agree, but think that the issue of one vs multiple spans is partially addressed by this, in that it increases the likelihood that users will be able reconcile spans, and provides a starting point for reconciliation conversations, as you lay out in your final point here. My view is that though this makes data visualisation and analysis slightly more tricky, the benefits far outweigh the costs, and we should implement this proposal. |
To clarify regarding reconciliation, it is possible to reconcile under the current data model:
The proposal in this issue means that a user could record and publish the network that they have inferred (a single span with two network providers) in conformance with OFDS, which is not possible under the current data model. |
Currently,
Span.networkProvider
andNode.networkProvider
are objects, i.e. there is a 1:1 relationship betweenSpan
/Node
andnetworkProvider
.Therefore, to represent a span with many network providers (a common situation), implementers would need to publish multiple spans - one for each network provider.
This is a problem because properties of
Span
andNode
that relate to the physical infrastructure would need to be repeated for each span/node, which could lead to double-counting, e.g.fibreCount
.Proposal
Span.networkProvider
(an object) withSpan.networkProviders
(an array).Node.networkProvider
(an object) withNode.networkProviders
(an array)Related issues
The following issues are related, but not addressed by the proposal:
Analysis
Schema and codelist changes
This section provides an analysis of the changes to schema and codelists resulting from the proposed change.
Span
The following fields relate to the active layer so descriptions may need to be updated. Proposed changes are shown in italics:
status
('operational' code):readyForServiceDate
:technologies
:capacity
:capacityDetails
: No change required.The following fields relate to the passive (physical) layer so they are not affected by the cardinality of
.networkProvider
:id
name
phase
start
end
directed
route
physicalInfrastructureProvider
supplier
transmissionMedium
deployment
deploymentDetails
darkFibre
fibreType
fibreTypeDetails
fibreCount
fibreLength
countries
Node
The following fields relate to the active layer so descriptions may need to be updated. Proposed changes are shown in italics:
status
('operational' code):type
:accessPoint
: No change required.technologies
:The following fields relate to the passive (physical) layer so they are not affected by the cardinality of
.networkProvider
:id
name
phase
location
address
internationalConnections
power
physicalInfrastructureProvider
Publication models
This section provides an analysis of how the proposed changes would apply to aggregated and distributed publication models in the following scenario:
Aggregated publication
FibreCo publishes details of their own network and names ProviderCo as a network provider:
Distributed publication
FibreCo publishes details of their own network without naming ProviderCo as a network provider. ProviderCo publishes details of their own network and names FibreCo as the physical infrastructure provider:
Publication formats
This section provides an analysis of how the proposed changes would affect the GeoJSON and CSV publication formats.
GeoJSON
The following fields will change:
nodes.geojson
:features/properties/networkProvider
(object) ->features/properties/networkProviders
(array)spans.geojson
:features/properties/networkProvider
(object) ->features/properties/networkProviders
(array)CSV
The CSV publication format will include two additional tables:
node_networkProviders
(id
,nodes/0/id
,nodes/0/networkProviders/0/id
,nodes/0/networkProviders/0/name
)span_networkProviders
(id
,spans/0/id
,spans/0/networkProviders/0/id
,spans/0/networkProviders/0/name
)Data use
This section provides an analysis of the impact on data use.
Mapping
If a user wants to colour the spans and nodes in a network by the network provider, there are several options:
[{"name": "Org A"}]
: Red[{"name": "Org B"}]
: Blue[{"name": "Org A"}, {"name": "Org B"}]
: Green[{"name": "Org B"}, {"name": "Org A"}]
: Green[{"name": "Org A"}]
: Red[{"name": "Org B"}]
: Blue[{"name": "Org A"}, {"name": "Org B"}]
: Red[{"name": "Org B"}, {"name": "Org A"}]
: Red[{"name": "Org A"}]
: Red[{"name": "Org B"}]
: Discard[{"name": "Org A"}, {"name": "Org B"}]
: Red[{"name": "Org B"}, {"name": "Org A"}]
: Red[{"name": "Org A"}]
: Discard[{"name": "Org B"}]
: Blue[{"name": "Org A"}, {"name": "Org B"}]
: Blue[{"name": "Org B"}, {"name": "Org A"}]
: BlueOption 3. is essentially equivalent to the current model of a 1:1 relationship between
Span
/Node
andnetworkProvider
.Reconciliation
In the distributed publication model discussed above, if the spans declared by each publisher share similar start and end locations and similar routes, a user could infer that they are the same span. In the aggregated distribution model, that fact could be declared explicitly.
The text was updated successfully, but these errors were encountered: