71 
 
        ?customer ?relation ?relatedToCustomer.} 
This would be much less intuitive than the user defined names. There are good reasons to use auto-
generated names, especially for large ontologies that are implemented in multiple natural languages. 
However, for new users, especially those who plan to use SPARQL and SHACL, I think it is more 
intuitive to start with user supplied names and then progress to auto-generated names if and when the 
requirements show a true need for them. This approach to developing software incrementally rather than 
to attempt to design the perfect system that can scale for all possible future requirements is known as the 
Agile approach to software development. In my experience Agile methods have proven themselves in 
countless real-world projects to deliver better software on time and on budget than the alternative 
waterfall approach. For more on Agile methods see: https://www.agilealliance.org/agile101/  
This just gives you a basic overview of some of the things that can be done with SPARQL. There is a lot 
more and if you are interested you should check out DuCharme’s book or some of the many SPARQL 
tools and tutorials on the web. Some of these are in the bibliography.  
One final point: features of OWL and SWRL that new users frequently find frustrating are the Open 
World Assumption (OWA) and lack of non-monotonic reasoning. The OWA was discussed in chapter 
4.13. Non-monotonic reasoning will be discussed in section 11.1.  For now, though remember that 
SPARQL is not subject to either of these restrictions. With SPARQL one can do non-monotonic 
reasoning and leverage the more common Closed World Assumption (CWA). E.g., one can test if the 
value for a property on a specific instance exists or not and can take actions if that property does not exist.