;;; Copyright (c) 2008, Joshua Taylor. All rights reserved. ;;; Redistribution and use in source and binary forms, with or without ;;; modification, are permitted provided that the following conditions ;;; are met: ;;; * Redistributions of source code must retain the above copyright ;;; notice, this list of conditions and the following disclaimer. ;;; * Redistributions in binary form must reproduce the above ;;; copyright notice, this list of conditions and the following ;;; disclaimer in the documentation and/or other materials ;;; provided with the distribution. ;;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR 'AS IS' AND ANY EXPRESSED ;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY ;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (in-package #:cl-rdfxml) (defvar +rdf-namespace+ "http://www.w3.org/1999/02/22-rdf-syntax-ns#" "The string prefix of RDF terms: http://www.w3.org/1999/02/22-rdf-syntax-ns# .") (defvar +rdfs-namespace+ "http://www.w3.org/2000/01/rdf-schema#" "The string prefix of RDFS terms: http://www.w3.org/2000/01/rdf-schema#") (defmacro define-prefixed-name (name prefix suffix) "define-prefixed-name name prefix suffix name---a symbol, not evaluated prefix, suffix---evaluated to produce strings Define-prefixed-term defines name as a constant. The value of the constant is an interned puri URI generated by concatenating the strings designated by prefix and suffix." `(defvar ,name (puri:intern-uri (strcat ,prefix ,suffix)))) (defmacro define-rdf-term (name suffix) "define-rdf-term name suffix name---a symbol, not evaluated suffix---evaluated to produce a string designator define-rdf-term defines name as a constant. The value of the new constant is a PURI uri constructed by concatenating +rdf-namespace+ and the suffix." `(define-prefixed-name ,name +rdf-namespace+ ,suffix)) #+:lispworks (progn (editor:setup-indent "define-rdf-term" 1) (editor:setup-indent "define-rdfs-term" 1)) (defmacro define-rdfs-term (name suffix) "define-rdfs-term name suffix name---a symbol, not evaluated suffix---evaluated to produce a string designator define-rdfs-term defines name as a constant. The value of the new constant is a PURI uri constructed by concatenating +rdfs-namepsace+ and the string designated by suffix." `(define-prefixed-name ,name +rdfs-namespace+ ,suffix)) ;;;; RDF Schema summary ;; Vocabulary appears here in the order that it is presented in ;; Section 6 of RDF Vocabulary Description Language 1.0: RDF Schema. ;;; 6.1 RDF Classes (define-rdfs-term +rdfs-resource+ "Resource") (define-rdfs-term +rdfs-literal+ "Literal") (define-rdf-term +rdf-xml-literal+ "XMLLiteral") (define-rdfs-term +rdfs-class+ "Class") (define-rdf-term +rdf-property+ "Property") (define-rdfs-term +rdfs-datatype+ "Datatype") (define-rdf-term +rdf-statement+ "Statement") (define-rdf-term +rdf-bag+ "Bag") (define-rdf-term +rdf-seq+ "Seq") (define-rdf-term +rdf-alt+ "Alt") (define-rdfs-term +rdfs-container+ "Container") (define-rdfs-term +rdfs-container-membership-property+ "ContainerMembershipProperty") (define-rdf-term +rdf-list+ "List") ;;; 6.2 RDF Properties (define-rdf-term +rdf-type+ "type") (define-rdfs-term +rdfs-subclass-of+ "subClassOf") (define-rdfs-term +rdfs-subproperty-of+ "subPropertyOf") (define-rdfs-term +rdfs-domain+ "domain") (define-rdfs-term +rdfs-range+ "range") (define-rdfs-term +rdfs-label+ "label") (define-rdfs-term +rdfs-comment+ "comment") (define-rdfs-term +rdfs-member+ "member") (define-rdfs-term +rdfs-see-also+ "seeAlso") (define-rdfs-term +rdfs-is-defined-by+ "isDefinedBy") (define-rdf-term +rdf-first+ "first") (define-rdf-term +rdf-rest+ "rest") (define-rdf-term +rdf-value+ "value") (define-rdf-term +rdf-subject+ "subject") (define-rdf-term +rdf-predicate+ "predicate") (define-rdf-term +rdf-object+ "object") ;;;; Other RDF names ;; These appear in the order of Section 5.1, The RDF Namespace and ;; Vocabulary, of the RDF/XML Syntax Specification. ;;; Syntax Names --- not concepts (define-rdf-term +rdf-rdf+ "RDF") (define-rdf-term +rdf-description+ "Description") (define-rdf-term +rdf-id+ "ID") (define-rdf-term +rdf-about+ "about") (define-rdf-term +rdf-parse-type+ "parseType") (define-rdf-term +rdf-resource+ "resource") (define-rdf-term +rdf-li+ "li") (define-rdf-term +rdf-node-id+ "nodeID") (define-rdf-term +rdf-datatype+ "datatype") ;;; Resource names (define-rdf-term +rdf-nil+ "nil") ;;; Old Terms --- these are described in 7.2.4 production oldTerms (define-rdf-term +rdf-bag-ID+ "bagID") (define-rdf-term +rdf-about-each+ "aboutEach") (define-rdf-term +rdf-about-each-prefix+ "aboutEachPrefix")