/* * Copyright (C) 2004 Map Bureau - http://www.mapbureau.com * * This package is Free Software released under the BSD license. * * See license.html at the top of this package for the full license terms. * */ /* compile("file://../lib/geometry/1.1/revision2.fb","file://../lib/geometry/1.1/revision2.fbl"); excludeNonTopicalNamespaces = true; compile("file://../lib/geometry/1.1/revision2.rdf","file://../lib/geometry/1.1/revision2.fbl"); */ /* assumes prior loading of the following code, normally in init.fbl load("{stdlibPrefix}discovery0.fb"); discovery:namespaces(); discovery:discovery(); */ install(namespace('dc')); startPersisting(); setTopic(namespace('geom')); //startCollectingTriples(); namespace('geom').dc:title = "RDF Geometry Vocabulary"; namespace('geom').dc:creator = "Chris Goad cg@mapbureau.com"; namespace('geom').dc:date = "2004-10-27"; namespace('geom')..rdfs:seeAlso = resource("http://fabl.net/lib/geometry/1.1/"); addComment(namespace('geom'),"See also http://fabl.net/lib/geometry/1.1/revision2.html"); class("geom:Shape"); endClass(); geom:Shape . rdfs:comment = "The class of all geometrical forms"; allocate("geom:minDimension",FunctionalProperty); geom:minDimension.rdfs:range = int; geom:minDimension.rdfs:comment = "The minimum dimension of points in the extension of a Shape"; allocate("geom:maxDimension",FunctionalProperty); geom:maxDimension.rdfs:range = int; geom:maxDimension.rdfs:comment = "The maximum dimension of points in the extension of a Shape"; allocate("geom:x",Property); allocate("geom:y",Property); allocate("geom:z",Property); class("geom:Point"); endClass(); geom:Point .. rdfs:subClassOf = geom:Shape; class("geom:Transformation"); endClass(); geom:Transformation . rdfs:comment = "The class of all functions with geom:Point as domain and range"; allocate("geom:elements",Property); var SeqOfShape = SeqOf(geom:Shape); class("geom:Group"); restrict geom:elements {cardinality 1;allValuesFrom SeqOf(geom:Shape)} endClass(); geom:Group .. rdfs:subClassOf = geom:Shape; geom:Group . rdfs:comment = "A collection of geom:Shapes"; class("geom:Curve"); endClass(); geom:Curve .. rdfs:subClassOf = geom:Shape; geom:Curve . rdfs:comment = "The range of a continuous function from a real interval to geom:Point"; allocate("geom:end0",Property); allocate("geom:end1",Property); // Was OpenCurve (terminological blunder) class("geom:CurveSegment"); restrict geom:end0 {cardinality 1;allValuesFrom geom:Point} restrict geom:end1 {cardinality 1;allValuesFrom geom:Point} endClass(); geom:CurveSegment .. rdfs:subClassOf = geom:Curve; geom:CurveSegment . rdfs:comment = "A geom:Curve with distinct end points"; class("geom:ClosedCurve"); endClass(); geom:ClosedCurve .. rdfs:subClassOf = geom:Curve; geom:ClosedCurve . rdfs:comment = "A one-dimensional loop of points"; class("geom:LineSegment"); endClass(); geom:LineSegment .. rdfs:subClassOf = geom:CurveSegment; geom:LineSegment . rdfs:comment = "A straight line segment"; allocate("geom:points",Property); class("geom:Polyline"); restrict geom:points {cardinality 1;allValuesFrom SeqOf(geom:Point)} endClass(); geom:Polyline .. rdfs:subClassOf = geom:Curve; geom:Polyline . rdfs:comment = "A piecewise linear curve"; allocate("geom:xmin",Property); allocate("geom:xmax",Property); allocate("geom:ymin",Property); allocate("geom:ymax",Property); allocate("geom:zmin",Property); allocate("geom:zmax",Property); class("geom:Box"); restrict geom:xmin {cardinality 1;allValuesFrom double} restrict geom:xmax {cardinality 1;allValuesFrom double} restrict geom:ymin {maxCardinality 1;allValuesFrom double} restrict geom:ymax {maxCardinality 1;allValuesFrom double} restrict geom:zmin {maxCardinality 1;allValuesFrom double} restrict geom:zmax {maxCardinality 1;allValuesFrom double} endClass(); geom:Box .. rdfs:subClassOf = geom:Shape; geom:Box . rdfs:comment = "Points lying within specified bounds on coordinates"; allocate("geom:center",Property); allocate("geom:radius",Property); allocate("geom:boundary",Property); allocate("geom:direction",Property);