Set cardinality restriction on a class

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Set cardinality restriction on a class

Alex Batlin
I think I am going crazy! I have followed the various tutorials and still cannot figure out the answer. Use case is simple. I have defined a class called ‘Person’. I have defined a data property called hasFirstName. I have added a ‘subclass of’ restriction to Person like this : ‘hasFirstName exactly 1 string’. I have also added an individual called Alex of type Person, and have not added the hasFirstName property. I expect the reasoner to complain as I have specified the cardinality of 1, and asserted that Alex is a Person, but have not added the property, yet the reasoner does not complain. If however I added two statement e.g. hasFirstName ‘Alex’ and hasFirstName ‘John’ then I get a complain. What I am doing wrong? Any help will be most appreciated, thanks.
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Set cardinality restriction on a class

Csongor Nyulas
Administrator
Well, if you don't specify any value for the hasFirstName property, the
reasoner figures out that your Alex individual has a first name, it just
does not know what it is, because it is not stated in your ontology. So
conform to the open world assumption the ontology is not inconsistent.
However if you state two first names, which are different the ontology
is inconsistent.

Csongor

On 04/19/2014 01:31 PM, Alex Batlin wrote:
> I think I am going crazy! I have followed the various tutorials and still cannot figure out the answer. Use case is simple. I have defined a class called ‘Person’. I have defined a data property called hasFirstName. I have added a ‘subclass of’ restriction to Person like this : ‘hasFirstName exactly 1 string’. I have also added an individual called Alex of type Person, and have not added the hasFirstName property. I expect the reasoner to complain as I have specified the cardinality of 1, and asserted that Alex is a Person, but have not added the property, yet the reasoner does not complain. If however I added two statement e.g. hasFirstName ‘Alex’ and hasFirstName ‘John’ then I get a complain. What I am doing wrong? Any help will be most appreciated, thanks.
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Set cardinality restriction on a class

Alex Batlin
Ok I think I get it. So is there any way (given the open world assumption) to specify that there must a property associated? It tried some restrictions and it did not work either, assume for same reason. Or does that mean that you need to somehow move into closed world assumption constrained checking? And if so, how can that be done in Protege? Many thanks.

On 19 Apr 2014, at 21:38, Csongor Nyulas <[hidden email]> wrote:

> Well, if you don't specify any value for the hasFirstName property, the reasoner figures out that your Alex individual has a first name, it just does not know what it is, because it is not stated in your ontology. So conform to the open world assumption the ontology is not inconsistent. However if you state two first names, which are different the ontology is inconsistent.
>
> Csongor
>
> On 04/19/2014 01:31 PM, Alex Batlin wrote:
>> I think I am going crazy! I have followed the various tutorials and still cannot figure out the answer. Use case is simple. I have defined a class called ‘Person’. I have defined a data property called hasFirstName. I have added a ‘subclass of’ restriction to Person like this : ‘hasFirstName exactly 1 string’. I have also added an individual called Alex of type Person, and have not added the hasFirstName property. I expect the reasoner to complain as I have specified the cardinality of 1, and asserted that Alex is a Person, but have not added the property, yet the reasoner does not complain. If however I added two statement e.g. hasFirstName ‘Alex’ and hasFirstName ‘John’ then I get a complain. What I am doing wrong? Any help will be most appreciated, thanks.
>> _______________________________________________
>> protege-user mailing list
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Set cardinality restriction on a class

Moh Abdelrahman
Dear Alex,
I'm also starting working on ontologies, I found a very helpful video tutorial for same example as I think. You may have a look you will find it so useful and easy to apply.


With best regards,


On Sun, Apr 20, 2014 at 12:21 AM, Alex Batlin <[hidden email]> wrote:
Ok I think I get it. So is there any way (given the open world assumption) to specify that there must a property associated? It tried some restrictions and it did not work either, assume for same reason. Or does that mean that you need to somehow move into closed world assumption constrained checking? And if so, how can that be done in Protege? Many thanks.

On 19 Apr 2014, at 21:38, Csongor Nyulas <[hidden email]> wrote:

> Well, if you don't specify any value for the hasFirstName property, the reasoner figures out that your Alex individual has a first name, it just does not know what it is, because it is not stated in your ontology. So conform to the open world assumption the ontology is not inconsistent. However if you state two first names, which are different the ontology is inconsistent.
>
> Csongor
>
> On 04/19/2014 01:31 PM, Alex Batlin wrote:
>> I think I am going crazy! I have followed the various tutorials and still cannot figure out the answer. Use case is simple. I have defined a class called ‘Person’. I have defined a data property called hasFirstName. I have added a ‘subclass of’ restriction to Person like this : ‘hasFirstName exactly 1 string’. I have also added an individual called Alex of type Person, and have not added the hasFirstName property. I expect the reasoner to complain as I have specified the cardinality of 1, and asserted that Alex is a Person, but have not added the property, yet the reasoner does not complain. If however I added two statement e.g. hasFirstName ‘Alex’ and hasFirstName ‘John’ then I get a complain. What I am doing wrong? Any help will be most appreciated, thanks.
>> _______________________________________________
>> protege-user mailing list
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



--
Mohammad Abdelrahman
 
- Web Master @ Mansoura University, Egypt
- Senior Web Designer
 
+201003370697
[hidden email]

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Set cardinality restriction on a class

Alex Batlin
many thanks

On 20 Apr 2014, at 09:54, moh channel <[hidden email]> wrote:

Dear Alex,
I'm also starting working on ontologies, I found a very helpful video tutorial for same example as I think. You may have a look you will find it so useful and easy to apply.


With best regards,


On Sun, Apr 20, 2014 at 12:21 AM, Alex Batlin <[hidden email]> wrote:
Ok I think I get it. So is there any way (given the open world assumption) to specify that there must a property associated? It tried some restrictions and it did not work either, assume for same reason. Or does that mean that you need to somehow move into closed world assumption constrained checking? And if so, how can that be done in Protege? Many thanks.

On 19 Apr 2014, at 21:38, Csongor Nyulas <[hidden email]> wrote:

> Well, if you don't specify any value for the hasFirstName property, the reasoner figures out that your Alex individual has a first name, it just does not know what it is, because it is not stated in your ontology. So conform to the open world assumption the ontology is not inconsistent. However if you state two first names, which are different the ontology is inconsistent.
>
> Csongor
>
> On 04/19/2014 01:31 PM, Alex Batlin wrote:
>> I think I am going crazy! I have followed the various tutorials and still cannot figure out the answer. Use case is simple. I have defined a class called ‘Person’. I have defined a data property called hasFirstName. I have added a ‘subclass of’ restriction to Person like this : ‘hasFirstName exactly 1 string’. I have also added an individual called Alex of type Person, and have not added the hasFirstName property. I expect the reasoner to complain as I have specified the cardinality of 1, and asserted that Alex is a Person, but have not added the property, yet the reasoner does not complain. If however I added two statement e.g. hasFirstName ‘Alex’ and hasFirstName ‘John’ then I get a complain. What I am doing wrong? Any help will be most appreciated, thanks.
>> _______________________________________________
>> protege-user mailing list
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



--
Mohammad Abdelrahman
 
- Web Master @ Mansoura University, Egypt
- Senior Web Designer
 
+201003370697
[hidden email]
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Set cardinality restriction on a class

Matthew Horridge-2
Administrator
In reply to this post by Alex Batlin
Hi Alex,

What you want goes beyond the semantics of OWL.  You essentially want to state that the value of the hasFirstName property must be *known* for any given individual.  This is different from stating that you know that a Person has exactly one first name (as Csongor pointed out, your ontology entails that Alex must have a hasFirstName property, but it’s the case that the specific value for the property isn’t known).

There has been some work on this in the form of “Integrity Constraints".  Some of the more recent work is by Peter Patel-Schneider [1].  People at Clark&Parsia have also done a lot of work on this [2] - they have quite a nice blog post that explains the details.  If you use their Stardog tool [3] you can get the behaviour that you want - again, there’s a very nice example that explains the details.

Cheers,

Matthew

[1] Peter F. Patel-Schneider, Enrico Franconi: Ontology Constraints in Incomplete and Complete Data. International Semantic Web Conference (1) 2012: 444-459

[2] http://clarkparsia.com/pellet/icv/

[3] http://docs.stardog.com/icv/

On 19 Apr 2014, at 23:21, Alex Batlin <[hidden email]> wrote:

> Ok I think I get it. So is there any way (given the open world assumption) to specify that there must a property associated? It tried some restrictions and it did not work either, assume for same reason. Or does that mean that you need to somehow move into closed world assumption constrained checking? And if so, how can that be done in Protege? Many thanks.
>
> On 19 Apr 2014, at 21:38, Csongor Nyulas <[hidden email]> wrote:
>
>> Well, if you don't specify any value for the hasFirstName property, the reasoner figures out that your Alex individual has a first name, it just does not know what it is, because it is not stated in your ontology. So conform to the open world assumption the ontology is not inconsistent. However if you state two first names, which are different the ontology is inconsistent.
>>
>> Csongor
>>
>> On 04/19/2014 01:31 PM, Alex Batlin wrote:
>>> I think I am going crazy! I have followed the various tutorials and still cannot figure out the answer. Use case is simple. I have defined a class called ‘Person’. I have defined a data property called hasFirstName. I have added a ‘subclass of’ restriction to Person like this : ‘hasFirstName exactly 1 string’. I have also added an individual called Alex of type Person, and have not added the hasFirstName property. I expect the reasoner to complain as I have specified the cardinality of 1, and asserted that Alex is a Person, but have not added the property, yet the reasoner does not complain. If however I added two statement e.g. hasFirstName ‘Alex’ and hasFirstName ‘John’ then I get a complain. What I am doing wrong? Any help will be most appreciated, thanks.
>>> _______________________________________________
>>> protege-user mailing list
>>> [hidden email]
>>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>>
>> _______________________________________________
>> protege-user mailing list
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Set cardinality restriction on a class

Alex Batlin
Many thanks. Looking at the startdog docs, the IC changes OWL semantics from open to closed world. Is there a closed world reasoner plugin for Protege?

On 20 Apr 2014, at 10:05, Matthew Horridge <[hidden email]> wrote:

> Hi Alex,
>
> What you want goes beyond the semantics of OWL.  You essentially want to state that the value of the hasFirstName property must be *known* for any given individual.  This is different from stating that you know that a Person has exactly one first name (as Csongor pointed out, your ontology entails that Alex must have a hasFirstName property, but it’s the case that the specific value for the property isn’t known).
>
> There has been some work on this in the form of “Integrity Constraints".  Some of the more recent work is by Peter Patel-Schneider [1].  People at Clark&Parsia have also done a lot of work on this [2] - they have quite a nice blog post that explains the details.  If you use their Stardog tool [3] you can get the behaviour that you want - again, there’s a very nice example that explains the details.
>
> Cheers,
>
> Matthew
>
> [1] Peter F. Patel-Schneider, Enrico Franconi: Ontology Constraints in Incomplete and Complete Data. International Semantic Web Conference (1) 2012: 444-459
>
> [2] http://clarkparsia.com/pellet/icv/
>
> [3] http://docs.stardog.com/icv/
>
> On 19 Apr 2014, at 23:21, Alex Batlin <[hidden email]> wrote:
>
>> Ok I think I get it. So is there any way (given the open world assumption) to specify that there must a property associated? It tried some restrictions and it did not work either, assume for same reason. Or does that mean that you need to somehow move into closed world assumption constrained checking? And if so, how can that be done in Protege? Many thanks.
>>
>> On 19 Apr 2014, at 21:38, Csongor Nyulas <[hidden email]> wrote:
>>
>>> Well, if you don't specify any value for the hasFirstName property, the reasoner figures out that your Alex individual has a first name, it just does not know what it is, because it is not stated in your ontology. So conform to the open world assumption the ontology is not inconsistent. However if you state two first names, which are different the ontology is inconsistent.
>>>
>>> Csongor
>>>
>>> On 04/19/2014 01:31 PM, Alex Batlin wrote:
>>>> I think I am going crazy! I have followed the various tutorials and still cannot figure out the answer. Use case is simple. I have defined a class called ‘Person’. I have defined a data property called hasFirstName. I have added a ‘subclass of’ restriction to Person like this : ‘hasFirstName exactly 1 string’. I have also added an individual called Alex of type Person, and have not added the hasFirstName property. I expect the reasoner to complain as I have specified the cardinality of 1, and asserted that Alex is a Person, but have not added the property, yet the reasoner does not complain. If however I added two statement e.g. hasFirstName ‘Alex’ and hasFirstName ‘John’ then I get a complain. What I am doing wrong? Any help will be most appreciated, thanks.
>>>> _______________________________________________
>>>> protege-user mailing list
>>>> [hidden email]
>>>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>>>
>>> _______________________________________________
>>> protege-user mailing list
>>> [hidden email]
>>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>>
>> _______________________________________________
>> protege-user mailing list
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Set cardinality restriction on a class

Ron Rudnicki
If you want the constraint to find Persons that don't have a name, you could just run a SPARQL query, something like

SELECT ?person
WHERE {
?person rdf:type namespace:Person.
OPTIONAL {?person namespace:hasfirstName ?firstname } .
FILTER(!bound(?firstname)).
}

-----Original Message-----
From: protege-user [mailto:[hidden email]] On Behalf Of Alex Batlin
Sent: Sunday, April 20, 2014 5:08 AM
To: User support for WebProtege and Protege Desktop
Subject: Re: [protege-user] Set cardinality restriction on a class

Many thanks. Looking at the startdog docs, the IC changes OWL semantics from open to closed world. Is there a closed world reasoner plugin for Protege?

On 20 Apr 2014, at 10:05, Matthew Horridge <[hidden email]> wrote:

> Hi Alex,
>
> What you want goes beyond the semantics of OWL.  You essentially want to state that the value of the hasFirstName property must be *known* for any given individual.  This is different from stating that you know that a Person has exactly one first name (as Csongor pointed out, your ontology entails that Alex must have a hasFirstName property, but it's the case that the specific value for the property isn't known).
>
> There has been some work on this in the form of "Integrity Constraints".  Some of the more recent work is by Peter Patel-Schneider [1].  People at Clark&Parsia have also done a lot of work on this [2] - they have quite a nice blog post that explains the details.  If you use their Stardog tool [3] you can get the behaviour that you want - again, there's a very nice example that explains the details.
>
> Cheers,
>
> Matthew
>
> [1] Peter F. Patel-Schneider, Enrico Franconi: Ontology Constraints in Incomplete and Complete Data. International Semantic Web Conference (1) 2012: 444-459
>
> [2] http://clarkparsia.com/pellet/icv/
>
> [3] http://docs.stardog.com/icv/
>
> On 19 Apr 2014, at 23:21, Alex Batlin <[hidden email]> wrote:
>
>> Ok I think I get it. So is there any way (given the open world assumption) to specify that there must a property associated? It tried some restrictions and it did not work either, assume for same reason. Or does that mean that you need to somehow move into closed world assumption constrained checking? And if so, how can that be done in Protege? Many thanks.
>>
>> On 19 Apr 2014, at 21:38, Csongor Nyulas <[hidden email]> wrote:
>>
>>> Well, if you don't specify any value for the hasFirstName property, the reasoner figures out that your Alex individual has a first name, it just does not know what it is, because it is not stated in your ontology. So conform to the open world assumption the ontology is not inconsistent. However if you state two first names, which are different the ontology is inconsistent.
>>>
>>> Csongor
>>>
>>> On 04/19/2014 01:31 PM, Alex Batlin wrote:
>>>> I think I am going crazy! I have followed the various tutorials and still cannot figure out the answer. Use case is simple. I have defined a class called 'Person'. I have defined a data property called hasFirstName. I have added a 'subclass of' restriction to Person like this : 'hasFirstName exactly 1 string'. I have also added an individual called Alex of type Person, and have not added the hasFirstName property. I expect the reasoner to complain as I have specified the cardinality of 1, and asserted that Alex is a Person, but have not added the property, yet the reasoner does not complain. If however I added two statement e.g. hasFirstName 'Alex' and hasFirstName 'John' then I get a complain. What I am doing wrong? Any help will be most appreciated, thanks.
>>>> _______________________________________________
>>>> protege-user mailing list
>>>> [hidden email]
>>>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>>>
>>> _______________________________________________
>>> protege-user mailing list
>>> [hidden email]
>>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>>
>> _______________________________________________
>> protege-user mailing list
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Set cardinality restriction on a class

Joshua TAYLOR
Just for the list archives, this seems to be the same question as

Protege exactly 1 cardinality OWL restriction not raising an inconsistency
http://stackoverflow.com/q/23175216/1281433

The same things seem to have arisen there:  open world assumption
explains the actual behavior, closing the world is possible with some
axioms (but might be difficult in this case), and that SPARQL queries
have a closed world semantics which would make finding such
individuals easier).



On Sun, Apr 20, 2014 at 3:05 PM, Ron Rudnicki <[hidden email]> wrote:

> If you want the constraint to find Persons that don't have a name, you could just run a SPARQL query, something like
>
> SELECT ?person
> WHERE {
> ?person rdf:type namespace:Person.
> OPTIONAL {?person namespace:hasfirstName ?firstname } .
> FILTER(!bound(?firstname)).
> }
>
> -----Original Message-----
> From: protege-user [mailto:[hidden email]] On Behalf Of Alex Batlin
> Sent: Sunday, April 20, 2014 5:08 AM
> To: User support for WebProtege and Protege Desktop
> Subject: Re: [protege-user] Set cardinality restriction on a class
>
> Many thanks. Looking at the startdog docs, the IC changes OWL semantics from open to closed world. Is there a closed world reasoner plugin for Protege?
>
> On 20 Apr 2014, at 10:05, Matthew Horridge <[hidden email]> wrote:
>
>> Hi Alex,
>>
>> What you want goes beyond the semantics of OWL.  You essentially want to state that the value of the hasFirstName property must be *known* for any given individual.  This is different from stating that you know that a Person has exactly one first name (as Csongor pointed out, your ontology entails that Alex must have a hasFirstName property, but it's the case that the specific value for the property isn't known).
>>
>> There has been some work on this in the form of "Integrity Constraints".  Some of the more recent work is by Peter Patel-Schneider [1].  People at Clark&Parsia have also done a lot of work on this [2] - they have quite a nice blog post that explains the details.  If you use their Stardog tool [3] you can get the behaviour that you want - again, there's a very nice example that explains the details.
>>
>> Cheers,
>>
>> Matthew
>>
>> [1] Peter F. Patel-Schneider, Enrico Franconi: Ontology Constraints in Incomplete and Complete Data. International Semantic Web Conference (1) 2012: 444-459
>>
>> [2] http://clarkparsia.com/pellet/icv/
>>
>> [3] http://docs.stardog.com/icv/
>>
>> On 19 Apr 2014, at 23:21, Alex Batlin <[hidden email]> wrote:
>>
>>> Ok I think I get it. So is there any way (given the open world assumption) to specify that there must a property associated? It tried some restrictions and it did not work either, assume for same reason. Or does that mean that you need to somehow move into closed world assumption constrained checking? And if so, how can that be done in Protege? Many thanks.
>>>
>>> On 19 Apr 2014, at 21:38, Csongor Nyulas <[hidden email]> wrote:
>>>
>>>> Well, if you don't specify any value for the hasFirstName property, the reasoner figures out that your Alex individual has a first name, it just does not know what it is, because it is not stated in your ontology. So conform to the open world assumption the ontology is not inconsistent. However if you state two first names, which are different the ontology is inconsistent.
>>>>
>>>> Csongor
>>>>
>>>> On 04/19/2014 01:31 PM, Alex Batlin wrote:
>>>>> I think I am going crazy! I have followed the various tutorials and still cannot figure out the answer. Use case is simple. I have defined a class called 'Person'. I have defined a data property called hasFirstName. I have added a 'subclass of' restriction to Person like this : 'hasFirstName exactly 1 string'. I have also added an individual called Alex of type Person, and have not added the hasFirstName property. I expect the reasoner to complain as I have specified the cardinality of 1, and asserted that Alex is a Person, but have not added the property, yet the reasoner does not complain. If however I added two statement e.g. hasFirstName 'Alex' and hasFirstName 'John' then I get a complain. What I am doing wrong? Any help will be most appreciated, thanks.
>>>>> _______________________________________________
>>>>> protege-user mailing list
>>>>> [hidden email]
>>>>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>>>>
>>>> _______________________________________________
>>>> protege-user mailing list
>>>> [hidden email]
>>>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>>>
>>> _______________________________________________
>>> protege-user mailing list
>>> [hidden email]
>>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>>
>> _______________________________________________
>> protege-user mailing list
>> [hidden email]
>> https://mailman.stanford.edu/mailman/listinfo/protege-user
>
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user
> _______________________________________________
> protege-user mailing list
> [hidden email]
> https://mailman.stanford.edu/mailman/listinfo/protege-user



--
Joshua Taylor, http://www.cs.rpi.edu/~tayloj/
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user