- From: Dave Reynolds <der@hplb.hpl.hp.com>
- Date: Tue, 29 Jan 2008 15:46:50 +0000
- To: Jos de Bruijn <debruijn@inf.unibz.it>
- CC: RIF WG <public-rif-wg@w3.org>
Jos de Bruijn wrote:
> Dear all,
>
> This e-mail contains a proposal for the incorporation of annotations in
> RIF.
Good start. Some questions and comments embedded.
> == prelude ==
>
> We distinguish between two kinds of annotations:
> 1 annotations which can be ignored for rule set processing (e.g.,
> author, date, title, natural language description); we call these
> annotations *metadata*
> 2 annotations which cannot be ignored for rule set processing (e.g.,
> imports, data set references); we call these annotations *attributes*
> [this name is not very good; suggestions are welcome]
I agree we have this distinction at present, and your proposal cleanly
separates them.
[We could choose to only support metadata and move everything else of
semantic significance into the language - specifically imports and
required datasets. I'm not sure this is the right approach but we should
at least consider it.]
A possible alternative to the name "attributes" might be "processing
instructions", not sure I like it but it's the only plausible option
that has sprung to mind so far.
> Annotations can be written about any rule set or rule.
>
> Since metadata can be ignored for rule set processing, we do not
> restrict the metadata properties which can be used in any dialect.
For interoperability purposes I believe we should recommend a core
vocabulary for metadata terms. In particular, I think that it will be
quite common to want to give rules and rulesets a name, a longer
descriptive comment (possibly multi-lingual), author attribution,
creation dates and references to external documentation. If people in
general use the same vocabulary for these then editors, viewers and
other tools will be more functional and practical interoperation often
benefits from being able to find things like comments.
Specifically for these meatadata terms I suggest:
rdfs:label
rdfs:comment
dc:creator
dc:date
rdfs:seeAlso
> Attribute properties cannot be ignored; in fact, all attribute
> properties must be understood by anyone who processes rule sets of a
> particular dialect. Therefore, every dialect has a fixed set of
> attributes properties which may be used.
> Suggested attribute properties for BLD: rif:imports,
> rif:requiresDataSet, rif:dataModel (see [1] for a description of the
> rif:requiresDataSet and rif:dataModel properties).
>
> == Extension of the presentation syntax ==
>
> The syntax for rule sets and rules needs to be extended to allow for
> rule set and rule identification. Furthermore, it is convenient to
> group annotations together with rule sets and rules. Finally, it is
> currently foreseen that rule sets can have both metadata and attributes,
> and rules can only have metadata. We propose the following modification
> of the grammar:
>
> Ruleset ::= ' Ruleset( ' iri? Attribute* Metadata* RULE* ' ) '
> Attribute ::= ' Attribute ( ' iri Const ' ) '
> Metadata ::= ' Metadata ( ' iri Const ' ) '
> RULE ::= ' Rule( ' iri? Metadata* RuleContent ' ) '
> RuleContent ::= ' Forall ' Var+ ' ( ' RULE ' ) ' | Implies | ATOMIC
> Implies ::= ATOMIC ' :- ' CONDITION
>
> Metadata properties can be any IRI; each RIF dialect prescribes a fixed
> list of attributes properties.
A nice simple approach but ...
(1) It would be useful to enable metadata property values to be
structured. Specifically the proposal in [1] uses RDF resources and
bNodes for this.
(2) I would like to have a documented mapping from our metadata syntax
to RDF. This would *not* require an implementer to process the metadata
as RDF nor be able to understand RDF syntax but would help (a) forestall
questions at Last Call on the relationship, (b) allow us to use RDFS as
in [1] to document the intended domain/ranges of the metadata
properties. This mapping could be informative rather than normative.
> Neither attributes nor metadata are reflected in the model theory.
>
> If it is deemed necessary that arbitrary metadata statements (not only
> about rule sets and rules) can be added, the following change could be
> made to the Ruleset production:
>
> Ruleset ::= ' Ruleset( ' iri? Attribute* Metadata* (RULE |
> MetadataStatement)* ' ) '
> MetadataStatement ::= ' MetadataStatement ( ' Const iri Const ' ) '
>
> == Extension of the XML syntax ==
>
> Ruleset( rs1
> Attribute("a1"^^rif:iri "v1"^^rif:iri)
> Attribute("a2"^^rif:iri "v2"^^xsd:string)
> Metadata("a3"^^rif:iri "v3"^^xsd:string)
> Metadata("a4"^^rif:iri "v4"^^rif:iri)
> Rule( r1
> Metadata("a5"^^rif:iri "v5"^^xsd:string)
> ....
> )
> )
>
> translates to
>
> <Ruleset rif:identifier="rs1">
> <Attribute rif:identifier="a1" type="rif:iri">v1</Attribute>
> <Attribute rif:identifier="a2" type="xsd:string">v2</Attribute>
> <Metadata rif:identifier="a3" type="xsd:string">v3</Metadata>
> <Metadata rif:identifier="a4" type="rif:iri">v4</Metadata>
> <Rule rif:identifier="r1">
> <Metadata rif:identifier="a5" type="xsd:string">v5</Metadata>
> ....
> </Rule>
> </Ruleset>
>
>
> best, Jos
>
> [1] http://www.w3.org/2005/rules/wg/wiki/Arch/Data_Sets
Dave
--
Hewlett-Packard Limited
Registered Office: Cain Road, Bracknell, Berks RG12 1HN
Registered No: 690597 England
Received on Tuesday, 29 January 2008 15:47:24 UTC