Skip to content

Reorganization of federation description vocabulary#597

Merged
hartig merged 6 commits intomainfrom
ChangeFedDescVocab
May 8, 2026
Merged

Reorganization of federation description vocabulary#597
hartig merged 6 commits intomainfrom
ChangeFedDescVocab

Conversation

@hartig
Copy link
Copy Markdown
Member

@hartig hartig commented Apr 27, 2026

@DrJonasWestman @kentthang010 Sorry for being late with the reorganization of the feddesc. vocabulary, but now I am finally done with it. This PR currently contains the updated Turtle file for the vocabulary (feddesc.ttl) and an updated version of the federation description used for the examples (ExampleFederation.ttl).

In a nutshell, the new class hierarchy is as follows:

  • fd:FederationMember (meant only as an "abstract base class")
    • fd:RDFBasedFederationMember
    • fd:WrappedFederationMember
  • fd:Interface (meant only as an "abstract base class")
    • fd:FixedEndpointInterface (currently used for SPARQL endpoints and for Web APIs that have a fixed endpoint address rather than a URI template)
    • fd:TemplateBasedInterface (currently used for Web APIs with a URI template)
    • fd:FragmentInterface (currently used for TPF and brTPF)
  • fd:DataRetrievalProtocol (every interface must now have a fd:supportedProtocol property that points to an instance of this class; current instances are: fd:SPARQLProtocol, fd:TPFProtocol, fd:brTPFProtocol, fd:BoltProtocol, fd:GraphQLProtocol, and fd:GenericWebAPIProtocol)
  • fd:Wrapper

For more details about these classes, including the properties that are to be used for the instances of each of them, refer to the rdfs:comment entries in the Turtle file (feddesc.ttl), and the updated ExampleFederation.ttl illustrates how this is supposed to be used now.

Please take a look and let me know whether this redesign is okay for you. Ideally, we have an agreement on these changes by the end of Wednesday, because I need to submit the camera-ready version of the ESWC demo paper on Thursday and I would still like to adapt the examples in that paper such that they use the updated version of the vocabulary.

Once we have an agreement, I will regenerate the Java class for the vocabulary and add it to this PR. After that, I will ask Kent to adapt the rest of the code base (essentially, the FederationDescriptionReader and the corresponding unit tests in FederationDescriptionReaderTest).

Copy link
Copy Markdown
Collaborator

@DrJonasWestman DrJonasWestman left a comment

Choose a reason for hiding this comment

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

Overall, the changes reflect the direction we agreed upon after the meeting we had. Nicely done!
I left some smaller/easily fixed comments that I found. I think it makes sense to fix them,

Comment thread hefquin-vocabs/feddesc.ttl Outdated
Comment thread hefquin-vocabs/feddesc.ttl Outdated
Comment thread hefquin-vocabs/feddesc.ttl Outdated
Comment thread hefquin-vocabs/feddesc.ttl Outdated
hartig and others added 2 commits April 30, 2026 08:39
Co-authored-by: DrJonasWestman <jonas.westman@scania.com>
Co-authored-by: Olaf Hartig <olaf.hartig@liu.se>
@hartig
Copy link
Copy Markdown
Member Author

hartig commented Apr 30, 2026

Thanks Jonas! I have added your fixes.

With this, we can proceed with this new version of the vocabulary. To this end, I have re-generated the Java file for the vocabulary (FDVocab.java). Now, @kentthang010 can you please take over from here and adapt the rest of the code base within the branch of this PR. The major part that needs to be adapted is the FederationDescriptionReader and its unit test ( FederationDescriptionReaderTest). Additionally, we have the files:

  • ./config/DefaultFedConf.ttl
  • ./hefquin-cli/src/test/resources/TestFedCat.ttl
  • ./hefquin-service/src/test/resources/TestFedConf.ttl

which need to be adapted in the same way as I have already adapted ./examples/ExampleFederation.ttl in this PR.

@kentthang010
Copy link
Copy Markdown
Collaborator

kentthang010 commented May 5, 2026

The latest commit adapts all the aforementioned files to the new vocabulary.

However, it doesn't add any wrapper logic in FederationDescriptionReader for BoltProtocol or GraphQLProtocol yet. I need some guidance on how that should be implemented.

I assume since this commit doesn't make changes to the vocabulary, I should request a review from @hartig instead?

@hartig
Copy link
Copy Markdown
Member Author

hartig commented May 8, 2026

The latest commit adapts all the aforementioned files to the new vocabulary.

Thanks!

However, it doesn't add any wrapper logic in FederationDescriptionReader for BoltProtocol or GraphQLProtocol yet. I need some guidance on how that should be implemented.

It can remain as is. We have not properly integrated Neo4j (with Bolt endpoints) and GraphQL yet.

I assume since this commit doesn't make changes to the vocabulary, I should request a review from @hartig instead?

I have reviewed it offline and also added the case of a FixedEndpointInterface with GenericWebAPIProtocol.

I will merge the PR now.

@hartig hartig marked this pull request as ready for review May 8, 2026 15:34
@hartig hartig merged commit 47f92c1 into main May 8, 2026
1 check passed
@hartig hartig deleted the ChangeFedDescVocab branch May 8, 2026 15:34
@hartig
Copy link
Copy Markdown
Member Author

hartig commented May 8, 2026

@keski The PR that reorganizes the federation description vocabulary is merged now. This means for you:

  1. You may have to update federation description files that you are using (e.g., in the benchmarking repo).
  2. You can go ahead extending the vocabulary with the property for the max number of concurrent requests.

hartig added a commit that referenced this pull request May 8, 2026
@hartig hartig mentioned this pull request May 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants