1:- module(owl_types, 2 [ 3 ]). 4 5:- use_module(library(typedef)). 6 7% ==================== 8% RDF TYPES 9% ==================== 10 11:- type iri_ref ---> curie ; atomic_iri. 12 13:- type atomic_iri == atom. 14:- type curie ---> iri_prefix : iri_local_part. 15:- type iri_prefix == atom. 16:- type iri_local_part == atom. 17 18:- type blank_node == atom. 19:- type rdf_resource ---> iri_ref ; blank_node. 20:- type rdf_resource_or_literal ---> rdf_resource ; rdf_literal. 21:- type rdf_literal ---> rdf_plain_literal ; rdf_lang_literal ; rdf_typed_literal. 22:- type rdf_plain_literal == string. 23:- type rdf_lang_literal ---> '@'(string,atom). % todo - consider enum 24:- type rdf_typed_literal ---> '^^'(string,xsd_type). 25:- type xsd_type ---> iri_ref. 26 27:- type rdf_triple ---> rdf(rdf_resource, iri_ref, rdf_resource_or_literal). 28:- type rdf_quad ---> rdf(rdf_resource, iri_ref, rdf_resource_or_literal, rdf_resource). 29:- type rdf_fact ---> rdf_triple ; rdf_quad. 30 31% ==================== 32% OWL TYPES 33% ==================== 34 35:- type owl_class_expression ---> owl_restriction ; owl_class. 36:- type owl_class ---> iri_ref. 37:- type owl_restriction ---> owl_some_values_from ; owl_all_values_from. 38:- type owl_some_values_from ---> some(owl_property_expression, owl_class_expression). 39:- type owl_all_values_from ---> some(owl_property_expression, owl_class_expression). 40 41:- type owl_property_expression ---> owl_restriction ; owl_property. 42:- type