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

Support Federated Entities #291

Open
luxbe opened this issue Nov 22, 2024 · 2 comments
Open

Support Federated Entities #291

luxbe opened this issue Nov 22, 2024 · 2 comments

Comments

@luxbe
Copy link
Contributor

luxbe commented Nov 22, 2024

As a user, I want to be able to load different entities from different repositories or event databases, based on the concept of Federated Queries.

An initial rough idea would be to introduce a service parameter within the @OWLObjectProperty annotation. JOPA could use this information to resolve the proper service to load the requested Entites.

@OWLObjectProperty(iri = "...", service = "abc")
private Set<Course> courses;

One central requirement for this feature is #290 - the Support for the SERVICE keyword within SOQL

@luxbe
Copy link
Contributor Author

luxbe commented Dec 16, 2024

Another idea would be to add a new annotation to override the EntityDescriptor for an attribute:

@Federated(...)

@ledsoft
Copy link
Contributor

ledsoft commented Dec 20, 2024

After some discussion, the proposal is as follows:

  • External service-based attributes will be read only
  • Entities containing such attribute will not be cached (because we cannot guarantee the value will not change)

Some more questions to resolve:

  • What would be the value of reference to the external repository - its SPARQL endpoint, or URL that can be used by the underlying OntoDriver to make a connection? If we do not use SPARQL, we restrict the external repository to the same provider as the application repository (i.e., if we use RDF4J, the external has to be RDF4J-compatible as well). I am currently leaning towards a SPARQL endpoint-based as it would give more freedom as to where we are connecting to.
  • Should inference be considered? If we use a SPARQL query to load the external value, we will always get inferred statements as well, if we try to use the underlying OntoDriver, it may be possible to get only explicit data.
  • What if the attribute value type is an entity? Do we load the entity? That would require creating an OntoDriver connection to a different repository (presuming it is compatible with the underlying driver implementation)

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

No branches or pull requests

2 participants