The EYE reasoner provides an implementation of RDF Surfaces, a sublanguage of Notation3 to express a revised RDF logic as envisoned by Pat Hayes in his 2009 ISWC Invited Talk: BLOGIC.
RDF Surfaces provides the capabilities to:
:Alice :likes :Bob
OR :Alice :likes :Charly
(or both) are true).In order to run a RDF Surfaces script the EYE reasoner needs to be started with the --no-bnode-relabeling
command line option:
eye --quiet --nope --no-bnode-relabeling socrates.n3s
Note that for running RDF Surfaces scripts no query arguments need to be provided to the EYE reasoner. All queries are defined in the RDF surfaces language itself.
The listing socrates.n3s
below implements the Socrate example in RDF surfaces:
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix : <http://example.org/socrates#>.
:Socrates a :Human.
:Human rdfs:subClassOf :Mortal.
(_:S _:A _:B) log:onNegativeSurface {
_:S a _:A .
_:A rdfs:subClassOf _:B .
() log:onNegativeSurface {
_:S a _:B .
} .
} .
# Define what to send to the output
(_:S _:O) log:onNegativeSurface {
_:S a _:O .
(_:S _:O) log:onNegativeAnswerSurface {
_:S a _:O .
} .
} .
When running the EYE reasoner on this script the result should be:
@prefix log: <http://www.w3.org/2000/10/swap/log#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix : <http://example.org/socrates#>.
:Socrates a :Human .
:Socrates a :Mortal .