RE: [open-bibliography] MARC Codes for Forms of Musical Composition

> From: public-lld-request@w3.org [mailto:public-lld-request@w3.org] On Behalf Of Ross Singer
> Sent: Wednesday, July 07, 2010 11:29 AM
> To: Young,Jeff (OR)
> Cc: Erik Hetzner; public-lld
> Subject: Re: [open-bibliography] MARC Codes for Forms of Musical Composition

> You can't have a foaf:Person that's also a foaf:Organization, anyway (they are disjoint with each other).

Kind of... in RDF you can say anything you like even if it is nonsensical or completely wrong. An OWL validator on the other hand would surely complain based on the disjointness constraint :)

> We shouldn't need three URIs to define this person, but attributes of all three classes are necessary (or useful) to accurately describe him/her.

Well this probably gets into some sort of best practice where my personal view is that it is better to keep individuals separate and have *only one* rdf:type per individual, otherwise an individual's properties become one big blob that you cannot pull apart using SPARQL. For example, while OWL DL allows you to specify multiple rdf:type for an individual:

<!--
  Validate at:
    <http://www.mygrid.org.uk/OWL/Validator>
    Select OWL DL option
  -->
<rdf:RDF xml:base="http://example.org/ontology/"
  xmlns:my="http://example.org/ontology/#"
  xmlns:dct="http://purl.org/dc/terms/"
  xmlns:foaf="http://xmlns.com/foaf/0.1/"
  xmlns:owl="http://www.w3.org/2002/07/owl#"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
  xmlns:skos="http://www.w3.org/2004/02/skos/core#"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
>
  <owl:Ontology rdf:about="" />
  <owl:Class rdf:about="http://xmlns.com/foaf/0.1/Person" />
  <owl:Class rdf:about="http://www.w3.org/2004/02/skos/core#Concept" />
  <owl:DatatypeProperty rdf:about="http://purl.org/dc/terms/identifier" />
  <foaf:Person rdf:about="#Person">
    <dct:identifier>1</dct:identifier>
  </foaf:Person>
  <skos:Concept rdf:about="#Person">
    <dct:identifier>5</dct:identifier>
  </skos:Concept>
</rdf:RDF>

all properties specified in the foaf:Person description and skos:Concept description will be merged in the RDF graph because they have the same subject, e.g., #Person. This might be acceptable when you only use foaf:* properties in the foaf:Person description and skos:* properties in the skos:Concept description.  However, when using other generic properties such as DC, UMBEL, etc. in either the foaf:Person description or the skos:Concept description you cannot write a SPARQL query to tell which dct:* properties were specified in the foaf:Person or skos:Concept descriptions.

Maybe it doesn't matter in *your* application, but then maybe it *does matter* in someone elses. From a best practice perspective, IMHO, it is better to assign separate URIs to the foaf:Person and skos:Concept, then in linked data fashion, use a linking property from an ontology to link the foaf:Person and skos:Concept together. For example:

  <owl:Thing rdf:about="#Person">
    <rdfs:isDefinedBy rdf:resource="" />
    <rdfs:seeAlso rdf:resource="#foaf:Person" />
    <rdfs:seeAlso rdf:resource="#skos:Concept" />
  </owl:Thing>

  <foaf:Person rdf:about="#foaf:Person">
    <dct:identifier>1</dct:identifier>
    <rdfs:seeAlso rdf:resource="#Person" />
  </foaf:Person>

  <skos:Concept rdf:about="#skos:Concept">
    <dct:identifier>5</dct:identifier>
    <rdfs:seeAlso rdf:resource="#Person" />
  </skos:Concept>


Andy.

Received on Wednesday, 7 July 2010 17:59:58 UTC