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

On 10-07-07 17:23, Houghton,Andrew wrote:
>
>   <!-- Variant Representation -->
>
>   <foaf:Person rdf:about="#foaf:Person">
>
>     <dct:identifier>1</dct:identifier>
>
>  
>
>   <!-- Variant Representation -->
>
>   <skos:Concept rdf:about="#skos:Concept">
>
>     <dct:identifier>5</dct:identifier>
>
>

Another way to handle this is to not use generic dct:identifiers
like this. Instead use subProperties:

personid rdfs:subPropertyOf dct:identifier .
conceptid rdfs:subPropertyOf dct:identifier .

Talino_Manu personid 123 .
Talino_Manu conceptid 456 .

{ ?sub rdfs:subProperty ?super . ?thing ?sub ?obj } =>
{ ?thing ?super ?obj } .


Think of the {A} =>  {B} (read => as "implies)  as analogous
to a constraint or trigger in a relational database.
 
A generic search would use dct:identifier. Something that knew
about or implemented foaf:Person or skos:Concept in particular.
So,

SELECT ?thing WHERE { ?thing dct:identifier 123 }
SELECT ?person WHERE { ?person personid 123 }
SELECT ?concept WHERE { ?concept conceptid 456 }

Would all work as expected.

This can be mirrored in the object model that doesn't really
need to support multiple inheritance. You might do something
like this in Python, for example:

class Person(Graph):
	def mail(self, from_addr, message):
		from smtplib import SMTP
		s = SMTP()
		addrs = self.objects(self.identifier, FOAF["mbox"])
		s.sendmail(from_addr, addrs, message)

class Concept(Graph):
	def concepts(self):
		yield self
		for parent in self.objects(self.identifier, SKOS["subConceptOf"]):
			yield Concept(identifier=parent.identifier)

Cheers,
-w

-- 
William Waites           <william.waites@okfn.org>
Mob: +44 789 798 9965    Open Knowledge Foundation
Fax: +44 131 464 4948                Edinburgh, UK

RDF Indexing, Clustering and Inferencing in Python
		http://ordf.org/

Received on Thursday, 8 July 2010 06:50:01 UTC