annotate jamendo/sparql-archived/SeRQL/rdf_entailment.pl @ 27:d95e683fbd35 tip

Enable CORS on urispace redirects as well
author Chris Cannam
date Tue, 20 Feb 2018 14:52:02 +0000
parents df9685986338
children
rev   line source
Chris@0 1 /* $Id$
Chris@0 2
Chris@0 3 Part of SWI-Prolog
Chris@0 4
Chris@0 5 Author: Jan Wielemaker
Chris@0 6 E-mail: jan@swi.psy.uva.nl
Chris@0 7 WWW: http://www.swi-prolog.org
Chris@0 8 Copyright (C): 1985-2004, University of Amsterdam
Chris@0 9
Chris@0 10 This program is free software; you can redistribute it and/or
Chris@0 11 modify it under the terms of the GNU General Public License
Chris@0 12 as published by the Free Software Foundation; either version 2
Chris@0 13 of the License, or (at your option) any later version.
Chris@0 14
Chris@0 15 This program is distributed in the hope that it will be useful,
Chris@0 16 but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 18 GNU General Public License for more details.
Chris@0 19
Chris@0 20 You should have received a copy of the GNU Lesser General Public
Chris@0 21 License along with this library; if not, write to the Free Software
Chris@0 22 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Chris@0 23
Chris@0 24 As a special exception, if you link this library with other files,
Chris@0 25 compiled with a Free Software compiler, to produce an executable, this
Chris@0 26 library does not by itself cause the resulting executable to be covered
Chris@0 27 by the GNU General Public License. This exception does not however
Chris@0 28 invalidate any other reasons why the executable file might be covered by
Chris@0 29 the GNU General Public License.
Chris@0 30 */
Chris@0 31
Chris@0 32 :- module(rdf_entailment,
Chris@0 33 [ rdf/3
Chris@0 34 ]).
Chris@0 35 :- use_module(rdfql_runtime). % runtime tests
Chris@0 36 :- use_module(library('semweb/rdf_db'),
Chris@0 37 [ rdf_global_id/2,
Chris@0 38 rdf_subject/1
Chris@0 39 ]).
Chris@0 40
Chris@0 41 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Chris@0 42 The function of an entailment module is to provide an implementation of
Chris@0 43 rdf/3 that extends basic triple-lookup using the entailment rules of the
Chris@0 44 semantic web sub language of RDF. This one does (still a lousy) job
Chris@0 45 realising RDFS entailment on top of rdf_db.pl.
Chris@0 46 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Chris@0 47
Chris@0 48 term_expansion((rdf(S0, P0, O0) :- Body0),
Chris@0 49 (rdf(S, P, O) :- rdf_db:Body)) :-
Chris@0 50 rdf_global_id(S0, S),
Chris@0 51 rdf_global_id(P0, P),
Chris@0 52 rdf_global_id(O0, O),
Chris@0 53 expand_goal(Body0, Body).
Chris@0 54
Chris@0 55 rdf(S, P, O) :-
Chris@0 56 rdf(S, P, O).
Chris@0 57 rdf(S, rdf:type, rdf:'Property') :-
Chris@0 58 rdf(_, S, _),
Chris@0 59 \+ rdf(S, rdf:type, rdf:'Property').
Chris@0 60 rdf(S, rdf:type, rdfs:'Resource') :-
Chris@0 61 rdf_subject(S),
Chris@0 62 \+ rdf(S, rdf:type, rdfs:'Resource').
Chris@0 63 rdf(S, serql:directSubClassOf, O) :- !,
Chris@0 64 rdf(S, rdfs:subClassOf, O).
Chris@0 65 rdf(S, serql:directType, O) :- !,
Chris@0 66 rdf(S, rdf:type, O).
Chris@0 67 rdf(S, serql:directSubPropertyOf, O) :- !,
Chris@0 68 rdf(S, rdfs:subPropertyOf, O).
Chris@0 69
Chris@0 70
Chris@0 71 /*******************************
Chris@0 72 * REGISTER *
Chris@0 73 *******************************/
Chris@0 74
Chris@0 75 :- multifile
Chris@0 76 serql:entailment/2.
Chris@0 77
Chris@0 78 serql:entailment(rdf, rdf_entailment).