Hi Tom,

I assume you meant "there is *no* dash:DateTimePicker" declared. Should be fixed now.

Thanks,
Holger


On 13/07/2020 19:52, Tomasz Pluskiewicz wrote:
By the way, I just notice that there is dash:DateTimePicker in the published DASH vocabulary

wtorek, 16 czerwca 2020 o 00:09:17 UTC+2 Holger Knublauch napisał(a):


    On 15/06/2020 19:59, Tomasz Pluskiewicz wrote:
    Ah, yes, I realise that I eventually implemented it similarly
    with the default value because always added for new values so
    indeed the selection process is the same for existing and new
    objects.

    Could you link to a diff of what you changed in forms.html?

    Attached

    Holger



    W dniu poniedziałek, 15 czerwca 2020 02:23:31 UTC+2 użytkownik
    Holger Knublauch napisał:

        In our implementation each widget receives a "default" value
        when initialized. In the case of literals, this is a literal
        with the lexical form "", i.e. the empty string. In the case
        of URIs this is an URI node with "" as its URI. This approach
        means that these scoring rules can apply relatively consistently.

        Having said this, the score functions in our implementation
        also receive a second argument, which is metadata about the
        'field', which is basically the collection of applicable
        property shapes for that property/path. Some widgets do use
        that metadata to make further choices in cases where the node
        isn't sufficient to make a decision.

        Examples:

        BlankNodeViewer.score = (value, field) => {
        returnvalue.isBlankNode() ? 1 : 0;
        };


        The only widgets that use the 'field' above are dash:Editors:

        BooleanSelectEditor.score = (value, field) => {
        if(value.dt == 'boolean') {
        return10;
            }
        if(field.isObjectProperty) {
        return0;
            }
        if(field.hasDT('boolean')) {
        return10;
            }
        if(field.hasAnyDT()) {
        return0;
            }
        returnnull;
        };


        DatePickerEditor.score = (value, field) => {
        returnvalue.dt == 'date' ? 10 : field &&
        field.hasDT('date') ? 5 : 0;
        };

        DateTimePickerEditor.score = (value, field) => {
        returnvalue.dt == 'dateTime' ? 10 : field &&
        field.hasDT('dateTime') ? 5 : 0;
        };

        EnumSelectEditor.score = (value, field) => {
        returnfield && field.enumValues ? 10 : 0;
        };

        FromConceptSchemeEditor.score = (value, field) => {
        if(field && field.hasAnyDT()) {
        // Unsuitable for datatype fields
        return0;
            }
        // We don't have enough info here to decide so leave the choice to users
        returnnull;
        };

        OWLManchesterSyntaxEditor.score = (value, field) => {
        if (
                !field.path.isInverse &&
                (field.path.predicate ==
        'http://www.w3.org/2000/01/rdf-schema#domain' ||
        field.path.predicate ==
        'http://www.w3.org/2000/01/rdf-schema#range' ||
        field.path.predicate ==
        'http://www.w3.org/2000/01/rdf-schema#subClassOf' ||
        field.path.predicate ==
        'http://www.w3.org/2002/07/owl#disjointWith' ||
        field.path.predicate ==
        'http://www.w3.org/2002/07/owl#equivalentClass')
            ) {
        if (value.isBlankNode()) {
        return50;
                } else {
        returnnull;
                }
            } else {
        return0;
            }
        };

        TextAreaEditor.score = (value, field) => {
        if (value.isString()) {
        if (field && field.singleLine === true) {
        return0;
                } elseif (field && field.singleLine === false) {
        return20; // Prefer over single line editors
                } elseif(DisplayUtil.containsLineBreak(value.lex) &&
        field.singleLine !== false) {
        return20; // Prefer over single line editors if line breaks exist
                } else {
        return5;
                }
            } elseif (field.hasDT('string')) {
        return2;
            }
        elseif(field.hasCustomDatatype()) {
        returnnull;
            } else {
        return0;
            }
        };

        TextAreaWithLangEditor.score = (value, field) => {
        if (value.isLangString() || (field &&
        field.isStringOrLangString())) {
        if (field && field.singleLine === true) {
        return0;
                } elseif (field && field.singleLine === false) {
        return15; // Prefer over single line editors
                } elseif(DisplayUtil.containsLineBreak(value.lex) &&
        field.singleLine !== false) {
        return15; // Prefer over single line editors if line breaks exist
                } else {
        return5;
                }
            } elseif (field &&
        field.hasDT('langString') && !field.singleLine) {
        return5;
            } else {
        return0;
            }
        };

        TextFieldWithLangEditor.score = (value, field) => {
        if (value.isLangString() || (field &&
        field.isStringOrLangString())) {
        return10;
            } elseif (field &&
        field.hasDT('langString') && !field.singleLine) {
        return5;
            } else {
        return0;
            }
        };

        TimeEditor.score = (value, field) => {
        returnvalue.dt == 'time' ? 15 : field &&
        field.hasDT('time') ? 5 : 0;
        };

        URIEditor.score = (value, field) => {
        if (value.isURI()) {
        if (field.nodeKind && field.nodeKind.label == 'IRI' &&
        field.isObjectProperty && field.classes.length == 0) {
        return10;
                } else {
        returnnull;
                }
            } else {
        return0;
            }
        };

        I have made small updates to the forms.html online doc to
        clarify this (and added dash:DateTimePicker which we have
        implemented in the meantime).

        Holger


        On 12/06/2020 18:51, Tomasz Pluskiewicz wrote:
        Hi

        I am implementing a SHACL form builder in JavaScript and
        intended to have DASH integrated by default.

        I have a little difficulty with the scoring system. Let's
        take the simplest text field as example. The spec says

          * 10 if the value is a literal that is neither
            rdf:langString nor xsd:boolean
          * 0 otherwise

        First question is in general about the rules which mention a
        "value". This applies only to existing triples in the
        dataset at the time the form is initialised, correct? For
        example

        |
        # score 10
        <#me> rdfs:label "Tomasz Pluskiewicz" .

        # score 0
        <#me> rdfs:label "Tomasz Pluskiewicz"@pl .
        |

        I think this is missing a rule for adding new objects for a
        property. Such as when a user clicks a (+) button. In that
        case the property shape is the only information available as
        there is no "value" yet.
        The example snippet does show a "sh:datatype xsd:string" but
        it's not mentioned in the score rules for the text field. A
        bit of a grey area?

        Best,
        Tom
-- You received this message because you are subscribed to the
        Google Groups "TopBraid Suite Users" group.
        To unsubscribe from this group and stop receiving emails
        from it, send an email to [email protected].
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/topbraid-users/14c15fa7-448a-4d00-9c9e-ca957e12f56co%40googlegroups.com
        
<https://groups.google.com/d/msgid/topbraid-users/14c15fa7-448a-4d00-9c9e-ca957e12f56co%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- You received this message because you are subscribed to the
    Google Groups "TopBraid Suite Users" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to [email protected].
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/topbraid-users/01450f1d-ed27-40a3-a10d-19b9b70b00bao%40googlegroups.com
    
<https://groups.google.com/d/msgid/topbraid-users/01450f1d-ed27-40a3-a10d-19b9b70b00bao%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/topbraid-users/76b28c42-004b-4b65-9f4a-4a449655b011n%40googlegroups.com <https://groups.google.com/d/msgid/topbraid-users/76b28c42-004b-4b65-9f4a-4a449655b011n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "TopBraid 
Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/topbraid-users/4094c0ff-55a5-17af-7e73-d3140a326cfb%40topquadrant.com.

Reply via email to