- From: Axel Polleres <axel.polleres@deri.org>
- Date: Wed, 27 Aug 2008 18:55:51 +0100
- To: Jos de Bruijn <debruijn@inf.unibz.it>
- CC: "Public-Rif-Wg (E-mail)" <public-rif-wg@w3.org>
Jos de Bruijn wrote: > > Axel Polleres wrote: >> Jos de Bruijn wrote: >>> <snip/> >>> >>>> 3) In the course of the rdf:text discussions, we discussed that a >>>> function/predicate for implementing language-pattern matching according >>>> to subtag matching according to RFC4647 is needed. (This is not yet >>>> reflected by an editor's not in the current draft.) I propose >>>> to add: >>>> >>>> pred:matches-langtag( ?arg1 , ?arg2 ) >>>> >>>> intended domains: >>>> - arg1 rdf:text >>>> - arg2 valid language range according to >>>> http://www.rfc-editor.org/rfc/rfc4647.txt >>> Why would this be necessary/useful? We already have a function for >>> extracting language tags. >>> >>> pred:matches-langtag( ?arg1 , ?arg2 ) >>> is the same as >>> func:lang(?arg1)=?arg2 >> jos, if you mean that the same functionality could be achieved with >> >> pred:matches >> >> (http://www.w3.org/2005/rules/wiki/DTB#pred:matches_.28adapted_from_fn:matches.29) >> >> >> then the answer is: yes and no > > Wouldn't the answer be: yes, but language patterns generally have a more > convenient syntax? > >> lang-pattern-matching in >> http://www.rfc-editor.org/rfc/rfc4647.txt >> is different from regular expression matching in pred:matches. >> >> For example, the extended language range "en-*-US" maps to "en-US" >> (English, United States), also matching is case insensitive, which is >> quite different from matching a regexp (although I don't say it can't >> all be expressed in a regexp, this regexp might become fairly nasty) > > In rif:text, language tags are lower case. What about rdf:text? > >> Since lang-pattern wildcards are still something which seems to be often >> used in connection with language tags, I suggest to have a separate >> function for that. > > I wonder how often they are actually used and whether we want to require > every BLD implementer to implement this specific kind of pattern matching. DTB is a catalogue of functions and preds. If we stick with BLD referencing DTB functions by "import all" instead of references, then we do. >>> <snip/> >>> >>>> 5) Editor's Note: It was noted in discussions of the working group, that >>>> except guard predicates, also an analogous built-in function or >>>> predicate to SPARQL's datatype function is needed. This however has some >>>> technical implications, see >>>> http://lists.w3.org/Archives/Public/public-rif-wg/2008Jul/0096.html >>>> >>>> PROPOSED: We could - analogous to pred:iri-to-string, define >>>> predicates >>>> >>>> pred:matches-datatype( ?arg1 ?arg2) >>>> >>>> such that the predicate is true iff ?arg1 is in the value space of >>>> the datatype denoted by ?arg2 . An open question is whether we should >>>> use the rif:iri or the string representing the datatypeIRI for the >>>> second argument, i.e. what is the intended domain for ?arg2 ?? >>> I don't really see how this could be defined in a meaningful way. In >>> any case, we already have the guard predicates, so I don't see the use. >> The use case is simple: I want to emulate the datatype function from >> SPARQL in RIF... I want to know whether a literal is an integer or a >> decimal. It is quite obvious, that we can't define a function which does > > Other than in SPARQL, in BLD you do not have literals, but you have > values. So, for example, every integer is a decimal. > > People who expect SPARQL-like behavior might find this odd. I see the point, that means, the answer to the question whether we can emulate at least the SPARQL builtins in some way in RIF is then "no" which is annoying... >> this, the predicate is an alternative suggestion, I will not fight for >> it if no one else sees the need to at least cover the expressivity of >> the built-ins in SPARQL... although I find this awkward at least. If I wanted a rules dialect which covers these builtins - say based on datalog, it now breaks my hopes that this could be done in a way building on BLD/FLD semantics which I consider unpleasant, if not say disappointing. If this is really the case, I would tend to make this an issue, actually. >> <snip/> >>>> 7) Editor's Note: In the following, we adapt several cast functions from >>>> [XPath-Functions]. Due to the subtle differences in e.g. error handling >>>> between RIF and [XPath-Functions], these definitions might still need >>>> refinement in future versions of this draft. >>>> >>>> Indeed I need to check back Jos exact concerns here, he thought that >>>> referring to the [XPath-Functions] conversions is not precise enough >>>> here, see also 8) >>> Basically, the interpretations of the functions are not completely >>> defined. >> yes. >> >>>> 8) Editor's Note: We might split this subsection into separate >>>> subsections per casting function in future versions of this document, >>>> following the convention of having one separate subsection per >>>> funtcion/predicate in the rest of the document. However, it seemed >>>> convenient here to group the cast functions which purely rely on XML >>>> Schema datatype casting into one common subsection. >>>> >>>> I can separate them, if the majority of the working group thinks this is >>>> necessary. >>> I'd say: either follow the principle of having one subsection per >>> predicate/function (I personally don't see the use of that) or don't >>> follow this principle. >>> in the former case, you need to split up the mentioned subsection. In >>> the latter case, many subsections in the document can be merged. >> yes. >> >>>> 9) Editor's Note: The cast from rif:text to xs:string is still under >>>> discussion, i.e. whether the lang tag should be included when casting to >>>> xs:string or not. >>>> >>>> PROPOSED. replace rif:text by rdf:text, otherwise leave as is. >>> I don't remember whether we discussed this in the working group. >> yes, it needs to be discussed/approved. casts from rdf:text to xs:string >> are not covered by standard conversions in XPath/XQuery, but the >> suggested treatment covers it analogously to: >> >> http://www.w3.org/TR/rdf-sparql-query/#func-str > > This is not a cast function; it is a string extraction function, > analogous to the language tag extraction function. > I think it is more intuitive to use such an extraction function, rather > than a cast function, for extracting strings from rdf:text values. Fair enough, I could live with that. >>> <snip/> >>> >>>> 12) Editor's Note: The working group is currently discussing, whether in >>>> addition to adopting the fn:compare function from [XPath-Functions], own >>>> predicates pred:string-equal, pred:string-less-than, >>>> pred:string-greater-than, pred:string-not-equal, >>>> pred:string-less-than-or-equal, pred:string-greater-than-or-equal not >>>> defined in [XPath-Functions] shall be introduced, following the >>>> convention of having such predicates for other datatypes. >>>> >>>> PROPOSED: introduce additional comparison predicates. >>> Why would we want to have these comparison predicates and what does it >>> mean for one string to be less than another? >> Suggested by Gary, the idea is to have uniformity, i.e. predicates >> less-than, greater-than, equal, less-than-or-equal, >> greater-than-or-equal, for all (or ate least most) datatypes, > > In that case you would need this kind of comparison also for things like > XML literal and rdf:text. no problem with that. >> where this >> can be defined in a feasible manner. > > How can this be defined for strings? This was my question. lexical comparison, left to right, starting from the first character. >> If there is disagreement here for the sake of redundancy, >> then we also have to revisit the and less-than-or-equal, >> greater-than-or-equal predicates which were approved by the group, since >> they are likewise superfluous. > > I don't care about the redundancy here. good. >>>> 13) Editor's Note: No less-than-or-equal or greater-than-or-equal >>>> predicates are defined in this draft for durations, since there are no >>>> separate op:dayTimeDuration-equal nor >>>> op:yearMonthDuration-equalpredicates in [XPath-Functions], but only a >>>> common predicate op:duration-equal. Future versions of this working >>>> draft may resolve this by introducing new equality predicates >>>> pred:dayTimeDuration-equal and pred:yearMonthDuration-equal with >>>> restricted intended domains. >>>> >>>> PROPOSED: introduce a single predicate duration-equal that only >>>> evaluates to true if the arguments are both of the same duration subtype >>>> and equal. >>> Agreed. >>> >>>> 14) Editor's Note: Predicates for rdf:XMLLiteral such as at least >>>> comparison predicates (equals, not-equals) are still under discussion in >>>> the working group. >>>> >>>> PROPOSED: introduce equals and not-equals for XMLLiteral which matches >>>> modulo white-spaces in non-text content. >>> Two XML literals are equal if their values (as defined in [1]) are the >>> same and not-equal if their values are not the same. I cannot imagine >>> any other meaningful definition for equality of XML literals. >>> >>> [1] http://www.w3.org/TR/rdf-concepts/#section-XMLLiteral >> ok, that doesn't include white-space normalization or alike... > > If you want to have whitespace normalization, you should either use a > different data type or introduce a function for this kind of > normalization. Using XMLLiteral-equals for checking anything but > equality of XMLLiteral values is misleading. I didn't see any function like that for XML, does anyone have an opinion about it? Anyway, such a function might be a good idea indeed. >> for that actually "=" suffices, doesn't it? > > before the equals, yes. Not-equals would be a different thing. yup. >> If the group is fine with >> >> pred:XMLLiteral-not-equals("<a/>"^^rdf:XMLLiteral >> "<a />"^^rdf:XMLLiteral) >> >> then fair enough. As far as I understood, XML prescribes some >> normalization of end-of-lines >> >> http://www.w3.org/TR/2000/REC-xml-20001006#sec-line-ends >> >> and for white spaces in attribute values >> >> http://www.w3.org/TR/2000/REC-xml-20001006#AVNormalize >> >> Do we need to bother about this? Any opinions about this? Thanks for all the comments, Axel >>>> 15) Editor's Note: The current name of this function is still under >>>> disscussion in the working group. Alternative proposals include e.g. >>>> func:lang-from-text, which follows the XPath/XQuery naming convention >>>> for extraction functions from datatypes than the SPARQL naming >>>> convention. >>>> >>>> PROPOSED: change to func:lang-from-text and only add a remark that this >>>> is related to SPARQL's lang-function. >>> Agreed. >>> >>>> 16) Editor's Note: We have not yet included comparison predicates >>>> (equal, less-than, greater-than, or compare ...) for rif:text. Future >>>> versions of this document might introduce these. >>>> >>>> PROPOSED: only add equal and not-equal for rdf:text, for more >>>> sophisticated comparisons conversions to strings and the more >>>> fine-grained comparisons on strings can be used. >>> Agreed. >>> >>> >>> >>> Best, Jos >>> >> > -- 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 Wednesday, 27 August 2008 17:56:33 UTC