Skip to content
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

Proposal for an extension of ClassInFrameRef #650

Open
wants to merge 14 commits into
base: next
Choose a base branch
from

Conversation

ue71603
Copy link
Contributor

@ue71603 ue71603 commented Jan 26, 2024

Addesses: #649

@ue71603 ue71603 added the change-request Additional feature, discussed withe the group and having a proper Change Requet in Basecamp. label Jan 26, 2024
@ue71603 ue71603 added this to the netex_2.0 milestone Jan 26, 2024
</xsd:extension>
</xsd:simpleContent>
<xsd:sequence>
<xsd:element name="MemberRef" type="ClassRefStructure" minOccurs="0" maxOccurs="unbounded"/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why a recursive definition here (we are within the ClassRefStructure definition) ?
And the result is a bit weird
image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Aurige Can't a member have member again? I think recursive is correc.t Or what would be your proposal?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

input from Christophe needed

Copy link
Contributor

@Aurige Aurige May 10, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a ClassRefStructure inside a ClassRefStructure referred as Member ... but I'm not sure about what we wan't to say here, and waht is a member classs of a class ? Do you mean nested (for example a Quay inside a StopPlace) ? and if so, how would you make the difference between a ref (i.e a QuayRef) and the full object inclusion (Quay) ?

This recursion only allow to do things like this:

<netex:ClassRef nameOfClass="TOTO" use="required">
	<netex:MemberRef nameOfClass="TITI"/>
</netex:ClassRef>

Copy link
Contributor Author

@ue71603 ue71603 May 10, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The original task is from Stefan. So I ask hiim:

In order to make a profile definition TypeOfFrame/ClassInFrameRef is an embedded way to describe a profile. What is currently lacking is the ability to describe the elements required in the profile.

If from this minimal definition a derived XML Schema (or Schematron) can be generated, every profile can be validated against an always up to date NeTEx upstream, without manual the manual labor of maintaining an extra XML Schema by hand (such as EPIP, Dutch, etc.)

@skinkie how deep do we want to go and Ref and objects?

@ue71603 ue71603 assigned ue71603 and skinkie and unassigned ue71603 and skinkie Apr 10, 2024
@ue71603
Copy link
Contributor Author

ue71603 commented Apr 19, 2024

@Aurige epip used mixed=true in their profile. I know undo it... Was bad practice anyhow.

@skinkie
Copy link
Contributor

skinkie commented May 6, 2024

At this moment the following is part of the EPIP example by @Aurige. The part that I don't understand is now the ClassInFrame nameOfClass is introduced. That entire nameOfClass does not exists.

<TypeOfFrame version="epip:1.0" id="epip:EU_PI_LINE_OFFER">
        <Name>Network and schedule data for a single line.</Name>
        <FrameClassRef nameOfClass="CompositeFrame"/>
        <classes>
                <ClassInFrameRef nameOfClass="DataManagedObject">Use Common definitions</ClassInFrameRef>
                <ClassInFrameRef nameOfClass="VersionFrame">Use Common definitions</ClassInFrameRef>
                <ClassInFrameRef nameOfClass="ResourceFrame">Use Common definitions</ClassInFrameRef>
                <!-- Specific -->
                <ClassInFrame nameOfClass="EU_PI_LINE_OFFER.SiteFrame-EU_PI_STOP">
                        <ClassRefType>all</ClassRefType>
                        <Mandatory>required</Mandatory>
                </ClassInFrame>

I think the question is if nameOfClass here should be something like:

<ClassInFrame nameOfClass="SiteFrame" typeOfFrameRef="epip:EU_PI_STOP" version="epip:1.0">

@Aurige
Copy link
Contributor

Aurige commented May 10, 2024

I don't really remember that example (it must be pretty old, over 10 years, since NEPTUNE is not used any-more for quite long.. it was the equivalent of the UK TransXChange... so not NeTEx, but we did a mapping to NeTEx in 2013/14).
I agree that ClassInFrameRef can be a misleading name, it's initial intention was to refer a Class in the Frame...so more a ClassRefInFrame ... so initially no need for a ClassInFrame since the Class itself (Element in XSD) is really defined at XSD level. The ClassInFrame was added later (can't remember when/why... or maybe just in this set of commits ?)

@ue71603 ue71603 assigned ue71603 and unassigned Aurige Jun 5, 2024
@ue71603
Copy link
Contributor Author

ue71603 commented Jun 5, 2024

@skinkie do wee need more levels? Or can you do with one?

@ue71603
Copy link
Contributor Author

ue71603 commented Jun 22, 2024

@skinkie does this fit you primary needs (when we don't implement full shematron).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
change-request Additional feature, discussed withe the group and having a proper Change Requet in Basecamp.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants