Feature: Exception Handling As a developer using CleverRDFLib I want to handle exceptions properly So that I can understand and respond to errors in the library Scenario: Create exception with non-exception cause Given I create a CleverRDFLibException with a non-exception cause When I access the exception message Then I should receive the message with the cause appended Scenario: Access exception cause Given I create a CleverRDFLibException with an exception cause When I call get_cause on the exception Then I should receive the underlying exception Scenario: Create ClassNodeNotFoundException Given I create a ClassNodeNotFoundException Then the exception should be a CleverRDFLibException Scenario: Create PropertyDomainObjectNotFoundException Given I create a PropertyDomainObjectNotFoundException Then the exception should be a CleverRDFLibException Scenario: Create PropertyRangeObjectNotFoundException Given I create a PropertyRangeObjectNotFoundException Then the exception should be a CleverRDFLibException Scenario: Create GraphLoaderHandlerInsertionFailed Given I create a GraphLoaderHandlerInsertionFailed exception Then the exception should be a CleverRDFLibException Scenario: Create ClassHierarchyBuildException Given I create a ClassHierarchyBuildException Then the exception should be a CleverRDFLibException Scenario: Create ClassConversionException Given I create a ClassConversionException Then the exception should be a CleverRDFLibException Scenario: Create PropertyConversionException Given I create a PropertyConversionException Then the exception should be a CleverRDFLibException Scenario: Create DataTypeConversionException Given I create a DataTypeConversionException Then the exception should be a CleverRDFLibException Scenario: Create InconsistentClassHierarchyException Given I create an InconsistentClassHierarchyException Then the exception should be a CleverRDFLibException