# Interactive 3D Exploration of RDF Graphs through Semantic Planes
## 3 Use Cases
### Use Case #1: Teaching through FOAF
Figure 6: Full knowledge base of the Use Case #1.  
triple). In this way, all persons without friends, if any, remain on the previously created plane. This can be done by selecting the object property foaf:knows and clicking on _Raise (S and O)_. 3. Finally, just to have a better view, it is possible to hide unwanted information (e.g., all the datatype properties and all the object properties except foaf:knows). The previous steps are shown in Figure 7. Through the semantic planes, the existence of an instance of the class foaf:Person not linked to the others that stand on the mid-plane renamed as \"Persons with no friends\" is then immediately noticed. To enhance the readability, datatype properties and object properties other than foaf:knows were hidden through the UI commands. **Question 2**: _Is there any unassigned project?_ Finding unassigned projects is the second task. One could answer this question through the following query:
```
PREFIXrdf:<[[http://www.w3.org/1999/02/22-rdf-syntax-ns#](http://www.w3.org/1999/02/22-rdf-syntax-ns#)]([http://www.w3.org/1999/02/22-rdf-syntax-ns#](http://www.w3.org/1999/02/22-rdf-syntax-ns#))> PREFIXfoaf:<[[http://xmlns.com/foaf/0.1/](http://xmlns.com/foaf/0.1/)]([http://xmlns.com/foaf/0.1/](http://xmlns.com/foaf/0.1/))> SELECT?p WHERE{?p rdf:typefoaf:Project.?personrdf:typefoaf:Person. FILTERNOTEXISTS{?personfoaf:currentProject?p} }
```
However, Tarsier allows retrieving and showing the same information without having to know the SPARQL query language. Again, the user may draw upon semantic planes by (in order):  
1. Creating a semantic plane containing all the projects (i.e., selecting the class foaf:Project and clicking on _Raise instances_); and
2. Hiding all the data properties and all the arcs related to foaf:knows and rdf:type. The result of these actions is shown in Figure 8. The user may immediately notice that all the existing projects are assigned to instances of the class foaf:Person. Figure 7: Use Case #1, Question 1: From the full knowledge base, a new semantic plane containing all the instances of the class foaf:Person is created (**a**). Then, all the instances involved in a friendship are moved to a second plane (**b**). All the unnecessary edges are hidden to notice one instance of the class foaf:Person with no incoming or outgoing foaf:knows edges (**c**). **Question 3**: _Do Person1 and Person2 share any projects?_ The third question can, once again, be answered through a SPARQL query:
```
PREFIXrdf:<[[http://www.w3.org/1999/02/22-rdf-syntax-ns#](http://www.w3.org/1999/02/22-rdf-syntax-ns#)]([http://www.w3.org/1999/02/22-rdf-syntax-ns#](http://www.w3.org/1999/02/22-rdf-syntax-ns#))> PREFIXfoaf:<[[http://xmlns.com/foaf/0.1/](http://xmlns.com/foaf/0.1/)]([http://xmlns.com/foaf/0.1/](http://xmlns.com/foaf/0.1/))> ASK{ fad:Person1 foaf:currentProject?p. foaf:Person2 foaf:currentProject?p }
```
Once again, the user may avoid typing a SPARQL Query creating a semantic plane for the projects (Step a) and a semantic plane hosting only the resources foaf:Person1 and foaf:Person2 (Step b). Hiding object properties different from foaf:currentProject and all the datatype properties (Step c), it is easy to notice that one of the projects (hosted by the middle semantic plane) presents two incoming edges from the topmost plane (the one related to the selected persons). Thus, it is possible to verify that the previous question has an affirmative answer and, if needed, a click on the project reveals further information. These steps and the results are visualized in Figure 9.  
Figure 8: Use Case #1, Question 2: The semantic plane of the projects clearly highlight that all projects are bound to at least one person (**a**). This is more evident when unnecessary edges are hidden (**b**). Figure 9: Use Case #1, Question 3: Do foaf:Person1 and foaf:Person2 work on at least one common project? To answer this question we start creating a semantic plane hosting all the projects (**a**). Then, a second plane hosting foaf:Person1 and foaf:Person2 is created (**b**).