<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE rdf:RDF [
	 <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
         <!ENTITY nrl 'http://www.semanticdesktop.org/ontologies/2006/08/15/nrl#'>     
	 <!ENTITY nao 'http://www.semanticdesktop.org/ontologies/2007/08/15/nao#'>
	 <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
	 <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
                  ]>

<!-- FIXME: add useful comments that are non-technical and allow usage in GUI elements. -->

<rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:nrl="&nrl;" xmlns:nao="&nao;" xmlns:xsd="&xsd;">

<rdf:Property rdf:about="&nao;description">
	<rdfs:label>description</rdfs:label>
	<rdfs:comment>Everything can be annotated with a simple string comment.</rdfs:comment>
	<rdfs:subPropertyOf rdf:resource="&rdfs;comment" />
        <rdfs:range rdf:resource="&rdfs;Literal"/>
        <nrl:maxCardinality>1</nrl:maxCardinality>
        <rdfs:domain rdf:resource="&rdfs;Resource" />
</rdf:Property>

<rdf:Description rdf:about="&nao;Tag">
	<rdfs:label>tag</rdfs:label>
	<rdfs:comment>A Tag can be assigned to any Thing. This allows simple grouping of resources. Each Tag is identifed by its label which should be unique.</rdfs:comment>
	<rdfs:label xml_lang="en-US">tag</rdfs:label>
	<rdf:type rdf:resource="&rdfs;Class"/>
</rdf:Description>

<rdf:Property rdf:about="&nao;identifier">
	<rdfs:label>Identifier</rdfs:label>
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
	<rdfs:range rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<rdf:Property rdf:about="&nao;altLabel">
	<rdfs:label>labels</rdfs:label>
	<rdfs:subPropertyOf rdf:resource="&rdfs;label"/>
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
	<rdfs:range rdf:resource="&rdfs;Literal"/>
</rdf:Property>

<rdf:Property rdf:about="&nao;annotation">
	<rdfs:label>annotation</rdfs:label>
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
	<rdfs:range rdf:resource="&rdfs;Resource"/>
</rdf:Property>

<rdf:Property rdf:about="&nao;hasTag" rdfs:label="hasTag">
	<rdfs:label>tags</rdfs:label>
	<rdfs:comment>Each Resource can be tagged with an arbitrary number of Tags. This allows a simple grouping of resources.</rdfs:comment>
<!--	<rdfs:label>Assigned tags</rdfs:label>-->
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
	<rdfs:range rdf:resource="&nao;Tag"/>
	<rdfs:subPropertyOf rdf:resource="&nao;annotation"/>
</rdf:Property>

<rdf:Property rdf:about="&nao;hasTopic">
	<rdfs:label>topics</rdfs:label>
	<rdfs:subPropertyOf rdf:resource="&nao;annotation"/>
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
	<rdfs:range rdf:resource="&rdfs;Resource"/>
        <nrl:inverseProperty rdf:resource="&nao;isTopicOf"/>
</rdf:Property>

<rdf:Property rdf:about="&nao;isTopicOf">
	<rdfs:label>topic of</rdfs:label>
	<rdfs:subPropertyOf rdf:resource="&nao;annotation"/>
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
	<rdfs:range rdf:resource="&rdfs;Resource"/>
        <nrl:inverseProperty rdf:resource="&nao;hasTopic"/>
</rdf:Property>

<rdf:Property rdf:about="&nao;isRelated">
	<rdfs:label>related to</rdfs:label>
	<rdfs:subPropertyOf rdf:resource="&nao;annotation"/>
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
	<rdfs:range rdf:resource="&rdfs;Resource"/>
</rdf:Property>

<rdf:Property rdf:about="&nao;label">
	<rdfs:label>preferred labels</rdfs:label>
	<rdfs:subPropertyOf rdf:resource="&rdfs;label"/>
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
	<rdfs:range rdf:resource="&rdfs;Literal"/>
        <nrl:maxCardinality>1</nrl:maxCardinality>
</rdf:Property>

<rdf:Property rdf:about="&nao;hasRating">
	<rdfs:label>rating</rdfs:label>
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
	<rdfs:range rdf:resource="&xsd;unsignedInt"/>
        <nrl:maxCardinality>1</nrl:maxCardinality>
</rdf:Property>

<rdf:Property rdf:about="&nao;hasSymbol">
	<rdfs:label>symbol</rdfs:label>
	<rdfs:domain rdf:resource="&rdfs;Resource"/>
<!-- trueg: I don't think we can have a reference to NIE in NAO. And I also don't see a downside to a symbol just being
     a string. It can be a path or a name of an icon in an icon library (as in KDE or Gnome) -->
<!--	<rdfs:range rdf:resource="&nie;Icon"/>-->
	<rdfs:range rdf:resource="&xsd;string"/>
        <rdfs:comment>Each resource can have a symbol assigned. For now this is a simple string which can either be the patch to an actual pixmap file or just the name of an icon as defined by the freedesktop.org standard.</rdfs:comment>
</rdf:Property>

</rdf:RDF>
