hrecipe-rdf

(Difference between revisions)

Jump to: navigation, search

Revision as of 10:50, 19 May 2009

Contents

aRecipe - a mapping of the hRecipe microformat to RDF

Purpose

In some cases people want or need to use an RDF-based solution to add metadata to web pages. RDFa is a standardized way to do so. While it's not as easy to use as microformats it serves certain use cases that microformats can not handle like e.g. when you want to add metadata to certain parts of a page and other metadata to the page as a whole. RDFa is also a straight forward solution for domains which are not covered by a microformat but where a well established RDF vocabulary already exists.

Documentation

aRecipe is a mapping from hRecipe to RDF as thorough and 1:1 as possible. It is part of a bigger effort to map all microformats into one RDF vocabulary, called aMicroformat. But since that is a lot of work and will take some more time the aRecipe part of aMicroformat is a first shot.

The official location of the voacbulary is at http://purl.org/arecipe/. There you'll always find the latest version, currently in two encodings: n3 and RDF/XML. Hopefully soon some documentation will be added as well.

Implementation

aRecipe has been implemented on http://www.essen-und-trinken.de, e.g. here: apple pie (in german, sorry ;-). A convenient way to look at the RDFa is the RDFa Distiller. See below an excerpt of the RDF generated from the apple pie recipe.

Enjoy and leave comments and feedback at the bottom of this page.


The RDF mapping of hRecipe

The original mapping at http://purl.org/arecipe/ additionally contains some more constructs to model the constraints on each element. These constructs are rather involved because the constraints are rather complex and OWL isn't particularily suited to model constraints. Because of that it's not sure if they will be part of the final version.

<rdf:RDF xmlns="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">

    <owl:Ontology rdf:about="http://purl.org/amicroformat/arecipe/">
        <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></comment>
        <comment>This ontology is only informative. The normative version is always that on the site <http://microformats.org>.</comment>
        <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 the hRecipe microformat into RDF by mirroring the  elements of that microformat as straight as possible into an RDF vocabulary.</comment>
        <label>aRecipe</label>
        <seeAlso rdf:resource="http://microformats.org/wiki/hrecipe"/>
        <owl:versionInfo>28042009</owl:versionInfo>
        <owl:versionInfo>Draft 0.21</owl:versionInfo>
    </owl:Ontology>

    <owl:Class rdf:about="http://purl.org/amicroformat/arecipe/Recipe">
        <comment>A Recipe is used to identify and describe values and metadata typically associated with a recipe.</comment>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hrecipe#hRecipe"/>
        <label>recipe</label>
        <subclassOf rdf:parseType="Resource">
            <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
            <owl:cardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</owl:cardinality>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/fn"/>
        </subclassOf>
        <subclassOf rdf:parseType="Resource">
            <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
            <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</owl:minCardinality>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/ingredient"/>
        </subclassOf>
        <subclassOf rdf:parseType="Resource">
            <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
            <owl:maxCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</owl:maxCardinality>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/instructions"/>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/published"/>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/summary"/>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/yield"/>
        </subclassOf>
        <subclassOf rdf:parseType="Resource">
            <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Restriction"/>
            <owl:minCardinality rdf:datatype="http://www.w3.org/2001/XMLSchema#int">0</owl:minCardinality>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/author"/>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/duration"/>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/nutrition"/>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/photo"/>
            <owl:onProperty rdf:resource="http://purl.org/amicroformat/arecipe/tag"/>
        </subclassOf>
    </owl:Class>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/author">
        <comment>An Author is the person who authored the recipe.</comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hAtom#Entry_Author"/>
        <label>author</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <seeAlso rdf:resource="http://microformats.org/wiki/hrecipe#author"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/duration">
        <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.</comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hrecipe#duration"/>
        <label>duration</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/fn">
        <comment>The title of a single recipe. 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.</comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hCard"/>
        <label>title</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <seeAlso rdf:resource="http://microformats.org/wiki/hrecipe#fn"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/ingredient">
        <comment>Describes one or more ingredients used in the recipe.</comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hrecipe#ingredient"/>
        <label>ingredient</label>
        <range rdf:resource="http://purl.org/amicroformat/arecipe/IngredientClass"/>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/instructions">
        <comment>The method of the recipe.</comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hrecipe#instructions"/>
        <label>instructions</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/nutrition">
        <comment>Nutritional information like calories, fat, dietary fiber etc. </comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hrecipe#nutrition"/>
        <label>nutrition</label>
        <range rdf:resource="http://purl.org/amicroformat/arecipe/NutritionClass"/>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/photo">
        <comment>Accompanying image. </comment>
        <comment>See section 3.1.4 of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt></comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hcard"/>
        <label>photo</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <seeAlso rdf:resource="http://microformats.org/wiki/hrecipe#photo"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/published">
        <comment>The date the recipe was published.</comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hAtom#Entry_Published"/>
        <label>published</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <seeAlso rdf:resource="http://microformats.org/wiki/hrecipe#published"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/summary">
        <comment>The summary provides a short introduction or an accompanying statement about the recipe.</comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hCalendar"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hrecipe#summary"/>
        <label>summary</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/tag">
        <comment>Indicates that the referred resource serves as a 'tag', or keyword/subject, for the referring page.</comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/rel-tag#XMDP_profile"/>
        <label>rel-tag</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
        <seeAlso rdf:resource="http://microformats.org/wiki/hrecipe#tag"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/type">
        <comment>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></comment>
        <comment>See 'type' in the various sections of RFC 2426. <http://www.ietf.org/rfc/rfc2426.txt></comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/IngredientClass"/>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/NutritionClass"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hcard"/>
        <label>type</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/value">
        <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></comment>
        <comment>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></comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/IngredientClass"/>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/NutritionClass"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hcard"/>
        <label>value</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    </owl:DatatypeProperty>

    <owl:DatatypeProperty rdf:about="http://purl.org/amicroformat/arecipe/yield">
        <comment>Specifies the quantity produced by the recipe, like how many persons it satisfyies or how many pieces can be made of it.</comment>
        <domain rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <isDefinedBy rdf:resource="http://microformats.org/wiki/hrecipe#yield"/>
        <label>yield</label>
        <range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
    </owl:DatatypeProperty>

    <owl:Class rdf:about="http://purl.org/amicroformat/arecipe/IngredientClass">
        <comment>A helper class for constructing the RDF-graph</comment>
    </owl:Class>

    <owl:Class rdf:about="http://purl.org/amicroformat/arecipe/NutritionClass">
        <comment>A helper class for constructing the RDF-graph</comment>
    </owl:Class>

    <rdf:Description>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Axiom"/>
        <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.</comment>
        <owl:object rdf:resource="http://purl.org/amicroformat/arecipe/Recipe"/>
        <owl:predicate rdf:resource="http://www.w3.org/2000/01/rdf-schema#domain"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/author"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/duration"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/instructions"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/nutrition"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/photo"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/published"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/summary"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/tag"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/type"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/value"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/yield"/>
    </rdf:Description>

    <rdf:Description>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Axiom"/>
        <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.</comment>
        <owl:object rdf:resource="http://purl.org/amicroformat/arecipe/IngredientClass"/>
        <owl:object rdf:resource="http://purl.org/amicroformat/arecipe/NutritionClass"/>
        <owl:predicate rdf:resource="http://www.w3.org/2000/01/rdf-schema#domain"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/type"/>
        <owl:subject rdf:resource="http://purl.org/amicroformat/arecipe/value"/>
    </rdf:Description>
</rdf:RDF>



Generated RDFa

<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
  xmlns:amf="http://purl.org/amicroformat/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#"
  xmlns:xml="http://www.w3.org/XML/1998/namespace"
>
<amf:Recipe rdf:about="http://www.essen-und-trinken.de/rezept/144350">
    <amf:duration xml:lang="de">1 h </amf:duration>
    <amf:yield xml:lang="de">Für 24 Stücke</amf:yield>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/tag/schnellundeinfach"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/kategorie/party"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/kategorie/kuchentorte"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/tag/apfelkuchen"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/kategorie/backen"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/kategorie/gutvorzubereiten"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/kategorie/einfach"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/tag/apfel"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/kategorie/nuesse"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/kategorie/obst"/>
    <amf:tag rdf:resource="http://www.essen-und-trinken.de/rezepte/tag/blechkuchen"/>
    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">6</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">El</span> Zitronensaft</amf:ingredient>

    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">200</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">g</span> Zucker</amf:ingredient>
    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">100</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">g</span> Schmand</amf:ingredient>
    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">500</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">g</span> Mehl</amf:ingredient>

    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">1,2</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">kg</span> Äpfel </amf:ingredient>
    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">1</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">Pk.</span> Backpulver</amf:ingredient>
    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">100</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">g</span> gehackte Mandeln</amf:ingredient>

    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">300</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">g</span> Butter</amf:ingredient>
    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">3</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">El</span> Calvados</amf:ingredient>
    <amf:ingredient xml:lang="de"> Salz</amf:ingredient>

    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">6</span>  Eier </amf:ingredient>
    <amf:ingredient rdf:parseType="Literal"><span property="amf:value" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">125</span>  <span property="amf:type" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">g</span> Puderzucker</amf:ingredient>
    <amf:fn xml:lang="de">Apfelkuchen vom Blech</amf:fn>
    <amf:instructions rdf:parseType="Literal">
	<p class="rezeptansichttext" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">1. Mandeln in einer Pfann ohne Fett anrösten. Herausnehmen und abkühlen lassen. Die Äpfel schälen, vierteln und entkernen. In Würfel schneiden und mit Zitronensaft beträufeln.</p><p class="rezeptansichttext" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">2. Butter, Zucker und 1 Prise Salz cremig rühren. Eier nacheinander unterrühren. Mehl, Backpulver und Mandeln mischen und abwechselnd mit dem Schmand unter die Ei-Zucker-Masse rühren. Auf ein mit Backpapier belegtes Blech streichen. Apfelwürfel darüber streuen. Im vorgeheizten Ofen bei 175 ° backen ca. 40 Min. backen. </p><p class="rezeptansichttext" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">3. Puderzucker und Calvados glatt rühren und über den heißen Kuchen träufeln.</p></amf:instructions>
    <amf:author rdf:parseType="Literal"> Von <a href="/user/melaFTL" rel="nofollow" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">melaFTL</a><a href="#" id="addFavoriteCookLinkActive" onclick="return false;; return false;" style="display:none" xml:lang="de" xmlns="http://www.w3.org/1999/xhtml"><img alt="Icon_user_rot" id="addFavoriteCookLinkAktiveImg" src="/img/icon_user_rot.gif"/></a>  </amf:author>
    <amf:note rdf:parseType="Literal">Der Kuchen wird weihnachtlich, wenn man in den Teig noch etwas<br xml:lang="de" xmlns="http://www.w3.org/1999/xhtml"/>Lebkuchengewürz gibt, etwa 1 1/2 Tl. </amf:note>
  </amf:Recipe>
</rdf:RDF>


Feedback

Please add questions and comments in the following sections.

Template

Consider using this format (copy and paste this to the end of the list to add your issues; replace ~~~ with an external link if preferred) to report issues or feedback, so that issues can show up in hAtom subscriptions of this issues page. If open issues lack this markup, please add it.

Please post one issue per entry, to make them easier to manage. Avoid combining multiple issues into single reports, as this can confuse or muddle feedback, and puts a burden of separating the discrete issues onto someone else who 1. may not have the time, and 2. may not understand the issue in the same way as the original reporter.

<div class="hentry">
{{OpenIssue}} 
<span class="entry-summary author vcard">
 <span class="published">2011-MM-DD</span> 
 raised by <span class="fn">~~~</span>
</span>
<div class="entry-content discussion issues">
* <strong class="entry-title">«Short title of issue»</strong>. «Description of Issue»
** Follow-up comment #1
** Follow-up comment #2
</div>
</div>

General Questions

General Comments

related pages

Per the microformats process, the recipe effort developed

towards the development of this draft.

Categories

hrecipe-rdf was last modified: Wednesday, December 31st, 1969

Views