I'm reading through as many of the requirements as I can. I think there
are multiple ways to categorize them. I'm tending to view them as:
"record" requirements - e.g. must have at least one nodeX and two
nodeY's. These requirements look at something (an incoming data
"record") as a whole
"node" requirements - e.g. each Person node must have either foaf:name
or (foaf:lastname, foaf:firstname)
"property" requirements - e.g. broaderTerm and narrowerTerm are disjoint
"value" requirements - e.g. value of dct:creator must be taken from one
of these authority vocabularies: DDB, VIAF, LCNA
I'm a bit daunted by property requirements because I don't know how the
AP should interact with an ontology -- whether it would ignore the RDF
definitions of properties and recreate them in the AP (which seems to be
what some validators do). Is it "in addition to" the defined ontology,
or an entirely different process? (*) How are you all envisioning it?
kc
(*) This is not the same as the discussion between Antoine and I about
constraints vs. axioms, although it could be affected by what we decide.
The use of OWL with the closed world assumption is one of the possible
"solutions." The use of OWL in one's public ontology is another matter
altogether, and of course does not give CWA results.
On 10/4/14, 9:15 AM, Eric Prud'hommeaux wrote:
> I worked through the requirements at
> http://lelystad.informatik.uni-mannheim.de/rdf-validation/?q=requirements/requirements-detailed
> and am extremely impressed by the work you all have done!
>
> In an effort to contribute, I classified by some different (and
> mutually exclusive) categories:
> high-level language requirements: meta requirements about the language.
> modularization/import: ability to include bits of constraints and schemas.
> ui generation: annotations etc. to generate UIs (plus usability stuff).
> reasoning/inference: things that only seemed to me to do inference.
> RDF target constructs: what in RDF we want to constrain
> expressivity - algebraic: conjunction, disjunction, etc.
> expressivity - lexical patterns: catch "2014-10-BOGUS-DT"^^xsd:dateTime.
> expressivity - value sets: one or more possible values for an object.
> expressivity - cardinality: like regex ?+*{2,5} .
> expressivity - negation: exclusions of some constructs above.
> expressivity - other: higher-level functions on object value.
> expressivity - multi-record: mutual consistency between records.
> protocol/invocation: how validations get run and reported.
> implementability: what's required to implement validation.
> translations: expression in other execution languages.
> outreach: spec niceties to make it attractive to community
>
> I flagged some possible overlaps with (R-103?) and (specialization of
> R-112?).
>
> I don't know what to do with the strict inferences. I couldn't see how
> they by themselves were validation requirements. I can imagine some of
> them could contribute to triggers for validation but they seem like
> more a means to an end rather than the end themselves.
>
> I've stuck hints, mostly from ShExC, in [[]]s. (I stole the one for
> R-66 from the database.) The ones for multi-record are written in
> SPARQL. These aren't strictly accurate but help get the idea across.
>
> high-level language requirements:
> R-101-DECLARATIVE-CONSTRAINT-LANGUAGE
> R-102-INTUITIVE-CONSTRAINT-LANGUAGE
> R-195-CONSTRAINT-LANGUAGE-EASY-TO-CONSUME-BY-TOOLS
> R-103-HIGH-LEVEL-CONSTRAINT-LANGUAGE
> R-176-PROVIDE-HIGH-LEVEL-VOCABULARY-FOR-THE-MOST-COMMON-TYPES-OF-CONSTRAINTS (R-103?)
> R-184-COMPACT-CONCRETE-SYNTAX
> R-106-EXTENSIBLE-CONSTRAINT-LANGUAGE [[ %sparql{ ?s ex:reportedOn ?rpt . FILTER (?o > ?rpt) %} ]]
> R-112-EXTENSIBLE-CONSTRAINTS
> R-186-EXTEND-EXPRESSIVITY-WITH-SPARQL (specialization of R-112?)
> R-104-CONSTRAINT-LANGUAGE-HAVING-IMPLEMENTATION-LANGUAGE
> R-105-CONSTRAINT-LANGUAGE-TRANSLATABLE-TO-IMPLEMENTATION-LANGUAGE
> R-117-CONTEXT-SENSITIVE-CONSTRAINTS [[ <Issue> { ex:reportedBy @<UserShape>, ex:reproducedBy @<EmployeeShape> } ]]
> R-118-NAMESPACE-SENSITIVE-CONSTRAINTS
> R-121-SPECIFY-ORDER-OF-RDF-RESOURCES (e.g. ordinals on Resource Shapes)
> R-125-RDF-SHAPE-CHECKING
> R-127-RDF-REPRESENTATION-OF-CONSTRAINTS
> R-169-RDF-REPRESENTATION-OF-CONSTRAINT-LANGUAGE
> R-128-HUMAN-UNDERSTANDABLE-CONCRETE-SYNTAXES-FORMULATING-CONSTRAINTS
> R-129-MACHINE-UNDERSTANDABLE-CONCRETE-SYNTAXES-FORMULATION-CONSTRAINTS
> R-130-CONCISE-CONCRETE-SYNTAXES-FORMULATING-CONSTRAINTS
> R-132-MULTIPLE-CONCRETE-SYNTAXES-FORMULATING-CONSTRAINTS
> R-67-CLASSIFY-PROPERTIES-ACCORDING-TO-OCCURRENCE (must, may, should)
> R-72-RECOMMENDED-PROPERTIES (R-67?)
> R-135-CONSTRAINT-LEVELS (must, may, should) (R-67?)
> R-193-MULTIPLE-CONSTRAINT-VALIDATION-EXECUTION-LEVELS (R-67?)
> R-149-MANAGEMENT-OF-CONSTRAINT-SCHEMA-EVOLUTION
> R-161-ACCEPTABLE-PERFORMANCE-OF-VALIDATION-ALGORITHM
> R-168-PERFORM-BIG-DATASETS
> R-182-USE-KNOWN-CONCRETE-SYNTAX
>
> modularization/import: [[RelaxNG: external "pattern1.rnc"]]
> R-136-MODULARITY-OF-CONSTRAINT-DEFINITIONS (#include)
> R-144-BY-REF-OR-BY-VAL-PROPERTIES
> R-145-INTEROPERABLE-CONSTRAINTS
> R-147-DISTRIBUTION-OF-CONSTRAINT-SCHEMAS (addressable schemas)
> R-148-DISTRIBUTED-VALIDATION-IN-COLLABORATIVE-ENVIRONMENTS (addressable constraints)
> R-174-REUSE-CONSTRAINTS (R-148?)
> R-99-STABLE-IDENTIFICATION-OF-CONSTRAINTS (R-148?)
>
> ui generation:
> R-139-CONSTRAINT-LANGUAGE-DRIVES-USER-INTERFACE-FORM-GENERATION-AND-PRESENTATION
> R-124-DESCRIBE-DATA (annotations)
> R-134-SPECIFY-USAGE-OF-TERMS (annotations)
> R-192-DEFINE-ANNOTATIONS-FOR-CONSTRAINTS
> R-172-GENERATE-HUMAN-READABLE-DOCUMENTATION
>
> reasoning/inference:
> R-113-INTERACTION-OF-VALIDATION-WITH-REASONING
> R-198-RDF-VALIDATION-AFTER-INFERENCING
> R-100-SUBSUMPTION
> R-3-EQUIVALENT-CLASSES
> R-4-EQUIVALENT-OBJECT-PROPERTIES
> R-5-EQUIVALENT-DATA-PROPERTIES
> R-6-EQUIVALENT-INDIVIDUALS
> R-26-DATA-PROPERTY-DOMAIN
> R-35-DATA-PROPERTY-RANGE
> R-25-OBJECT-PROPERTY-DOMAIN
> R-28-OBJECT-PROPERTY-RANGE
> R-31-DEFAULT-VALUES-OF-RDF-OBJECTS
> R-38-DEFAULT-VALUES-OF-RDF-LITERALS
> R-54-SUB-OBJECT-PROPERTIES (subPropertyOf)
> R-55-OBJECT-PROPERTY-PATHS (subPropertyOf ObjectPropertyChain)
> R-56-INVERSE-OBJECT-PROPERTIES (owl:ObjectInverseOf)
> R-58-INVERSE-FUNCTIONAL-OBJECT-PROPERTIES (InverseFunctionalObjectProperty)
> R-59-REFLEXIVE-OBJECT-PROPERTIES (ReflexiveObjectProperty)
> R-89-SELF-RESTRICTION (like R-59 with OPE)
> R-60-IRREFLEXIVE-OBJECT-PROPERTIES (IrreflexiveObjectProperty)
> R-61-SYMMETRIC-OBJECT-PROPERTIES (SymmetricObjectProperty)
> R-63-TRANSITIVE-OBJECT-PROPERTIES (TransitiveObjectProperty)
> R-64-SUB-DATA-PROPERTIES (SubDataPropertyOf)
> R-86-EXISTENTIAL-QUANTIFICATION-ON-OBJECT-PROPERTIES
> R-87-UNIVERSAL-QUANTIFICATION-ON-OBJECT-PROPERTIES
> R-88-INDIVIDUAL-VALUE-RESTRICTION-ON-OBJECT-PROPERTIES
> R-90-EXISTENTIAL-QUANTIFICATION-ON-DATA-PROPERTIES
> R-91-UNIVERSAL-QUANTIFICATION-ON-DATA-PROPERTIES
> R-94-POSITIVE-OBJECT-PROPERTY-ASSERTIONS
> R-95-POSITIVE-DATA-PROPERTY-ASSERTIONS
> R-190-SPECIFY-EXPECTED-BEHAVIOR-UNDER-ALL-POSSIBLE-ENTAILMENT-REGIMES
>
> RDF target constructs:
> R-119-VALIDATION-ON-NAMED-GRAPHS
> R-120-HANDLE-RDF-COLLECTIONS
> R-24-PROVENANCE-CONSTRAINTS
> R-47-LANGUAGE-TAG-MATCHING
> R-133-MULTIPLE-CONCRETE-SYNTAXES-FORMULATING-DATA (comes for free with RDF, or is this about DSPs?)
>
> expressivity - algebraic:
> R-15-CONJUNCTION-OF-CLASS-EXPRESSIONS [[ foaf:giveName LITERAL , foaf:familyName LITERAL ]]
> R-16-CONJUNCTION-OF-DATA-RANGES (What's that mean under UNA?)
> R-17-DISJUNCTION-OF-CLASS-EXPRESSIONS [[ foaf:giveName LITERAL | foaf:familyName LITERAL ]]
> R-18-DISJUNCTION-OF-DATA-RANGES [[ ex:status (ex:unassigned ex:assigned) ]]
> R-7-DISJOINT-CLASSES (Do these ↓↓↓ mean anything with UNA?)
> R-8-DISJOINT-UNION-OF-CLASS-EXPRESSIONS
> R-9-DISJOINT-OBJECT-PROPERTIES
> R-11-DISJOINT-DATA-PROPERTIES-CLASS-SPECIFIC
> R-12-DISJOINT-OBJECT-PROPERTIES-CLASS-SPECIFIC
> R-13-DISJOINT-GROUP-OF-PROPERTIES-CLASS-SPECIFIC
> R-14-DISJOINT-INDIVIDUALS
>
> expressivity - lexical patterns:
> R-21-IRI-PATTERN-MATCHING-ON-RDF-SUBJECTS
> R-23-IRI-PATTERN-MATCHING-ON-RDF-PROPERTIES [[ .-dc:creator-dc:date LITERAL ]]
> R-22-IRI-PATTERN-MATCHING-ON-RDF-OBJECTS [[ med:coding loinc:~-loinc:Systolic:Qn ]]
> R-46-CONSTRAINING-FACETS (literal constraints by XML Schema facets)
> R-44-PATTERN-MATCHING-ON-RDF-LITERALS (regular expressions)
> R-45-RANGES-OF-RDF-LITERAL-VALUES [[ med:systolic ucum:mmHg ]]
> R-50-WHITESPACE-HANDLING-OF-RDF-LITERALS (no whitespace, or none at beginning/end)
> R-51-HTML-HANDLING-OF-RDF-LITERALS (no HTML tags)
> R-98-CHECK-VALIDITY-OF-URIS (http:///example.com/)
> R-194-PROVIDE-STRING-FUNCTIONS-FOR-RDF-LITERALS (length, startsWith)
>
> expressivity - value sets:
> R-30-ALLOWED-VALUES-FOR-RDF-OBJECTS [[ ex:status (ex:assigned ex:unassigned) ]]
> R-37-ALLOWED-VALUES-FOR-RDF-LITERALS [[ ex:status ("assigned" "unassigned") ]]
> R-32-MEMBERSHIP-OF-RDF-OBJECTS-IN-CONTROLLED-VOCABULARIES [[ med:coding (loinc:Systolic:Qn loinc:Systolic:Qn) ]]
> R-39-MEMBERSHIP-OF-RDF-LITERALS-IN-CONTROLLED-VOCABULARIES [[ med:coding ("12345-67" "76543-21") ]]
> R-92-LITERAL-VALUE-RESTRICTION (R-37?)
>
> expressivity - cardinality:
> R-80-EXACT-UNQUALIFIED-CARDINALITY-RESTRICTIONS-ON-OBJECT-PROPERTIES [[ bug:wingPosition @my:WingPos{4} ]]
> R-81-MINIMUM-UNQUALIFIED-CARDINALITY-RESTRICTIONS-ON-OBJECT-PROPERTIES [[ bug:wingPosition @my:WingPos{2,} ]]
> R-82-MAXIMUM-UNQUALIFIED-CARDINALITY-RESTRICTIONS-ON-OBJECT-PROPERTIES [[ bug:wingPosition @my:WingPos{,4} ]]
> R-83-EXACT-UNQUALIFIED-CARDINALITY-RESTRICTIONS-ON-DATA-PROPERTIES [[ bug:wingPosition LITERAL{4} ]]
> R-84-MINIMUM-UNQUALIFIED-CARDINALITY-RESTRICTIONS-ON-DATA-PROPERTIES [[ bug:wingPosition LITERAL{2,} ]]
> R-85-MAXIMUM-UNQUALIFIED-CARDINALITY-RESTRICTIONS-ON-DATA-PROPERTIES [[ bug:wingPosition LITERAL{,4} ]]
> R-74-EXACT-QUALIFIED-CARDINALITY-RESTRICTIONS-ON-OBJECT-PROPERTIES
> R-75-MINIMUM-QUALIFIED-CARDINALITY-RESTRICTIONS-ON-OBJECT-PROPERTIES
> R-76-MAXIMUM-QUALIFIED-CARDINALITY-RESTRICTIONS-ON-OBJECT-PROPERTIES
> R-77-EXACT-QUALIFIED-CARDINALITY-RESTRICTIONS-ON-DATA-PROPERTIES
> R-78-MINIMUM-QUALIFIED-CARDINALITY-RESTRICTIONS-ON-DATA-PROPERTIES
> R-79-MAXIMUM-QUALIFIED-CARDINALITY-RESTRICTIONS-ON-DATA-PROPERTIES
> R-49-RDF-LITERALS-HAVING-AT-MOST-ONE-LANGUAGE-TAG
> R-65-FUNCTIONAL-DATA-PROPERTIES (FunctionalDataProperty) [[ ex:status . ]] [[ ex:status .{1} ]]
> R-66-PROPERTY-GROUPS (all or nothing) [[ ( ex:reproducedBy @, ex:reproducedOn xsd:dateTime ) ? ]]
> R-71-CONDITIONAL-PROPERTIES (superset of R-66?)
> R-68-REQUIRED-PROPERTIES [[ ex:status . ]] [[ ex:status .{1} ]]
> R-69-OPTIONAL-PROPERTIES [[ ex:status .? ]] [[ ex:status .{0,1} ]]
> R-70-REPEATABLE-PROPERTIES [[ ex:related .* ]] [[ ex:status .{0,} ]]
>
> expressivity - negation:
> R-19-NEGATION-OF-CLASS-EXPRESSIONS
> R-20-NEGATION-OF-DATA-RANGES [[ med:status .-med:deceased ]]
> R-33-NEGATIVE-OBJECT-CONSTRAINTS (R-20?)
> R-52-NEGATIVE-OBJECT-PROPERTY-CONSTRAINTS [[ !ex:obsolescenceRecord @<ObsRec> ]]
> R-96-NEGATIVE-OBJECT-PROPERTY-ASSERTIONS (R-52?)
> R-200-NEGATIVE-LITERAL-CONSTRAINTS (R-52?)
> R-53-NEGATIVE-DATA-PROPERTY-CONSTRAINTS [[ !ex:obsolescenceDate xsd:dateTime ]]
> R-97-NEGATIVE-DATA-PROPERTY-ASSERTIONS (R-53?)
> R-142-NEGATIVE-RANGES-OF-RDF-LITERAL-VALUES
> R-141-NEGATIVE-PATTERN-MATCHING-ON-RDF-LITERALS
> R-48-MISSING-LANGUAGE-TAGS
>
> expressivity - other:
> R-41-STATISTICAL-COMPUTATIONS
> R-42-COMPUTATIONS-BASED-ON-DATATYPE
> R-43-COMPARISONS-BASED-ON-DATATYPE
>
> expressivity - multi-record:
> R-2-UNIQUE-INSTANCES (HasKey) [[ { ?s :k1 ?o1 ; :k2 ?o2 } MINUS { ?s2 :k1 ?o1 ; :k2 ?o2 } FILTER (?s != ?s2) ]]
> R-57-FUNCTIONAL-OBJECT-PROPERTIES (FunctionalObjectProperty) [[ { ?s :k1 ?o1 } MINUS { ?s2 :k1 ?o1 } FILTER (?s != ?s2) ]]
> R-62-ASYMMETRIC-OBJECT-PROPERTIES (AsymmetricObjectProperty) [[ { ?s :p1 ?o1 } MINUS { ?o1 :p1 ?s } ]]
>
> protocol/invocation:
> R-114-PROVIDE-RDF-REST-SERVICES-FOR-RDF-VALIDATION
> R-126-CUSTOMIZABLE-VALIDATION-PROCESS
> R-143-CONDITIONAL-TYPED-VALIDATION (engage by rdf:type)
> R-191-SHAPES-RELATED-TO-TYPES (R-143?)
> R-197-ATTACH-CONSTRAINTS-TO-CLASSES (R-143?)
> R-27-CLASS-SPECIFIC-VALIDATION
> R-29-CLASS-SPECIFIC-RANGE-OF-RDF-OBJECTS
> R-36-CLASS-SPECIFIC-RANGE-OF-RDF-LITERALS
> R-146-CONSTRAINT-VALIDATION-OF-RDF-INPUT-WITH-RESPECT-TO-EXISTING-RDF (operate over DB)
> R-150-RDF-REPRESENTATION-OF-VALIDATION-RESULTS
> R-153-RDF-REPRESENTATION-OF-CONSTRAINT-VIOLATIONS (subset of R-150?)
> R-151-USEFUL-MESSAGE-VALIDATION-RESULTS
> R-189-ADD-ANNOTATIONS-TO-CONSTRAINT-VIOLATION-OBJECTS
> R-152-FIND-NOT-VALIDATED-TRIPLES (related to closed shapes)
> R-155-GUIDANCE-HOW-TO-BECOME-VALID-DATA
> R-156-REFERENCES-TO-TRIPLES-CAUSING-THE-CONSTRAINT-VIOLATIONS
> R-157-REFERENCES-TO-VALIDATION-RULES-CAUSING-CONSTRAINT-VIOLATIONS
> R-158-SEVERITY-LEVELS-OF-CONSTRAINT-VIOLATIONS
> R-159-EXPLAIN-REASONS-OF-CONSTRAINT-VIOLATIONS
> R-166-RDF-STREAMING-VALIDATION
> R-167-VALIDATE-RDF-IN-AN-HTML-DOCUMENT-CONSTAINING-RDFA-MARKUP
> R-178-ASSOCIATE-CONSTRAINTS-WITH-VOCABULARIES
> R-179-ASSOCIATE-CONSTRAINTS-WITH-RDF-DOCUMENTS
> R-180-ASSOCIATE-CONSTRAINTS-WITH-RDF-DATASETS
> R-181-ASSOCIATE-CONSTRAINTS-WITH-RDF-REST-APIS
> R-185-FEDERALIZED-RDF-VALIDATION (@@ federated)
>
> implementability:
> R-137-LEVERAGE-ON-EXISTING-TECHNOLOGIES
> R-138-CONSTRAINT-LANGUAGE-COMPATIBLE-WITH-SPARQL
> R-188-EXPRESSIVITY-OF-CONSTRAINT-LANGUAGE-EQUIVALENT-TO-SPARQL (R-138?)
> R-199-RDF-VALIDATION-MUST-COMPILE-DOWN-TO-SPARQL (R-138?)
> R-131-OWL-AS-CONCRETE-SYNTAX-FORMULATING-CONSTRAINTS
> R-170-VALIDATION-OF-SPARQL-ENDPOINTS
>
> translations:
> R-107-TRANSFORMATIONS-BETWEEN-CONSTRAINT-LANGUAGE-AND-UML
> R-108-TRANSFORMATIONS-BETWEEN-CONSTRAINT-LANGUAGE-AND-XML-SCHEMA
> R-109-TRANSFORMATIONS-BETWEEN-CONSTRAINT-LANGUAGE-AND-OCL
> R-110-TRANSFORMATIONS-BETWEEN-CONSTRAINT-LANGUAGE-AND-SPARQL
>
> outreach:
> R-162-SPECIFICATION-PUBLICLY-AVAILABLE
> R-163-IMPLEMENTATION-EXISTS
> R-164-IMPLEMENTATION-PUBLICLY-AVAILABLE
> R-165-EXECUTABLE-DEMOS-EXAMPLES-USE-CASES
>
> @@unclassified@@
> R-93-DIFFERENCE-BETWEEN-CONSTRAINTS-ON-OBJECT-AND-DATA-PROPERTIES (what differences are desirable?)
> R-111-BASIC-USE-CASES-COVERED-BY-CONSTRAINT-LANGUAGE
> R-115-CLOSED-WORLD-ASSUMPTION-CWA
> R-116-UNIQUE-NAME-ASSUMPTION-UNA
> R-122-TRADE-OFF-BETWEEN-DIMENSIONS-EXPRESSIVITY-COMPLEXITY-PREDICTABILITY
> R-123-STATE (??)
> R-140-SEPARATE-ONTOLOGIES-FROM-VALIDATION-SCHEMAS
> R-173-SEPARATE-CONSTRAINTS-FROM-VOCABULARIES-AND-ONTOLOGIES (R-140?)
> R-201-SEPARATION-OF-CONSTRAINTS-AND-ONTOLOGY-SEMANTICS
> R-34-AVAILABLE-CLASS-DEFINITION (OWL class expression for referenced types?)
> R-154-HANDLE-CONSTRAINT-VIOLATIONS (??)
> R-160-OPEN-SOURCE-CONSTRAINT-VALIDATION (??)
> R-171-VALIDATION-OF-URIS-BY-DEREFERENCING (test 200?)
> R-175-DISCOVER-CONSTRAINTS
> R-177-DEFINE-SEMANTICS-FOR-CONSTRAINTS (definition in other languages, e.g. SPARQL)
> R-187-DEFINE-SEMANTICS-OF-CONSTRAINTS-IN-TERMS-OF-SPARQL (specialization of R-177?)
> R-183-CONSTRAINTS-ABOUT-CONSTRAINTS
>
>
--
Karen Coyle
[log in to unmask] http://kcoyle.net
m: 1-510-435-8234
skype: kcoylenet/+1-510-984-3600
|