After reading a bit about RDFS on Wikipedia (http://en.wikipedia.org/wiki/RDF_Schema), I found a section that explains how you can use certain RDFS vocabulary such as
So you can basically build a simple triple database that contains some of those predicates, and SPARQL sort of knows about them to infere specific things, such as: if
This means that SPARQL needs to know about these predicates to be able to do this sort of decision making.
My question is: what other predicates does SPARQL know about? Is there a standard list somewhere on the web that SPARQL implements? And when I'm building my own vocabulary, does SPARQL read it to also use my defined relationships to do some inference, even though my vocabulary isn't a standard one and therefore SPARQL doesn't know about it?
In terms of entailment there is a specification that defines different entailment regimes - see SPARQL 1.1 Entailment Regimes
Note that an implementation doesn't really know about any predicate. In the case of an entailment regime it simply recognizes it as a term that may trigger some extra behaviors, so in a few cases it does need to know about a predicate but on the whole it does not.
SPARQL is primarily a pattern matching language so from an implementations perspective URIs are just strings on which it matches (internal implementation details of this are usually a bit more advanced than that but that is a whole other discussion).
You can use whatever vocabularies you like and define whatever relationships you need. It is considered good practice to reuse existing vocabularies where possible but this is by no means required. The exception to this is that most entailment regimes are defined in terms of RDFS and OWL so you would need to use those to help define your vocabulary if entailment is something you want or might need in the future.