Re: ISSUE-61 (IRI-Casts): Casting to/from rif:iri [DTB]

Michael,

I don't think that what you point out is a problem... see below.


Michael Kifer wrote:
> 
> On Fri, 13 Jun 2008 00:22:56 +0200
> Axel Polleres <axel.polleres@deri.org> wrote:
> 
>> Michael Kifer wrote:
>>> I was just checking if this was the intent.
>>>
>>> I think it is enough to define this function by a bunch of axioms
>>>
>>> iriToStr("a"^^rif:iri  "a"^^xs:string).
>> You mean basically that these axioms are implicit in RIF for all
>> strings? Well, why not... we get infinitly many axiomatic facts with
>> that in RIF (which is a thing which some people don't like about RDF...)
>> but so would we with Jos solution, indeed, I do not see what the
>> preceding paragraph adds.
> 
> The two solutions are equivalent. Jos wanted it to be semantically defined and
> I proposed a simpler, syntactic definition (which has slight disadvantages).
> 
>> I think this brings us to a proper solution:
> 
> Do not rush to judgement.
> 
>>   We can get something which looks like a *real* casting function by the
>> same means, not having to go the nasty bypath of having a predicate by
>> replacing
>>
>> "iriToStr("a"^^rif:iri "a"^^xsd:string) is satisfied in every RIF
>> interpretation."
>>
>> with the following:
>>
>> "The following equalities hold in every RIF interpretation:
>>
>>   xsd:string("a"^^rif:iri) = "a"^^xsd:string
>>
>> and
>>
>>   rif:iri("a"^^xsd:string) = "a"^^xsd:iri
>> "
>>
>> why didn't we realize this earlier...
> 
> We realized this, but did not propose, because it is wrong :-)
> For instance, the first group of equalities will prohibit different IRIs from
> denoting the same resource. 

That is not a problem, as far as I can see... we do not restrict 
*additional* equalitities in these axioms, i.e. we don't say that 
inequalities hold for the other, we do not prohibit anything.

> (The second group seems ok, but I would not be
> surprised if it also has problems.)

since the first one doesn't seem to  have problems - at least not the 
ones you mention -  I don't expect so. :-)

>> This is more elegant than having a predicate for one cast and functions
>> for all others. Also, this form of equalities has the elegance that
>> additional equalities (e.g. by iris referrng to the same object) are not
>> a problem at all with this.
>>
>> Accordingly, I changed the respective section on casting from an d to
>> rif:iri to the following text:
> 
> I am afraid you will have to change back :-)

If you find a problem (apart from the above which isn't a problem unless 
I got you wrong), then certainly I will.

Axel

>> ----------------------
>>
>> ==== <tt>rif:iri</tt> ====
>> {|
>> | style="background-color: #80FF80" rowspan="1" colspan="1" |
>> Editor's note: Casting from and to is still under discussion in the 
>> working group since <tt>rif:iri</tt> is not a datatype. For details, we 
>> refer to [http://www.w3.org/mid/20080610143044.5698ABF57@nelson.w3.org 
>> Issue-61]. The following is a strawman proposal which might still change 
>> in future versions of this working draft.
>> |}
>>
>> <p>Additionally to the built-in cast functions for datatyes we allow 
>> conversions from and to constants in the  <tt>rif:iri</tt> symbol space 
>> to and from <tt>xsd:string</tt>s following similar considerations as 
>> conversions from and to <tt>xsd:anyURI</tt> in 
>> <nowiki>[</nowiki>[[#ref-xpath-functions|XPath-Functions]]]. Technically 
>> speaking, we cannot proceed as with the other cast functions, defining 
>> the semantics via a fixed mapping '''''I'''''<sub>external</sub> for an 
>> external schema <tt> ( ?arg<sub>1</sub>; rif:iri ( ?arg<sub>1</sub> ) 
>> )</tt>, since <tt>rif:iri</tt> is not a datatype with a fixed value 
>> space and fixed lexical-to value mapping.  Instead, casts between 
>> <tt>rif:iri</tt> and <tt>xsd:string</tt> are defined via an infinite set 
>> of axiomatic equalities in every RIF interpretation as follows.</p>
>>
>> <p>The following equalities hold in every RIF interpretation for each 
>> unicode string <i>a</i>:</p>
>> <ul>
>>   <li><tt>xsd:string("</tt><i>a</i><tt>"^^rif:iri) = 
>> "</tt><i>a</i><tt>"^^xsd:string</tt></li>
>>   <li><tt>rif:iri("</tt><i>a</i><tt>"^^xsd:string) = 
>> "</tt><i>a</i><tt>"^^xsd:iri</tt></li>
>> </ul>
>>
>> <p>Thus, although there is no explicit schema  <tt> ( ?arg<sub>1</sub>; 
>> rif:iri ( ?arg<sub>1</sub> ) )</tt> in RIF, casts between 
>> <tt>xsd:string<tt>s and <tt>rif:iri</tt>s are still possible in RIF with 
>> the intended semantics that the IRI represented by a particular string 
>> can be cast to this very string and vice versa.
>> </p>
>> ----------------------
>>
>> I like this solution :-)
>>
>> Axel
>>
>>
>>
>>
>>> and not bother with the preceding text in your message. It is much simpler that way.
>>>
>>> michael
>>>
>>> On Tue, 10 Jun 2008 19:22:10 +0200
>>> Jos de Bruijn <debruijn@inf.unibz.it> wrote:
>>>
>>>> Well, it was the only reasonable alternative I could think of for 
>>>> casting IRIs to strings.
>>>>
>>>> I am personally actually not convinced that we even need such a casting 
>>>> function, but there are some people who think it is useful.
>>>>
>>>> Best, Jos
>>>>
>>>> Michael Kifer wrote:
>>>>> This makes iriToString a multivalued function (i.e., the same iri has several
>>>>> string interpretations). Is this what we want?
>>>>>
>>>>>
>>>>> 	--michael  
>>>>>
>>>>> On Tue, 10 Jun 2008 16:40:04 +0200
>>>>> Jos de Bruijn <debruijn@inf.unibz.it> wrote:
>>>>>
>>>>>> See [1] and preceding the messages in the thread for a description of 
>>>>>> the semantic problems.  In [1] I also proposed a casting predicate that 
>>>>>> seems to work.
>>>>>>
>>>>>> In summary, the biggest semantic challenge in casting IRIs to strings is 
>>>>>> that several different IRIs may be mapped to the same string.  The 
>>>>>> following was my proposal:
>>>>>>
>>>>>> "Let I be an interpretation, let u be an element in the domain of I, and
>>>>>> let {i1, ..., in} be the set of IRIs that denote u, i.e. for each ij (1
>>>>>> <= j <= n), IC(ij)=u.  IR(iriToString)(u,"ij")=t for (1 <= j <= n);
>>>>>> IR(iriToString)(u,s)=f for every element s not in {"i1", ..., "in"}."
>>>>>>
>>>>>> The rule set
>>>>>> iriToString("b"^^rif:iri,"b"^^xsd:string)
>>>>>>
>>>>>> is satisfied in every RIF interpretation.
>>>>>>
>>>>>> I think this predicates should be sufficient for most of the use cases.
>>>>>>
>>>>>>
>>>>>> Best, Jos
>>>>>>
>>>>>> Rule Interchange Format Working Group Issue Tracker wrote:
>>>>>>> ISSUE-61 (IRI-Casts): Casting to/from rif:iri [DTB]
>>>>>>>
>>>>>>> http://www.w3.org/2005/rules/wg/track/issues/
>>>>>>>
>>>>>>> Raised by: Christopher Welty
>>>>>>> On product: DTB
>>>>>>>
>>>>>>> It is clear users of RIF dialects such as BLD will want to be able to convert (cast) instances of rif:iri to/from other datatypes, in particular strings and possibly rif:text.
>>>>>>>
>>>>>>> In general, a casting mechanism is not present in DTB and should be added.


-- 
Dr. Axel Polleres, Digital Enterprise Research Institute (DERI)
email: axel.polleres@deri.org  url: http://www.polleres.net/

Everything is possible:
rdfs:subClassOf rdfs:subPropertyOf rdfs:Resource.
rdfs:subClassOf rdfs:subPropertyOf rdfs:subPropertyOf.
rdf:type rdfs:subPropertyOf rdfs:subClassOf.
rdfs:subClassOf rdf:type owl:SymmetricProperty.

Received on Friday, 13 June 2008 07:48:58 UTC