Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Define inverse of properties #40

Open
kcoyle opened this issue May 17, 2023 · 7 comments
Open

Define inverse of properties #40

kcoyle opened this issue May 17, 2023 · 7 comments

Comments

@kcoyle
Copy link
Collaborator

kcoyle commented May 17, 2023

It is suggested that we define inverse properties for:

  • expresses
  • manifests
  • instantiates
@kcoyle
Copy link
Collaborator Author

kcoyle commented May 17, 2023

Possible terms:

  • expressedBy
  • manifestedBy
  • instantiatedBy

@kcoyle
Copy link
Collaborator Author

kcoyle commented May 17, 2023

Any chance we can limit this to:

  • expressed
  • manifested
  • instantiated

or

  • isExpressed
  • isManifested
  • isInstantiated

@kcoyle
Copy link
Collaborator Author

kcoyle commented May 18, 2023

I'm not sure that we can define these as inverse properties in the OWL sense. From what little I can glean from the OWL documentation, if actually defined as inverse then they both must be object properties. This could explain the choices made by Dublin Core and Schema, to define separate properties that logically are inverse of each other, but not to use the OWL function.
https://www.w3.org/TR/2012/REC-owl2-primer-20121211/#a_ObjectInverseOf

@philbarker
Copy link
Contributor

So we have various (non-exclusive) options,

  1. don't have inverse properties
  2. have properties but don't declare them as inverse of each other
  3. use something other than owl: to declare the inverseness
  4. make them object properties and not allow strings
  5. make them object properties and allow a "Text" object
  6. have different properties for referencing an object and literal / text.

My 2p: inverse properties are useful only if you declare that they are inverse in a meaningful way.

Literals can't have properties so that means both have to be object properties. You can use object properties with Blank Nodes if all you have is, say, a title. So

<example> a :Work ;
    :hasExpressionEntity [ dc:title "Moby Dick"] . 

I don't think option 5 adds anything to this. Assuming appropriate range of :hasExpressionEntity and an inverse property isExpressionOf you can infer that the blank node is an :Expression which has the property :isExpressionOf <example>

Option 6 would allow

<example> a :Work ;
    :hasExpressionNamed  "Moby Dick" .

All this can be done as extensions/profiles of any openWEMI vocabulary we produce, and as the preferences are probably very context dependent perhaps that is the way to go.

@kcoyle
Copy link
Collaborator Author

kcoyle commented Jun 6, 2023

@philbarker Are you opting for your 1, don't have inverse properties? And figure that if someone wants them they can mint them?

@philbarker
Copy link
Contributor

philbarker commented Jun 6, 2023

I don't want to seem too assertive given that I haven't followed all the discussion so far, but it seems to the least prescriptive option, the one that allows the broadest range of practice, and that seems in the spirit of Dublin Core. That said, I wouldn't be against the option at the other extreme, if that was the group will. I think some of the half-way options are maybe compromises that don't help end users as much.

@kcoyle
Copy link
Collaborator Author

kcoyle commented Jun 21, 2023

Use:

  • expressedBy
  • manifestedBy
  • instantiatedBy

define them as OWL:inverse properties; add to both sets of properties

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants