Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[higgins-dev] A simple firstname attribute in the Higgins dialect of OWL

I’ve been working up a simple attribute example as we evaluate two proposed
extensions to the current higgins.owl:

(a) Valery’s DisplayData extension (very preliminary. Valery is I think
working on a new version

(b) To support arbitrary XML Schema-defined datatypes, I propose that we
copy the body of this ontology
http://protege.stanford.edu/plugins/owl/owl-library/2005/08/07/xsp.owl into
higgins.owl. Note: The issue of how to use XML Schema types within the OWL
community is still evolving. The protégé team (the source of the above link)
has developed an approach that is suited to our needs, so I'm proposing here
that we adopt it. We may in the future choose to update higgins.owl to
conform to the approach that the larger OWL community settles on. 

The use of the (b) above necessitates removing the OWL-DL restriction and
using OWL-Full in higgins.owl as we discussed a bit at the F2F last week.

The rest of this email has been cross posted (without the above) to
idschemas.org due to great interest there in folks understanding how the
Higgins dialect might be used to support a number of projects including
attribute extensions to OpenID.

The exercise is to describe these semantics about a "first name" attribute:

  o it has exactly one value of type string
  o this value is restricted to be constructed of the characters 
    a-z or A-Z  --a bit silly, but you get the idea
  o it has an English display string of "First Name"
  o it is semantically equivalent to "givenName" as defined by
    rivalattributes.com 

Note 1: The following is based on an in-process draft of the base
higgins.owl file (not the published one as is implied by the URL below). 

Note 2: The display data and XML Schema constructs are new, may evolve, and
have required changing to use OWL-Full instead of today's OWL-DL. 

Note 3: Comments ## are interspersed. And to keep the clutter down, I've
eliminated some elements e.g. version data, labels, and comments, etc.
commonly used by developers.

-Paul

## We start off with the requisite xml and rdf header sections:

<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
	<!ENTITY higgins
"http://www.eclipse.org/higgins/ontologies/2006/higgins";>
	<!ENTITY owl "http://www.w3.org/2002/07/owl#";>
	<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#";>
	<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#";>
	<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#";>
]>

<rdf:RDF xml:base="http://www.example.com/firstname"; 
  xmlns:higgins="http://www.eclipse.org/higgins/ontologies/2006/higgins#";
  xmlns:owl="&owl;" xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs" xmlns:xsd="&xsd;">

## Here we are saying that we're defining a new ontology that will describe
"first name" and that in turn imports higgins.owl:

	<owl:Ontology rdf:about="">
		<owl:imports rdf:resource="&higgins;.owl"/>
	</owl:Ontology>

## The following says that "Firstname" is a kind of
higgins:StringSimpleAttribute (i.e. a non-compound (aka "simple") attribute
whose value is a string) and that it has exactly one "firstnameValue" and
that firstname-dd object (defined further below) is the resource that
provides the metadata to help display this attribute and lastly that it is
the equivalent to "givenName" over at http://rivalattributes.com:

	<owl:Class rdf:ID="Firstname">
		<rdfs:subClassOf rdf:resource=
"&higgins;#StringSimpleAttribute"/>
		<rdfs:subClassOf>
			<owl:Restriction>
				<owl:cardinality>1</owl:cardinality>
				<owl:onProperty
rdf:resource="#firstnameValue"/>
			</owl:Restriction>
		</rdfs:subClassOf>
		<higgins:displayData rdf:resource="#firstname-dd"/>
		<owl:equivalentClass rdf:resource=
"http://rivalattributes.com#givenName"/>
	</owl:Class>

## The following says that the type of the value of a Firstname attribute is
an XML Schema string with the restriction [a-zA-Z]+ (copied from your
email):

	<owl:DatatypeProperty rdf:ID="firstnameValue">
		<rdfs:domain rdf:resource="#Firstname"/>
		<rdfs:range>
			<rdfs:Datatype>
				<higgins:base rdf:resource="&xsd;string"/>
				<higgins:pattern
rdf:datatype="&xsd;string">[a-zA-Z]+</higgins:pattern>
			</rdfs:Datatype>
		</rdfs:range>
	</owl:DatatypeProperty>

## The following says that the English language display label is "First
Name". Other kinds of metadata are also allowed here (but not shown)
including an image to associate with this attribute and a
human-consumable/displayable description of the attribute:

	<higgins:DisplayData rdf:about="#firstname-dd">
		<higgins:label xml:lang="en">First Name</higgins:label>
	</higgins:DisplayData>

## End of file
</rdf:RDF>

-Paul

PS: Just for fun, here's some more stuff that shows how the above Firsname
attribute could be used in the definition of a Person.

## A Person is a kind of Digital Subject...

	<owl:Class rdf:ID="Person">
		<rdfs:subClassOf rdf:resource="&higgins;#DigitalSubject"/>
	</owl:Class>

##...and that this Person has a firstname predicate that connects it to an
instance of the FirstName class defined in the email above. (The
sub-property element is optional, but nice to have):

	<owl:ObjectProperty rdf:ID="firstname">
		<rdfs:subPropertyOf rdf:resource="&higgins;#attribute"/>
		<rdfs:domain rdf:resource="#Person"/>
		<rdfs:range rdf:resource="&higgins;#Firstname"/>
	</owl:ObjectProperty>


Back to the top