dct:Agent ("Examples of Agent include person, organization, and software agent.") is broader than schema:Person, but schema:Person includes fictional Persons. I am not sure, if a fictional Person "acts or has the power to act".
foaf:Agent is declared (by FOAF) equivalent to dct:Agent (but there is no inverse declaration in dcterms).
The subclass foaf:Person seems to include fictional Persons, at least there is a comment along those lines in the spec :
An imaginary person has the power to act in the imaginary world. Seems to me Darth Vader and Peter Pan are Agents :)
Note that there are persons who are not 'agents' in the sense that they are subjects of a work. "Agent-ness" should be assigned by a predicate rather than be a quality of the entity. To be an agent is a verb, not a noun. In schema.org, Person is defined as an entity apart from any action: "A person (alive, dead, undead, or fictional)" It appears that DC does not have this entity.
@kcoyle I agree in theory, Agent should be a top class in a Role hierarchy if you stick to etymology (agere, actum), and disjoint from Patient (for example). Usage is variable, though, and many vocabularies represent roles as subclasses of foaf:Agent or foaf:Person, e.g., http://purl.org/ontology/mo/Composer which also declares an equivalence to a restriction "on property event:agent_in some mo:Composition".
A Person who is the subject of the work is not an agent in her relation to the work, but as a Person she certainly is or has been or willl be an agent in some other context.
All the point here is to know if you want our declarations to be descriptive or prescriptive. Maybe this should be set as an issue in itself.