Re: How to encode a product family?

> On May 3, 2016, at 11:43 AM, Martin Hepp <mfhepp@gmail.com> wrote:
> 
> Hi Alexandre,
> that looks good!

I do like the result :-)

>> On 03 May 2016, at 20:38, Alexandre Bertails <bertails@apple.com> wrote:
>> 
>> Thanks Martin and all for the detailed responses. I think I understand a bit better how it could be done now.
>> 
>> What do you think of the following?
>> 
>> [[
>> ## I still feel like we could have schema:ProductFamily as a subclass of schema:Brand
> 
> 
> I agree that if we want schema:ProductFamiliy, it should be a subtype of schema:Brand and be clearly separate from the Product/Service/ProductModel types.
> 
> The question is whether documenting the use of schema:Brand for this purpose is as good as defining a subtype which does not introduce new properties.
> 
> As a compromise, we could add "Product families are also a form of Brand" to the description of schema:Brand and schema:brand, and add an example for this scenario to schema:Brand, schema:brand, and schema:ProductModel.

schema:Brand does say it's about "labeling a product, product group, or similar". I guess "product group" is already very close to "product family". The thing is, I would have never found it by myself through the specification :-)

Alexandre



> 
> Martin
> 
>> <http://www.apple.com/iphone/#thing> a schema:Brand ;
>> schema:url <http://www.apple.com/iphone/> ;
>> schema:name "iPhone" .
>> 
>> <http://www.apple.com/iphone-5/#thing> a schema:ProductModel ;
>> ## note /iphone-5/ now redirects to /iphone/
>> schema:url <http://www.apple.com/iphone/> ;
>> schema:name "iPhone 5" ;
>> schema:brand <http://www.apple.com/iphone/#thing> .
>> 
>> <http://www.apple.com/iphone-6s/#thing> a schema:ProductModel ;
>> schema:url <http://www.apple.com/iphone-6s/> ;
>> schema:name "iPhone 6s" ;
>> schema:brand <http://www.apple.com/iphone/#thing> .
>> 
>> <http://www.apple.com/shop/buy-iphone/iphone6s#gray_64gb> a schema:ProductModel ;
>> schema:url <http://www.apple.com/shop/buy-iphone/iphone6s> ;
>> schema:name "iPhone 6s Space-Grey, 64 GB" ;
>> schema:isVariantOf <http://www.apple.com/iphone-6s/#thing> .
>> ]]
>> 
>> Note that in our case, we need to be precise about the entities we manipulate, and where they appear. Our database is www.apple.com.
>> 
>> Best,
>> Alexandre
>> 
>> 
>>> On May 3, 2016, at 8:45 AM, Martin Hepp <mfhepp@gmail.com> wrote:
>>> 
>>> Hi all,
>>> 
>>> when "product family" means a mere group of products that serve a similar purpose, I would use schema:category for the group (e.g. "iPhone"). schema:isVariantOf is meant for linking from base models to fully specified models.
>>> 
>>> 
>>> So here is what I would use:
>>> 
>>> @prefix pto: <http://www.productontology.org/id/> .
>>> 
>>> foo:iphone1 a schema:ProductModel, pto:Smartphone;
>>> 	schema:name "iPhone 1";
>>> 	schema:category "Apple iPhone Family".
>>> 
>>> 
>>> foo:iphone2 a schema:ProductModel, pto:Smartphone;
>>> 	schema:name "iPhone 2";
>>> 	schema:category "Apple iPhone Family".
>>> 
>>> foo:iphone3 a schema:ProductModel, pto:Smartphone;
>>> 	schema:name "iPhone 3";
>>> 	schema:category "Apple iPhone Family".
>>> 
>>> foo:iphone3gs a schema:ProductModel, pto:Smartphone;
>>> 	schema:name "iPhone 3 GS";
>>> 	schema:category "Apple iPhone Family".
>>> 
>>> foo:iphone4 a schema:ProductModel, pto:Smartphone;
>>> 	schema:name "iPhone 4";
>>> 	schema:category "Apple iPhone Family".
>>> 
>>> foo:iphone5 a schema:ProductModel, pto:Smartphone;
>>> 	schema:name "iPhone 5";
>>> 	schema:category "Apple iPhone Family".
>>> 
>>> foo:iphone5se a schema:ProductModel, pto:Smartphone;
>>> 	schema:name "iPhone 5 SE";
>>> 	schema:category "Apple iPhone Family".
>>> 
>>> 
>>> Then, I would materialize all or the relevant fully specified models, like my new iPhone 5 SE in space-grey with 64 GB:
>>> 
>>> 
>>> foo:iphone5se_gray_64gb a schema:ProductModel, pto:Smartphone;
>>> 	schema:name "iPhone 5 SE Space-Grey, 64 GB";
>>> 	schema:category "Apple iPhone Family";
>>> 	schema:color "space gray";
>>> 	schema:additionalProperty 
>>> 		[ a schema:PropertyValue; 
>>> 		  schema:name "capacity";
>>> 		  schema:unitText "GB" ] .
>>> 	# add more features here, see http://schema.org/PropertyValue for examples
>>> 
>>> 
>>> Then I would state that each fully specified model is a variant of its base model:
>>> 
>>> foo:iphone5se_gray_64gb schema:isVariantOf foo:iphone5se.
>>> 
>>> You could also also indicate that the newer models are successors of the older ones:
>>> 
>>> foo:iphone5se schema:successorOf foo:iphone5 .
>>> foo:iphone5 schema:successorOf foo:iphone4 .
>>> foo:iphone3gs schema:successorOf foo:iphone3 . 
>>> foo:iphone3 schema:successorOf foo:iphone2 .
>>> foo:iphone2 schema:successorOf foo:iphone1 .
>>> 
>>> 
>>> Note that successorOf is intended to be transitive (see http://www.heppnetz.de/ontologies/goodrelations/v1.html#successorOf), but we have not yet made this explicit in schema.org, because meta-properties for properties were not supported initially.
>>> 
>>> schema:isVariant is not transititve, because properties should be passed from the generic model to the fully specified ones with a pragmatic mechanism for overriding a property (a property will not be passed along if it is already locally specified, see http://wiki.goodrelations-vocabulary.org/Axioms#Recommended_Default_Rules). For this, the ordering of inferences can matter as soon as we have more than one level of hierarchy. If you allow complex variant relationships, the reasoning gets very difficult.
>>> 
>>> 
>>> Further references (not all up to date):
>>> 
>>> http://wiki.goodrelations-vocabulary.org/Documentation/Product_variants
>>> https://lists.w3.org/Archives/Public/public-vocabs/2011Oct/0040.html
>>> 
>>> 
>>> Hope that helps!
>>> 
>>> Martin
>>> 
>>> 
>>> -----------------------------------
>>> martin hepp  http://www.heppnetz.de
>>> mhepp@computer.org          @mfhepp
>>> 
>>> 
>>> 
>>> 
>>>> On 03 May 2016, at 17:18, Dan Brickley <danbri@google.com> wrote:
>>>> 
>>>> +Martin Hepp
>>>> 
>>>> On 3 May 2016 at 16:01, Alexandre Bertails <bertails@apple.com> wrote:
>>>>> Folks,
>>>>> 
>>>>> I am trying to encode the following things in Schema.org:
>>>>> 
>>>>> 1. "iPhone is a Product family."
>>>>> 
>>>>> 2. "iPhone 6s is part of the iPhone Product family."
>>>>> 
>>>>> 3. all the Products of a Product family would be related to each other (schema:isRelatedTo), and/or similar to each other (schema:isSimilarTo).
>>>>> 
>>>>> Except for 3., I cannot find something that would capture exactly the notion of Product family.
>>>> 
>>>> 
>>>> You might look at http://schema.org/ProductModel and isVariantOf ("A
>>>> pointer to a base product from which this product is a variant. It is
>>>> safe to infer that the variant inherits all product features from the
>>>> base model, unless defined locally. This is not transitive.") and
>>>> predecessorOf/successorOf (which I now see should be marked as mutual
>>>> inverses, issue filed as
>>>> https://github.com/schemaorg/schemaorg/issues/1142 ).
>>>> 
>>>> I guess you'd need to figure out the constant "essence of iPhone" and
>>>> make a generic ProductModel for that, and then relate them. I'm not
>>>> sure how deep you'd want this to go e.g. I have an (excellent if
>>>> ageing) iPad Mini, presumably part of an iPad Product family; would se
>>>> use isSimilarTo vs iSvariantOf to link iPhone and iPad families
>>>> together?
>>>> 
>>>> Dan
>>>> 
>>>> 
>>>>> Any idea?
>>>>> 
>>>>> Alexandre
>>> 
>> 
> 

Received on Tuesday, 3 May 2016 18:49:50 UTC