123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136(*********************************************************************************)(* OCaml-RDF *)(* *)(* Copyright (C) 2012-2024 Institut National de Recherche en Informatique *)(* et en Automatique. All rights reserved. *)(* *)(* This program is free software; you can redistribute it and/or modify *)(* it under the terms of the GNU Lesser General Public License version *)(* 3 as published by the Free Software Foundation. *)(* *)(* 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 program; if not, write to the Free Software *)(* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA *)(* 02111-1307 USA *)(* *)(* Contact: Maxence.Guesdon@inria.fr *)(* *)(*********************************************************************************)letrdfs_str="http://www.w3.org/2000/01/rdf-schema#";;letrdfs=Iri.of_stringrdfs_str;;letrdfs_s=Iri.of_string(rdfs_str^s);;letc_Class=rdfs_"Class";;letcomment=rdfs_"comment";;letc_Container=rdfs_"Container";;letc_ContainerMembershipProperty=rdfs_"ContainerMembershipProperty";;letc_Datatype=rdfs_"Datatype";;letdomain=rdfs_"domain";;letisDefinedBy=rdfs_"isDefinedBy";;letlabel=rdfs_"label";;letc_Literal=rdfs_"Literal";;letmember=rdfs_"member";;letrange=rdfs_"range";;letc_Resource=rdfs_"Resource";;letseeAlso=rdfs_"seeAlso";;letsubClassOf=rdfs_"subClassOf";;letsubPropertyOf=rdfs_"subPropertyOf";;moduleOpen=structletrdfs_c_Class=c_Classletrdfs_comment=commentletrdfs_c_Container=c_Containerletrdfs_c_ContainerMembershipProperty=c_ContainerMembershipPropertyletrdfs_c_Datatype=c_Datatypeletrdfs_domain=domainletrdfs_isDefinedBy=isDefinedByletrdfs_label=labelletrdfs_c_Literal=c_Literalletrdfs_member=memberletrdfs_range=rangeletrdfs_c_Resource=c_Resourceletrdfs_seeAlso=seeAlsoletrdfs_subClassOf=subClassOfletrdfs_subPropertyOf=subPropertyOfendletadd_labelgiri?langs=letobj=Term.term_of_literal_string?langsing.Graph.add_triple~sub:(Term.Iriiri)~pred:label~obj;;letadd_commentgiri?langs=letobj=Term.term_of_literal_string?langsing.Graph.add_triple~sub:(Term.Iriiri)~pred:comment~obj;;letadd_domaingiridom=g.Graph.add_triple~sub:(Term.Iriiri)~pred:domain~obj:(Term.Iridom);;letadd_rangegiridom=g.Graph.add_triple~sub:(Term.Iriiri)~pred:range~obj:(Term.Iridom);;letadd_moregiri(pred,obj)=g.Graph.add_triple~sub:(Term.Iriiri)~pred~obj;;letmk_propertyg~label?(label_lang=[])?comment?(comment_lang=[])?(domains=[])?(ranges=[])?subof?(more=[])iri=g.Graph.add_triple~sub:(Term.Iriiri)~pred:Rdf_.type_~obj:(Term.IriRdf_.c_Property);add_labelgirilabel;List.iter(fun(s,lang)->add_labelgiri~langs)label_lang;(matchcommentwithNone->()|Somes->add_commentgiris);List.iter(fun(s,lang)->add_commentgiri~langs)comment_lang;List.iter(add_domaingiri)domains;List.iter(add_rangegiri)ranges;(matchsubofwithNone->()|Somecl->g.Graph.add_triple~sub:(Term.Iriiri)~pred:subPropertyOf~obj:(Term.Iricl));List.iter(add_moregiri)more;;letmk_classg~label?(label_lang=[])?comment?(comment_lang=[])?subof?(more=[])iri=g.Graph.add_triple~sub:(Term.Iriiri)~pred:Rdf_.type_~obj:(Term.Iric_Class);add_labelgirilabel;List.iter(fun(s,lang)->add_labelgiri~langs)label_lang;(matchcommentwithNone->()|Somes->add_commentgiris);List.iter(fun(s,lang)->add_commentgiri~langs)comment_lang;(matchsubofwithNone->()|Somecl->g.Graph.add_triple~sub:(Term.Iriiri)~pred:subClassOf~obj:(Term.Iricl));List.iter(add_moregiri)more;;letadd_namespacesg=g.Graph.add_namespaceRdf_.rdf"rdf";g.Graph.add_namespacerdfs"rdfs";;