solid / vocab

Solid Vocabularies
https://solid.github.io/vocab/
42 stars 14 forks source link

spec:requirement as a pointer to a definitions #61

Closed kjetilk closed 1 year ago

kjetilk commented 2 years ago

Wouldn't be appropriate to say that the property spec:requirement points to a definition of a requirement, and so is a subproperty of rdfs:isDefinedBy?

csarven commented 2 years ago

For a wide definition of "definition of the subject resource"? I'm not sure if the requirements defines the spec: would "specification isDefinedBy requirement" be meaningful?

Would you reserve isDefinedBy to something like "spec:MUST isDefinedBy RFCMUST" - (That's the intention in the current vocab.. but currently only written for spec:RequirementLevel - I didn't write it out for each concept)

kjetilk commented 2 years ago

Ah, it was actually spec:requirementReference I had in mind... Sorry for rushing it... Would that make more sense?

csarven commented 2 years ago

Can we close this?

kjetilk commented 2 years ago

I updated it to the actual meaning I wanted to say, so I hope you could rather give it a quick consideration.

csarven commented 2 years ago

I prefer to leave it out but if you strongly think that this improves the ontology, let's add it.


IIRC, we wanted a property with range that's an ObjectProperty, so ended up creating/experimenting with spec:requirementReference because:

<http://www.w3.org/2006/03/test-description#specificationReference>
    a owl:DatatypeProperty ;
    rdfs:label "reference in specification"@en ;
    rdfs:comment "a description or a link of what part of which specification lead to the creation of this test case"@en ;
    rdfs:domain <http://www.w3.org/2006/03/test-description#TestCase> ;
    rdfs:range <http://www.w3.org/2000/01/rdf-schema#Literal> .

Besides that, spec:requirementReference (with range spec:Requirement) is similar to http://www.w3.org/2006/03/test-description#specificationReference.

It is too bad that http://www.w3.org/2006/03/test-description#specificationReference is a owl:DatatypeProperty.

I strongly prefer the property to be an ObjectProperty.

Revisiting:

spec:requirementReference
  a rdf:Property ;
  rdfs:label "requirement reference"@en ;
  rdfs:domain test-description:SpecificationTestCase ;
  rdfs:range spec:Requirement .

Would a property that's not constrained to a requirement be better:

spec:specificationReference
  a rdf:Property , owl:ObjectProperty ;
  rdfs:label "specification reference"@en ;
  rdfs:domain test-description:SpecificationTestCase .

That'd make it even closer to test-description's property with the key difference being an ObjectProperty instead of a DatatypeProperty.

:bike: :house: :exploding_head:

kjetilk commented 2 years ago

Yes, I concur, for a reference, it strikes me as odd to have that as a DatatypeProperty. Also, it hasn't been used that way in practice, has it?

csarven commented 1 year ago

That's a good question because an example including td:specificationReference in https://dvcs.w3.org/hg/ldpwg/raw-file/tip/tests/ldp-testsuite.html#test-case-example is definitely using it as an ObjectProperty:

td:specificationReference [
  a tn:Excerpt;
  rdfs:seeAlso <http://www.w3.org/TR/ldp#ldpr-get-must>;
  tn:includesText "LDP servers MUST support the HTTP GET Method for LDPRs".
].

We need another data point. :) It'd be good to look into an actual test description or the code generating it to see how it is used - if you know one, please do share!

The important difference between td:specificationReference and spec:requirementReference is how it is modelled and it is okay to acknowledge both. If what's intended of td:specificationReference covers spec:requirementReference, we can certainly drop spec:requirementReference but I don't see it working the same way.