pointers proposal

This is the revised proposal we talked about:

// generic pointer
ptr:Pointer


// generic group of pointers
ptr:PointerGroup (rdfs:subClassOf ptr:Pointer)
   ptr:pointer (rfds:range ptr:Pointer)


// group of realted pointers
ptr:RelatedPointers (rdfs:subClassOf ptr:PointerGroup)
   ptr:pointer (rfds:range ptr:Pointer)


// group of equivalent pointers (pointers pointing to the same "thing")
ptr:EquivalentPointers (rdfs:subClassOf ptr:PointerGroup)


// pointer poiting to a single "thing"
prt:SinglePointer (rdfs:subClassOf ptr:Pointer)
   ptr:reference (rdfs:range rdf:Resource)

ptr:XpathPointer (rdfs:subClassOf ptr:SinglePointer)
   // XPath expression
   ptr:expression
   // see current draft 2.4.1
   ptr:namespace

ptr:XpointerPointer (rdfs:subClassOf ptr:SinglePointer)
   // XPointer expression
   ptr:expression
   // how to handle namespaces?
   // from XPointer spec 
<http://www.w3.org/TR/2003/REC-xptr-framework-20030325/#nsContext>
   // #xmlns(img=http://example.org/image)img:rect(10,10,50,50)

ptr:HtmlpointerPointer (rdfs:subClassOf ptr:SinglePointer)
   // HtmlPointer expression
   ptr:expression

ptr:SelectorPointer (rdfs:subClassOf ptr:SinglePointer)
   // CSS selector
   ptr:selector

ptr:LineCharPointer (rdfs:subClassOf ptr:SinglePointer)
   // line number within reference (starting with 1)
   ptr:line (rdfs:range rdf:Literal)
   // character number within line given by ptr:line (starting with 1)
   ptr:char (rdfs:range rdf:Literal)

ptr:CharOffsetPointer (rdfs:subClassOf ptr:SinglePointer)
   // number of characters from start of reference (starting with 0)
   ptr:charOffset (rdfs:range rdf:Literal)

ptr:ByteOffsetPointer (rdfs:subClassOf ptr:SinglePointer)
   // number of bytes from start of reference (starting with 0)
   ptr:byteOffset (rdfs:range rdf:Literal)


ptr:AbstractRangePointer (rdfs:subClassOf ptr:Pointer)
   // pointer to the start of the range
   ptr:startPointer (rdfs:range ptr:SinglePointer)

ptr:RangePointer (rdfs:subClassOf ptr:AbstractRangePointer)
   // inherits ptr:startPointer
   // pointer to the end of the range
   ptr:endPointer (rdfs:range ptr:SinglePointer)

ptr:CharSnippetPointer (rdfs:subClassOf ptr:AbstractRangePointer)
   // inherits ptr:startPointer
   // range specified by character snippet
   // (first character in snippet is specified by startPointer)
   ptr:charSnippet (rdfs:range rdf:Literal)

ptr:CharOffsetRangePointer (rdfs:subClassOf ptr:AbstractRangePointer)
   // inherits ptr:startPointer
   // number of characters from ptr:startPointer (starting with 0)
   ptr:charOffset (rdfs:range rdf:Literal)

ptr:ByteSnippetPointer (rdfs:subClassOf ptr:AbstractRangePointer)
   // inherits ptr:startPointer
   // range specified by byte snippet
   // (first byte in snippet is specified by startPointer)
   ptr:byteSnippet (rdfs:range rdf:Literal)

ptr:ByteOffsetRangePointer (rdfs:subClassOf ptr:AbstractRangePointer)
   // inherits ptr:startPointer
   // number of bytes from ptr:startPointer (starting with 0)
   ptr:byteOffset (rdfs:range rdf:Literal)



// stupid example
<ptr:EquivalentPointers rdf:ID="foo">
   <ptr:pointer rdf:resource="#p1"/>
   <ptr:pointer rdf:resource="#p2"/>
</ptr:EquivalentPointers>

<ptr:SelectorPointer rdf:ID="p1">
   <ptr:reference rdf:resource="..."/>
   ...
</ptr:SelectorPointer>

<ptr:RangePointer rdf:ID="p2">
   <ptr:startPointer rdf:resource="#p3"/>
   <ptr:endPointer rdf:resource="#p3"/>
</ptr:RangePointer>

<ptr:LineCharPointer rdf:ID="p3">
   <ptr:reference rdf:resource="........."/>
   ...
</ptr:LineCharPointer>

<ptr:RelatedPointers rdf:ID="bar">
   <ptr:pointer rdf:resource="#foo"/>
   <ptr:pointer rdf:resource="#blah"/>
</ptr:RelatedPointers>

<ptr:ByteOffsetPointer rdf:ID="blah">
   <ptr:reference rdf:resource="............"/>
   ...
</ptr:ByteOffsetPointer>
// end of stupid example

-- 
Johannes Koch
BIKA Web Compliance Center - Fraunhofer FIT
Schloss Birlinghoven, D-53757 Sankt Augustin, Germany
Phone: +49-2241-142628    Fax: +49-2241-142065

Received on Friday, 23 February 2007 10:20:48 UTC