The ECMs seem like a very powerful tool for expressing ontologies in
fedora, but I am still a bit
confused about how to use them.
How do we specify that a <owl:DatatypeProperty> in the ONTOLOGY
datastream has an XSD user-derived datatype that's
defined in an XSD schema in the manner described at
https://wiki.duraspace.org/display/FCREPO/DSCOMPOSITE-MODEL+and+Schemas


Here is an example of what I mean for a Content Model of a Person
<!-- PERSON/ONTOLOGY Datastream -->
<rdf:RDF
                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#";>
        <owl:Class rdf:about="info:fedora/demo:Person#class">
                <rdfs:subClassOf>
                        <!-- At least one name -->
                        <owl:Restriction>
                                <owl:onProperty
                                                
rdf:resource="http://demo.org/demo-relations/#name"/>
                                <owl:minCardinality
rdf:datatype="http://www.w3.org/2001/XMLSchema#integer";>1
                                </owl:minCardinality>
                        </owl:Restriction>
                ...
        </owl:Class>
        
        <!-- Note the use rdf:datatype attribute. Is this how we actually
specify an xsd user-defined datatype for a datatype property? -->
        <owl:DatatypeProperty
                        rdf:about="http://demo.org/demo-relations/#name";
                        
rdf:datatype="http://www.demo.org/XMLschema/person#Name"/>
        ...
</rdf:RDF>

<!-- PERSON/DS-COMPOSITE-MODEL -->

<dsTypeModel ID="ONTOLOGY-SCHEMA">
        <form MIME="text/xml"/>
        <extension name="SCHEMA">
                <reference type="datastream" value="ONTOLOGY_SCHEMA"/>
        </extension>
</dsTypeModel>



<!-- Person/ONTOLOGY_SCHEMA -->
<xsd:schema xmlns:per="http://www.demo.org/models/person#";
        xmlns:c="http://www.demo.org/models/common#";
        xmlns:xsd="http://www.w3.org/2001/XMLSchema";
        targetNamespace="http://www.demo.org/models/person#";
        elementFormDefault="qualified"
        attributeFormDefault="unqualified">
    <xsd:import namespace="http://www.demo.org/models/common#";
schemaLocation="(URL of common.xsd
datastream)"/>
        ...
<xsd:complexType id="Name" name="Name">
        <xsd:annotation>
                <xsd:documentation>A person often has many different names 
depending
on religious,
political, clan or social affiations.  Cataloging name variants allows
properly defined biographical
entries according to customs.</xsd:documentation>
        </xsd:annotation>
        <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                        ...
                        <xsd:attribute name="type" type="per:nameTypeAttr" 
default="primaryName"/>
                        ....
                </xsd:extension>
        </xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="nameTypeAttr">
        <xsd:restriction base="xsd:string">
                <xsd:enumeration value="primaryName"/>
                <xsd:enumeration value="primaryTitle"/>
                <xsd:enumeration value="personalName"/>
                <xsd:enumeration value="title"/>
                <xsd:enumeration value="familyName"/>
                <xsd:enumeration value="firstOrdinationName"/>
                <xsd:enumeration value="secretInitiatoryName"/>
                <xsd:enumeration value="reversal"/>
                <xsd:enumeration value="sanskrit"/>
                <xsd:enumeration value="grammatical"/>
                <xsd:enumeration value="variantOrthography"/>
                <xsd:enumeration value="penName"/>
                <xsd:enumeration value="gterStonTitle"/>
                <xsd:enumeration value="chineseName"/>
                <xsd:enumeration value="corporateName"/>
                <xsd:enumeration value="bodhisattvaVowName"/>
                <xsd:enumeration value="finalOrdinationName"/>
        </xsd:restriction>
</xsd:simpleType>


There is also another complication: How would we specify the
attributes, such as nameTypeAttr in the
RELS-EXT of a data object?

<!-- Person_Object_1/RELS-EXT -->
<rdf:Description rdf:about="info:fedora/demo:Person_Object_1">
        <fedora-model:hasModel rdf:resource="info:fedora/demo:Person"/>
        <demo-relations:name xsd:type="primaryName">Some 
Name</demo-relations:name>
        <demo-relations:name xsd:type="title">Some Title</demo-relations:name>
        <!-- The following relationship should be invalid -->
        <demo-relations:name xsd:type="invalidType">Some 
Value</demo-relations:name>
</rdf:Description>

=====

I don't think the example above is correct, but I hope it illustrates
my thinking.

My gut tells me there should be a straightforward way to use literals
with user-derived datatypes
for relations declared in the ONTOLOGY. Does anyone have any ideas or
suggestions? Looking through
the 3.4.1 source code and online documentation I couldn't find much on
using the ECMs with either
user-derived datatypes, or <owl:DatatypeProperty>.

Thank you,
Eugene Wolfson

P.S.

You might find these starting references to be helpful:
http://www.w3.org/TR/2006/NOTE-swbp-xsch-datatypes-20060314/#sec-userDefined
http://www.w3.org/TR/owl-ref/#rdf-datatype
https://wiki.duraspace.org/display/FCREPO/DSCOMPOSITE-MODEL+and+Schemas
http://sourceforge.net/apps/mediawiki/ecm/index.php?title=Ontology_Language and
https://wiki.duraspace.org/display/FCREPO/Ontologies

P.P.S.

The driving force behind my question is that I want to ask risearch
not only questions like:

select $parent $person from <#ri> where { $person hasParent $parent . }

but also questions like:

select $parent $person from <#ri> where { $parent hasChild $person .
$person <demo-relations:name type="primaryName"> "Tenzin" . }

or even:

select $parent $person from <#ri> where { $parent hasChild $person .
$person <demo-relations:name> "Tenzin" . }

------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Fedora-commons-users mailing list
Fedora-commons-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fedora-commons-users

Reply via email to