summaryrefslogtreecommitdiff
path: root/examples/RDF
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2009-07-06 19:58:27 +0000
committerkrasimir <krasimir@chalmers.se>2009-07-06 19:58:27 +0000
commitfd03f9fa0f799fabaef7b850d6b4808f280fdf1d (patch)
tree1f1a15d6f52dce57f57492694d3eebdb427845d3 /examples/RDF
parentb823a6479561dff33f2f123a7c90bf60e4c64548 (diff)
added example for abstract syntax of RDF
Diffstat (limited to 'examples/RDF')
-rw-r--r--examples/RDF/RDF.gf77
1 files changed, 77 insertions, 0 deletions
diff --git a/examples/RDF/RDF.gf b/examples/RDF/RDF.gf
new file mode 100644
index 000000000..588d3f596
--- /dev/null
+++ b/examples/RDF/RDF.gf
@@ -0,0 +1,77 @@
+-------------------------------------------------------------------------
+--
+-- Abstract Syntax for RDF according to the RDF and RDFS specifications
+--
+-- (c) Krasimir Angelov
+--
+-------------------------------------------------------------------------
+
+abstract RDF = {
+
+cat Value (class : Class) ;
+
+cat Resource (class : Class) ;
+fun res : (c : Class) -> Resource c -> Value c ;
+
+cat [Resource (class : Class)] ;
+
+cat URI ;
+fun uri : (c : Class) -> URI -> Resource c ;
+
+cat BNode ;
+fun bnode : (c : Class) -> BNode -> Resource c ;
+ nodeId : String -> BNode ;
+
+cat DataType ;
+fun datatype : DataType -> URI ;
+
+cat Literal ;
+fun lit : Literal -> Value literal_C ;
+ int : Int -> Literal ;
+ float : Float -> Literal ;
+ string : String -> DataType -> Literal ;
+
+cat Property (domain, range : Class) ;
+fun property : (d, r : Class) -> Property d r -> URI ;
+
+cat Container (class : Class) ;
+fun container : (c : Class) -> Container c -> Resource c ;
+ bag : Resource bag_C -> [Resource resource_C] -> Container bag_C ;
+ seq : Resource seq_C -> [Resource resource_C] -> Container seq_C ;
+ alt : Resource alt_C -> [Resource resource_C] -> Container alt_C ;
+
+cat Statement ;
+fun statement : Statement -> Resource statement_C ;
+ assert : (d,r : Class) -> Resource d -> Property d r -> Value r -> Statement ;
+ r_assert : (d,r : Class) -> Resource statement_C -> Resource d -> Property d r -> Value r -> Statement ;
+
+cat Attribute (class : Class) (subject : Resource class) ;
+fun assign : (d,r : Class) -> (s : Resource d) -> Property d r -> Value r -> Attribute d s ;
+ r_assign : (d,r : Class) -> Resource statement_C -> (s : Resource d) -> Property d r -> Value r -> Attribute d s ;
+
+cat [Attribute (class : Class) (subject : Resource class)] ;
+
+cat Description ;
+fun description : Description -> Resource bag_C ;
+ describe : (c : Class) -> (s : Resource c) -> [Attribute c s] -> Description ;
+ r_describe : Resource bag_C -> (c : Class) -> (s : Resource c) -> [Attribute c s] -> Description ;
+
+cat Class ;
+fun class : Class -> Resource class_C ;
+
+fun resource_C : Class ;
+ class_C : Class ;
+ property_C : Class ;
+ constraintResource_C : Class ;
+ constraintProperty_C : Class ;
+ literal_C : Class ;
+ statement_C : Class ;
+ bag_C : Class ;
+ seq_C : Class ;
+ alt_C : Class ;
+
+cat Inheritance (c1,c2 : Class) ;
+fun inheritance : (c1,c2 : Class) -> Inheritance c1 c2 -> Statement ;
+ upcast : (c1,c2 : Class) -> Inheritance c1 c2 -> Resource c1 -> Resource c2 ;
+
+} \ No newline at end of file