base really draft example to get discussion going, this is posted as a structural example please don't take it as a working proposal :
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rdf:RDF [
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY tips "http://www.iring.org/TIPS#" >
<!ENTITY skos "http://www.w3.org/2004/02/skos/core#" >
<!ENTITY rdl "http://posccaesar.org/rdl/" >
<!ENTITY tpl "http://tpl.rdlfacade.org/data#" >
<!ENTITY p7tpl "http://standards.iso.org/iso/ts/15926/-8/ed-1/tech/reference-data/p7tpl#" >
<!ENTITY p7tm "http://standards.iso.org/iso/ts/15926/-8/ed-1/tech/reference-data/template-model#">
<!ENTITY dm "http://rds.posccaesar.org/2008/02/OWL/ISO-15926-2_2003#">
]>
<rdf:RDF xmlns:rdf="&rdf;" xmlns:p7tm="&p7tm;" xmlns:rdfs="&rdfs;" xmlns:tips="&tips;" xmlns:skos="&skos;" xmlns:rdl="&rdl;" xmlns:tpl="&tpl;" xmlns:owl="&owl;">
<!-- =========================================================
self contained example
========================================================= -->
<tips:TemplateInformationPattern rdf:about="#385">
<rdfs:label>Atmospheric Pressure</rdfs:label>
<rdfs:comment>A pressure that is representing the weight of the air column standing vertically over the place where the measurement is done??</rdfs:comment>
<!-- standard metadata fields ... -->
<tips:id>385</tips:id>
<tips:guid>q4r415-3243-3243-32413</tips:guid>
<tips:status>Complete</tips:status>
<skos:note>some notes about use??</skos:note>
<skos:note>some more notes about use??</skos:note>
<skos:editorialNote>some notes to the editors??</skos:editorialNote>
<!-- how should we represent expected context for this TIP??
This is commodity but made more useful by allowing more specific and generic classes to be used -->
<tips:expectedContext rdf:resource="&rdl;?????"/>
<tips:expectedContext rdf:resource="&rdl;?????"/>
<!-- Do we need classification for TIPS, beyond context??-->
<rdf:type rdf:resource="&rdl;?????"/>
<!-- Required properties for the TIP -->
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty>
<owl:ObjectProperty rdf:about="#385Individual">
<rdf:type rdf:resource="&tips;TIPRole"/>
<rdfs:label>An individual with an Atmospheric Pressure measurement associated to it</rdfs:label>
<rdfs:range rdf:resource="&dm;PossibleIndividual"/>
<tips:exampleValue rdf:resource="http:www.example.com#myThing"/>
</owl:ObjectProperty>
</owl:onProperty>
<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty>
<owl:DatatypeProperty rdf:about="#385PressureValue">
<rdf:type rdf:resource="&tips;TIPRole"/>
<rdfs:label>A pressure value</rdfs:label>
<rdfs:range rdf:resource="&xsd;float"/>
<tips:exampleValue rdf:datatype="&xsd;float">20.0</tips:exampleValue>
</owl:DatatypeProperty>
</owl:onProperty>
<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty>
<owl:ObjectProperty rdf:about="#385PressureScale">
<rdf:type rdf:resource="&tips;TIPRole"/>
<rdfs:label>A Pressure Scale</rdfs:label>
<rdfs:range rdf:resource="&rdl;RDS1359461141"/><!-- Pressure Scale Class constraint-->
<tips:exampleValue rdf:resource="&rdl;R98787754267" /><!--Pascal -->
</owl:ObjectProperty>
</owl:onProperty>
<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
</owl:Restriction>
</rdfs:subClassOf>
<!-- mappings -->
<tips:templateMappings rdf:parseType="Collection">
<tips:TemplateMap rdf:about="#385_TemplateMap_1">
<tips:hasTemplateInformationPattern rdf:resource="#385"/>
<tips:hasTemplate rdf:resource="&tpl;R26101158400" />
<tips:roleMappings rdf:parseType="Collection">
<tips:TemplateRoleMap rdf:about="#385_TemplateMap_1_1">
<tips:hasRole rdf:resource="&tpl;R59896853239" />
<tips:hasValue rdf:resource="&rdl;R11440551409" />
</tips:TemplateRoleMap>
<tips:TemplateRoleMap rdf:about="#385_TemplateMap_1_2">
<tips:hasRole rdf:resource="&tpl;R16314127825" />
<tips:hasProperty rdf:resource="#385Individual" />
</tips:TemplateRoleMap>
<tips:TemplateRoleMap rdf:about="#385_TemplateMap_1_3">
<tips:hasRole rdf:resource="&tpl;R90688063648" />
<tips:hasProperty rdf:resource="#385PressureValue" />
</tips:TemplateRoleMap>
<tips:TemplateRoleMap rdf:about="#385_TemplateMap_1_4">
<tips:hasRole rdf:resource="&tpl;R93884193692" />
<tips:hasPoperty rdf:resource="#385PressureScale" />
</tips:TemplateRoleMap>
</tips:roleMappings>
</tips:TemplateMap>
<!-- TemplateMap .... as required -->
</tips:templateMappings>
</tips:TemplateInformationPattern>
<!-- ==================================================
separated out example, same RDF structure/meaning
================================================== -->
<!-- roles/properties for tip-->
<owl:ObjectProperty rdf:about="#385_v2_Individual">
<rdf:type rdf:resource="&tips;TIPRole"/>
<rdfs:label>An individual with an Atmospheric Pressure measurement associated to it</rdfs:label>
<rdfs:range rdf:resource="&dm;PossibleIndividual"/>
<tips:exampleValue rdf:resource="http:www.example.com#myThing"/>
</owl:ObjectProperty>
<owl:DatatypeProperty rdf:about="#385_v2_PressureValue">
<rdf:type rdf:resource="&tips;TIPRole"/>
<rdfs:label>A pressure value</rdfs:label>
<rdfs:range rdf:resource="&xsd;float"/>
<tips:exampleValue rdf:datatype="&xsd;float">20.0</tips:exampleValue>
</owl:DatatypeProperty>
<owl:ObjectProperty rdf:about="#385_v2_PressureScale">
<rdf:type rdf:resource="&tips;TIPRole"/>
<rdfs:label>A Pressure Scale</rdfs:label>
<rdfs:range rdf:resource="&rdl;RDS1359461141"/><!-- Pressure Scale Class constraint-->
<tips:exampleValue rdf:resource="&rdl;R98787754267" /><!--Pascal -->
</owl:ObjectProperty>
<!-- tip definition -->
<tips:TemplateInformationPattern rdf:about="#385_v2">
<rdfs:label>Atmospheric Pressure</rdfs:label>
<rdfs:comment>A pressure that is representing the weight of the air column standing vertically over the place where the measurement is done??</rdfs:comment>
<!-- standard metadata fields ... -->
<tips:id>385</tips:id>
<tips:guid>q4r415-3243-3243-32413</tips:guid>
<tips:status>Complete</tips:status>
<skos:note>some notes about use??</skos:note>
<skos:note>some more notes about use??</skos:note>
<skos:editorialNote>some notes to the editors??</skos:editorialNote>
<!-- how should we represent expected context for this TIP??
This is commodity but made more useful by allowing more specific and generic classes to be used -->
<tips:expectedContext rdf:resource="&rdl;?????"/>
<tips:expectedContext rdf:resource="&rdl;?????"/>
<!-- Do we need classification for TIPS, beyond context??-->
<rdf:type rdf:resource="&rdl;?????"/>
<!-- Required properties for the TIP -->
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#385_v2_Individual"/>
<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:Resource="#385_v2_PressureValue"/>
<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
</owl:Restriction>
</rdfs:subClassOf>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#385_v2_PressureScale"/>
<owl:cardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:cardinality>
</owl:Restriction>
</rdfs:subClassOf>
<!-- mappings -->
<tips:templateMappings rdf:parseType="Collection">
<tips:TemplateMap rdf:resource="#385_v2_TemplateMap_1"/>
</tips:templateMappings>
</tips:TemplateInformationPattern>
<!-- template mapping -->
<tips:TemplateMap rdf:about="#385_v2_TemplateMap_1">
<tips:hasTemplateInformationPattern rdf:resource="#385"/>
<tips:hasTemplate rdf:resource="&tpl;R26101158400" />
<tips:roleMappings rdf:parseType="Collection">
<tips:TemplateRoleMap rdf:resource="#385_v2_TemplateMap_1_1"/>
<tips:TemplateRoleMap rdf:resource="#385_v2_TemplateMap_1_2"/>
<tips:TemplateRoleMap rdf:resource="#385_v2_TemplateMap_1_3"/>
<tips:TemplateRoleMap rdf:resource="#385_v2_TemplateMap_1_4"/>
</tips:roleMappings>
</tips:TemplateMap>
<!-- template role mappings -->
<tips:TemplateRoleMap rdf:about="#385_v2_TemplateMap_1_1">
<tips:hasRole rdf:resource="&tpl;R59896853239" />
<tips:hasValue rdf:resource="&rdl;R11440551409" />
</tips:TemplateRoleMap>
<tips:TemplateRoleMap rdf:about="#385_v2_TemplateMap_1_2">
<tips:hasRole rdf:resource="&tpl;R16314127825" />
<tips:hasProperty rdf:resource="#385Individual" />
</tips:TemplateRoleMap>
<tips:TemplateRoleMap rdf:about="#385_v2_TemplateMap_1_3">
<tips:hasRole rdf:resource="&tpl;R90688063648" />
<tips:hasProperty rdf:resource="#385PressureValue" />
</tips:TemplateRoleMap>
<tips:TemplateRoleMap rdf:about="#385_v2_TemplateMap_1_4">
<tips:hasRole rdf:resource="&tpl;R93884193692" />
<tips:hasPoperty rdf:resource="#385PressureScale" />
</tips:TemplateRoleMap>
<!-- ======================================================
Thoughts
======================================================
- I've removed the Template description pattern to use OWL as normally used.
- I've used rdfs:range instead of restrictions on the pattern since this is in line with use and simpler to parse
- I've renamed relations to be has.... val.... as per normal template practice
- Collections could be replaced with multiple predicates or some other form to make SPARQL access easier.
- There is potential for the properties to be reused between TIPs. Such as common properties like pressureScale, Individual etc.
-->
</rdf:RDF>