Projects/Bibliographica/Requirements

From Open Knowledge Foundation

Jump to: navigation, search

Contents

Bibliographica Requirements


Predicates and Schema

The use cases below imply the ability to state relationships between things (authors, works, expressions, etc). This needs to be formalised and can be easily supported when this has been done. There are already some defined predicates for some of these, however for ease of querying we should define the relationships in our own namespace and then use inferencing rules to fill in equivalents in other vocabularies.

Draft Schema

@prefix rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:      <http://www.w3.org/2002/07/owl#> .
@prefix frbr:     <http://purl.org/vocab/frbr/core#> .
@prefix foaf:     <http://xmlns.com/foaf/0.1/> .
@prefix rel:      <http://purl.org/vocab/relationship/> .
@prefix :         <http://bibliographica.org/schema/relation#> .

:aboutWork a owl:ObjectProperty ;
    rdfs:label "Expresses topic, Work A is about Work B" ;
    rdfs:domain frbr:Work ;
    rdfs:range frbr:Work .

:aboutPerson a owl:ObjectProperty ;
    rdfs:label "Expresses topic: Work A is about Person X" ;
    rdfs:domain frbr:Work ;
    rdfs:range frbr:Person .

:responseTo a owl:Property ;
    rdfs:label "Expresses response in discourse: Work A is a response to Work B" ;
    rdfs:domain frbr:Work ;
    rdfs:range frbr:Work .

:cites a owl:ObjectProperty ;
    rdfs:label "Expresses citation: Work A cites Work B" ;
    rdfs:domain frbr:Work ;
    rdfs:range frbr:Work .

:read a owl:ObjectProperty ;
    rdfs:label "Expresses knowledge of a work: Person X read Work A" ;
    rdfs:domain frbr:Person ;
    rdfs:range frbr:Work .

:met a owl:ObjectProperty ;
    rdfs:label "Expresses having met a person: Person X met Person Y" ;
    rdfs:subPropertyOf rel:hasMet ;
    rdfs:domain frbr:Person ;
    rdfs:range frbr:Person .

:allusionPerson a owl:ObjectProperty ;
    rdfs:label "Expresses allusion: Person X alludes to Person Y" ;
    rdfs:domain frbr:Person ;
    rdfs:range frbr:Person .

:allusionWork a owl:ObjectProperty ;
    rdfs:label "Expresses allusion: Work A alludes to Person X" ;
    rdfs:domain frbr:Work ;
    rdfs:range frbr:Person .


n.b. do we need separate allusionWork, allusionPerson, or do we just relax the domain and range to owl:Thing? Can we have works alluding to other works rather than authors? Can we have people alluding to works? Similarly can we relax the range of aboutWork and aboutPerson and have simply about

Some inferencing rules

@prefix rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:      <http://www.w3.org/2002/07/owl#> .
@prefix frbr:     <http://purl.org/vocab/frbr/core#> .
@prefix foaf:     <http://xmlns.com/foaf/0.1/> .
@prefix rel:      <http://purl.org/vocab/relationship/> .
@prefix brel:     <http://bibliographica.org/schema/relation#> .

{ ?a brel:cites ?b . 
  ?x frbr:creatorOf ?b } => { ?a brel:allusionWork ?x } .
{ ?x frbr:creatorOf ?a .
  ?a brel:allusionWork ?y } => { ?x brel:allusionPerson ?y } .
{ ?x brel:allusionPerson ?y } => { ?x rel:knowsOf ?y } .

{ ?x frbr:creatorOf ?a .
  ?y frbr:creatorOf ?a .
  ?x owl:differentFrom ?y } => { ?x rel:collaboratesWith ?y } .

{ ?x brel:met ?y } => { ?y brel:met ?x } .
{ ?x brel:met ?y } => { ?x foaf:knows ?y } .
{ ?x brel:met ?y } => { ?x rel:hasMet ?y } .

{ ?x a frbr:Person } => { ?x a foaf:Person } .


Use Cases

Qu 1: "show me all items which are published between X and Y and are about Z in language A"

MACHINE

-> Machine query

CORE/EXISTING METADATA

Metadata may exist in some cases but not always complete/accurate Researchers can add/improve this.

Qu 2: "What was published on Nietschze in English between 1950 and 1975?"

MACHINE

Query Results -> articles and books (anything catalogued) List -> ....

Current example of such a search: Nietsche in title (free text search)

Fails because of inadequate metadata. Need additional metadata.

Adding Additional Metadata for Rich Queries

Information about a work which can not usually be found from other existing catalogues. Information which there will be consensus about 99% of the time (not e.g. evaluation or general comments). Some ideas for the kind of thing this might be below.

E.g. relations between works and authors

Add Relation between works

[contains research or commentary about a given work, citation/allusion is not sufficient]

e.g. the Routledge Philosophy Guidebook to Heidegger by Stephen Mulhall IS ABOUT Being and Time by Heidegger

Add Citation: work x CITES work y

[all the works mentioned in footnotes and bibliographies of a given publication]

e.g.

the Routledge Philosophy Guidebook to Heidegger by Stephen Mulhall CITES Wittgenstein's Tractatus [but is not primarily about it]

Also as above re: defining predicates

Add relation between works and authors

work x is about author a (about person a who is not necessarily an author?)

Isaiah Berlin's The Magus of the North IS ABOUT Johann Georg Hamann

-- author a IS AN AUTHOR OF work x

Add relation between author

e.g.

-- author a READ WORKS BY author b -- author a MET author b

Inference Regarding Authors

USING METADATA ABOVE CAN INFER THINGS ABOUT AUTHORS

e.g.

-- author a ALLUDES TO author b

can be inferred from

-- author a IS AN AUTHOR OF work x -- work x CITES work y -- author b IS AN AUTHOR OF work y

Qu 3: "What was the influence of Edward Young in Germany between 18th and 19th century"

HUMAN

-> Curated List


Can create list
Can edit list
Can allow other users to edit list
Can allow anyone to edit list
Can copy list
Can add items to a list
Can delete items from a list
Can annotate an item in a list


e.g.

Shared up to date list about work on a given domain (literature changes -

[done] UC 4: Add simple metadata (e.g. death date

I come across a record (via a search) and I know information about it which is missing, for example: death date of author, subject of the work (e.g. it is about Nietszche).

[done] UC 5: Data import from bibliographica central into local instance

I do a search on a large catalogue and then import results into my bibliographica instance.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox