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
--
-ericP
office: +1.617.599.3509
mobile: +33.6.80.80.35.59
([log in to unmask])
Feel free to forward this message to any list for any purpose other than
email address distribution.
There are subtle nuances encoded in font variation and clever layout
which can only be seen by printing this message on high-clay paper.
|