100 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| 
								 | 
							
								/*  Part of SWI-Prolog
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Author:        Jan Wielemaker
							 | 
						||
| 
								 | 
							
								    E-mail:        J.Wielemaker@uva.nl
							 | 
						||
| 
								 | 
							
								    WWW:           http://www.swi-prolog.org
							 | 
						||
| 
								 | 
							
								    Copyright (C): 2009, University of Amsterdam
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    This program is free software; you can redistribute it and/or
							 | 
						||
| 
								 | 
							
								    modify it under the terms of the GNU General Public License
							 | 
						||
| 
								 | 
							
								    as published by the Free Software Foundation; either version 2
							 | 
						||
| 
								 | 
							
								    of the License, or (at your option) any later version.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    This program is distributed in the hope that it will be useful,
							 | 
						||
| 
								 | 
							
								    but WITHOUT ANY WARRANTY; without even the implied warranty of
							 | 
						||
| 
								 | 
							
								    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
							 | 
						||
| 
								 | 
							
								    GNU General Public License for more details.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    You should have received a copy of the GNU General Public
							 | 
						||
| 
								 | 
							
								    License along with this library; if not, write to the Free Software
							 | 
						||
| 
								 | 
							
								    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    As a special exception, if you link this library with other files,
							 | 
						||
| 
								 | 
							
								    compiled with a Free Software compiler, to produce an executable, this
							 | 
						||
| 
								 | 
							
								    library does not by itself cause the resulting executable to be covered
							 | 
						||
| 
								 | 
							
								    by the GNU General Public License. This exception does not however
							 | 
						||
| 
								 | 
							
								    invalidate any other reasons why the executable file might be covered by
							 | 
						||
| 
								 | 
							
								    the GNU General Public License.
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- module(turtle_base,
							 | 
						||
| 
								 | 
							
									  [				% Tests
							 | 
						||
| 
								 | 
							
									    turtle_name_start_char/1,	% +Integer
							 | 
						||
| 
								 | 
							
									    turtle_name/1,		% +Atom
							 | 
						||
| 
								 | 
							
													% Input
							 | 
						||
| 
								 | 
							
									    turtle_read_name/4,		% +C0, +Stream, -C, -Atom
							 | 
						||
| 
								 | 
							
									    turtle_read_string/4,	% +C0, +Stream, -C, -Atom
							 | 
						||
| 
								 | 
							
									    turtle_read_relative_uri/4,	% +C0, +Stream, -C, -Atom
							 | 
						||
| 
								 | 
							
													% Output
							 | 
						||
| 
								 | 
							
									    turtle_write_quoted_string/2, % +Stream, +Atom
							 | 
						||
| 
								 | 
							
									    turtle_write_uri/2		% +Stream, +Atom
							 | 
						||
| 
								 | 
							
									  ]).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** <module> Basic RDF/Turtle helper predicates
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This module provides a couple  of   time-critical  primitives to speedup
							 | 
						||
| 
								 | 
							
								reading a writing the  RDF/Turtle   serialization.  The  definitions are
							 | 
						||
| 
								 | 
							
								based on:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									http://www.w3.org/TeamSubmission/2008/SUBM-turtle-20080114/
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- use_foreign_library(foreign(turtle)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%%	turtle_name_start_char(+Code) is semidet.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	True if Code is a valid character code to start a Turtle name.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%%	turtle_name(+Atom:atom) is semidet.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	True if Atom is a valid Turtle name.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	@see xml_name/2.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%%	turtle_read_name(+C0, +Stream, -C, -Atom) is semidet.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	Read a Turtle name starting with C0 from Stream. If successfull,
							 | 
						||
| 
								 | 
							
								%	C is unified with the first character after the name and Atom is
							 | 
						||
| 
								 | 
							
								%	an atom representing the name read.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%%	turtle_read_string(+C0, +Stream, -C, -Atom) is semidet.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	Read a Turtle quotes string  starting   with  C0 from Stream. If
							 | 
						||
| 
								 | 
							
								%	successfull, C is unified with  the   first  character after the
							 | 
						||
| 
								 | 
							
								%	string and Atom is an atom representing the text of the string.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	@error syntax_error(Culprit)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%%	turtle_read_relative_uri(+C0, +Stream, -C, -Atom) is semidet.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	Read a Turtle relative URI (<...>) into an atom and unify C with
							 | 
						||
| 
								 | 
							
								%	the next character.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	@error syntax_error(Culprit)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										 /*******************************
							 | 
						||
| 
								 | 
							
										 *	      WRITING		*
							 | 
						||
| 
								 | 
							
										 *******************************/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%%	turtle_write_quoted_string(+Out, +Value) is det.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	Write a string as =|"..."|=
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%%	turtle_write_uri(+Out, +Value) is det.
							 | 
						||
| 
								 | 
							
								%
							 | 
						||
| 
								 | 
							
								%	Write a URI as =|<...>|=
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |