Hello,

I would like ask some questions regarding the recently introduced GraphQL plugin (FYI, I am following the _products_ example and its accompanying .sql script of the usage guide).

1) How does the plugin treat interfaces?

2) Is it possible to denote that a field should use the inverse of a particular property?
   For example, suppose the following two triples:
    ```
    <employee1> <worksAt> <company1> .
    <employee2> <worksAt> <company1> .
    ```  
   and the GraphQL object defintions:

    ```
    type Employee {
      name: String
      worksAt: Company
    }
    type Company {
      name: String
      employees: [Employee]
    }
    ```
    
    Is it possible for the employees field to use the inverse of `<worksAt>` (i.e., `^<worksAt>`), or should this information be explicitly stated in the graph via a different property (ie.g., `<company1> <employes> <employee1> .`)?

3) The range of an RDF property might consist of multiple classes. Is it possible to restrict the range of the property based on the type of a GraphQL field definition?
   For example, assume that, in an RDF graph, the property `<pet>` is used to capture the pets that a person might have. Given the following GraphQL object and field definitions

    ```
    type Person {
        dogs: [Dog]
        cats: [Cat]
    } 
    ```

    is it possible to use `<pet>` and restrict the results of the fields using their types (i.e., Dog or Cat)?

Thank you in advance.
Questions about the GraphQL plugin
This is a GitHub Issue
repo:virtuoso-opensource
owner:openlink
Title : Questions about the GraphQL plugin
Issue date:

--- start body ---
Hello,

I would like ask some questions regarding the recently introduced GraphQL plugin (FYI, I am following the _products_ example and its accompanying .sql script of the usage guide).

1) How does the plugin treat interfaces?

2) Is it possible to denote that a field should use the inverse of a particular property?
   For example, suppose the following two triples:
    ```
    <employee1> <worksAt> <company1> .
    <employee2> <worksAt> <company1> .
    ```  
   and the GraphQL object defintions:

    ```
    type Employee {
      name: String
      worksAt: Company
    }
    type Company {
      name: String
      employees: [Employee]
    }
    ```
    
    Is it possible for the employees field to use the inverse of `<worksAt>` (i.e., `^<worksAt>`), or should this information be explicitly stated in the graph via a different property (ie.g., `<company1> <employes> <employee1> .`)?

3) The range of an RDF property might consist of multiple classes. Is it possible to restrict the range of the property based on the type of a GraphQL field definition?
   For example, assume that, in an RDF graph, the property `<pet>` is used to capture the pets that a person might have. Given the following GraphQL object and field definitions

    ```
    type Person {
        dogs: [Dog]
        cats: [Cat]
    } 
    ```

    is it possible to use `<pet>` and restrict the results of the fields using their types (i.e., Dog or Cat)?

Thank you in advance.
--- end body ---
