- From: James Hudson <jameshudson3010@gmail.com>
- Date: Wed, 11 Mar 2020 10:37:16 -0400
- To: public-schemaorg@w3.org
- Message-ID: <CAEUVO9F5nO6mjHO3BVArsh4AYkvcKXuc7CAxem00nXDrLztZ+g@mail.gmail.com>
Hello Adam, Thank you for your quick reply. It does help. You provided: { "@context": { "@vocab": "http://my-company.org/" }, "@id": "AirlineIntl", "@type":"MyCompanyClass", "name":"James's Airlines Intl.", "chanceOfSuccess": { "@type":"QuantitativeValue", "value": "50" } } Where or how do I define that the chanceOfSuccess must be a value between 0 and 100? The way I would define chanceOfSuccess when used on the AirlineIntl instance, it would not make sense it to be a negative value or greater than 100. I am thinking there is a need for this acceptable range of values to be part of the vocabulary. To resolve this, I am thinking there is a need for a subclass of MyCompanyClass which defines and limits the value to a min and max value. Perhaps you already covered this in your reply, but it is the key part that still confuses me. Regards, James On Wed, Mar 11, 2020 at 9:58 AM Adam Kimball <adam@akimball.org> wrote: > James, > > I think your intuition is correct, you are mixing up your universals and > your instances. In A you have a class definition which would allow you to > make instances. Even here the comment suggests a little blurry thinking > because a class cannot change the world, maybe the instances of the class > can change the world? Important difference but otherwise this class > definition looks fine. > > At a glance, your property looks good. Maybe a little stringently defined > though - is chanceOfSuccess only applicable to your MyCompanyClass or to > anything that might have a chance of a success like the odds that tonight I > will win the lottery? Or that my cat will live another year? So, you can > see, I think the domain is overly specified - why not loosen it up? Give > it a non-camelCase name if you are going to use rdfs:label, no need to be > so terse! > > Okay, in C you are getting bogged down. It isn’t the the CLASS > MyCompanyClass has a success rate as it is only a class, a possible set of > values. You already have the class and the property, now you just need to > use them. We build instances by making nodes that connect to our classes > by isA relationships and then we hook them up with properties. > > I’m also going to fix your context to provide a default namespace. > Contexts are not hard but can be fiddly, to I recommend making sure you > know how they work. Ok with that in mind here is an instance > > { > > "@context": { > "@vocab": "http://my-company.org/" > } , > "@id": "AirlineIntl", > "@type":"MyCompanyClass", > "name":"James's Airlines Intl.", > "chanceOfSuccess": { > "@type":"QuantitativeValue", > "value": "50" > } > } > > > Put that into the JSON LD playground and see the visualized graph. As a > note, we haven’t really defined what “name” is (you use rdfs:label in > another example, but you’ll need to map that into your @context to resolve > it.) > > Note: this is fast and loose. It parses to RDF but I think you’ll need to > tweak things. > > Hope that helps, > Adam > > > > On Mar 11, 2020, at 7:26 AM, James Hudson <jameshudson3010@gmail.com> > wrote: > > Hello, > > I am working on designing a vocabulary and generally liked the approach > taken by schema.org. > > The syntax I will be adopting is json-ld. > > There is a concept I would like to have in my vocabulary and I am not > precisely sure what the proper design would be. It involves having a > property with a well defined min & max value -- like a percentage which > would take on values of 0 to 100. The idea is that I would like to define a > property which specifies what the acceptable min and max values are for the > value of the property. > > I see that schema.org defines QuantitativeValue which has minValue and > maxValue properties. I believe one would start with a subclass of > QuantitativeValue, but I am not certain where to go from there. > > To try to answer this question myself, let's define a class which will > have a property which has a min and max value. > > (A) > { > "@id": "http://my-company.org/MyCompanyClass", > "@type": "rdfs:Class", > "rdfs:comment": "A class that will change the world", > "rdfs:label": "MyCompanyClass", > }, > > The property of the class would be defined as: > > (B) > { > "@id": "http://my-company.org/chanceOfSuccess", > "@type": "rdf:Property", > "http://schema.org/domainIncludes": { > "@id": "http://my-company.org/MyCompanyClass" > }, > "http://schema.org/rangeIncludes": { > "@id": "http://schema.org/QuantitativeValue" > }, > "rdfs:comment": "The chance of success as expressed as a percentage > between 0 and 100.", > "rdfs:label": "chanceOfSuccess" > } > > It is at this point that I get a bit confused about how to proceed. > > Taking a look at https://schema.org/LoanOrCredit, I might try to do the > following: > > (C) > { > "@context":"http://my-company.org", > "@type":"MyCompanyClass", > "name":"An attempt I will make", > "chanceOfSuccess": { > "@type":"QuantitativeValue", > "name": "the chances", > "minValue":"0", > "maxValue":"100" > } > } > > And again, I am stuck and unsure of how to proceed. It seems as if the > minValue & maxValue fields belong in the property defintion. > > Why do I think I am stuck? > > Because, at this point, I would like to use (C) as a Class or Type and > then write something like: > > (D) > { > "@context":"http://my-company.org", > "@type":"(C)", > "name":"about my attempt", > "chanceOfSuccess": { > "@type":"QuantitativeValue", > "value": "50" > } > } > > > Something doesn't feel right about all of this. I am clearly missing some > key concept, but I am not sure what that is at the moment. > > Any thoughts, comments, or ideas would be appreciated. > > Regards, > James > > > > On Mar 11, 2020, at 7:26 AM, James Hudson <jameshudson3010@gmail.com> > wrote: > > Hello, > > I am working on designing a vocabulary and generally liked the approach > taken by schema.org. > > The syntax I will be adopting is json-ld. > > There is a concept I would like to have in my vocabulary and I am not > precisely sure what the proper design would be. It involves having a > property with a well defined min & max value -- like a percentage which > would take on values of 0 to 100. The idea is that I would like to define a > property which specifies what the acceptable min and max values are for the > value of the property. > > I see that schema.org defines QuantitativeValue > <https://schema.org/QuantitativeValue> which has minValue and maxValue > properties. I believe one would start with a subclass of QuantitativeValue, > but I am not certain where to go from there. > > To try to answer this question myself, let's define a class which will > have a property which has a min and max value. > > *(A)* > { > "@id": "http://my-company.org/MyCompanyClass", > "@type": "rdfs:Class", > "rdfs:comment": "A class that will change the world", > "rdfs:label": "MyCompanyClass", > }, > > The property of the class would be defined as: > > *(B)* > { > "@id": "http://my-company.org/chanceOfSuccess", > "@type": "rdf:Property", > "http://schema.org/domainIncludes": { > "@id": "http://my-company.org/MyCompanyClass" > }, > "http://schema.org/rangeIncludes": { > "@id": "http://schema.org/QuantitativeValue" > }, > "rdfs:comment": "The chance of success as expressed as a percentage > between 0 and 100.", > "rdfs:label": "chanceOfSuccess" > } > > It is at this point that I get a bit confused about how to proceed. > > Taking a look at https://schema.org/LoanOrCredit, I might try to do the > following: > > *(C)* > { > "@context":"http://my-company.org", > "@type":"MyCompanyClass", > "name":"An attempt I will make", > "chanceOfSuccess": { > "@type":"QuantitativeValue", > "name": "the chances", > "minValue":"0", > "maxValue":"100" > } > } > > And again, I am stuck and unsure of how to proceed. It seems as if the > minValue & maxValue fields belong in the property defintion. > > Why do I think I am stuck? > > Because, at this point, I would like to use (C) as a Class or Type and > then write something like: > > *(D)* > { > "@context":"http://my-company.org", > "@type":"(C)", > "name":"about my attempt", > "chanceOfSuccess": { > "@type":"QuantitativeValue", > "value": "50" > } > } > > > Something doesn't feel right about all of this. I am clearly missing some > key concept, but I am not sure what that is at the moment. > > Any thoughts, comments, or ideas would be appreciated. > > Regards, > James > > >
Received on Wednesday, 11 March 2020 14:37:41 UTC