AMicroformat

From VoCamp Wiki
Jump to: navigation, search

I worked on a mapping from microformats to RDF(a) and would like to share what I got so far and solicit some feedback.

The general approach is that while there are quite a few microformats they all share the same namespace. So it should be possible to map them all into one big microformats mothership vocabulary (from which the individual microformats can be derived by simple inference eg through sparql queries).

Why would one want to do that? One application would be when you need to use several formats on one page and microformats hit the wall because of their lack of a namespaceing mechanism. Or you'd like to use a well establised microformat but for other reasons need to use RDF(a) - I had that with hRecipe. Another reason could be that you want to map microformats to formats of the upper case semantic web like eg Dublin Core to facilitate interoperability.

So what I did was reserve a PURL, define some helper constructs, map every microformat to a subject and every microformat property to a property, apply ranges and domains and model the format restrictions in OWL2. That last step maybe was quite a waste of time since I'm not sure if it is a) correct and b) of any practical use. Another problem is that the reuse of elements in microformats is a little lax - reused elements do not always share the same format restrictions and semantics with the original element. So I had to give the derived properties new names and make them subproperties of the original ones. Therefor the mapping is not always as intuitive as it should be.

As an *extra* I modeled some equivalent class relations from microformats to Dublin Core and friends. This is of course very extendable and absolutely non-normative. I would be interested in gettig some advice on that section regarding best practices, namespace squatting etc. I know there are traps but I don't know exactly where.

In short: what do you think about the usefulness of the whole effort? what about the structure i gave to the thing? do you find bugs? do you like the OWLified format restrictions? do you think the mappings are useful? do you have suggestions how to facilitate collaborative editing? anything else?


As microformats are evolving and mappings to other vocabularies will always be in flux it would be advantgeous to facilitate collaborative and iterative editing. maybe a wiki is enough. i would prefer a more elaorate software but couldn't find one so far that's suitable for collaborative work, free and well supported.


@base                <http://purl.org/AMICROFORMAT/> .


@prefix rdf:         <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:        <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:         <http://www.w3.org/2001/XMLSchema#> .
@prefix owl:         <http://www.w3.org/2002/07/owl#> .
@prefix owl2:        <http://www.w3.org/2006/12/owl2-xml#> .
@prefix dcterms:     <http://purl.org/dc/terms/> .
@prefix skos:        <http://www.w3.org/2008/05/skos#> .
@prefix :            <http://purl.org/AMICROFORMAT/mf2rdf.owl#> .
@prefix mfs:         <http://purl.org/AMICROFORMAT/aMFdatatypes.xsd#> .


#################### todo ####################################
# import owl2.rdf
# define datatypes in :mfs
##############################################################


##############################################################
#################### mf2rdf ##################################
##############################################################


<>       
  a                  owl:Ontology;
  rdfs:seeAlso        <http://microformats.org> ;
  rdfs:label         "aMicroformat" ;
  owl:versionInfo    "05052009" ;
  rdfs:comment       
    "microformats are a way to encode semantic information into (x)html. they define formats that share one common namespace. this piece of work defines a mapping from microformats into RDF-land by mirroring the  elements of microformats - as straight as possible - into an RDF vocabulary and then mapping this mf-specific voacbulary into established RDF-vocabularies.",
    "This omtology is only informative. The normative version is always that on the site <http://microformats.org>."
  .


#################### little helpers ############################


:hasAbstractClass
  a                  owl:objectProperty ;
  rdfs:subclassOf    [ owl:inverseOf  rdfs:subClassOf ] ;
  rdfs:range         :AbstractClass ;
  rdfs:comment
    "some microformats implicitly define the equivalent of what's called 'blank nodes' in RDF, e.g. to express hierarchies of subproperties. the property 'hasAbstractClass' is a helper property to model those implicit constructs."
  .
 
:AbstractClass           
  a                  owl:Class;
  rdfs:comment
    "some microformats implicitly define the equivalent of what's called 'blank nodes' in RDF, e.g. to express hierarchies of subproperties. the property 'hasAbstractClass' is a helper property to model those implicit constructs. the class 'AbstractClass' is a helper class to capture those constructs. individuals of type 'AbstractClass' are not explicit parts of the original microformat being re-modeled."
  .
 
:defines
  a                  owl:objectProperty ;
  owl:inverseOf      rdfs:isDefinedBy ;
  rdfs:subPropertyOf rdfs:seeAlso ;
  rdfs:label         "defines" ;
  rdfs:domain        :AMicroformat ;
  rdfs:comment
    "this microformat defines that element"
  .
 
:reUses
  a owl:objectProperty;
  rdfs:subPropertyOf rdfs:seeAlso ;
  rdfs:label         "reuses" ;
  rdfs:domain        :AMicroformat ;
  rdfs:comment
    "this microformat re-uses that element from another microformat"
  .

:reFines
  a                  owl:objectProperty;
  rdfs:subPropertyOf :reUses ,
                     :defines ;
  rdfs:label         "refines" ;
  rdfs:domain        owl:ObjectProperty ;
  rdfs:comment
    "this microformat re-uses that element from another microformat, but with different constraints on value properties"
  .

:superClassOf           
  a                  owl:Class;
  owl:inverseOf      rdfs:subClassOf ;
  rdfs:comment
    "comes in handy when modeling mappings"
  . 

:XSDstring           a owl:Restriction ;
                     owl2:onDatatype xsd:string
 .
 
:IngredientClass
  a                  owl:Class ;
  rdfs:subclassOf    :AbstractClass;
  rdfs:comment
    "A helper class for constructing the RDF-graph"
  .
 
:NutritionClass
  a                  owl:Class ;
  rdfs:subclassOf    :AbstractClass;
  rdfs:comment
    "A helper class for constructing the RDF-graph"
  .
 


#################### aMicroformat ############################
#################### #########################################


:AMicroformat 
  a                  owl:Class;       
  rdfs:label         "aMicroformat" ;
  rdfs:isDefinedBy   <http://microformats.org> ;
  rdfs:seeAlso        <http://microformats.org/wiki/existing-classes> ;
  owl:versionInfo    "18012009" ;
  rdfs:comment         
    "the class of all RDF-ized microformats",   
    "The subclasses of AMicroformat are RDF-ifications of microformats defined on the site <http://microformats.org>. They merely reference the fields from the aMicroformat ontology (of which they are part of themselves), that are defined or referenced by the original microformat. More thorough descriptions of those elements, together with mappings to well established RDF-vocabularies and terms are contained in this aMicroformat ontology."
  .



#################### aAdr ####################################   
 
:AAdr 
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "AAdr" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/adr> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=adr&oldid=34499> ;
  :reUses            :adr ;
  rdfs:comment         
    "This specification introduces the adr microformat, which is a 1:1 representation of the aforementioned adr property from the vCard standard, by simply reusing the adr property and sub-properties as-is from the hCard microformat. <http://microformats.org/wiki/adr>" ,
    "Address of the object. <http://microformats.org/wiki/existing-classes>"
  .



#################### aAtom ###################################   
 
:AAtom 
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hAtom> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=hatom&oldid=36131> ;
  :defines           :Feed ,
                     :Entry ,
                     :author ,
                     :entry-title ,
                     :entry-content ,
                     :entry-summary ,
                     :updated ,
                     :published ;
  :reUses            :bookmark ,
                     :category ,
                     :tag ;
  rdfs:comment         
    "hAtom is a microformat for content that can be syndicated, primarily but not exclusively weblog postings. hAtom is based on a subset of the <a href='http://www.atomenabled.org/'>Atom</a> syndication format. <http://microformats.org/wiki/hAtom>"
  .



#################### aBookmark ###############################   
 
:ABookmark 
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "aBookmark" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/rel-design-pattern#rel.3D.22bookmark.22> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=rel-design-pattern&oldid=34534> ;
  :defines           :bookmark ;
  rdfs:comment         
    "The HTML4 spec describes a bookmark as 'a link to a key entry point within an extended document'. By convention, this entry point also captures the notion of a 'permalink'.  <http://microformats.org/wiki/rel-design-pattern#rel.3D.22bookmark.22>"
  .
 
 
 
#################### aCalendar ###############################   
 
:ACalendar 
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "aCalendar" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hCalendar> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=hcalendar-profile&oldid=36338> ;
  :defines           :Calendar ,
                     :Event ,
                     :attendee ,
                     :dtend ,
                     :dtstamp ,
                     :dtstart ,
                     :duration ,
                     :last-modified ,
                     :location ,
                     :method ,
                     :organizer ,
                     :status ,
                     :summary ;
  :reUses            :uid ,
                     :category ,
                     :class ,
                     :contact ,
                     :description ;
  rdfs:comment         
    "hCalendar is a simple, open, distributed calendaring and events format, based on the iCalendar standard (RFC2445 <http://www.ietf.org/rfc/rfc2445.txt>), suitable for embedding in HTML or XHTML, Atom, RSS, and arbitrary XML. hCalendar is one of several open microformat standards.  <http://microformats.org/wiki/hCalendar>"
  .

:ACalendar 
  rdfs:isDefinedBy   <http://microformats.org/wiki/User:TobyInk/hcalendar-1.1> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=User:TobyInk/hcalendar-1.1&oldid=34782> ;
  :defines           :ToDo ,
                     :FreeBusy ,
                     :action ,
                     :alarm ,
                     :attach ,
                     :calscale ,
                     :comment ,
                     :completed ,
                     :created ,
                     :due ,
                     :duration ,
                     :exdate ,
                     :exrule ,
                     :fbtype ,
                     :freebusy-property ,
                     :percent-complete ,
                     :priority ,
                     :recurrence-id ,
                     :related-to ,
                     :repeat ,
                     :resources ,
                     :rdate ,
                     :rrule ,
                     :sequence ,
                     :transp ,
                     :trigger ;
  :reUses            :geo ,
                     :value ,
                     :url ;
  rdfs:comment         
    "I am aware of the existence of hcalendar-brainstorming and htask. This is intended to be more of a formal-style document, representing a draft replacement for the current hcalendar spec, mostly aimed at filling in areas where the current spec is incomplete or ambiguous, rather than adding newly requested functionality.  <http://microformats.org/wiki/User:TobyInk/hcalendar-1.1>"
  .



#################### aCard ###################################   
 
:ACard 
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "ACard" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hCard> ;
  rdfs:seeAlso       <http://microformats.org/wiki/hCard-profile> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=hcard&oldid=37681> ;
  :defines           :Card ,
                     :additional-name ,
                     :adr ,
                     :agent ,
                     :bday ,
                     :category ,
                     :class ,
                     :country-name ,
                     :email ,
                     :extended-adress ,
                     :family-name,
                     :fn ,
                     :geo ,
                     :given-name ,
                     :honorific-prefix ,
                     :key ,
                     :label ,
                     :latitude ,
                     :locality ,
                     :logo ,
                     :longitude ,
                     :mailer ,
                     :n ,
                     :nickname ,
                     :note ,
                     :org ,
                     :organization-name ,
                     :organization-unit ,
                     :photo ,
                     :postal-code ,
                     :post-office-bowl2 ,
                     :region ,
                     :rev ,
                     :role ,
                     :sort-string ,
                     :sound ,
                     :street-adress ,
                     :tel ,
                     :title ,
                     :type ,
                     :tz ,
                     :uid ,
                     :url ,
                     :value ;
  rdfs:comment
    "All values are defined according to the semantics defined in the <a href='http://microformats.org/wiki/hcard'> hCard specification</a> and thus in <a href='http://www.ietf.org/rfc/rfc2426.txt'>RFC 2426</a>. <http://microformats.org/wiki/hcard-profile>"
  .



##################### aGeo #####################################   
 
:AGeo 
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "AGeo" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/geo> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=geo&oldid=34497> ;
  :reUses            :geo ;
  rdfs:comment         
    "geo (pronounced 'gee-oh') is a simple format for marking up WGS84 geographic coordinates (latitude; longitude), suitable for embedding in HTML or XHTML, Atom, RSS, and arbitrary XML. geo is a 1:1 representation of the 'geo' property in the vCard standard (RFC2426) in HTML, one of several open microformat standards.  <http://microformats.org/wiki/geo>"
  .



#################### aMeasure #################################   
 
:AMeasure
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "aMeasure" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/measure> ;
  owl:versionInfo    "pre-Draft",
                     <http://microformats.org/wiki/index.php?title=measure&oldid=36622> ;
  :defines           :Angle ,
                     :Measure ,
                     :Money ,
                     :num ,
                     :unit ,
                     :tolerance ;
  :reUses            :item ,
                     :type ;
  rdfs:comment         
    "The problem: Measures (e.g. weights, sizes, temperatures) occur frequently on the Web, they are constituted of a value a unit-measure and, in scientific and technical contexts, an experimental uncertainty. These 3 elements should be marked-up consistently across websites so that they can be easily identified and acted upon (export, compute, convert) in collaborative distributed applications. Unit-measures differ from locale to locale (e.g. Fahrenheit vs. Celsius, pound versus Kilogram), making comparison and matching of offerings difficult. The Measurement microformat will enable unambiguous description of physical quantities and thus provide a solid ground for data sharing and automation in many areas.  <http://microformats.org/wiki/measure>"
  . 



#################### aRecipe ################################### 

:ARecipe 
  rdfs:subclassOf    :AMicroformat;
  rdfs:label         "aRecipe" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hrecipe> ;
  owl:versionInfo    "Draft 0.21" ;
  :defines           :Recipe,
                     :ingredient,
                     :instructions,
                     :nutrition,
                     :yield;
  :reUses            :duration,
                     :fn,
                     :published,
                     :photo,
                     :summary,
                     :tag,
                     :type,
                     :value;
  :hasAbstractClass  :IngredientClass ,
                     :NutritionClass ;
  rdfs:comment         
    "The hRecipe microformat is designed for the mark-up of instructions for creating meals, drinks or food-based items. <http://microformats.org/wiki/recipe#Introduction>"
  .       



#################### aRelLicense ############################## 
 
:ARelLicense 
  rdfs:subclassOf    :AMicroformat;
  rdfs:label         "aRelLicense" ;
  rdfs:isDefinedBy   <http://microformats.org/rel-license> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=rel-license&oldid=34418> ;
  :defines           :license ;
  rdfs:comment         
    "Rel-License is a simple, open, format for indicating content licenses which is embedable in HTML or XHTML, Atom, RSS, and arbitrary XML. [...] By adding rel='license' to a hyperlink, a page indicates that the destination of that hyperlink is a license for the current page. <http://microformats.org/wiki/rel-license>"
  .   



#################### aRelTag ################################# 
 
:ARelTag   
  rdfs:subclassOf    :AMicroformat;
  rdfs:label         "aRelTag" ;
  rdfs:isDefinedBy   <http://microformats.org/rel-tag> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=rel-tag&oldid=36762> ;
  :defines           :tag ;
  rdfs:comment         
    "Rel-Tag is one of several MicroFormats. By adding rel='tag' to a hyperlink, a page indicates that the destination of that hyperlink is an author-designated 'tag' (or keyword/subject) for the current page. Note that a tag may just refer to a major portion of the current page (i.e. a blog post). e.g. by placing this link on a page, <a href='http://technorati.com/tag/tech' rel='tag'>tech</a> the author indicates that the page (or some portion of the page) has the tag 'tech'. The linked page SHOULD exist, and it is the linked page, rather than the link text, that defines the tag. The last path component of the URL is the text of the tag, so <a href='http://technorati.com/tag/tech' rel='tag'>fish</a> would indicate the tag 'tech' rather than 'fish'. <http://microformats.org/wiki/rel-tag#Abstract>"
  .   



#################### aResume #################################   
 
:AResume
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "aResume" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hresume> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=hresume&oldid=34484> ;
  :defines           :Resume ,
                     :affiliation ,
                     :contact ,
                     :education ,
                     :experience ,
                     :publications ,
                     :skill ;
  :reUses            :summary ;
  rdfs:comment         
    "hResume is a microformat for publishing resumes and CVs. <http://microformats.org/wiki/hResume>"
  .



#################### aReview #################################   
 
:AReview 
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "aReview" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hreview> ;
  owl:versionInfo    <http://microformats.org/wiki/index.php?title=hreview&oldid=35035> ;
  :defines           :Review ,
                     :description ,
                     :dtreviewed ,
                     :item ,
                     :permalink ,
                     :rating ,
                     :reviewer ,
                     :version ;
  :reUses            :bookmark ,
                     :category,
                     :email ,
                     :fn ,
                     :license ,
                     :photo ,
                     :summary ,
                     :tag ,
                     :type ,
                     :url ,
                     :value ;
  rdfs:comment         
    "hReview is a simple, open, distributed format, suitable for embedding reviews (of products, services, businesses, events, etc.) in HTML, XHTML, Atom, RSS, and arbitrary XML. hReview is one of several microformats open standards.  <http://microformats.org/wiki/hreview>"
  .   



#################### aXFN ####################################   
 
:AXFN
  rdfs:subclassOf    :AMicroformat ;
  rdfs:label         "aXFN" ;
  rdfs:isDefinedBy   <http://gmpg.org/xfn/> ;
  owl:versionInfo    "1.1" ;
  :defines           :acquaintance ,
                     :child ,
                     :colleague ,
                     :contact ,
                     :co-resident ,
                     :co-worker ,
                     :crush ,
                     :date ,
                     :friend ,
                     :kin ,
                     :me ,
                     :met ,
                     :muse ,
                     :neighbor ,
                     :parent ,
                     :sibling ,
                     :spouse ,
                     :sweetheart;
  :hasAbstractClass  :AXFNperson;
  rdfs:comment         
    "XFN (XHTML Friends Network) is a simple way to represent human relationships using hyperlinks. <http://gmpg.org/xfn/>"
  .


#################### #########################################
#################### all the fields ##########################
#################### #########################################   

#################### classes ################################# 



:Angle     
  rdfs:label         "angle" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/meaure#hangle> ;
  rdfs:comment
    "Angular Measure Schema" ;
  rdfs:subclassOf    :AMeasure , 
                     [ a owl:Restriction ;
                       owl:onProperty :num ;
                       owl:cardinality "1"^^xsd:int
                       ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :item ,
                                      :type ,
                                      :tolerance ;
                       owl:minCardinality "0"^^xsd:int;
                       ]
    .


:Card     
  rdfs:label         "card" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hCard> ;
  rdfs:comment
    "A container for the rest of the class names defined in this aCard. See section 1. of RFC 2426 <http://www.ietf.org/rfc/rfc2426.txt>." ,
    "Indicates that this element and all containing elements are part of the hCard microformat.  <http://microformats.org/wiki/existing-classes>" ;
  rdfs:subclassOf    :ACard, 
                     [ a owl:Restriction ;
                       owl:onProperty :fn ,
                                      :n ;
                       owl:cardinality "1"^^xsd:int
                       ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :bday ,
                                      :class ,
                                      :geo ,
                                      :sort-string ,
                                      :tz ,
                                      :uid ;
                       owl:maxCardinality "1"^^xsd:int
                       ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :additional-name ,
                                      :adr ,
                                      :agent ,
                                      :category ,
                                      :country-name ,
                                      :email ,
                                      :extended-adress ,
                                      :family-name ,
                                      :given-name ,
                                      :honorific-prefix ,
                                      :key ,
                                      :label ,
                                      :latitude ,
                                      :locality ,
                                      :logo ,
                                      :longitude ,
                                      :mailer ,
                                      :nickname ,
                                      :note ,
                                      :org ,
                                      :organization-name ,
                                      :organization-unit ,
                                      :photo ,
                                      :postal-code ,
                                      :post-office-bowl2 ,
                                      :region ,
                                      :rev ,
                                      :role ,
                                      :sound ,
                                      :street-adress ,
                                      :tel ,
                                      :title ,
                                      :type ,
                                      :url ,
                                      :value ;
                       owl:minCardinality  "0"^^xsd:int;
                       ]
    .


:Entry     
  rdfs:label         "entry" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hAtom#Entry> ;
  rdfs:comment
    "an Entry element represents the concept of an Atom entry <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.1.2>" ,
    "A weblog/microcontent entry  <http://microformats.org/wiki/existing-classes>" ;
  rdfs:subclassOf    :AAtom, 
                     [ a owl:Restriction ;
                       owl:onProperty :entry-title ,
                                      :updated ,
                                      :author ;
                       owl:cardinality "1"^^xsd:int ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :entry-summary ,
                                      :published ,
                                      :bookmark ;
                       owl:maxCardinality "1"^^xsd:int  ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :entry-content ,
                                      :tag ;
                       owl:minCardinality "0"^^xsd:int;
                       ]
    .


:Feed     
  rdfs:label         "feed" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hAtom#Feed> ;
  rdfs:comment
    "a Feed element represents the concept of an Atom feed <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.1.1>" ,
    "A container for hentrys  <http://microformats.org/wiki/existing-classes>" ;
  rdfs:subclassOf    :AAtom, 
                     [ a owl:Restriction ;
                       owl:onProperty :category ;
                       owl:minCardinality "0"^^xsd:int ;
                       ]
    .


:Measure     
  rdfs:label         "measure" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/meaure#hmeasure> ;
  rdfs:comment
    "Standard Measure Schema" ;
  rdfs:subclassOf    :AMeasure , 
                     [ a owl:Restriction ;
                       owl:onProperty :num ,
                                      :unit ;
                       owl:cardinality "1"^^xsd:int
                       ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :item ,
                                      :type ,
                                      :tolerance ;
                       owl:minCardinality "0"^^xsd:int;
                       ]
    .


:Money     
  rdfs:label         "money" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/meaure#hmoney> ;
  rdfs:comment
    "Money Schema" ;
  rdfs:subclassOf    :AMeasure, 
                     [ a owl:Restriction ;
                       owl:onProperty :num ,
                                      :unit ;
                       owl:cardinality "1"^^xsd:int
                       ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :item ,
                                      :type ,
                                      :tolerance ;
                      owl:minCardinality "0"^^xsd:int;
                      ]
    .


:Recipe     
  rdfs:label         "recipe" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hrecipe#hRecipe> ;
  rdfs:comment
    "A Recipe is used to identify and describe values und metadata typically associated with a recipe." ;
  rdfs:subclassOf    :ARecipe, 
                     [ a owl:Restriction ;
                       owl:onProperty :fn ;
                       owl:cardinality "1"^^xsd:int
                       ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :ingredient;
                       owl:minCardinality "1"^^xsd:int
                       ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :yield ,
                                      :instructions ,
                                      :summary ,
                                      :published ;
                       owl:maxCardinality "1"^^xsd:int
                       ] ,
                     [ a owl:Restriction ;
                       owl:onProperty :author ,
                                      :photo ,
                                      :tag ,
                                      :duration ,
                                      :nutrition ;
                       owl:minCardinality "0"^^xsd:int
                       ] ,
                     [ owl:onProperty :value ,
                                      :type ,
                                      :yield ,
                                      :instructions ,
                                      :duration ,
                                      :photo ,
                                      :summary ,
                                      :author ,
                                      :published ,
                                      :nutrition ,
                                      :tag ;
                       rdfs:comment
                         "Some fields are marked experimental since they exceed the minimum set of elements needed to describe a recipe but still are very commonly used on the web. It's not sure if they are relevant enough for inclusion in the format. Implementation and general uptake of these elements will be observed and inform further decisions. So their use is not at all discouraged - but use them with care and be prepared for their eventual removal from the final spec. <http://microformats.org/wiki/hrecipe#In_General>"
                       ]
    .


#################### properties ##############################


:acquaintance
  a                  owl:DatatypeProperty ;
  rdfs:label         "acquaintance" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone you know how to get in touch with. Often symmetric."
  .           
   
:additional-name
  a                  owl:DatatypeProperty ;
  rdfs:label         "additional-name" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'Additional Names' in section 3.1.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>"
  .   
     
:adr
  a                  owl:DatatypeProperty ;
  rdfs:label         "adr" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.2.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>"
  .     
 
:agent
  a                  owl:DatatypeProperty ;
  rdfs:label         "agent" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.5.4 of RFC 2426. If the value is a vCard, then use a nest hCard.  For simplicity in that case, the same element that has the class name of 'agent' should use the class name of 'vcard'. <http://www.ietf.org/rfc/rfc2426.txt>"
  .
 
:author
  a                  owl:DatatypeProperty ;
  rdfs:label         "author" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hAtom#Entry_Author> ;
  rdfs:seeAlso       <http://microformats.org/wiki/hrecipe#author> ;
  rdfs:domain        :Entry ,
                     :Recipe ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype mfs:ACard ;
                       rdfs:comment "The contents of the element MUST include a valid <a href='http://microformats.org/wiki/hCard'>hCard</a>."
                       ] ;
  rdfs:comment
    "# an Entry Author element represents the concept of an Atom author <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.1>
    # an Entry Author element MUST be encoded in an hCard
    # an Entry Author element SHOULD be encoded in an <address> element " ,
    "An Author is the person who authored the recipe." ,
    "Author of a weblog/microcontent entry <http://microformats.org/wiki/existing-classes>"
  .               

:bday
  a                  owl:DatatypeProperty ;
  rdfs:label         "bday" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.1.5 of RFC 2426. Typically used with an  tag with the 'title' attribute for the date value, and a human readable date inside the element. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "The birth date of the object.  <http://microformats.org/wiki/existing-classes>"
  .   
 
:bookmark
  a                  owl:DatatypeProperty ;
  rdfs:label         "bookmark" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/rel-bookmark#rel.3D.22bookmark.22> ;
  rdfs:seeAlso       <http://microformats.org/wiki/hAtom#Entry_Permalink> ;
  rdfs:domain        :Entry ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype mfs:relBookmark ;
                       rdfs:comment     
                         "The contents of the element MUST include a valid <a href='http://microformats.org/wiki/hCard'>hCard</a>.",
                         "an Entry Permalink element represents the concept of an Atom link in an entry <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.7>"
                       ] ;
  rdfs:comment
    "The HTML4 spec describes a bookmark as 'a link to a key entry point within an extended document'. By convention (citation needed), this entry point also captures the notion of a 'permalink'.."
  . 
 
:category
  a                  owl:DatatypeProperty ;
  rdfs:label         "category" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:seeAlso       <http://microformats.org/wiki/hAtom#Feed_Category> ;
  rdfs:domain        :Card ,
                     :Feed ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.6.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "A Feed Category element represents the concept of an Atom category <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.2> inside a mf2rdf:Feed" ,
    "Application category of the object. <http://microformats.org/wiki/existing-classes>" 
  .               

:class
  a                  owl:DatatypeProperty ;
  rdfs:label         "class" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.7.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "The access classification of the object. For example, public or private.  <http://microformats.org/wiki/existing-classes>"
  . 
 
:child
  a                  owl:DatatypeProperty ;
  rdfs:label         "child" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "A person's genetic offspring, or someone that a person has adopted and takes care of. Inverse is parent."
  .             

:colleague
  a                  owl:DatatypeProperty ;
  rdfs:label         "colleague" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone in the same field of study/activity. Symmetric. Often transitive."
  .             

:contact
  a                  owl:DatatypeProperty ;
  rdfs:label         "contact" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone you know how to get in touch with. Often symmetric." ,
    "Current contact info of the object. The <address> with hCard.  <http://microformats.org/wiki/existing-classes>"
  .           

:country-name
  a                  owl:DatatypeProperty ;
  rdfs:label         "country-name" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'country name' in section 3.2.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Name of the country for this particular address.  <http://microformats.org/wiki/existing-classes>"
  . 

:co-resident
  a                  owl:DatatypeProperty ;
  rdfs:label         "co-resident" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone you share a street address with. Symmetric and transitive."
  .             

:co-worker
  a                  owl:DatatypeProperty ;
  rdfs:label         "co-worker" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone a person works with, or works at the same organization as. Symmetric. Usually transitive."
  .             

:crush
  a                  owl:DatatypeProperty ;
  rdfs:label         "crush" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone you have a crush on. No inverse."
  .             

:date
  a                  owl:DatatypeProperty ;
  rdfs:label         "date" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone you are dating. Symmetric. Not transitive."
  .   

:duration
  a                  owl:DatatypeProperty ;
  rdfs:label         "duration" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hrecipe#duration> ;
  rdfs:domain        :Recipe ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "The time it takes to prepare the meal described by the recipe. Multiple duration fields can be used to denote e.g. time for preparing a dough, time needed for the dough to raise, time to bake the dough, time for decorating the cake etc."
  . 

:email
  a                  owl:DatatypeProperty ;
  rdfs:label         "email" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype xsd:string,
                                       xsd:anyURI
                       ] ;
  rdfs:comment
    "See section 3.3.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "This object's email address.   <http://microformats.org/wiki/existing-classes>"
  . 

:entry-content
  a                  owl:DatatypeProperty ;
  rdfs:label         "entry-content" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hAtom#Entry_Content> ;
  rdfs:domain        :Entry ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype xsd:string 
                       ] ;
  rdfs:comment
    "an Entry Content element represents the concept of an Atom content <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#atomContent>" ,
    "Content of a weblog/microcontent entry  <http://microformats.org/wiki/existing-classes>"
  .  

:entry-summary
  a                  owl:DatatypeProperty ;
  rdfs:label         "entry-summary" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hAtom#Entry_Summary> ;
  rdfs:domain        :Entry ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "an Entry Summary element represents the concept of an Atom summary <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.13>" ,
    "Summary of a weblog/microcontent entry  <http://microformats.org/wiki/existing-classes>"
  . 

:entry-title
  a                  owl:DatatypeProperty ;
  rdfs:label         "entry-title" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hAtom#Entry_Title> ;
  rdfs:domain        :Entry ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "an Entry Title element represents the concept of an Atom entry title <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.14>" ,
    "Title of weblog/microcontent entry  <http://microformats.org/wiki/existing-classes>"
  . 

:extended-address
  a                  owl:DatatypeProperty ;
  rdfs:label         "extended-address" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'extended address' in section 3.2.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Extended address for this particular address.  <http://microformats.org/wiki/existing-classes>"
  . 

:family-name
  a                  owl:DatatypeProperty ;
  rdfs:label         "family-name" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'Family Name' in section 3.1.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>"
  .     

:fn
  a                  owl:DatatypeProperty ;
  rdfs:label         "fn" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ,
                     :Recipe ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.1.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "The name of the object. <http://microformats.org/wiki/existing-classes>" ,
    "The title of a single recipe is a short textual description used to identify the work among interested parties. This can be the name of a meal or a short description regarding it's ingredients. <http://microformats.org/wiki/hrecipe>"
  . 

:friend
  a                  owl:DatatypeProperty ;
  rdfs:label         "friend" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone you are a friend to. A compatriot, buddy, home(boy|girl) that you know. Often symmetric."
  .             

:geo
  a                  owl:DatatypeProperty ;
  rdfs:label         "geo" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.4.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Geographical coordinates of the object.  <http://microformats.org/wiki/existing-classes>"
  .

:given-name
  a                  owl:DatatypeProperty ;
  rdfs:label         "given-name" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'Given Name' in section 3.1.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>"
  . 

:honorific-prefix
  a                  owl:DatatypeProperty ;
  rdfs:label         "honorific-prefix" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'Honorific Prefixes' in section 3.1.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>"
  . 

:honorific-suffix
  a                  owl:DatatypeProperty ;
  rdfs:label         "honorific-suffix" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'Honorific Suffixes' in section 3.1.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>"
  . 

:instructions
  a                  owl:DatatypeProperty ;
  rdfs:label         "instructions" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hrecipe#instructions> ;
  rdfs:domain        :Recipe ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype
                         [ owl:unionOf ( xsd:string
                                         <http://www.w3.org/TR/html/> )
                           ] ;
                       rdfs:comment
                         "The field MAY include valid HTML markup e.g. paragraphs or a list of steps."
                       ] ;
  rdfs:comment
    "The method of the recipe."
  .

:ingredient
  a                  owl:DatatypeProperty ;
  rdfs:label         "ingredient" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hrecipe#ingredient> ;
  rdfs:domain        :Recipe ;
  rdfs:range         :IngredientClass ,
                     [ a owl:Restriction ;
                       owl2:onDatatype [ 
                         owl:unionOf ( xsd:string
                                       <http://www.w3.org/TR/html/>
                                       :value
                                       :type )
                         ] ;
                       rdfs:comment       
                         "The element MAY include the fields num, unit and item following the conventions outlined in <a href='http://microformats.org/wiki/measure'>measure</a>. In this case each ingredient should be marked up with it's own ingredient element.
                         The element MAY include a note which MUST follow the conventions outlined in <a href='http://microformats.org/wiki/hCard'>hCard</a>."
                      ] ;
  rdfs:comment
    "Describes one or more ingredients used in the recipe."
  .

:key
  a                  owl:DatatypeProperty ;
  rdfs:label         "key" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.7.2 of RFC 2426. Typically used with an <abbr> tag with the 'title' attribute for the key value, and a human readable key  equivalent inside the element. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Public key of the object  <http://microformats.org/wiki/existing-classes>"
  . 

:kin
  a                  owl:DatatypeProperty ;
  rdfs:label         "kin" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "A relative, someone you consider part of your extended family. Symmetric and typically transitive."
  .   

:label
  a                  owl:DatatypeProperty ;
  rdfs:label         "label" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.2.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Formatting to be used by a delivery address label.   <http://microformats.org/wiki/existing-classes>"
  .   

:latitude
  a                  owl:DatatypeProperty ;
  rdfs:label         "latitude" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'latitude' in section 3.4.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "The latitude coordinates of the object.   <http://microformats.org/wiki/existing-classes>"
  .

:license
  a                  owl:DatatypeProperty ; 
  rdfs:label         "rel-license" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/rel-license#XMDP_profile> ;
  owl:versionInfo    "Specification 2005-02-06 " ;
  rdfs:comment
    "Indicates that the referred resource is a license for the referring page.."
  .         

:locality
  a                  owl:DatatypeProperty ;
  rdfs:label         "locality" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'locality' in section 3.2.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Locality for this particular address.   <http://microformats.org/wiki/existing-classes>"
  .

:logo
  a                  owl:DatatypeProperty ;
  rdfs:label         "logo" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype
                         [ owl:unionOf  ( <img>
                                          xsd:anyURI )
                           ]
                       ] ;
  rdfs:comment
    "See section 3.5.3 of RFC 2426. Typically used with an <img> tag. Use the 'src' attribute for URI values. Use the 'data:' URI scheme for binary values. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Object's logo.   <http://microformats.org/wiki/existing-classes>"
  . 

:longitude
  a                  owl:DatatypeProperty ;
  rdfs:label         "longitude" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'longitude' in section 3.4.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "The longitude coordinates of the object.   <http://microformats.org/wiki/existing-classes>"
  .

:mailer
  a                  owl:DatatypeProperty ;
  rdfs:label         "mailer" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.3.3 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Email software used by the object.   <http://microformats.org/wiki/existing-classes>"
  .

:me
  a                  owl:DatatypeProperty ;
  rdfs:label         "me" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "A link to yourself at a different URL. Exclusive of all other XFN values. Required symmetric. There is an implicit 'me' relation from the contents of a directory to the directory itself."
  .           

:met
  a                  owl:DatatypeProperty ;
  rdfs:label         "met" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone who you have actually met in person. Symmetric."
  .           

:muse
  a                  owl:DatatypeProperty ;
  rdfs:label         "muse" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone who brings you inspiration. No inverse."
  .           

:n
  a                  owl:DatatypeProperty ;
  rdfs:label         "n" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.1.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "The name of the unit (additional-name, family-name, given-name, honorific-prefix, honorific-suffix, nickname) <http://microformats.org/wiki/existing-classes>"
  .   
 
:neighbor
  a                  owl:DatatypeProperty ;
  rdfs:label         "neighbor" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone who lives nearby, perhaps only at an adjacent street address or doorway. Symmetric. Often transitive."
  .           

:nickname
  a                  owl:DatatypeProperty ;
  rdfs:label         "nickname" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.1.3 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>"
  . 

:note
  a                  owl:DatatypeProperty ;
  rdfs:label         "note" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.6.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Supplemental information about the object  <http://microformats.org/wiki/existing-classes>"
  .   

:num
  a                  owl:DatatypeProperty ;
  rdfs:label         "num" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/measure#num:_The_Value> ;
  rdfs:domain        :Angle ,
                     :Measure ,
                     :Money ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype xsd:integer
                       ] ;
  rdfs:comment
    "The Value"
  .   

:nutrition
  a                  owl:DatatypeProperty ;
  rdfs:label         "nutrition" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hrecipe#nutrition> ;
  rdfs:domain        :Recipe ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype  xsd:string ,
                                        <http://www.w3.org/TR/html/> ,
                                        :value ,
                                        :type ;
                       rdfs:comment       
                         "The element MAY include the fields num, unit and item following <a href='http://microformats.org/wiki/measure'>measure</a>."
                       ] ;
  rdfs:comment
    "Nutritional information like calories, fat, dietary fiber etc. "
  .

:org
  a                  owl:DatatypeProperty ;
  rdfs:label         "org" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.5.5 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "The organization or company of the object.   <http://microformats.org/wiki/existing-classes>"
  .     

:organization-name
  a                  owl:DatatypeProperty ;
  rdfs:label         "organization-name" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'Organization Name' in section 3.5.5 of RFC 2426. May be inferred per Implied 'organization-name' Optimization. <http://www.ietf.org/rfc/rfc2426.txt>" ,
 "The name of the organization or company of the object.  <http://microformats.org/wiki/existing-classes>"
  .         

:organization-unit
  a                  owl:DatatypeProperty ;
  rdfs:label         "organization-unit" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'Organization Unit' in section 3.5.5 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "The unit or department of the object.   <http://microformats.org/wiki/existing-classes>"
  . 

:parent
  a                  owl:DatatypeProperty ;
  rdfs:label         "parent" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Inverse of child."
  .           

:photo
  a owl:ObjectProperty;
  rdfs:label         "photo" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:seeAlso       <http://microformats.org/wiki/hrecipe#photo> ;
  rdfs:domain        :Card ,
                     :Recipe;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype
                       [ owl:intersectionOf
                           [ owl:unionOf ( xsd:string
                                           <http://www.w3.org/TR/REC-html40/struct/objects.html#h-13.2>
                                           <http://www.w3.org/TR/REC-html40/struct/links.html#h-12.2>
                                           <http://www.w3.org/TR/REC-html40/struct/objects.html#h-13.3> ) ,
                             mfs:ACard
                             ] ;
                           rdfs:comment
                             "Typically used with an <img> tag. Use the 'src' attribute for URI values. Use the 'data:' URI scheme for binary values. <http://www.ietf.org/rfc/rfc2426.txt>" ,
                             "The element SHOULD use an <img> element. The element MAY use any other element that contains a URL, such as <a> or <object>, but it is not recommended.
                              The contents of the element MUST follow the conventions outlined in <a href='http://microformats.org/wiki/hCard'>hCard</a>."
                           ]
                        ] ;
  rdfs:comment
    "See section 3.1.4 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Accompanying image. " ,
    "A photo of the object. Used in <img> <http://microformats.org/wiki/existing-classes>"
  .

:postal-code
  a                  owl:DatatypeProperty ;
  rdfs:label         "postal-code" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype xsd:nonNegativeInteger
                       ] ;
  rdfs:comment
    "See 'postal code' in section 3.2.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Postal code for this particular address. <http://microformats.org/wiki/existing-classes>"
  .       
     
:post-office-box
  a                  owl:DatatypeProperty ;
  rdfs:label         "post-office-box" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'post office box' in section 3.2.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Post office box number of this particular address. <http://microformats.org/wiki/existing-classes>"
  . 

:duration
  a                  owl:DatatypeProperty ;
  rdfs:label         "duration" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hrecipe#duration> ;
  rdfs:domain        :Recipe ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "The time it takes to prepare the meal described by the recipe. Multiple preparation-time fields can be used to denote e.g. time for preparing a dough, time needed for the dough to raise, time to bake the dough, time for decorating the cake etc."
  . 

:published
  a                  owl:DatatypeProperty ;
  rdfs:label         "published" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hAtom#Entry_Published> ;
  rdfs:seeAlso       <http://microformats.org/wiki/hrecipe#published> ;
  rdfs:domain        :Entry ,
                     :Recipe ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype
                       [ owl:unionOf ( xsd:string
                         <http://microformats.org/wiki/datetime-design-pattern> )
                         ] ;
                       rdfs:comment
                         "The <a href='http://microformats.org/wiki/datetime-design-pattern'>datetime-design-pattern</a> SHOULD be used to encode the published datetime."              
                       ] ;
  rdfs:comment
    "*  an Entry Published element is identified by the class name published
     * an Entry Published element represents the concept of Atom published <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.9>
     * use the datetime-design-pattern to encode the published datetime " ,
    "The date the recipe was published." ,
    "Publish date of a weblog/microcontent entry  <http://microformats.org/wiki/existing-classes>"
  .      

:region
  a                  owl:DatatypeProperty ;
  rdfs:label         "region" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'region' in section 3.2.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Region of this particular address.  <http://microformats.org/wiki/existing-classes>"
  .   

:rev
  a                  owl:DatatypeProperty ;
  rdfs:label         "rev" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.6.4 of RFC 2426. Typically used with an <abbr> tag with the 'title' attribute for the date value, and a human readable date inside the element. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Specifies revision of the hCard. <http://microformats.org/wiki/existing-classes>"
  . 

:role
  a                  owl:DatatypeProperty ;
  rdfs:label         "role" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.5.2 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
     "Information regarding the role of the object.   <http://microformats.org/wiki/existing-classes>"
  . 

:sibling
  a                  owl:DatatypeProperty ;
  rdfs:label         "sibling" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone a person shares a parent with. Symmetric. Usually transitive."
  . 

:sort-string
  a                  owl:DatatypeProperty ;
  rdfs:label         "sort-string" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.6.5 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "String used to sort this object in an alphabetical list.   <http://microformats.org/wiki/existing-classes>"
  . 

:sound
  a                  owl:DatatypeProperty ;
  rdfs:label         "sound" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype
                       [ owl2:oneOf ( <a>
                                      <object>
                                      xsd:string )
                         ]
                       ] ;
  rdfs:comment
    "See section 3.6.6 of RFC 2426. Typically used with either an <a> or <object> tag. Use the 'data:' URI scheme for binary values. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Audio reading back another element's content. By default, the 'fn'.  <http://microformats.org/wiki/existing-classes>"
  .   

:spouse
  a                  owl:DatatypeProperty ;
  rdfs:label         "spouse" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone you are married to. Symmetric. Not transitive."
  .           

:street-address
  a                  owl:DatatypeProperty ;
  rdfs:label         "street-address" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'street address' in section 3.2.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Street address of this particular address.  <http://microformats.org/wiki/existing-classes>"
  . 

:summary 
  a                  owl:DatatypeProperty ;
  rdfs:label         "summary" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hCalendar> ,
                     <http://microformats.org/wiki/hrecipe#summary> ;
  rdfs:domain        :Calendar ,
                     :Recipe ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "The summary provides a short introduction or an accompanying statement about the recipe."
  .   

:sweetheart
  a                  owl:DatatypeProperty ;
  rdfs:label         "sweetheart" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/XFN> ;
  rdfs:domain        :AXFNperson ;
  rdfs:range         :AXFNperson ;
  rdfs:comment
    "Someone with whom you are intimate and at least somewhat committed, typically exclusively. Symmetric. Not transitive."
  .           

:tag
  a                  owl:DatatypeProperty ; 
  rdfs:label         "rel-tag" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/rel-tag#XMDP_profile> ;
  owl:versionInfo    "Draft Specification 2005-01-10" ;
  rdfs:comment
    "Indicates that the referred resource serves as a 'tag', or keyword/subject, for the referring page."
  .

:tel
  a                  owl:DatatypeProperty ;
  rdfs:label         "tel" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.3.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Telephone number of the object   <http://microformats.org/wiki/existing-classes>"
  . 

:title
  a                  owl:DatatypeProperty ;
  rdfs:label         "title" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.5.1 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Job title or functional position of the object.  <http://microformats.org/wiki/existing-classes>"
  .   

:tolerance
  a                  owl:DatatypeProperty ;
  rdfs:label         "tolerance" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/measure#tolerance:_The_Error_Tolerance> ;
  rdfs:domain        :Angle ,
                     :Measure ,
                     :Money ;
  rdfs:comment
    "The Error Tolerance "
  .     

:type
  a                  owl:DatatypeProperty ;
  rdfs:label         "type" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ,
                     :IngredientClass ,
                     :NutritionClass ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See 'type' in the various sections of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Defines a type of the parent element. For instance a type of telephone number such as home or work.. Used in conjunction with 'value'. <http://microformats.org/wiki/existing-classes>"
  . 

:tz
  a                  owl:DatatypeProperty ;
  rdfs:label         "tz" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "See section 3.4.1 of RFC 2426. Typically used with an <abbr> tag with the 'title' attribute for the tz value, and a human readable time zone inside the element. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "The timezone the object is in.  <http://microformats.org/wiki/existing-classes>"
  .

:uid
  a                  owl:DatatypeProperty ;
  rdfs:label         "uid" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype xsd:anyURI
                       ] ;
  rdfs:comment
    "See section 3.6.7 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Globally unique identifier associated with the object, or one of the object's properties.   <http://microformats.org/wiki/existing-classes>"
  . 

:unit
  a                  owl:DatatypeProperty ;
  rdfs:label         "unit" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/measure#unit:_The_Unit_of_Measurement> ;
  rdfs:domain        :Measure ,
                     :Money ,
                     :RecipeIngredient ,
                     :RecipeNutrition ;
  rdfs:comment
    "The Unit of Measurement"
  . 

:updated
  a                  owl:DatatypeProperty ;
  rdfs:label         "updated" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hAtom#Entry_Updated> ;
  rdfs:domain        :Entry ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype mfs:datetime
                       ] ;
  rdfs:comment
    "#  an Entry Updated element is identified by class name updated
     # an Entry Updated element represents the concept of Atom updated <http://www.atomenabled.org/developers/syndication/atom-format-spec.php#rfc.section.4.2.15>
     # an Entry SHOULD have an Entry Updated element
     # use the datetime-design-pattern to encode the updated datetime " ,
    "Last updated date of a weblog/microcontent entry <http://microformats.org/wiki/existing-classes>"
  .       

:url
  a                  owl:DatatypeProperty ;
  rdfs:label         "url" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ;
  rdfs:range         [ a owl:Restriction ;
                       owl2:onDatatype xsd:anyURI
                       ] ;
  rdfs:comment
    "See section 3.6.8 of RFC 2426. Typically used with an <a> tag. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "A link to the this object's home page or extended profile. Used in <a>   <http://microformats.org/wiki/existing-classes>"
  . 

:value
  a                  owl:DatatypeProperty ;
  rdfs:label         "value" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hcard> ;
  rdfs:domain        :Card ,
                     :IngredientClass ,
                     :NutritionClass ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "This class name is used to distinguish the actual *value* of a property from any other cruft that may be in the element representing the property. <http://www.ietf.org/rfc/rfc2426.txt>" ,
    "Used in conjunction with 'type'. The actual value of a particular type. For instance a telephone number of type work such as +1.415.555.1212.  <http://microformats.org/wiki/existing-classes>"
  .   

:yield
  a                  owl:DatatypeProperty ;
  rdfs:label         "yield" ;
  rdfs:isDefinedBy   <http://microformats.org/wiki/hrecipe#yield> ;
  rdfs:domain        :Recipe ;
  rdfs:range         :XSDstring ;
  rdfs:comment
    "Specifies the quantity produced by the recipe, like how many persons it satisfyies or how many pieces can be made of it."
  .     
     


#################### #########################################
#################### mappings ################################
#################### ######################################### 


:tag 
  owl:equivalentProperty     
    <http://www.holygoat.co.uk/projects/tags/> ;
  skos:narrower      dcterms:subject
  .

:fn 
  owl:equivalentProperty
    dcterms:title
  .


</small></code>